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'))
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
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
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)
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 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)
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
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
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
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
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
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
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)
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
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
def callback(_): return util.Redirect(".")