def __init__(self, wrappedFactory):
        """Constructor.

        See WrappingFactory.__init__.
        """
        WrappingFactory.__init__(self, wrappedFactory)
        self.allConnectionsGone = None
Exemple #2
0
    def __init__(self, wrappedFactory, maxConnectionCount=sys.maxint):
        WrappingFactory.__init__(self, wrappedFactory)
        self.connectionCount = 0
        self.maxConnectionCount = maxConnectionCount

        self.ht = Hellanzb.ht
        self.ht.factories.append(self)
Exemple #3
0
 def __init__(self,
              wrappedFactory,
              whitelist,
              connection_type="connection"):
     self.whitelist = whitelist
     self.connection_type = connection_type
     WrappingFactory.__init__(self, wrappedFactory)
Exemple #4
0
    def __init__(self, wrappedFactory, maxConnectionCount=sys.maxint):
        WrappingFactory.__init__(self, wrappedFactory)
        self.connectionCount = 0
        self.maxConnectionCount = maxConnectionCount

        self.ht = Hellanzb.ht
        self.ht.factories.append(self)
Exemple #5
0
    def __init__(self, wrappedFactory):
        """Constructor.

        See WrappingFactory.__init__.
        """
        WrappingFactory.__init__(self, wrappedFactory)
        self.allConnectionsGone = None
Exemple #6
0
    def __init__(self, contextFactory, isClient, wrappedFactory):
        WrappingFactory.__init__(self, wrappedFactory)
        self._contextFactory = contextFactory
        self._isClient = isClient

        # Force some parameter checking in pyOpenSSL.  It's better to fail now
        # than after we've set up the transport.
        contextFactory.getContext()
Exemple #7
0
    def __init__(self, contextFactory, isClient, wrappedFactory):
        WrappingFactory.__init__(self, wrappedFactory)
        self._contextFactory = contextFactory
        self._isClient = isClient

        # Force some parameter checking in pyOpenSSL.  It's better to fail now
        # than after we've set up the transport.
        contextFactory.getContext()
Exemple #8
0
 def unregisterProtocol(self, p):
     WrappingFactory.unregisterProtocol(self, p)
     self.connectionCount -= 1
     self.ht.connectionCount -= 1
     
     if self.ht.connectionCount == 0:
         for name in ('unthrottleReadsID', 'checkReadBandwidthID',
                      'unthrottleWritesID', 'checkWriteBandwidthID'):
             self.cancelScheduled(getattr(self.ht, name))
Exemple #9
0
 def unregisterProtocol(self, p):
     WrappingFactory.unregisterProtocol(self, p)
     self.connectionCount -= 1
     self.ht.connectionCount -= 1
     
     if self.ht.connectionCount == 0:
         for name in ('unthrottleReadsID', 'checkReadBandwidthID',
                      'unthrottleWritesID', 'checkWriteBandwidthID'):
             self.cancelScheduled(getattr(self.ht, name))
Exemple #10
0
    def __init__(self, contextFactory, isClient, wrappedFactory):
        """
        Create a L{TLSMemoryBIOFactory}.

        @param contextFactory: Configuration parameters used to create an
            OpenSSL connection.  In order of preference, what you should pass
            here should be:

                1. L{twisted.internet.ssl.CertificateOptions} (if you're
                   writing a server) or the result of
                   L{twisted.internet.ssl.optionsForClientTLS} (if you're
                   writing a client).  If you want security you should really
                   use one of these.

                2. If you really want to implement something yourself, supply a
                   provider of L{IOpenSSLClientConnectionCreator} or
                   L{IOpenSSLServerConnectionCreator}.

                3. If you really have to, supply a
                   L{twisted.internet.ssl.ContextFactory}.  This will likely be
                   deprecated at some point so please upgrade to the new
                   interfaces.

        @type contextFactory: L{IOpenSSLClientConnectionCreator} or
            L{IOpenSSLServerConnectionCreator}, or, for compatibility with
            older code, anything implementing
            L{twisted.internet.interfaces.IOpenSSLContextFactory}.  See
            U{https://twistedmatrix.com/trac/ticket/7215} for information on
            the upcoming deprecation of passing a
            L{twisted.internet.ssl.ContextFactory} here.

        @param isClient: Is this a factory for TLS client connections; in other
            words, those that will send a C{ClientHello} greeting?  L{True} if
            so, L{False} otherwise.  This flag determines what interface is
            expected of C{contextFactory}.  If L{True}, C{contextFactory}
            should provide L{IOpenSSLClientConnectionCreator}; otherwise it
            should provide L{IOpenSSLServerConnectionCreator}.
        @type isClient: L{bool}

        @param wrappedFactory: A factory which will create the
            application-level protocol.
        @type wrappedFactory: L{twisted.internet.interfaces.IProtocolFactory}
        """
        WrappingFactory.__init__(self, wrappedFactory)
        if isClient:
            creatorInterface = IOpenSSLClientConnectionCreator
        else:
            creatorInterface = IOpenSSLServerConnectionCreator
        self._creatorInterface = creatorInterface
        if not creatorInterface.providedBy(contextFactory):
            contextFactory = _ContextFactoryToConnectionFactory(contextFactory)
        self._connectionCreator = contextFactory
Exemple #11
0
    def __init__(self, contextFactory, isClient, wrappedFactory):
        """
        Create a L{TLSMemoryBIOFactory}.

        @param contextFactory: Configuration parameters used to create an
            OpenSSL connection.  In order of preference, what you should pass
            here should be:

                1. L{twisted.internet.ssl.CertificateOptions} (if you're
                   writing a server) or the result of
                   L{twisted.internet.ssl.optionsForClientTLS} (if you're
                   writing a client).  If you want security you should really
                   use one of these.

                2. If you really want to implement something yourself, supply a
                   provider of L{IOpenSSLClientConnectionCreator} or
                   L{IOpenSSLServerConnectionCreator}.

                3. If you really have to, supply a
                   L{twisted.internet.ssl.ContextFactory}.  This will likely be
                   deprecated at some point so please upgrade to the new
                   interfaces.

        @type contextFactory: L{IOpenSSLClientConnectionCreator} or
            L{IOpenSSLServerConnectionCreator}, or, for compatibility with
            older code, anything implementing
            L{twisted.internet.interfaces.IOpenSSLContextFactory}.  See
            U{https://twistedmatrix.com/trac/ticket/7215} for information on
            the upcoming deprecation of passing a
            L{twisted.internet.ssl.ContextFactory} here.

        @param isClient: Is this a factory for TLS client connections; in other
            words, those that will send a C{ClientHello} greeting?  L{True} if
            so, L{False} otherwise.  This flag determines what interface is
            expected of C{contextFactory}.  If L{True}, C{contextFactory}
            should provide L{IOpenSSLClientConnectionCreator}; otherwise it
            should provide L{IOpenSSLServerConnectionCreator}.
        @type isClient: L{bool}

        @param wrappedFactory: A factory which will create the
            application-level protocol.
        @type wrappedFactory: L{twisted.internet.interfaces.IProtocolFactory}
        """
        WrappingFactory.__init__(self, wrappedFactory)
        if isClient:
            creatorInterface = IOpenSSLClientConnectionCreator
        else:
            creatorInterface = IOpenSSLServerConnectionCreator
        self._creatorInterface = creatorInterface
        if not creatorInterface.providedBy(contextFactory):
            contextFactory = _ContextFactoryToConnectionFactory(contextFactory)
        self._connectionCreator = contextFactory
Exemple #12
0
 def setUp(self):
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child("file").setContent(b"0123456789")
     r = static.File(name)
     r.putChild(b"redirect", util.Redirect(b"/file"))
     r.putChild(b"wait", ForeverTakingResource())
     r.putChild(b"hang-after-headers", ForeverTakingResource(write=True))
     r.putChild(b"nolength", NoLengthResource())
     r.putChild(b"host", HostHeaderResource())
     r.putChild(b"payload", PayloadResource())
     r.putChild(b"broken", BrokenDownloadResource())
     r.putChild(b"contentlength", ContentLengthHeaderResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.host = 'localhost'
     if self.scheme == 'https':
         self.port = reactor.listenSSL(0,
                                       self.wrapper,
                                       ssl_context_factory(),
                                       interface=self.host)
     else:
         self.port = reactor.listenTCP(0, self.wrapper, interface=self.host)
     self.portno = self.port.getHost().port
     self.download_handler = self.download_handler_cls(Settings())
     self.download_request = self.download_handler.download_request
 def setUp(self):
     self.tmpname = self.mktemp()
     os.mkdir(self.tmpname)
     FilePath(self.tmpname).child("file").setContent(b"0123456789")
     r = static.File(self.tmpname)
     r.putChild(b"redirect", util.Redirect(b"/file"))
     r.putChild(b"wait", ForeverTakingResource())
     r.putChild(b"hang-after-headers", ForeverTakingResource(write=True))
     r.putChild(b"nolength", NoLengthResource())
     r.putChild(b"host", HostHeaderResource())
     r.putChild(b"payload", PayloadResource())
     r.putChild(b"broken", BrokenDownloadResource())
     r.putChild(b"chunked", ChunkedResource())
     r.putChild(b"broken-chunked", BrokenChunkedResource())
     r.putChild(b"contentlength", ContentLengthHeaderResource())
     r.putChild(b"nocontenttype", EmptyContentTypeHeaderResource())
     r.putChild(b"largechunkedfile", LargeChunkedFileResource())
     r.putChild(b"echo", Echo())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.host = 'localhost'
     if self.scheme == 'https':
         self.port = reactor.listenSSL(0,
                                       self.wrapper,
                                       ssl_context_factory(
                                           self.keyfile, self.certfile),
                                       interface=self.host)
     else:
         self.port = reactor.listenTCP(0, self.wrapper, interface=self.host)
     self.portno = self.port.getHost().port
     self.download_handler = create_instance(self.download_handler_cls,
                                             None, get_crawler())
     self.download_request = self.download_handler.download_request
Exemple #14
0
    def setUp(self):
        self.agent = None # for twisted.web.client.Agent test
        self.cleanupServerConnections = 0
        r = resource.Resource()
        r.putChild(b"file", Data(b"0123456789", "text/html"))
        r.putChild(b"redirect", Redirect(b"/file"))
        self.infiniteRedirectResource = CountingRedirect(b"/infiniteRedirect")
        r.putChild(b"infiniteRedirect", self.infiniteRedirectResource)
        r.putChild(b"wait", ForeverTakingResource())
        r.putChild(b"write-then-wait", ForeverTakingResource(write=True))
        r.putChild(b"never-read", ForeverTakingNoReadingResource())
        r.putChild(b"error", ErrorResource())
        r.putChild(b"nolength", NoLengthResource())
        r.putChild(b"host", HostHeaderResource())
        r.putChild(b"payload", PayloadResource())
        r.putChild(b"broken", BrokenDownloadResource())
        r.putChild(b"cookiemirror", CookieMirrorResource())
        r.putChild(b'delay1', DelayResource(1))
        r.putChild(b'delay2', DelayResource(2))

        self.afterFoundGetCounter = CountingResource()
        r.putChild(b"afterFoundGetCounter", self.afterFoundGetCounter)
        r.putChild(b"afterFoundGetRedirect", Redirect(b"/afterFoundGetCounter"))

        miscasedHead = Data(b"miscased-head GET response content", "major/minor")
        miscasedHead.render_Head = lambda request: b"miscased-head content"
        r.putChild(b"miscased-head", miscasedHead)

        self.extendedRedirect = ExtendedRedirect(b'/extendedRedirect')
        r.putChild(b"extendedRedirect", self.extendedRedirect)
        self.site = server.Site(r, timeout=None)
        self.wrapper = WrappingFactory(self.site)
        self.port = self._listen(self.wrapper)
        self.portno = self.port.getHost().port
    def setUp(self):
        self.cleanupServerConnections = 0
        name = self.mktemp()
        os.mkdir(name)
        FilePath(name).child("file").setContent("0123456789")
        r = static.File(name)
        r.putChild("redirect", util.Redirect("/file"))
        self.infiniteRedirectResource = CountingRedirect("/infiniteRedirect")
        r.putChild("infiniteRedirect", self.infiniteRedirectResource)
        r.putChild("wait", ForeverTakingResource())
        r.putChild("write-then-wait", ForeverTakingResource(write=True))
        r.putChild("error", ErrorResource())
        r.putChild("nolength", NoLengthResource())
        r.putChild("host", HostHeaderResource())
        r.putChild("payload", PayloadResource())
        r.putChild("broken", BrokenDownloadResource())
        r.putChild("cookiemirror", CookieMirrorResource())

        miscasedHead = static.Data("miscased-head GET response content",
                                   "major/minor")
        miscasedHead.render_Head = lambda request: "miscased-head content"
        r.putChild("miscased-head", miscasedHead)

        self.extendedRedirect = ExtendedRedirect('/extendedRedirect')
        r.putChild("extendedRedirect", self.extendedRedirect)
        self.site = server.Site(r, timeout=None)
        self.wrapper = WrappingFactory(self.site)
        self.port = self._listen(self.wrapper)
        self.portno = self.port.getHost().port
Exemple #16
0
 def buildProtocol(self, addr):
     remote_ip = ip_address(addr.host)
     if any(remote_ip in network for network in self.whitelist):
         return WrappingFactory.buildProtocol(self, addr)
     else:
         log.info("Attempted submission from non-whitelisted %s" % str(addr))
         return None
 def setUp(self):
     site = server.Site(UriResource(), timeout=None)
     wrapper = WrappingFactory(site)
     self.port = reactor.listenTCP(0, wrapper, interface='127.0.0.1')
     self.portno = self.port.getHost().port
     self.download_handler = self.download_handler_cls(Settings())
     self.download_request = self.download_handler.download_request
 def buildProtocol(self, addr):
     peerHost = addr.host
     connectionCount = self.peerConnections.get(peerHost, 0)
     if connectionCount >= self._maxConnectionsPerPeer:
         log.limit_reached(self._name, peerHost)
         return None
     self.peerConnections[peerHost] = connectionCount + 1
     return WrappingFactory.buildProtocol(self, addr)
Exemple #19
0
 def buildProtocol(self, addr):
     remote_ip = ip_address(addr.host)
     if any(remote_ip in network for network in self.whitelist):
         return WrappingFactory.buildProtocol(self, addr)
     else:
         log.info("Attempted %s from non-whitelisted %s" %
                  (self.connection_type, str(addr)))
         return None
Exemple #20
0
 def setUp(self):
     self.cleanupServerConnections = 0
     self.site = server.Site(MiyamotoResource.setup(), timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = reactor.listenTCP(8080,
                                   self.wrapper,
                                   interface="127.0.0.1")
     self.portno = self.port.getHost().port
 def setUp(self):
     site = server.Site(UriResource(), timeout=None)
     wrapper = WrappingFactory(site)
     self.port = reactor.listenTCP(0, wrapper, interface='127.0.0.1')
     self.portno = self.port.getHost().port
     self.download_handler = HttpDownloadHandler(
         Settings({'CONCURRENT_REQUESTS_PER_DOMAIN': 8}))
     self.download_request = self.download_handler.download_request
Exemple #22
0
 def setUp(self):
     self.cleanupServerConnections = 0
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child("file").setContent("0123456789")
     r = static.File(name)
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = self._listen(self.wrapper)
     self.portno = self.port.getHost().port
Exemple #23
0
 def setUp(self):
     self.tmpname = self.mktemp()
     os.mkdir(self.tmpname)
     FilePath(self.tmpname).child("file").setContent(b"0123456789")
     r = static.File(self.tmpname)
     r.putChild(b"payload", PayloadResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = self._listen(self.wrapper)
     self.portno = self.port.getHost().port
Exemple #24
0
    def registerProtocol(self, p):
        """
        Called by protocol to register itself.
        """
        WrappingFactory.registerProtocol(self, p)

        if self.requests_countdown > 0:
            self.requests_countdown -= 1

        if self.requests_countdown == 0:
            # bai bai mai friend
            #
            # known bug: currently when the limit is reached all
            #            the active requests are trashed.
            #            this simple solution is used to achive
            #            stronger stability.
            try:
                reactor.stop()
            except:
                pass
Exemple #25
0
 def buildProtocol(self, addr):
     try:
         remote_ip = ip_address(addr.host)
         if not any(remote_ip in network for network in self.whitelist):
             log.info(f"Attempted {self.connection_type} from "
                      f"non-whitelisted {addr}")
             return None
     except AttributeError:
         log.warn(f"Bypassing whitelist for {self.connection_type} "
                  f"from {addr}")
     return WrappingFactory.buildProtocol(self, addr)
Exemple #26
0
 def buildProtocol(self, addr):
     try:
         remote_ip = ip_address(addr.host)
         if not any(remote_ip in network for network in self.whitelist):
             log.info(f"Attempted {self.connection_type} from "
                      f"non-whitelisted {addr}")
             return None
     except AttributeError:
         log.warn(f"Bypassing whitelist for {self.connection_type} "
                  f"from {addr}")
     return WrappingFactory.buildProtocol(self, addr)
Exemple #27
0
    def registerProtocol(self, p):
        """
        Called by protocol to register itself.
        """
        WrappingFactory.registerProtocol(self, p)

        if self.requests_countdown > 0:
            self.requests_countdown -= 1

        if self.requests_countdown == 0:
            # bai bai mai friend
            #
            # known bug: currently when the limit is reached all
            #            the active requests are trashed.
            #            this simple solution is used to achieve
            #            stronger stability.
            try:
                reactor.stop()
            except Exception:
                pass
Exemple #28
0
    def buildProtocol(self, addr):
        if self.ht.connectionCount == 0:
            if self.ht.readLimit is not None:
                self.ht.checkReadBandwidth()
            if self.ht.writeLimit is not None:
                self.ht.checkWriteBandwidth()

        if self.connectionCount < self.maxConnectionCount:
            self.connectionCount += 1
            self.ht.connectionCount += 1
            return WrappingFactory.buildProtocol(self, addr)
        else:
            log.msg("Max connection count reached!")
            return None
Exemple #29
0
    def buildProtocol(self, addr):
        if self.ht.connectionCount == 0:
            if self.ht.readLimit is not None:
                self.ht.checkReadBandwidth()
            if self.ht.writeLimit is not None:
                self.ht.checkWriteBandwidth()

        if self.connectionCount < self.maxConnectionCount:
            self.connectionCount += 1
            self.ht.connectionCount += 1
            return WrappingFactory.buildProtocol(self, addr)
        else:
            log.msg("Max connection count reached!")
            return None
 def setUp(self):
     self.tmpname = self.mktemp()
     os.mkdir(self.tmpname)
     FilePath(self.tmpname).child("file").setContent(b"0123456789")
     r = static.File(self.tmpname)
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.host = 'localhost'
     self.port = reactor.listenSSL(
         0, self.wrapper, ssl_context_factory(self.keyfile, self.certfile, cipher_string='CAMELLIA256-SHA'),
         interface=self.host)
     self.portno = self.port.getHost().port
     crawler = get_crawler(settings_dict={'DOWNLOADER_CLIENT_TLS_CIPHERS': 'CAMELLIA256-SHA'})
     self.download_handler = create_instance(self.download_handler_cls, None, crawler)
     self.download_request = self.download_handler.download_request
 def setUp(self):
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child('file').setContent('0123456789')
     r = static.File(name)
     r.putChild('redirect', util.Redirect('/file'))
     r.putChild('wait', ForeverTakingResource())
     r.putChild('error', ErrorResource())
     r.putChild('nolength', NoLengthResource())
     r.putChild('host', HostHeaderResource())
     r.putChild('payload', PayloadResource())
     r.putChild('broken', BrokenDownloadResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = self._listen(self.wrapper)
     self.portno = self.port.getHost().port
 def setUp(self):
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child("file").setContent("0123456789")
     r = static.File(name)
     r.putChild("redirect", util.Redirect("/file"))
     r.putChild("wait", ForeverTakingResource())
     r.putChild("nolength", NoLengthResource())
     r.putChild("host", HostHeaderResource())
     r.putChild("payload", PayloadResource())
     r.putChild("broken", BrokenDownloadResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = reactor.listenTCP(0, self.wrapper, interface='127.0.0.1')
     self.portno = self.port.getHost().port
     self.download_request = HttpDownloadHandler().download_request
Exemple #33
0
 def setUp(self):
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child("file").setContent("0123456789")
     r = static.File(name)
     r.putChild("redirect", util.Redirect("/file"))
     r.putChild("wait", ForeverTakingResource())
     r.putChild("error", ErrorResource())
     r.putChild("nolength", NoLengthResource())
     r.putChild("host", HostHeaderResource())
     r.putChild("payload", PayloadResource())
     r.putChild("broken", BrokenDownloadResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = self._listen(self.wrapper)
     self.portno = self.port.getHost().port
Exemple #34
0
 def setUp(self):
     self.cleanupServerConnections = 0
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child("file").setContent("0123456789")
     r = static.File(name)
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     pub_key = file(PUBKEY)
     pub_key_data = pub_key.read()
     pub_key.close()
     pub_key_san = file(PUBSANKEY)
     pub_key_san_data = pub_key_san.read()
     pub_key_san.close()
     ssl._ca_certs = [
         load_certificate(FILETYPE_PEM, pub_key_data),
         load_certificate(FILETYPE_PEM, pub_key_san_data)
     ]
 def setUp(self):
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child('file').setContent('0123456789')
     r = static.File(name)
     r.putChild('redirect', util.Redirect('/file'))
     r.putChild('wait', ForeverTakingResource())
     r.putChild('hang-after-headers', ForeverTakingResource(write=True))
     r.putChild('nolength', NoLengthResource())
     r.putChild('host', HostHeaderResource())
     r.putChild('payload', PayloadResource())
     r.putChild('broken', BrokenDownloadResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = reactor.listenTCP(0, self.wrapper, interface='127.0.0.1')
     self.portno = self.port.getHost().port
     self.download_handler = self.download_handler_cls(
         Settings({'CONCURRENT_REQUESTS_PER_DOMAIN': 8}))
     self.download_request = self.download_handler.download_request
Exemple #36
0
def test_download_with_proxy_https_noconnect():
    def _test(response):
        assert response.status == 200
        assert response.url == request.url
        assert response.body == b"0123456789"

    tmpname = tempfile.mkdtemp(dir="/tmp/")
    FilePath(tmpname).child("file").setContent(b"0123456789")
    r = static.File(tmpname)
    site = server.Site(r, timeout=None)
    wrapper = WrappingFactory(site)
    port = reactor.listenTCP(0, wrapper, interface="localhost")
    portno = port.getHost().port

    http_proxy = "http://localhost:%d/file" % (portno, )
    request = Request(http_proxy)
    downloader = get_downloader()
    return downloader.download_request(request,
                                       Spider("foo")).addCallback(_test)
Exemple #37
0
 def setUp(self):
     self.cleanupServerConnections = 0
     name = self.mktemp()
     os.mkdir(name)
     FilePath(name).child("file").setContent("0123456789")
     r = static.File(name)
     r.putChild("redirect", util.Redirect("/file"))
     self.infiniteRedirectResource = CountingRedirect("/infiniteRedirect")
     r.putChild("infiniteRedirect", self.infiniteRedirectResource)
     r.putChild("wait", ForeverTakingResource())
     r.putChild("write-then-wait", ForeverTakingResource(write=True))
     r.putChild("error", ErrorResource())
     r.putChild("nolength", NoLengthResource())
     r.putChild("host", HostHeaderResource())
     r.putChild("payload", PayloadResource())
     r.putChild("broken", BrokenDownloadResource())
     r.putChild("cookiemirror", CookieMirrorResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = self._listen(self.wrapper)
     self.portno = self.port.getHost().port
 def unregisterProtocol(self, protocol):
     WrappingFactory.unregisterProtocol(self, protocol)
     self.logs.remove(protocol.logfile)
     self.finishedLogs.append(protocol.logfile)
     del self.finishedLogs[:-self.LOGFILE_LIMIT]
Exemple #39
0
 def __init__(self, host, port, wrappedFactory):
     self.host = host
     self.port = port
     self.deferred = defer.Deferred(self._cancel)
     WrappingFactory.__init__(self, wrappedFactory)
Exemple #40
0
 def __init__(self, wrappedFactory, host, port, optimistic):
     WrappingFactory.__init__(self, wrappedFactory)
     self._host = host
     self._port = port
     self._optimistic = optimistic
     self._onConnection = defer.Deferred()
                                              privateKey=privateKey,
                                              verifierDB=verifierDB)
      else:
          Echo.connectionMade(self)

  def connectionLost(self, reason):
      pass #Handle any TLS exceptions here

class Echo2(Echo):
  def lineReceived(self, data):
      if data == "STARTTLS":
          self.transport.setServerHandshakeOp(certChain=certChain,
                                              privateKey=privateKey,
                                              verifierDB=verifierDB)
      else:
          Echo.lineReceived(self, data)

  def connectionLost(self, reason):
      pass #Handle any TLS exceptions here

factory = Factory()
factory.protocol = Echo1
#factory.protocol = Echo2

wrappingFactory = WrappingFactory(factory)
wrappingFactory.protocol = TLSTwistedProtocolWrapper

log.startLogging(sys.stdout)
reactor.listenTCP(1079, wrappingFactory)
reactor.run()
Exemple #42
0
 def buildProtocol(self, addr):
     protocol = WrappingFactory.buildProtocol(self, addr)
     protocol.setWriteLimit(self.writeLimit)
     return protocol
Exemple #43
0
 def __init__(self, wrappedFactory, whitelist, connection_type="connection"):
     self.whitelist = whitelist
     self.connection_type = connection_type
     WrappingFactory.__init__(self, wrappedFactory)
 def unregisterProtocol(self, p):
     """See WrappingFactory.unregisterProtocol."""
     WrappingFactory.unregisterProtocol(self, p)
     if len(self.protocols) == 0:
         if self.allConnectionsGone is not None:
             self.allConnectionsGone.callback(None)
Exemple #45
0
 def __init__(self, wrappedFactory, whitelist):
     self.whitelist = whitelist
     WrappingFactory.__init__(self, wrappedFactory)
Exemple #46
0
 def __init__(self, wrappedFactory, jsonEncoder=None, jsonDecoder=None):
     WrappingFactory.__init__(self, wrappedFactory)
     self.jsonEncoder = jsonEncoder
     self.jsonDecoder = jsonDecoder
Exemple #47
0
 def __init__(self, wrappedFactory, heartbeatPeriod=25.0, clock=reactor):
     WrappingFactory.__init__(self, wrappedFactory)
     self.heartbeatPeriod = heartbeatPeriod
     self.clock = clock
Exemple #48
0
 def __init__(self, wrappedFactory, writeLimit):
     WrappingFactory.__init__(self, wrappedFactory)
     self.writeLimit = writeLimit
Exemple #49
0
 def __init__(self, wrappedFactory, allowedRequests):
     WrappingFactory.__init__(self, wrappedFactory)
     self.requests_countdown = allowedRequests
Exemple #50
0
 def __init__(self, wrappedFactory, host, port, optimistic):
     WrappingFactory.__init__(self, wrappedFactory)
     self._host = host
     self._port = port
     self._optimistic = optimistic
     self._onConnection = defer.Deferred()
 def __init__(self, wrappedFactory):
     WrappingFactory.__init__(self, wrappedFactory)
     self.logs = []
     self.finishedLogs = []
Exemple #52
0
	def __init__(self, realFactory):
		WrappingFactory.__init__(self, realFactory)
		self.connectionNotification = Deferred()
 def unregisterProtocol(self, protocol):
     WrappingFactory.unregisterProtocol(self, protocol)
     self.logs.remove(protocol.logfile)
     self.finishedLogs.append(protocol.logfile)
     del self.finishedLogs[:-self.LOGFILE_LIMIT]
Exemple #54
0
 def __init__(self, contextFactory, isClient, wrappedFactory):
     WrappingFactory.__init__(self, wrappedFactory)
     self._contextFactory = contextFactory
     self._isClient = isClient
 def stopFactory(self):
     """See WrappingFactory.stopFactory."""
     WrappingFactory.stopFactory(self)
     self.allConnectionsGone = Deferred()
     if len(self.protocols) == 0:
         self.allConnectionsGone.callback(None)