]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
sdig stdin: attempt to decode proxy headers
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 5 Feb 2020 12:47:52 +0000 (13:47 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 17 Mar 2020 13:12:54 +0000 (14:12 +0100)
pdns/sdig.cc

index 22f759e1ca27b6b006705f7e02b52fac0217aae8..9aa5ccd6db904263c3dfb527df7437a9f43f4342 100644 (file)
@@ -317,7 +317,19 @@ try {
   } else if (fromstdin) {
     std::istreambuf_iterator<char> begin(std::cin), end;
     reply = string(begin, end);
-    if (tcp) reply = reply.substr(2);
+
+    ComboAddress source, destination;
+    bool wastcp;
+    ssize_t offset = parseProxyHeader(reply.c_str(), reply.size(), source, destination, wastcp);
+    if (offset) {
+      cout<<"proxy "<<(wastcp ? "tcp" : "udp")<<" headersize="<<offset<<" source="<<source.toStringWithPort()<<" destination="<<destination.toStringWithPort()<<endl;
+      reply = reply.substr(offset);
+    }
+
+    if (tcp) {
+      reply = reply.substr(2);
+    }
+
     printReply(reply, showflags, hidesoadetails);
   } else if (tcp) {
     Socket sock(dest.sin4.sin_family, SOCK_STREAM);