if password == self.password:
self.shared.stop()
result = 'ok'
+
+ elif method == 'server.info':
+ result = map(lambda s: s.address, self.dispatcher.request_dispatcher.sessions)
+
else:
print "unknown method", request
self.subscriptions = []
self.address = ''
self.name = ''
+ self.version = 'unknown'
threading.Timer(2, self.info).start()
# Debugging method. Doesn't need to be threadsafe.
return config
-def run_rpc_command(command, stratum_http_port):
- import jsonrpclib
- server = jsonrpclib.Server('http://%s:%s'%(host, stratum_http_port))
- if command == 'stop':
- result = server.server.stop(password)
- else:
- result = "Unknown command: '%s'" % command
- print result
+def run_rpc_command(command, stratum_tcp_port):
+ import socket, json
+ s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
+ s.connect(( host, int(stratum_tcp_port )))
+ method = 'server.' + command
+ request = json.dumps( { 'id':0, 'method':method, 'params':[password] } )
+ s.send(request + '\n')
+ msg = s.recv(1024)
+ s.close()
+ print json.loads(msg).get('result')
if __name__ == '__main__':
config = create_config()
stratum_http_port = config.get('server', 'stratum_http_port')
if len(sys.argv) > 1:
- run_rpc_command(sys.argv[1], stratum_http_port)
+ run_rpc_command(sys.argv[1], stratum_tcp_port)
sys.exit(0)
from processor import Dispatcher
self.server = StratumThreadedJSONRPCServer(( self.host, self.port))
self.server.dispatcher = self.dispatcher
self.server.register_function(None, 'server.stop')
+ self.server.register_function(None, 'server.info')
print "HTTP server started."
self.server.serve_forever()
Session.__init__(self)
self._connection = connection
self.address = address[0]
- self.version = 'unknown'
self.name = "TCP session"
def connection(self):