Commit feac1be2 authored by Klaus-Uwe Mitterer's avatar Klaus-Uwe Mitterer

Include SKS in server

parent f09cb307
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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment