mirror of
https://github.com/house-of-vanity/conf_bot.git
synced 2025-07-06 22:34:07 +00:00
64 lines
1.8 KiB
Python
Executable File
64 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from http.server import HTTPServer, SimpleHTTPRequestHandler, CGIHTTPRequestHandler
|
|
from socketserver import BaseServer
|
|
import ssl
|
|
import json
|
|
import settings
|
|
|
|
# fuckin dirty hack. idk the best way to inherit return func into
|
|
# RequestHandler class
|
|
|
|
|
|
class RequestHandler(SimpleHTTPRequestHandler):
|
|
def __init__(self,
|
|
request,
|
|
client_address,
|
|
server):
|
|
self.worker = settings.worker
|
|
super(RequestHandler, self).__init__(
|
|
request=request,
|
|
client_address=client_address,
|
|
server=server)
|
|
|
|
def do_POST(self):
|
|
"""Serve a POST request."""
|
|
self.send_response(200)
|
|
self.send_header('Content-Type', 'text/html')
|
|
self.end_headers()
|
|
|
|
length = self.headers.get('content-length')
|
|
post_body = self.rfile.read(int(length))
|
|
msg = json.loads(post_body.decode("utf-8"))
|
|
self.worker.handleUpdate(msg)
|
|
|
|
def do_GET(self):
|
|
pass
|
|
|
|
|
|
class WebHook:
|
|
def __init__(self,
|
|
certfile,
|
|
keyfile,
|
|
address=settings.parser.get('bot', 'bind_address'),
|
|
port=8443,
|
|
RequestHandler=RequestHandler):
|
|
|
|
self.httpd = HTTPServer((address, port), RequestHandler)
|
|
self.httpd.socket = ssl.wrap_socket(self.httpd.socket,
|
|
certfile=certfile,
|
|
keyfile=keyfile,
|
|
server_side=True)
|
|
|
|
def serve(self):
|
|
try:
|
|
self.httpd.serve_forever()
|
|
except KeyboardInterrupt:
|
|
pass
|
|
except Exception as e:
|
|
print("ERROR: %s" % e)
|
|
finally:
|
|
# Clean-up server (close socket, etc.)
|
|
self.httpd.server_close()
|