Include SKS in server

This commit is contained in:
Klaus-Uwe Mitterer 2017-06-22 17:54:11 +02:00
parent f09cb30772
commit feac1be289
1 changed files with 32 additions and 2 deletions

View File

@ -1,4 +1,15 @@
import datetime, encodings.idna, os, porttools, servertools.dbconn, setuptools, socket, socketserver, ssltools, sys, syslog, threading
import datetime
import encodings.idna
import os
import porttools
import setuptools
import skstools
import socket
import socketserver
import ssltools
import sys
import syslog
import threading
SYSLOG = 0
STDOUT = 1
@ -7,6 +18,7 @@ SILENT = 9 # Quiet mode
SSL = 0
PORT = 1
SKS = 2
logging = STDOUT
@ -35,7 +47,7 @@ def logger(message, prio=syslog.LOG_INFO, sink=logging):
def listIncluded(host, section):
if not setuptools.getListSetting("Server", "ignorelist"):
for i in setuptools.getListSetting("SSL" if section == SSL else "Ports", "hosts"):
for i in setuptools.getListSetting("SSL" if section == SSL else "Ports" if section == PORT else "SKS", "hosts"):
if encodings.idna.ToASCII(i[0].lower()).decode("UTF-8") == encodings.idna.ToASCII(host.lower()).decode("UTF-8"):
return True
return False
@ -60,10 +72,13 @@ class TCPHandler(socketserver.StreamRequestHandler):
return "HI: Kumi Status v0.8.15 (KSP) at %s" % setuptools.getSetting("Server", "host") or socket.gethostname()
except Exception as e:
print(e)
elif command in ("heartbeat", "hb", "ping"):
return "OK: Still here? Wow."
elif command in ("stat", "status"):
return "UA: Not currently implemented."
elif command in ("ssl", "tls"):
try:
host = encodings.idna.ToASCII(str(content[1])).decode("UTF-8")
@ -89,6 +104,7 @@ class TCPHandler(socketserver.StreamRequestHandler):
except Exception as e:
print(e)
return "ER: Could not verify SSL certificate on %s:%i. Is the server down?" % (content[1], int(content[2]))
elif command == "port":
host = encodings.idna.ToASCII(str(content[1])).decode("UTF-8")
port = int(content[2])
@ -99,12 +115,26 @@ class TCPHandler(socketserver.StreamRequestHandler):
return "ER: Port %i is not open on %s." % (port, content[1])
else:
return "NM: %s is not being monitored!" % content[1]
elif command in ("sks", "keyserver"):
host = encodings.idna.ToASCII(str(content[1])).decode("UTF-8")
if listIncluded(host, SKS):
if skstools.getStatus(host):
return "OK: SKS is running on %s and included in the pools." % content[1]
else:
return "ER: The SKS keyserver at %s is not included in the pools." % content[1]
else:
return "NM: %s is not being monitored!" % content[1]
elif command in ("req", "request"):
return "NI: Requesting monitoring is not yet implemented."
elif command == "help":
return "UA: Not currently implemented."
else:
return "IM: Unknown command %s." % command
except TypeError as e:
return "IM: Invalid values passed to %s. Try HELP %s." % (command, command)
except IndexError as e: