コード例 #1
0
    def setUp(self):
        plainRoot = static.Data('not me', 'text/plain')
        tlsRoot = static.Data('me neither', 'text/plain')

        plainSite = server.Site(plainRoot, timeout=None)
        tlsSite = server.Site(tlsRoot, timeout=None)

        from twisted import test
        self.tlsPort = reactor.listenSSL(
            0,
            tlsSite,
            contextFactory=ssl.DefaultOpenSSLContextFactory(
                FilePath(test.__file__).sibling('server.pem').path,
                FilePath(test.__file__).sibling('server.pem').path,
            ),
            interface="127.0.0.1")
        self.plainPort = reactor.listenTCP(0, plainSite, interface="127.0.0.1")

        self.plainPortno = self.plainPort.getHost().port
        self.tlsPortno = self.tlsPort.getHost().port

        plainRoot.putChild('one', util.Redirect(self.getHTTPS('two')))
        tlsRoot.putChild('two', util.Redirect(self.getHTTP('three')))
        plainRoot.putChild('three', util.Redirect(self.getHTTPS('four')))
        tlsRoot.putChild('four', static.Data('FOUND IT!', 'text/plain'))
コード例 #2
0
ファイル: test_webclient.py プロジェクト: MayuraVerma/Kannada
    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.afterFoundGetCounter = CountingResource()
        r.putChild("afterFoundGetCounter", self.afterFoundGetCounter)
        r.putChild("afterFoundGetRedirect", util.Redirect("/afterFoundGetCounter"))

        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
コード例 #3
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"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
コード例 #4
0
    def getChild(self, path, request):
        request.postpath.insert(0,request.prepath.pop())
        env = self.env.copy()
        username = request.getUser()
        password = request.getPassword()

        if username:
            import md5crypt
            authdb = list(file('/var/www/trac.htpasswd'))
            for ent in authdb:
                u, p = ent.split(':', 1)
                if u == username:
                    print 'Found username', u, 'in auth db'
                    parts = p.split('$', 2)
                    print 'Found salt', parts[1], 'in md5'
                    if md5crypt.md5crypt(password, parts[1]) != p:
                        print 'It is a bad liar'
                        username = ''
                    else:
                        print 'Yay victory'
                break
            else:
                username = ''

        if request.postpath == ['login']:
            if not username:
                return BasicAuthError(http.UNAUTHORIZED,
                                      "Unauthorized",
                                      "401 Authentication required",
                                      self.basicRealm)
            return util.Redirect("/trac/")
        env['REMOTE_USER'] = username
        return EnvableCGIThing(self.cgifile, env=env)
コード例 #5
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
コード例 #6
0
def test_site():
    r = resource.Resource()
    r.putChild("text", static.Data("Works", "text/plain"))
    r.putChild("html", static.Data("<body><p class='one'>Works</p><p class='two'>World</p></body>", "text/html"))
    r.putChild("enc-gb18030", static.Data("<p>gb18030 encoding</p>", "text/html; charset=gb18030"))
    r.putChild("redirect", util.Redirect("/redirected"))
    r.putChild("redirected", static.Data("Redirected here", "text/plain"))
    return server.Site(r)
コード例 #7
0
ファイル: test_engine.py プロジェクト: zyjjust/scrapy
def start_test_site(debug=False):
    root_dir = os.path.join(tests_datadir, "test_site")
    r = static.File(root_dir)
    r.putChild(b"redirect", util.Redirect(b"/redirected"))
    r.putChild(b"redirected", static.Data(b"Redirected here", "text/plain"))

    port = reactor.listenTCP(0, server.Site(r), interface="127.0.0.1")
    if debug:
        print("Test server running at http://localhost:%d/ - hit Ctrl-C to finish." \
            % port.getHost().port)
    return port
コード例 #8
0
ファイル: test_engine.py プロジェクト: shenyafeng/scrapy
def start_test_site(debug=False):
    root_dir = os.path.join(tests_datadir, "test_site")
    r = static.File(root_dir)
    r.putChild(b"redirect", util.Redirect(b"/redirected"))
    r.putChild(b"redirected", static.Data(b"Redirected here", "text/plain"))
    numbers = [str(x).encode("utf8") for x in range(2**18)]
    r.putChild(b"numbers", static.Data(b"".join(numbers), "text/plain"))

    port = reactor.listenTCP(0, server.Site(r), interface="127.0.0.1")
    if debug:
        print(f"Test server running at http://localhost:{port.getHost().port}/ "
              "- hit Ctrl-C to finish.")
    return port
コード例 #9
0
ファイル: test_webclient.py プロジェクト: kusoof/wprof
 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", LongTimeTakingResource())
     r.putChild("error", ErrorResource())
     r.putChild("nolength", NoLengthResource())
     r.putChild("host", HostHeaderResource())
     r.putChild("payload", PayloadResource())
     r.putChild("broken", BrokenDownloadResource())
     site = server.Site(r, timeout=None)
     self.port = self._listen(site)
     self.portno = self.port.getHost().port
コード例 #10
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
コード例 #11
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("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
コード例 #12
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"redirect", util.Redirect(b"/file"))
     r.putChild(b"wait", ForeverTakingResource())
     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"encoding", EncodingResource())
     self.site = server.Site(r, timeout=None)
     self.wrapper = WrappingFactory(self.site)
     self.port = self._listen(self.wrapper)
     self.portno = self.port.getHost().port
コード例 #13
0
ファイル: test_webclient.py プロジェクト: UstadMobile/eXePUB
 def setUp(self):
     name = str(id(self)) + "_webclient"
     if not os.path.exists(name):
         os.mkdir(name)
         f = open(os.path.join(name, "file"), "wb")
         f.write("0123456789")
         f.close()
     r = static.File(name)
     r.putChild("redirect", util.Redirect("/file"))
     r.putChild("wait", LongTimeTakingResource())
     r.putChild("error", ErrorResource())
     r.putChild("nolength", NoLengthResource())
     r.putChild("host", HostHeaderResource())
     r.putChild("payload", PayloadResource())
     r.putChild("broken", BrokenDownloadResource())
     site = server.Site(r, timeout=None)
     self.port = self._listen(site)
     self.portno = self.port.getHost().port
コード例 #14
0
ファイル: testsite.py プロジェクト: atharwa-24/scrapy
def test_site():
    r = resource.Resource()
    r.putChild(b"text", static.Data(b"Works", "text/plain"))
    r.putChild(
        b"html",
        static.Data(
            b"<body><p class='one'>Works</p><p class='two'>World</p></body>",
            "text/html",
        ),
    )
    r.putChild(
        b"enc-gb18030",
        static.Data(b"<p>gb18030 encoding</p>", "text/html; charset=gb18030"),
    )
    r.putChild(b"redirect", util.Redirect(b"/redirected"))
    r.putChild(b"redirect-no-meta-refresh",
               NoMetaRefreshRedirect(b"/redirected"))
    r.putChild(b"redirected", static.Data(b"Redirected here", "text/plain"))
    return server.Site(r)
コード例 #15
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('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
コード例 #16
0
ファイル: test_webclient.py プロジェクト: yingjun2/codenode
 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"))
     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
コード例 #17
0
def callback(_):
    return util.Redirect(".")