This repository has been archived on 2023-10-10. You can view files and clone it, but cannot push or open issues/pull-requests.
hackfridge/mainframe/server.py

40 lines
1.4 KiB
Python

import SocketServer
import logic
import config
import ssl
import socket
class TerminalHandler(SocketServer.StreamRequestHandler):
def handle(self):
print '<'
try:
line = self.rfile.readline()
db = logic.sql_connect()
code, dn = map(lambda s: s.strip(), line.split(' '))
print code, dn
logic.add_purchase(db, dn, None, code)
db.close()
except Exception as e:
self.server.errlog.write(str(e) + '\n')
finally:
print '>'
# http://code.activestate.com/recipes/442473-simple-http-server-supporting-ssl-secure-communica/
class MainframeServer(SocketServer.TCPServer):
def __init__(self, address, handler, cert_file, key_file, ca_cert, **kw):
SocketServer.BaseServer.__init__(self, address, handler, **kw)
self.socket = ssl.wrap_socket(socket.socket(self.address_family, self.socket_type),
keyfile=key_file, certfile=cert_file, server_side=True, cert_reqs=ssl.CERT_REQUIRED,
ca_certs=ca_cert, ssl_version=ssl.PROTOCOL_TLSv1)
self.allow_reuse_address = True
self.server_bind()
self.server_activate()
if __name__ == '__main__':
from sys import stderr
server = MainframeServer((config.HOST, config.PORT), TerminalHandler,
config.cert_file, config.key_file, config.ca_cert)
server.errlog = stderr
server.serve_forever()