fix "wrong version number" error for HTTPS by using SSLv23
[electrum-server.git] / transports / stratum_http.py
index 4efdb97..b3e9a72 100644 (file)
@@ -49,7 +49,7 @@ from the processor point of view:
 """
 
 
-from processor import random_string
+from processor import random_string, print_log
 
 
 def get_version(request):
@@ -153,7 +153,15 @@ class StratumJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
 
 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()
@@ -260,7 +268,7 @@ class SSLRequestHandler(StratumJSONRPCRequestHandler):
 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)
+        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))
@@ -382,11 +390,11 @@ class HttpServer(threading.Thread):
         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')