Use threading, added missing do_BLOCK method

This commit is contained in:
Daniel Perna 2018-03-30 16:08:44 +02:00
parent 015d272e99
commit d1e0ec58a1

View file

@ -4158,6 +4158,12 @@ class RequestHandler(BaseHTTPRequestHandler):
return return
class AuthHandler(RequestHandler): class AuthHandler(RequestHandler):
def do_BLOCK(self, status=420, reason="Policy not fulfilled"):
self.send_response(status)
self.send_header("Connection", "Close")
self.end_headers()
self.wfile.write(bytes(reason, "utf8"))
def do_AUTHHEAD(self): def do_AUTHHEAD(self):
LOG.info("Requesting authorization") LOG.info("Requesting authorization")
self.send_response(401) self.send_response(401)
@ -4221,12 +4227,19 @@ class AuthHandler(RequestHandler):
self.wfile.write(bytes('Authentication required', 'utf-8')) self.wfile.write(bytes('Authentication required', 'utf-8'))
pass pass
class SimpleServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
daemon_threads = True
allow_reuse_address = True
def __init__(self, server_address, RequestHandlerClass):
socketserver.TCPServer.__init__(self, server_address, RequestHandlerClass)
def main(args): def main(args):
global HTTPD, CREDENTIALS global HTTPD, CREDENTIALS
if args: if args:
load_settings(args[0]) load_settings(args[0])
LOG.info("Starting server") LOG.info("Starting server")
CustomServer = socketserver.TCPServer CustomServer = SimpleServer
if ':' in LISTENIP: if ':' in LISTENIP:
CustomServer.address_family = socket.AF_INET6 CustomServer.address_family = socket.AF_INET6
server_address = (LISTENIP, LISTENPORT) server_address = (LISTENIP, LISTENPORT)
@ -4236,7 +4249,6 @@ def main(args):
else: else:
Handler = RequestHandler Handler = RequestHandler
HTTPD = CustomServer(server_address, Handler) HTTPD = CustomServer(server_address, Handler)
HTTPD.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if SSL_CERTIFICATE: if SSL_CERTIFICATE:
HTTPD.socket = ssl.wrap_socket(HTTPD.socket, HTTPD.socket = ssl.wrap_socket(HTTPD.socket,
certfile=SSL_CERTIFICATE, certfile=SSL_CERTIFICATE,