Add a parameter for separate SSL key

This commit is contained in:
Lauri Kasanen
2021-01-15 13:07:53 +02:00
parent 481b063eb7
commit 83c83f43ef
4 changed files with 19 additions and 8 deletions

View File

@@ -423,7 +423,7 @@ extern settings_t settings;
WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
socklen_t listenaddrlen,
bool sslonly, const char *cert,
bool sslonly, const char *cert, const char *certkey,
const char *basicauth,
const char *httpdir)
{
@@ -496,7 +496,7 @@ WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
settings.basicauth = basicauth;
settings.cert = cert;
settings.key = "";
settings.key = certkey;
settings.ssl_only = sslonly;
settings.verbose = vlog.getLevel() >= vlog.LEVEL_DEBUG;
settings.httpdir = NULL;
@@ -673,7 +673,7 @@ void network::createTcpListeners(std::list<SocketListener*> *listeners,
void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
const struct addrinfo *ai,
bool sslonly, const char *cert,
bool sslonly, const char *cert, const char *certkey,
const char *basicauth,
const char *httpdir)
{
@@ -701,7 +701,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
try {
new_listeners.push_back(new WebsocketListener(current->ai_addr,
current->ai_addrlen,
sslonly, cert, basicauth,
sslonly, cert, certkey, basicauth,
httpdir));
} catch (SocketException& e) {
// Ignore this if it is due to lack of address family support on
@@ -729,6 +729,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
const char *addr,
bool sslonly,
const char *cert,
const char *certkey,
const char *basicauth,
const char *httpdir)
{
@@ -757,7 +758,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
ai[1].ai_addrlen = sizeof(sa[1].u.sin6);
ai[1].ai_next = NULL;
createWebsocketListeners(listeners, ai, sslonly, cert, basicauth, httpdir);
createWebsocketListeners(listeners, ai, sslonly, cert, certkey, basicauth, httpdir);
} else {
struct addrinfo *ai, hints;
char service[16];
@@ -780,7 +781,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
gai_strerror(result));
try {
createWebsocketListeners(listeners, ai, sslonly, cert, basicauth, httpdir);
createWebsocketListeners(listeners, ai, sslonly, cert, certkey, basicauth, httpdir);
} catch(...) {
freeaddrinfo(ai);
throw;

View File

@@ -90,7 +90,8 @@ namespace network {
class WebsocketListener : public SocketListener {
public:
WebsocketListener(const struct sockaddr *listenaddr, socklen_t listenaddrlen,
bool sslonly, const char *cert, const char *basicauth,
bool sslonly, const char *cert, const char *certkey,
const char *basicauth,
const char *httpdir);
virtual int getMyPort();
@@ -110,6 +111,7 @@ namespace network {
const char *addr,
bool sslonly,
const char *cert,
const char *certkey,
const char *basicauth,
const char *httpdir);
void createTcpListeners(std::list<SocketListener*> *listeners,
@@ -121,6 +123,7 @@ namespace network {
const struct addrinfo *ai,
bool sslonly,
const char *cert,
const char *certkey,
const char *basicauth,
const char *httpdir);