diff --git a/lib/getwork_proxy.py b/lib/getwork_proxy.py deleted file mode 100644 index 7a76182..0000000 --- a/lib/getwork_proxy.py +++ /dev/null @@ -1,84 +0,0 @@ -import stratum.logger -log = stratum.logger.get_logger('Getwork Proxy') - -from stratum import settings -from stratum.socket_transport import SocketTransportClientFactory - -from twisted.internet import reactor, defer -from twisted.web import server - -from mining_libs import getwork_listener -from mining_libs import client_service -from mining_libs import jobs -from mining_libs import worker_registry -from mining_libs import version - -class Site(server.Site): - def log(self, request): - pass - -def on_shutdown(f): - log.info("Shutting down proxy...") - f.is_reconnecting = False # Don't let stratum factory to reconnect again - -@defer.inlineCallbacks -def on_connect(f, workers, job_registry): - log.info("Connected to Stratum pool at %s:%d" % f.main_host) - - # Hook to on_connect again - f.on_connect.addCallback(on_connect, workers, job_registry) - - # Every worker have to re-autorize - workers.clear_authorizations() - - # Subscribe for receiving jobs - log.info("Subscribing for mining jobs") - (_, extranonce1, extranonce2_size) = (yield f.rpc('mining.subscribe', [])) - job_registry.set_extranonce(extranonce1, extranonce2_size) - - defer.returnValue(f) - -def on_disconnect(f, workers, job_registry): - log.info("Disconnected from Stratum pool at %s:%d" % f.main_host) - f.on_disconnect.addCallback(on_disconnect, workers, job_registry) - - # Reject miners because we don't give a *job :-) - workers.clear_authorizations() - return f - -@defer.inlineCallbacks -def GetworkProxy_main(cb): - log.info("Stratum proxy version %s Connecting to Pool..." % version.VERSION) - - # Connect to Stratum pool - f = SocketTransportClientFactory(settings.HOSTNAME, settings.LISTEN_SOCKET_TRANSPORT, - debug=False, proxy=None, event_handler=client_service.ClientMiningService) - - job_registry = jobs.JobRegistry(f, cmd='', no_midstate=settings.GW_DISABLE_MIDSTATE, real_target=settings.GW_SEND_REAL_TARGET) - client_service.ClientMiningService.job_registry = job_registry - client_service.ClientMiningService.reset_timeout() - - workers = worker_registry.WorkerRegistry(f) - f.on_connect.addCallback(on_connect, workers, job_registry) - f.on_disconnect.addCallback(on_disconnect, workers, job_registry) - - # Cleanup properly on shutdown - reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f) - - # Block until proxy connects to the pool - yield f.on_connect - - # Setup getwork listener - gw_site = Site(getwork_listener.Root(job_registry, workers, - stratum_host=settings.HOSTNAME, stratum_port=settings.LISTEN_SOCKET_TRANSPORT, - custom_lp=False, custom_stratum=False, - custom_user=False, custom_password=False - )) - gw_site.noisy = False - reactor.listenTCP(settings.GW_PORT, gw_site, interface='0.0.0.0') - - log.info("Getwork Proxy is online, Port: %d" % (settings.GW_PORT)) - -def GetworkProxy(start_event): - start_event.addCallback(GetworkProxy_main) -