]> granicus.if.org Git - pdns/commitdiff
dnsdist: Expose toString of various objects to Lua
authorChris Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Mon, 28 May 2018 14:11:40 +0000 (16:11 +0200)
committerChris Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Mon, 28 May 2018 14:11:40 +0000 (16:11 +0200)
pdns/dnsdist-lua-bindings.cc
pdns/dnsdist.hh
pdns/fstrm_logger.hh
pdns/remote_logger.hh

index 988320621f434d27d5c6f73192d2acda77da3e5b..f5229184b227dfd76e81b8a07789d2d7dcf891ca 100644 (file)
@@ -64,6 +64,7 @@ void setupLuaBindings(bool client)
   g_lua.registerMember("name", &ServerPolicy::name);
   g_lua.registerMember("policy", &ServerPolicy::policy);
   g_lua.registerMember("isLua", &ServerPolicy::isLua);
+  g_lua.registerFunction("toString", &ServerPolicy::toString);
 
   g_lua.writeVariable("firstAvailable", ServerPolicy{"firstAvailable", firstAvailable, false});
   g_lua.writeVariable("roundrobin", ServerPolicy{"roundrobin", roundrobin, false});
@@ -187,6 +188,7 @@ void setupLuaBindings(bool client)
   g_lua.registerFunction("match", (bool (NetmaskGroup::*)(const ComboAddress&) const)&NetmaskGroup::match);
   g_lua.registerFunction("size", &NetmaskGroup::size);
   g_lua.registerFunction("clear", &NetmaskGroup::clear);
+  g_lua.registerFunction<string(NetmaskGroup::*)()>("toString", [](const NetmaskGroup& nmg ) { return "NetmaskGroup " + nmg.toString(); });
 
   /* QPSLimiter */
   g_lua.writeFunction("newQPSLimiter", [](int rate, int burst) { return QPSLimiter(rate, burst); });
@@ -303,6 +305,8 @@ void setupLuaBindings(bool client)
 #endif /* HAVE_FSTRM */
     });
 
+  g_lua.registerFunction("toString", &RemoteLoggerInterface::toString);
+
 #ifdef HAVE_DNSCRYPT
     /* DNSCryptContext bindings */
     g_lua.registerFunction<std::string(DNSCryptContext::*)()>("getProviderName", [](const DNSCryptContext& ctx) { return ctx.getProviderName().toStringNoDot(); });
index 96a050b8dea1db310a1f031d9bf58fceda5f0c8d..b1828c907902db92f15f567011c733bf1e27a0da 100644 (file)
@@ -610,6 +610,9 @@ struct ServerPolicy
   string name;
   policyfunc_t policy;
   bool isLua;
+  std::string toString() const {
+    return string("ServerPolicy") + (isLua ? " (Lua)" : "") + " \"" + name + "\"";
+  }
 };
 
 struct ServerPool
index 6f4c40a1ec9fb11b64ad5f829fe36cf43c4f1403..240b3d6adde12ce807df71f0723f2bf1e818da25 100644 (file)
@@ -38,7 +38,7 @@ public:
   FrameStreamLogger(int family, const std::string& address, bool connect);
   virtual ~FrameStreamLogger();
   virtual void queueData(const std::string& data) override;
-  virtual std::string toString() override
+  virtual std::string toString() const override
   {
     return "FrameStreamLogger to " + d_address;
   }
index a0fec492e1eedab0e7d034f1dcee9050cd187ae9..6037e484c5c713adb9c26a96279cb936e52d52aa 100644 (file)
@@ -36,7 +36,7 @@ class RemoteLoggerInterface
 public:
   virtual ~RemoteLoggerInterface() {};
   virtual void queueData(const std::string& data) = 0;
-  virtual std::string toString() = 0;
+  virtual std::string toString() const = 0;
 };
 
 class RemoteLogger : public RemoteLoggerInterface
@@ -45,7 +45,7 @@ public:
   RemoteLogger(const ComboAddress& remote, uint16_t timeout=2, uint64_t maxQueuedEntries=100, uint8_t reconnectWaitTime=1, bool asyncConnect=false);
   virtual ~RemoteLogger();
   virtual void queueData(const std::string& data) override;
-  virtual std::string toString() override
+  virtual std::string toString() const override
   {
     return "RemoteLogger to " + d_remote.toStringWithPort();
   }