#include "dns.hh"
#include "base64.hh"
#include "json.hh"
-#include "arguments.hh"
#include <yahttp/router.hpp>
json11::Json HttpRequest::json()
if(!d_server)
return;
try {
- NetmaskGroup acl;
- acl.toMasks(::arg()["webserver-allow-from"]);
-
while(true) {
try {
auto client = d_server->accept();
if (!client) {
continue;
}
- if (client->acl(acl)) {
+ if (client->acl(d_acl)) {
std::thread webHandler(WebServerConnectionThreadStart, this, client);
webHandler.detach();
} else {
ComboAddress remote;
if (client->getRemote(remote))
- g_log<<Logger::Error<<"Webserver closing socket: remote ("<< remote.toString() <<") does not match 'webserver-allow-from'"<<endl;
+ g_log<<Logger::Error<<"Webserver closing socket: remote ("<< remote.toString() <<") does not match the set ACL("<<d_acl.toString()<<")"<<endl;
}
}
catch(PDNSException &e) {
d_webserverPassword = password;
}
+ void setACL(const NetmaskGroup &nmg) {
+ d_acl = nmg;
+ }
+
void bind();
void go();
std::string d_webserverPassword;
bool d_registerWebHandlerCalled{false};
+
+ NetmaskGroup d_acl;
};
#endif /* WEBSERVER_HH */
d_ws = new WebServer(arg()["webserver-address"], arg().asNum("webserver-port"));
d_ws->setApiKey(arg()["api-key"]);
d_ws->setPassword(arg()["webserver-password"]);
+
+ NetmaskGroup acl;
+ acl.toMasks(::arg()["webserver-allow-from"]);
+ d_ws->setACL(acl);
+
d_ws->bind();
}
}
d_ws = new AsyncWebServer(fdm, arg()["webserver-address"], arg().asNum("webserver-port"));
d_ws->setApiKey(arg()["api-key"]);
d_ws->setPassword(arg()["webserver-password"]);
+
+ NetmaskGroup acl;
+ acl.toMasks(::arg()["webserver-allow-from"]);
+ d_ws->setACL(acl);
+
d_ws->bind();
// legacy dispatch