check if a server is running before startup
authorThomasV <thomasv1@gmx.de>
Mon, 17 Feb 2014 20:38:17 +0000 (21:38 +0100)
committerThomasV <thomasv1@gmx.de>
Mon, 17 Feb 2014 20:38:17 +0000 (21:38 +0100)
server.py

index 57a7b7b..a387005 100755 (executable)
--- a/server.py
+++ b/server.py
@@ -84,7 +84,7 @@ def create_config():
 def run_rpc_command(command, stratum_tcp_port):
     try:
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        s.connect((host, int(stratum_tcp_port)))
+        s.connect((host, stratum_tcp_port))
     except:
         print "cannot connect to server."
         return
@@ -124,10 +124,10 @@ if __name__ == '__main__':
     config = create_config()
     password = config.get('server', 'password')
     host = config.get('server', 'host')
-    stratum_tcp_port = config.get('server', 'stratum_tcp_port')
-    stratum_http_port = config.get('server', 'stratum_http_port')
-    stratum_tcp_ssl_port = config.get('server', 'stratum_tcp_ssl_port')
-    stratum_http_ssl_port = config.get('server', 'stratum_http_ssl_port')
+    stratum_tcp_port = config.getint('server', 'stratum_tcp_port')
+    stratum_http_port = config.getint('server', 'stratum_http_port')
+    stratum_tcp_ssl_port = config.getint('server', 'stratum_tcp_ssl_port')
+    stratum_http_ssl_port = config.getint('server', 'stratum_http_ssl_port')
     ssl_certfile = config.get('server', 'ssl_certfile')
     ssl_keyfile = config.get('server', 'ssl_keyfile')
 
@@ -138,6 +138,19 @@ if __name__ == '__main__':
         run_rpc_command(sys.argv[1], stratum_tcp_port)
         sys.exit(0)
 
+    try:
+        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        s.connect((host, stratum_tcp_port))
+        s.close()
+        is_running = True
+    except:
+        is_running = False
+
+    if is_running:
+        print "server already running"
+        sys.exit(1)
+
+
     from processor import Dispatcher, print_log
     from backends.irc import ServerProcessor
 
@@ -169,22 +182,22 @@ if __name__ == '__main__':
     # Create various transports we need
     if stratum_tcp_port:
         from transports.stratum_tcp import TcpServer
-        tcp_server = TcpServer(dispatcher, host, int(stratum_tcp_port), False, None, None)
+        tcp_server = TcpServer(dispatcher, host, stratum_tcp_port, False, None, None)
         transports.append(tcp_server)
 
     if stratum_tcp_ssl_port:
         from transports.stratum_tcp import TcpServer
-        tcp_server = TcpServer(dispatcher, host, int(stratum_tcp_ssl_port), True, ssl_certfile, ssl_keyfile)
+        tcp_server = TcpServer(dispatcher, host, stratum_tcp_ssl_port, True, ssl_certfile, ssl_keyfile)
         transports.append(tcp_server)
 
     if stratum_http_port:
         from transports.stratum_http import HttpServer
-        http_server = HttpServer(dispatcher, host, int(stratum_http_port), False, None, None)
+        http_server = HttpServer(dispatcher, host, stratum_http_port, False, None, None)
         transports.append(http_server)
 
     if stratum_http_ssl_port:
         from transports.stratum_http import HttpServer
-        http_server = HttpServer(dispatcher, host, int(stratum_http_ssl_port), True, ssl_certfile, ssl_keyfile)
+        http_server = HttpServer(dispatcher, host, stratum_http_ssl_port, True, ssl_certfile, ssl_keyfile)
         transports.append(http_server)
 
     for server in transports: