40 lines
1.4 KiB
Python
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()
|