|
@@ -9,6 +9,7 @@ import re
|
|
|
import os
|
|
|
import subprocess
|
|
|
|
|
|
+from dns import resolver,reversename
|
|
|
import socket
|
|
|
import SocketServer
|
|
|
import threading
|
|
@@ -16,25 +17,11 @@ import threading
|
|
|
msgserver = None
|
|
|
peers_repo = None
|
|
|
|
|
|
-# TODO: move into config file :)
|
|
|
-# TODO for real: Use DNS!
|
|
|
-msgserver_known_senders = {
|
|
|
- "127.0.0.1": "localhost",
|
|
|
- "10.132.254.1": "gw01",
|
|
|
- "10.132.254.2": "gw02",
|
|
|
- "10.132.254.3": "gw03",
|
|
|
- "10.132.254.4": "gw04",
|
|
|
- "10.132.254.5": "gw05",
|
|
|
- "10.132.254.80": "public",
|
|
|
- "10.132.255.254" : "ops",
|
|
|
-}
|
|
|
|
|
|
class MsgHandler(SocketServer.BaseRequestHandler):
|
|
|
def handle(self):
|
|
|
data = self.request.recv(2048).strip()
|
|
|
- sender = self.client_address[0]
|
|
|
- if sender in msgserver_known_senders:
|
|
|
- sender = msgserver_known_senders[sender]
|
|
|
+ sender = self._resolve_name (self.client_address[0])
|
|
|
|
|
|
bot = self.server.bot
|
|
|
if bot is None:
|
|
@@ -47,6 +34,18 @@ class MsgHandler(SocketServer.BaseRequestHandler):
|
|
|
|
|
|
bot.msg(target, "[{0}] {1}".format(sender, str(data)))
|
|
|
|
|
|
+ def _resolve_name (self, ip):
|
|
|
+ if ip.startswith ("127."):
|
|
|
+ return "localhost"
|
|
|
+
|
|
|
+ try:
|
|
|
+ addr = reversename.from_address (ip)
|
|
|
+ return re.sub ("(.infra)?.ffpb.", "", str (resolver.query (addr, "PTR")[0]))
|
|
|
+ except dns.resolver.NXDOMAIN:
|
|
|
+ return ip
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
|
|
|
pass
|
|
|
|
|
@@ -176,7 +175,7 @@ def ffpb_ping(bot, trigger):
|
|
|
bot.say('Keine Antwort von "' + target_name + '" :-(')
|
|
|
else:
|
|
|
bot.say('Uh oh, irgendwas ist kaputt. Chef, ping result = ' + str(result) + ' - darf ich das essen?')
|
|
|
-
|
|
|
+
|
|
|
@willie.module.commands('exec-on-peer')
|
|
|
def ffpb_remoteexec(bot, trigger):
|
|
|
"""Remote Execution fuer FFPB_Knoten"""
|