aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2011-08-21 23:53:09 +0000
committerRob Austein <sra@hactrn.net>2011-08-21 23:53:09 +0000
commit6c87353d6012f1f5dff4cb945b2505c1bbbaff6c (patch)
tree32056b2166ffe8b793275adf538e47dd01cbd799
parentac3562cd7745abac65ff98d6aa88e4c74f146181 (diff)
Rework server logging code to support stunnel and to log local port
when available. svn path=/rtr-origin/rtr-origin.py; revision=3956
-rwxr-xr-xrtr-origin/rtr-origin.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/rtr-origin/rtr-origin.py b/rtr-origin/rtr-origin.py
index 123a1269..4af4199c 100755
--- a/rtr-origin/rtr-origin.py
+++ b/rtr-origin/rtr-origin.py
@@ -1655,6 +1655,7 @@ mode = None
kickme_dir = "sockets"
kickme_base = os.path.join(kickme_dir, "kickme")
+
main_dispatch = {
"cronjob" : cronjob_main,
"client" : client_main,
@@ -1693,11 +1694,27 @@ log_tag = "rtr-origin/" + mode
if mode in ("server", "bgpdump_server"):
#
# Try to figure out peer address when we're in server mode.
+ def hostport_to_string(proto, hostport):
+ assert len(hostport) == 2
+ if hostport[1] is None or hostport[1] == "":
+ return "/%s/%s" % (proto, hostport[0])
+ elif ":" in hostport[0]:
+ return "/%s/%s.%s" % (proto, hostport[0], hostport[1])
+ else:
+ return "/%s/%s:%s" % (proto, hostport[0], hostport[1])
+ #
+ # First try raw TCP, TCP-MD5, TCP-AO
try:
- log_tag += "/tcp/" + str(socket.fromfd(0, socket.AF_INET, socket.SOCK_STREAM).getpeername()[0])
+ log_tag += hostport_to_string("tcp", socket.fromfd(0, socket.AF_INET, socket.SOCK_STREAM).getpeername())
except (socket.error, IndexError):
- if os.getenv("SSH_CONNECTION"):
- log_tag += "/ssh/" + os.getenv("SSH_CONNECTION").split()[0]
+ #
+ # Next try ssh (sshd sets environment)
+ if "SSH_CONNECTION" in os.environ:
+ log_tag += hostport_to_string("ssh", os.environ["SSH_CONNECTION"].split()[0:2])
+ #
+ # Next try ssl (stunnel sets environment)
+ elif "REMOTE_HOST" in os.environ:
+ log_tag += hostport_to_string("ssl", (os.environ["REMOTE_HOST"], os.getenv("REMOTE_PORT")))
if mode in ("cronjob", "server" , "bgpdump_server"):
syslog.openlog(log_tag, syslog.LOG_PID, syslog.LOG_DAEMON)