示例#1
0
def main():
    reactor.disconnectAll()

    log.warning("Ethereum Stratum proxy version: %s" % version.VERSION)

    # Connect to Stratum pool, main monitoring connection
    log.warning("Trying to connect to Stratum pool at %s:%d" %
                (settings.POOL_HOST, settings.POOL_PORT))
    f = SocketTransportClientFactory(
        settings.POOL_HOST,
        settings.POOL_PORT,
        debug=settings.DEBUG,
        proxy=None,
        event_handler=client_service.ClientMiningService)

    f1 = None
    f2 = None
    f3 = None
    if settings.POOL_FAILOVER_ENABLE:
        log.warning(
            "Trying to connect to failover Stratum pool-1 at %s:%d" %
            (settings.POOL_HOST_FAILOVER1, settings.POOL_PORT_FAILOVER1))
        f1 = SocketTransportClientFactory(
            settings.POOL_HOST_FAILOVER1,
            settings.POOL_PORT_FAILOVER1,
            debug=settings.DEBUG,
            proxy=None,
            event_handler=client_service.ClientMiningService)
        f1.is_failover = True

        log.warning(
            "Trying to connect to failover Stratum pool-2 at %s:%d" %
            (settings.POOL_HOST_FAILOVER2, settings.POOL_PORT_FAILOVER2))
        f2 = SocketTransportClientFactory(
            settings.POOL_HOST_FAILOVER2,
            settings.POOL_PORT_FAILOVER2,
            debug=settings.DEBUG,
            proxy=None,
            event_handler=client_service.ClientMiningService)
        f2.is_failover = True

        log.warning(
            "Trying to connect to failover Stratum pool-3 at %s:%d" %
            (settings.POOL_HOST_FAILOVER3, settings.POOL_PORT_FAILOVER3))
        f3 = SocketTransportClientFactory(
            settings.POOL_HOST_FAILOVER3,
            settings.POOL_PORT_FAILOVER3,
            debug=settings.DEBUG,
            proxy=None,
            event_handler=client_service.ClientMiningService)
        f3.is_failover = True

    job_registry = jobs.JobRegistry(f, f1, f2, f3)
    client_service.ClientMiningService.job_registry = job_registry
    client_service.ClientMiningService.reset_timeout()

    f.on_connect.addCallback(on_connect)
    f.on_disconnect.addCallback(on_disconnect)
    # Cleanup properly on shutdown
    reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f)
    if f1:
        f1.on_connect.addCallback(on_connect)
        f1.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f1)

    if f2:
        f2.on_connect.addCallback(on_connect)
        f2.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f2)

    if f3:
        f3.on_connect.addCallback(on_connect)
        f3.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f3)

    # Block until proxy connect to the pool
    try:
        yield f.on_connect
    except TransportException:
        log.warning("First pool server must be online first time during start")
        return

    conn = reactor.listenTCP(
        settings.PORT,
        Site(getwork_listener.Root(job_registry, settings.ENABLE_WORKER_ID)),
        interface=settings.HOST)

    try:
        conn.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE,
                               1)  # Enable keepalive packets
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE,
                               60)  # Seconds before sending keepalive probes
        conn.socket.setsockopt(
            socket.SOL_TCP, socket.TCP_KEEPINTVL,
            1)  # Interval in seconds between keepalive probes
        conn.socket.setsockopt(
            socket.SOL_TCP, socket.TCP_KEEPCNT,
            5)  # Failed keepalive probles before declaring other end dead
    except:
        pass  # Some socket features are not available on all platforms (you can guess which one)

    log.warning(
        "-----------------------------------------------------------------------"
    )
    if settings.HOST == '0.0.0.0':
        log.warning("PROXY IS LISTENING ON ALL IPs ON PORT %d" % settings.PORT)
    else:
        log.warning("LISTENING FOR MINERS ON http://%s:%d" %
                    (settings.HOST, settings.PORT))
    log.warning(
        "-----------------------------------------------------------------------"
    )
    log.warning("Wallet: %s" % settings.WALLET)
    log.warning("Worker ID enabled: %s" % settings.ENABLE_WORKER_ID)
    if settings.MONITORING:
        log.warning("Email monitoring on %s" % settings.MONITORING_EMAIL)
    else:
        log.warning("Email monitoring disabled")
    log.warning("Failover enabled: %s" % settings.POOL_FAILOVER_ENABLE)
    log.warning(
        "-----------------------------------------------------------------------"
    )
示例#2
0
def main():
    reactor.disconnectAll()

    log.warning("Ethereum Stratum proxy version: %s" % version.VERSION)

    # Connect to Stratum pool, main monitoring connection
    log.warning("Trying to connect to Stratum pool at %s:%d" % (mainpool, mainport))
    f = SocketTransportClientFactory(mainpool, mainport,
                debug=settings.DEBUG, proxy=None,
                event_handler=client_service.ClientMiningService)

    f1 = None
    f2 = None
    f3 = None
    if settings.POOL_FAILOVER_ENABLE:
        if not (backuppool1 is None):
            log.warning("Trying to connect to failover Stratum pool-1 at %s:%d" % (backuppool1, backupport1))
            f1 = SocketTransportClientFactory(backuppool1, backupport1,
                    debug=settings.DEBUG, proxy=None,
                    event_handler=client_service.ClientMiningService)
            f1.is_failover = True
            
        if not (backuppool2 is None):
            log.warning("Trying to connect to failover Stratum pool-2 at %s:%d" % (backuppool2, backupport2))
            f2 = SocketTransportClientFactory(backuppool2, backupport2,
                    debug=settings.DEBUG, proxy=None,
                    event_handler=client_service.ClientMiningService)
            f2.is_failover = True
        if not (backuppool3 is None):    
            log.warning("Trying to connect to failover Stratum pool-3 at %s:%d" % (backuppool3, backupport3))
            f3 = SocketTransportClientFactory(backuppool3, backupport3,
                    debug=settings.DEBUG, proxy=None,
                    event_handler=client_service.ClientMiningService)
            f3.is_failover = True

    job_registry = jobs.JobRegistry(f,f1,f2,f3)
    client_service.ClientMiningService.job_registry = job_registry
    client_service.ClientMiningService.reset_timeout()

    f.on_connect.addCallback(on_connect)
    f.on_disconnect.addCallback(on_disconnect)
    # Cleanup properly on shutdown
    reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f)
    if f1:
        f1.on_connect.addCallback(on_connect)
        f1.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f1)

    if f2:
        f2.on_connect.addCallback(on_connect)
        f2.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f2)

    if f3:
        f3.on_connect.addCallback(on_connect)
        f3.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f3)


    # Block until proxy connect to the pool
    try:
        yield f.on_connect
    except TransportException:
        log.error("First pool server must be online during proxy startup.  Dying Gracefully.")
	reactor.stop()
	reactor.removeAll()
        return

    if len(proxywallet)!=42 and len(proxywallet)!=40:
        conn = reactor.listenTCP(settings.PORT, Site(getwork_listener.Root(job_registry, False)), interface=settings.HOST)
    else: 
        conn = reactor.listenTCP(settings.PORT, Site(getwork_listener.Root(job_registry, settings.ENABLE_WORKER_ID)), interface=settings.HOST)
    try:
        conn.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # Enable keepalive packets
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 60) # Seconds before sending keepalive probes
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 1) # Interval in seconds between keepalive probes
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 5) # Failed keepalive probles before declaring other end dead
    except:
        pass # Some socket features are not available on all platforms (you can guess which one)

    log.warning("-----------------------------------------------------------------------")
    if settings.HOST == '0.0.0.0':
        log.warning("PROXY IS LISTENING ON ALL IPs ON PORT %d" % settings.PORT)
    else:
        log.warning("LISTENING FOR MINERS ON http://%s:%d" % (settings.HOST, settings.PORT))
    log.warning("-----------------------------------------------------------------------")
    log.warning("Wallet: %s" % proxywallet)
    if len(proxywallet)!=42 and len(proxywallet)!=40:
        log.warning("Wallet is not 40/42 Characters in Length, WORKER ID DISABLED")
        log.warning("OK if using non-eth address based pool authentication")
        log.warning("Otherwise - BAD ETH WALLET")
    else:
	log.warning("Worker ID enabled: %s" % settings.ENABLE_WORKER_ID)
    if settings.MONITORING:
        log.warning("Email monitoring on %s" % settings.MONITORING_EMAIL)
    else:
        log.warning("Email monitoring disabled")
    log.warning("Failover enabled: %s" % settings.POOL_FAILOVER_ENABLE)
    log.warning("-----------------------------------------------------------------------")
示例#3
0
def main():
    reactor.disconnectAll()

    log.warning("Ethereum Stratum proxy version: %s" % version.VERSION)

    # Connect to Stratum pool, main monitoring connection
    log.warning("Trying to connect to Stratum pool at %s:%d" % (settings.POOL_HOST, settings.POOL_PORT))
    f = SocketTransportClientFactory(settings.POOL_HOST, settings.POOL_PORT,
                debug=settings.DEBUG, proxy=None,
                event_handler=client_service.ClientMiningService)
    f.is_failover = False

    ff = None
    if settings.POOL_FAILOVER_ENABLE:
        log.warning("Trying to connect to failover Stratum pool at %s:%d" % (settings.POOL_HOST_FAILOVER, settings.POOL_PORT_FAILOVER))
        ff = SocketTransportClientFactory(settings.POOL_HOST_FAILOVER, settings.POOL_PORT_FAILOVER,
                debug=settings.DEBUG, proxy=None,
                event_handler=client_service.ClientMiningService)
        ff.is_failover = True

    job_registry = jobs.JobRegistry(f,ff)
    client_service.ClientMiningService.job_registry = job_registry
    client_service.ClientMiningService.reset_timeout()

    f.on_connect.addCallback(on_connect)
    f.on_disconnect.addCallback(on_disconnect)
    # Cleanup properly on shutdown
    reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f)
    if ff:
        ff.on_connect.addCallback(on_connect)
        ff.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, ff)

    # Block until proxy connect to the pool
    try:
        yield f.on_connect
    except TransportException:
        log.warning("First pool server must be online first time during start")
        return

    conn = reactor.listenTCP(settings.PORT, Site(getwork_listener.Root(job_registry, settings.ENABLE_WORKER_ID)), interface=settings.HOST)

    try:
        conn.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # Enable keepalive packets
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 60) # Seconds before sending keepalive probes
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 1) # Interval in seconds between keepalive probes
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 5) # Failed keepalive probles before declaring other end dead
    except:
        pass # Some socket features are not available on all platforms (you can guess which one)

    log.warning("-----------------------------------------------------------------------")
    if settings.HOST == '0.0.0.0':
        log.warning("PROXY IS LISTENING ON ALL IPs ON PORT %d" % settings.PORT)
    else:
        log.warning("LISTENING FOR MINERS ON http://%s:%d" % (settings.HOST, settings.PORT))
    log.warning("-----------------------------------------------------------------------")
    log.warning("Wallet: %s" % settings.WALLET)
    log.warning("Worker ID enabled: %s" % settings.ENABLE_WORKER_ID)
    if settings.MONITORING:
        log.warning("Email monitoring on %s" % settings.MONITORING_EMAIL)
    else:
        log.warning("Email monitoring disabled")
    log.warning("Failover enabled: %s" % settings.POOL_FAILOVER_ENABLE)
    log.warning("-----------------------------------------------------------------------")
示例#4
0
def main():
    reactor.disconnectAll()

    log.warning("Ethereum Stratum proxy version: %s" % version.VERSION)

    # Connect to Stratum pool, main monitoring connection
    log.warning("Trying to connect to Stratum pool at %s:%d" %
                (mainpool, mainport))
    f = SocketTransportClientFactory(
        mainpool,
        mainport,
        debug=settings.DEBUG,
        proxy=None,
        event_handler=client_service.ClientMiningService)

    f1 = None
    f2 = None
    f3 = None
    if settings.POOL_FAILOVER_ENABLE:
        if not (backuppool1 is None):
            log.warning(
                "Trying to connect to failover Stratum pool-1 at %s:%d" %
                (backuppool1, backupport1))
            f1 = SocketTransportClientFactory(
                backuppool1,
                backupport1,
                debug=settings.DEBUG,
                proxy=None,
                event_handler=client_service.ClientMiningService)
            f1.is_failover = True

        if not (backuppool2 is None):
            log.warning(
                "Trying to connect to failover Stratum pool-2 at %s:%d" %
                (backuppool2, backupport2))
            f2 = SocketTransportClientFactory(
                backuppool2,
                backupport2,
                debug=settings.DEBUG,
                proxy=None,
                event_handler=client_service.ClientMiningService)
            f2.is_failover = True
        if not (backuppool3 is None):
            log.warning(
                "Trying to connect to failover Stratum pool-3 at %s:%d" %
                (backuppool3, backupport3))
            f3 = SocketTransportClientFactory(
                backuppool3,
                backupport3,
                debug=settings.DEBUG,
                proxy=None,
                event_handler=client_service.ClientMiningService)
            f3.is_failover = True

    job_registry = jobs.JobRegistry(f, f1, f2, f3)
    client_service.ClientMiningService.job_registry = job_registry
    client_service.ClientMiningService.reset_timeout()

    f.on_connect.addCallback(on_connect)
    f.on_disconnect.addCallback(on_disconnect)
    # Cleanup properly on shutdown
    reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f)
    if f1:
        f1.on_connect.addCallback(on_connect)
        f1.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f1)

    if f2:
        f2.on_connect.addCallback(on_connect)
        f2.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f2)

    if f3:
        f3.on_connect.addCallback(on_connect)
        f3.on_disconnect.addCallback(on_disconnect)
        reactor.addSystemEventTrigger('before', 'shutdown', on_shutdown, f3)

    # Block until proxy connect to the pool
    try:
        yield f.on_connect
    except TransportException:
        log.error(
            "First pool server must be online during proxy startup.  Dying Gracefully."
        )
        reactor.stop()
        reactor.removeAll()
        return

    if len(proxywallet) != 42 and len(proxywallet) != 40:
        conn = reactor.listenTCP(
            settings.PORT,
            Site(getwork_listener.Root(job_registry, False)),
            interface=settings.HOST)
    else:
        conn = reactor.listenTCP(
            settings.PORT,
            Site(getwork_listener.Root(job_registry,
                                       settings.ENABLE_WORKER_ID)),
            interface=settings.HOST)
    try:
        conn.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE,
                               1)  # Enable keepalive packets
        conn.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE,
                               60)  # Seconds before sending keepalive probes
        conn.socket.setsockopt(
            socket.SOL_TCP, socket.TCP_KEEPINTVL,
            1)  # Interval in seconds between keepalive probes
        conn.socket.setsockopt(
            socket.SOL_TCP, socket.TCP_KEEPCNT,
            5)  # Failed keepalive probles before declaring other end dead
    except:
        pass  # Some socket features are not available on all platforms (you can guess which one)

    log.warning(
        "-----------------------------------------------------------------------"
    )
    if settings.HOST == '0.0.0.0':
        log.warning("PROXY IS LISTENING ON ALL IPs ON PORT %d" % settings.PORT)
    else:
        log.warning("LISTENING FOR MINERS ON http://%s:%d" %
                    (settings.HOST, settings.PORT))
    log.warning(
        "-----------------------------------------------------------------------"
    )
    log.warning("Wallet: %s" % proxywallet)
    if len(proxywallet) != 42 and len(proxywallet) != 40:
        log.warning(
            "Wallet is not 40/42 Characters in Length, WORKER ID DISABLED")
        log.warning("OK if using non-eth address based pool authentication")
        log.warning("Otherwise - BAD ETH WALLET")
    else:
        log.warning("Worker ID enabled: %s" % settings.ENABLE_WORKER_ID)
    if settings.MONITORING:
        log.warning("Email monitoring on %s" % settings.MONITORING_EMAIL)
    else:
        log.warning("Email monitoring disabled")
    log.warning("Failover enabled: %s" % settings.POOL_FAILOVER_ENABLE)
    log.warning(
        "-----------------------------------------------------------------------"
    )