|
|
@ -462,7 +462,7 @@ static uint8_t givecontrolCb(void *messager, const char name[])
|
|
|
|
WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
|
|
|
|
WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
|
|
|
|
socklen_t listenaddrlen,
|
|
|
|
socklen_t listenaddrlen,
|
|
|
|
bool sslonly, const char *cert, const char *certkey,
|
|
|
|
bool sslonly, const char *cert, const char *certkey,
|
|
|
|
const char *basicauth,
|
|
|
|
bool disablebasicauth,
|
|
|
|
const char *httpdir)
|
|
|
|
const char *httpdir)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int one = 1;
|
|
|
|
int one = 1;
|
|
|
@ -532,7 +532,7 @@ WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
|
|
|
|
settings.passwdfile = strdup(wexp.we_wordv[0]);
|
|
|
|
settings.passwdfile = strdup(wexp.we_wordv[0]);
|
|
|
|
wordfree(&wexp);
|
|
|
|
wordfree(&wexp);
|
|
|
|
|
|
|
|
|
|
|
|
settings.basicauth = basicauth;
|
|
|
|
settings.disablebasicauth = disablebasicauth;
|
|
|
|
settings.cert = cert;
|
|
|
|
settings.cert = cert;
|
|
|
|
settings.key = certkey;
|
|
|
|
settings.key = certkey;
|
|
|
|
settings.ssl_only = sslonly;
|
|
|
|
settings.ssl_only = sslonly;
|
|
|
@ -718,7 +718,7 @@ void network::createTcpListeners(std::list<SocketListener*> *listeners,
|
|
|
|
void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
|
|
|
|
void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
|
|
|
|
const struct addrinfo *ai,
|
|
|
|
const struct addrinfo *ai,
|
|
|
|
bool sslonly, const char *cert, const char *certkey,
|
|
|
|
bool sslonly, const char *cert, const char *certkey,
|
|
|
|
const char *basicauth,
|
|
|
|
bool disablebasicauth,
|
|
|
|
const char *httpdir)
|
|
|
|
const char *httpdir)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const struct addrinfo *current;
|
|
|
|
const struct addrinfo *current;
|
|
|
@ -745,7 +745,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
new_listeners.push_back(new WebsocketListener(current->ai_addr,
|
|
|
|
new_listeners.push_back(new WebsocketListener(current->ai_addr,
|
|
|
|
current->ai_addrlen,
|
|
|
|
current->ai_addrlen,
|
|
|
|
sslonly, cert, certkey, basicauth,
|
|
|
|
sslonly, cert, certkey, disablebasicauth,
|
|
|
|
httpdir));
|
|
|
|
httpdir));
|
|
|
|
} catch (SocketException& e) {
|
|
|
|
} catch (SocketException& e) {
|
|
|
|
// Ignore this if it is due to lack of address family support on
|
|
|
|
// Ignore this if it is due to lack of address family support on
|
|
|
@ -774,7 +774,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
|
|
|
|
bool sslonly,
|
|
|
|
bool sslonly,
|
|
|
|
const char *cert,
|
|
|
|
const char *cert,
|
|
|
|
const char *certkey,
|
|
|
|
const char *certkey,
|
|
|
|
const char *basicauth,
|
|
|
|
bool disablebasicauth,
|
|
|
|
const char *httpdir)
|
|
|
|
const char *httpdir)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (addr && !strcmp(addr, "local")) {
|
|
|
|
if (addr && !strcmp(addr, "local")) {
|
|
|
@ -802,7 +802,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
|
|
|
|
ai[1].ai_addrlen = sizeof(sa[1].u.sin6);
|
|
|
|
ai[1].ai_addrlen = sizeof(sa[1].u.sin6);
|
|
|
|
ai[1].ai_next = NULL;
|
|
|
|
ai[1].ai_next = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
createWebsocketListeners(listeners, ai, sslonly, cert, certkey, basicauth, httpdir);
|
|
|
|
createWebsocketListeners(listeners, ai, sslonly, cert, certkey, disablebasicauth, httpdir);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
struct addrinfo *ai, hints;
|
|
|
|
struct addrinfo *ai, hints;
|
|
|
|
char service[16];
|
|
|
|
char service[16];
|
|
|
@ -825,7 +825,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
|
|
|
|
gai_strerror(result));
|
|
|
|
gai_strerror(result));
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
createWebsocketListeners(listeners, ai, sslonly, cert, certkey, basicauth, httpdir);
|
|
|
|
createWebsocketListeners(listeners, ai, sslonly, cert, certkey, disablebasicauth, httpdir);
|
|
|
|
} catch(...) {
|
|
|
|
} catch(...) {
|
|
|
|
freeaddrinfo(ai);
|
|
|
|
freeaddrinfo(ai);
|
|
|
|
throw;
|
|
|
|
throw;
|
|
|
|