diff options
author | Rob Austein <sra@hactrn.net> | 2011-08-21 23:53:09 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2011-08-21 23:53:09 +0000 |
commit | 6c87353d6012f1f5dff4cb945b2505c1bbbaff6c (patch) | |
tree | 32056b2166ffe8b793275adf538e47dd01cbd799 | |
parent | ac3562cd7745abac65ff98d6aa88e4c74f146181 (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-x | rtr-origin/rtr-origin.py | 23 |
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) |