Esempio n. 1
0
    def connectionFailed(self, res):
        """connecting -> disconnected
        """
        self.__C, C = DeferredManager(), self.__C
        C.callback(None)
        # now C armed, D fired

        Connector.connectionFailed(self, res)
Esempio n. 2
0
    def connectionLost(self, res):
        """connected -> disconnected
        """
        self.__C=DeferredManager()
        self.__D, D = DeferredManager(), self.__D
        if self.__protocol is not None:
            # the None case only happens if there was
            # an exception during the connection setup
            D.callback(self.__protocol)
            self.__protocol=None
        # now C armed, D fired

        Connector.connectionLost(self, res)
Esempio n. 3
0
 def test_tcp_repr(self):
     c = Connector('localhost', 666, object(), 0, object())
     expect = "<twisted.internet.tcp.Connector instance at 0x%x " \
         "disconnected %s>"
     expect = expect % (id(c), c.getDestination())
     self.assertEqual(repr(c), expect)
Esempio n. 4
0
 def clientConnectionLost(self, connector: Connector, reason: str) -> None:
     """If we get disconnected, reconnect to server."""
     log.warning("WhiskerMainPortFactory: disconnected")
     connector.connect()
Esempio n. 5
0
def connectServer(serverName, serverDict, defaultAntiIdle, defaultIdleTimeout):
    """ Establish connections to the specified server according to the server information dict
    (constructed from the config file). Returns the number of connections that were attempted
    to be made """
    defaultConnectTimeout = 30
    connectionCount = 0
    hosts = serverDict['hosts']
    connections = int(serverDict['connections'])

    for host in hosts:
        antiIdle = int(setWithDefault(serverDict, 'antiIdle', defaultAntiIdle))
        idleTimeout = int(
            setWithDefault(serverDict, 'idleTimeout', defaultIdleTimeout))
        skipGroupCmd = setWithDefault(serverDict, 'skipGroupCmd', False)
        fillServer = setWithDefault(serverDict, 'fillserver', 0)
        useSSL = setWithDefault(serverDict, 'ssl', False)

        nsf = NZBLeecherFactory(serverDict['username'], serverDict['password'],
                                idleTimeout, antiIdle, host, serverName,
                                skipGroupCmd, fillServer)
        color = nsf.color
        Hellanzb.nsfs.append(nsf)

        split = host.split(':')
        host = split[0]
        if len(split) == 2:
            port = int(split[1])
        else:
            port = 119
        nsf.host, nsf.port = host, port

        preWrappedNsf = nsf
        nsf = HellaThrottlingFactory(nsf)

        ctxf = None
        if useSSL:
            try:
                from twisted.internet.ssl import Connector as SSLConnector
                from twisted.internet.ssl import ClientContextFactory
            except ImportError, ie:
                error('Unable to use SSL for server: %s\npyOpenSSL is not '
                      'installed: %s' % (serverName, str(ie)))
                shutdownAndExit(1)
            ctxf = ClientContextFactory()

        for connection in range(connections):
            if serverDict.has_key('bindTo') and serverDict['bindTo'] != None and \
                    serverDict['bindTo'] != '':
                if antiIdle != 0:
                    if useSSL:
                        reactor.connectSSL(host,
                                           port,
                                           nsf,
                                           ctxf,
                                           bindAddress=(serverDict['bindTo'],
                                                        0))
                    else:
                        reactor.connectTCP(host,
                                           port,
                                           nsf,
                                           bindAddress=(serverDict['bindTo'],
                                                        0))
                else:
                    if useSSL:
                        connector = SSLConnector(host,
                                                 port,
                                                 nsf,
                                                 ctxf,
                                                 defaultConnectTimeout,
                                                 (serverDict['bindTo'], 0),
                                                 reactor=reactor)
                    else:
                        connector = Connector(host,
                                              port,
                                              nsf,
                                              defaultConnectTimeout,
                                              (serverDict['bindTo'], 0),
                                              reactor=reactor)
            else:
                if antiIdle != 0:
                    if useSSL:
                        reactor.connectSSL(host, port, nsf, ctxf)
                    else:
                        reactor.connectTCP(host, port, nsf)
                else:
                    if useSSL:
                        connector = SSLConnector(host,
                                                 port,
                                                 nsf,
                                                 ctxf,
                                                 defaultConnectTimeout,
                                                 None,
                                                 reactor=reactor)
                    else:
                        connector = Connector(host,
                                              port,
                                              nsf,
                                              defaultConnectTimeout,
                                              None,
                                              reactor=reactor)

            if antiIdle == 0:
                preWrappedNsf.leecherConnectors.append(connector)
            connectionCount += 1
        preWrappedNsf.setConnectionCount(connectionCount)
Esempio n. 6
0
 def __init__(self, *args, **kws):
     Connector.__init__(self, *args, **kws)
     
     self.__C=DeferredManager()
     self.__D=DeferredManager()
     self.__D.callback(None)
 def clientConnectionLost(self, connector: Connector, reason: str) -> None:
     """If we get disconnected, reconnect to server."""
     log.warning("WhiskerMainPortFactory: disconnected")
     connector.connect()