]> granicus.if.org Git - pdns/commitdiff
dnsdist: Add setConsoleConnectionsLogging()
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 4 Aug 2017 08:49:28 +0000 (10:49 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 4 Aug 2017 08:49:28 +0000 (10:49 +0200)
pdns/dnsdist-console.cc
pdns/dnsdist-lua2.cc
pdns/dnsdist.cc
pdns/dnsdist.hh
pdns/dnsdistdist/docs/reference/config.rst

index 6a28b54373a07960203971907cd3bf6a66d7a384..196536bed3391c53edfd0a0ce1e9484b2d95689a 100644 (file)
@@ -35,6 +35,7 @@
 #include "ext/json11/json11.hpp"
 
 vector<pair<struct timeval, string> > g_confDelta;
+bool g_logConsoleConnections{true};
 
 // MUST BE CALLED UNDER A LOCK - right now the LuaLock
 void feedConfigDelta(const std::string& line)
@@ -358,6 +359,7 @@ const std::vector<ConsoleKeyword> g_consoleKeywords{
   { "sendCustomTrap", true, "str", "send a custom `SNMP` trap from Lua, containing the `str` string"},
   { "setACL", true, "{netmask, netmask}", "replace the ACL set with these netmasks. Use `setACL({})` to reset the list, meaning no one can use us" },
   { "setAPIWritable", true, "bool, dir", "allow modifications via the API. if `dir` is set, it must be a valid directory where the configuration files will be written by the API" },
+  { "setConsoleConnectionsLogging", true, "enabled", "whether to log the opening and closing of console connections" },
   { "setDNSSECPool", true, "pool name", "move queries requesting DNSSEC processing to this pool" },
   { "setDynBlocksAction", true, "action", "set which action is performed when a query is blocked. Only DNSAction.Drop (the default) and DNSAction.Refused are supported" },
   { "setECSOverride", true, "bool", "whether to override an existing EDNS Client Subnet value in the query" },
@@ -568,7 +570,9 @@ try
     putMsgLen32(fd, response.length());
     writen2(fd, response.c_str(), response.length());
   }
-  infolog("Closed control connection from %s", client.toStringWithPort());
+  if (g_logConsoleConnections) {
+    infolog("Closed control connection from %s", client.toStringWithPort());
+  }
   close(fd);
   fd=-1;
 }
index 9bdc77b83ff706f7f2f208511d8aa7ce3882cc5d..2d27ca6365a5218358241a8319413b36c712809b 100644 (file)
@@ -1458,4 +1458,8 @@ void moreLua(bool client)
         setLuaSideEffect();
         g_downstreamTCPCleanupInterval = interval;
       });
+
+    g_lua.writeFunction("setConsoleConnectionsLogging", [](bool enabled) {
+        g_logConsoleConnections = enabled;
+      });
 }
index a5cb24ce1f4e0393dde7a9c382bf463ad87633cb..b90271a591065a2976651f4c4852291b79871cb0 100644 (file)
@@ -1591,7 +1591,10 @@ try
   int sock;
   warnlog("Accepting control connections on %s", local.toStringWithPort());
   while((sock=SAccept(fd, client)) >= 0) {
-    warnlog("Got control connection from %s", client.toStringWithPort());
+    if (g_logConsoleConnections) {
+      warnlog("Got control connection from %s", client.toStringWithPort());
+    }
+
     thread t(controlClientThread, sock, client);
     t.detach();
   }
index e92a72ecf090ed840e292a5bbd33699715432d8f..deef9f33bc2c923840bcf21568014627f0271de8 100644 (file)
@@ -775,6 +775,7 @@ struct ConsoleKeyword {
   }
 };
 extern const std::vector<ConsoleKeyword> g_consoleKeywords;
+extern bool g_logConsoleConnections;
 
 #ifdef HAVE_EBPF
 extern shared_ptr<BPFFilter> g_defaultBPFFilter;
index 108a70f2f7b8a6cf5766c97c6242530b9e73a272..b53edfe3b4ab46db8074833901b87355ee6cb329 100644 (file)
@@ -120,6 +120,14 @@ Control Socket, Console and Webserver
 
   Generate and print an encryption key.
 
+.. function:: setConsoleConnectionsLogging(enabled)
+
+  .. versionadded:: 1.2.0
+
+  Whether to log the opening and closing of console connections.
+
+  :param bool enabled: Default to true.
+
 .. function:: setKey(key)
 
   Use ``key`` as shared secret between the client and the server