@@ -50,13 +50,16 @@ def ping(f):
5050def on_connect (f ):
5151 '''Callback when proxy get connected to the pool'''
5252 log .info ("Connected to Stratum pool at %s:%d" % f .main_host )
53+ f .is_connected = True
54+ f .remote_ip = f .client ._get_ip ()
5355 #reactor.callLater(30, f.client.transport.loseConnection)
5456
5557 # Hook to on_connect again
5658 f .on_connect .addCallback (on_connect )
5759
5860 # Get first job and user_id
59- initial_job = (yield f .rpc ('eth_submitLogin' , [settings .WALLET , settings .CUSTOM_EMAIL ], 'Proxy_' + version .VERSION ))
61+ debug = "_debug" if settings .DEBUG else ""
62+ initial_job = (yield f .rpc ('eth_submitLogin' , [settings .WALLET , settings .CUSTOM_EMAIL ], 'Proxy_' + version .VERSION + debug ))
6063
6164 reactor .callLater (0 , ping , f )
6265
@@ -65,51 +68,48 @@ def on_connect(f):
6568def on_disconnect (f ):
6669 '''Callback when proxy get disconnected from the pool'''
6770 log .info ("Disconnected from Stratum pool at %s:%d" % f .main_host )
71+ f .is_connected = False
6872 f .on_disconnect .addCallback (on_disconnect )
6973
70- # Prepare to failover, currently works very bad
71- #if f.main_host==(settings.POOL_HOST, settings.POOL_PORT):
72- # main()
73- #else:
74- # f.is_reconnecting = False
75- #return f
76-
7774@defer .inlineCallbacks
7875def main ():
7976 reactor .disconnectAll ()
80- failover = False
81- if settings .POOL_FAILOVER_ENABLE :
82- failover = settings .failover_pool
83- settings .failover_pool = not settings .failover_pool
84-
85- pool_host = settings .POOL_HOST
86- pool_port = settings .POOL_PORT
87- if failover and settings .POOL_FAILOVER_ENABLE :
88- pool_host = settings .POOL_HOST_FAILOVER
89- pool_port = settings .POOL_PORT_FAILOVER
9077
9178 log .warning ("Ethereum Stratum proxy version: %s" % version .VERSION )
92- log .warning ("Trying to connect to Stratum pool at %s:%d" % (pool_host , pool_port ))
9379
9480 # Connect to Stratum pool, main monitoring connection
95- f = SocketTransportClientFactory (pool_host , pool_port ,
81+ log .warning ("Trying to connect to Stratum pool at %s:%d" % (settings .POOL_HOST , settings .POOL_PORT ))
82+ f = SocketTransportClientFactory (settings .POOL_HOST , settings .POOL_PORT ,
83+ debug = settings .DEBUG , proxy = None ,
84+ event_handler = client_service .ClientMiningService )
85+ f .is_failover = False
86+
87+ ff = None
88+ if settings .POOL_FAILOVER_ENABLE :
89+ log .warning ("Trying to connect to failover Stratum pool at %s:%d" % (settings .POOL_HOST_FAILOVER , settings .POOL_PORT_FAILOVER ))
90+ ff = SocketTransportClientFactory (settings .POOL_HOST_FAILOVER , settings .POOL_PORT_FAILOVER ,
9691 debug = settings .DEBUG , proxy = None ,
9792 event_handler = client_service .ClientMiningService )
93+ ff .is_failover = True
9894
99- job_registry = jobs .JobRegistry (f )
95+ job_registry = jobs .JobRegistry (f , ff )
10096 client_service .ClientMiningService .job_registry = job_registry
10197 client_service .ClientMiningService .reset_timeout ()
10298
10399 f .on_connect .addCallback (on_connect )
104100 f .on_disconnect .addCallback (on_disconnect )
105101 # Cleanup properly on shutdown
106102 reactor .addSystemEventTrigger ('before' , 'shutdown' , on_shutdown , f )
103+ if ff :
104+ ff .on_connect .addCallback (on_connect )
105+ ff .on_disconnect .addCallback (on_disconnect )
106+ reactor .addSystemEventTrigger ('before' , 'shutdown' , on_shutdown , ff )
107107
108108 # Block until proxy connect to the pool
109109 try :
110110 yield f .on_connect
111111 except TransportException :
112- log .warning ("First pool server must be online first time to start failover " )
112+ log .warning ("First pool server must be online first time during start" )
113113 return
114114
115115 conn = reactor .listenTCP (settings .PORT , Site (getwork_listener .Root (job_registry , settings .ENABLE_WORKER_ID )), interface = settings .HOST )
@@ -133,14 +133,13 @@ def main():
133133 if settings .MONITORING :
134134 log .warning ("Email monitoring on %s" % settings .MONITORING_EMAIL )
135135 else :
136- log .warning ("Email monitoring diasbled " )
137- # log.warning("Failover enabled: %" % settings.POOL_FAILOVER_ENABLE)
136+ log .warning ("Email monitoring disabled " )
137+ log .warning ("Failover enabled: %s " % settings .POOL_FAILOVER_ENABLE )
138138 log .warning ("-----------------------------------------------------------------------" )
139139
140140if __name__ == '__main__' :
141141 fp = file ("eth-proxy.pid" , 'w' )
142142 fp .write (str (os .getpid ()))
143143 fp .close ()
144- settings .failover_pool = False
145144 main ()
146145 reactor .run ()
0 commit comments