]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Display (and export via API) the frontend type (DoT, ..)
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 26 Mar 2019 10:22:03 +0000 (11:22 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 4 Apr 2019 09:54:05 +0000 (11:54 +0200)
pdns/dnsdist-lua.cc
pdns/dnsdist-web.cc
pdns/dnsdist.hh
regression-tests.dnsdist/test_API.py

index c7e03da7b3bdafb2f965ba23744860a83e0a2687..dea393d3b318a7c0fc9451c05142038b3b0409fd 100644 (file)
@@ -1268,13 +1268,13 @@ void setupLuaConfig(bool client)
       setLuaNoSideEffect();
       try {
         ostringstream ret;
-        boost::format fmt("%1$-3d %2$-20.20s %|25t|%3$-8.8s %|35t|%4%" );
+        boost::format fmt("%1$-3d %2$-20.20s %|35t|%3$-20.20s %|57t|%4%" );
         //             1    2           3            4
         ret << (fmt % "#" % "Address" % "Protocol" % "Queries" ) << endl;
 
         size_t counter = 0;
         for (const auto& front : g_frontends) {
-          ret << (fmt % counter % front->local.toStringWithPort() % (front->udpFD != -1 ? "UDP" : "TCP") % front->queries) << endl;
+          ret << (fmt % counter % front->local.toStringWithPort() % front->getType() % front->queries) << endl;
           counter++;
         }
         g_outputBuffer=ret.str();
index 1ee60dccd5d6b8da0b0a96fca9fbef05ba3ed919..745a798f022f11c247f66e70ea820a272693a09a 100644 (file)
@@ -603,6 +603,7 @@ static void connectionThread(int sock, ComboAddress remote)
           { "address", front->local.toStringWithPort() },
           { "udp", front->udpFD >= 0 },
           { "tcp", front->tcpFD >= 0 },
+          { "type", front->getType() },
           { "queries", (double) front->queries.load() },
           { "tcpDiedReadingQuery", (double) front->tcpDiedReadingQuery.load() },
           { "tcpDiedSendingResponse", (double) front->tcpDiedSendingResponse.load() },
index 9b35daaa62aadf9b1919403422c703813fdccba1..0a3eb01f0b6a3d17737bf2a7196f3e670e60b808 100644 (file)
@@ -600,6 +600,20 @@ struct ClientState
     return udpFD != -1 ? udpFD : tcpFD;
   }
 
+  std::string getType() const
+  {
+    std::string result = udpFD != -1 ? "UDP" : "TCP";
+
+    if (tlsFrontend) {
+      result += " (DNS over TLS)";
+    }
+    else if (dnscryptCtx) {
+      result += " (DNSCrypt)";
+    }
+
+    return result;
+  }
+
 #ifdef HAVE_EBPF
   shared_ptr<BPFFilter> d_filter;
 
index 05e13912878da6d00b2e0f0bf0fbdb92ecb3b36a..3d751cfe8c1710860c5b63096a4a87b82c5d725d 100644 (file)
@@ -114,7 +114,7 @@ class TestAPIBasics(DNSDistTest):
             self.assertTrue(server['state'] in ['up', 'down', 'UP', 'DOWN'])
 
         for frontend in content['frontends']:
-            for key in ['id', 'address', 'udp', 'tcp', 'queries']:
+            for key in ['id', 'address', 'udp', 'tcp', 'type', 'queries']:
                 self.assertIn(key, frontend)
 
             for key in ['id', 'queries']: