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()