From: ThomasV Date: Mon, 30 Apr 2012 15:43:58 +0000 (+0400) Subject: add server info command. send command line commands with tcp instead of http X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=commitdiff_plain;h=08cf934e360070582956a69ad0d077d6d6092025 add server info command. send command line commands with tcp instead of http --- diff --git a/backends/irc/__init__.py b/backends/irc/__init__.py index 81b223f..19ed451 100644 --- a/backends/irc/__init__.py +++ b/backends/irc/__init__.py @@ -111,6 +111,10 @@ class ServerProcessor(Processor): 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 diff --git a/processor.py b/processor.py index d012f5d..837d78d 100644 --- a/processor.py +++ b/processor.py @@ -164,6 +164,7 @@ class Session: self.subscriptions = [] self.address = '' self.name = '' + self.version = 'unknown' threading.Timer(2, self.info).start() # Debugging method. Doesn't need to be threadsafe. diff --git a/server.py b/server.py index 4de3c90..09bf816 100755 --- a/server.py +++ b/server.py @@ -54,14 +54,16 @@ def create_config(): 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() @@ -72,7 +74,7 @@ if __name__ == '__main__': 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 diff --git a/transports/stratum_http.py b/transports/stratum_http.py index 47ef744..6e13aac 100644 --- a/transports/stratum_http.py +++ b/transports/stratum_http.py @@ -303,6 +303,7 @@ class HttpServer(threading.Thread): 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() diff --git a/transports/stratum_tcp.py b/transports/stratum_tcp.py index cb0f203..bd7cdae 100644 --- a/transports/stratum_tcp.py +++ b/transports/stratum_tcp.py @@ -12,7 +12,6 @@ class TcpSession(Session): Session.__init__(self) self._connection = connection self.address = address[0] - self.version = 'unknown' self.name = "TCP session" def connection(self):