"""
-from processor import random_string
+from processor import random_string, print_log
def get_version(request):
class StratumJSONRPCRequestHandler(
SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
-
+
+ def do_OPTIONS(self):
+ self.send_response(200)
+ self.send_header('Allow', 'GET, POST, OPTIONS')
+ self.send_header('Access-Control-Allow-Origin', '*')
+ self.send_header('Access-Control-Allow-Headers', '*')
+ self.send_header('Content-Length', '0')
+ self.end_headers()
+
def do_GET(self):
if not self.is_rpc_path_valid():
self.report_404()
self.end_headers()
self.wfile.write(response)
self.wfile.flush()
- self.connection.shutdown(1)
+ self.shutdown_connection()
def do_POST(self):
self.end_headers()
self.wfile.write(response)
self.wfile.flush()
+ self.shutdown_connection()
+
+ def shutdown_connection(self):
self.connection.shutdown(1)
+class SSLRequestHandler(StratumJSONRPCRequestHandler):
+ def setup(self):
+ self.connection = self.request
+ self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)
+ self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)
+ def shutdown_connection(self):
+ self.connection.shutdown()
-class SSLTCPServer(SocketServer.TCPServer):
+class SSLTCPServer(SocketServer.TCPServer):
def __init__(self, server_address, certfile, keyfile, RequestHandlerClass, bind_and_activate=True):
SocketServer.BaseServer.__init__(self, server_address, RequestHandlerClass)
- ctx = SSL.Context(SSL.SSLv3_METHOD)
- self.certfile = certfile
- self.keyfile = keyfile
- #certfile = '/etc/ssl/certs/cacert.pem'
- #keyfile = '/etc/ssl/private/cakey.pem'
+ ctx = SSL.Context(SSL.SSLv23_METHOD)
ctx.use_privatekey_file(keyfile)
ctx.use_certificate_file(certfile)
self.socket = SSL.Connection(ctx, socket.socket(self.address_family, self.socket_type))
self.server_activate()
def shutdown_request(self,request):
- request.shutdown()
+ #request.shutdown()
+ pass
class StratumHTTPServer(SocketServer.TCPServer, StratumJSONRPCDispatcher):
allow_reuse_address = True
def __init__(self, addr, certfile, keyfile,
- requestHandler=StratumJSONRPCRequestHandler,
+ requestHandler=SSLRequestHandler,
logRequests=False, encoding=None, bind_and_activate=True,
address_family=socket.AF_INET):
if self.use_ssl:
class StratumThreadedServer(ThreadingMixIn, StratumHTTPSSLServer): pass
self.server = StratumThreadedServer(( self.host, self.port), self.certfile, self.keyfile)
- print "HTTPS server started."
+ print_log( "HTTPS server started.")
else:
class StratumThreadedServer(ThreadingMixIn, StratumHTTPServer): pass
self.server = StratumThreadedServer(( self.host, self.port))
- print "HTTP server started."
+ print_log( "HTTP server started.")
self.server.dispatcher = self.dispatcher
self.server.register_function(None, 'server.stop')