password
authorThomasV <thomasv@gitorious>
Thu, 29 Mar 2012 21:19:36 +0000 (01:19 +0400)
committerThomasV <thomasv@gitorious>
Thu, 29 Mar 2012 21:19:36 +0000 (01:19 +0400)
server.py
transports/stratum_http.py

index 6feb636..8b67e49 100755 (executable)
--- a/server.py
+++ b/server.py
@@ -96,7 +96,7 @@ if __name__ == '__main__':
     transports = []
     if native_port: transports.append( NativeServer(shared, abe, sb, config.get('server','banner'), host, int(native_port)) )
     if stratum_tcp_port: transports.append( TcpServer(dispatcher, host, int(stratum_tcp_port)) )
-    if stratum_http_port: transports.append( HttpServer(dispatcher, host, int(stratum_http_port)) )
+    if stratum_http_port: transports.append( HttpServer(dispatcher, host, int(stratum_http_port), password) )
     for server in transports:
         server.start()
 
index a7ef49d..b9fe30c 100644 (file)
@@ -341,13 +341,14 @@ class HttpSession(Session):
         self.pending_responses.append(response)
 
 class HttpServer(threading.Thread):
-    def __init__(self, dispatcher, host, port):
+    def __init__(self, dispatcher, host, port, password):
         self.shared = dispatcher.shared
         self.dispatcher = dispatcher.request_dispatcher
         threading.Thread.__init__(self)
         self.daemon = True
         self.host = host
         self.port = port
+        self.password = password
         self.lock = threading.Lock()
 
     def run(self):
@@ -373,8 +374,13 @@ class HttpServer(threading.Thread):
             self.dispatcher.process(session, request)
 
     def do_stop(self, session, request):
-        self.shared.stop()
-        return 'ok'
+        try:
+            password = request['params'][0]
+        except:
+            password = None
+        if password == self.password:
+            self.shared.stop()
+            return 'ok'