def test_interface(self): """ ``make_site`` returns an ``IProtocolFactory`` provider. """ logs = FilePath(self.mktemp().decode("ascii")) site = make_site(Resource(), logs) verifyObject(IProtocolFactory, site)
def main(basefp): default_port = 443 port = None ssl_enabled = True redirect_port = 80 for arg in sys.argv: if arg.startswith('--port='): port = int(arg[len('--port='):]) elif arg.startswith('--redirectport='): redirect_port = int(arg[len('--redirectport='):]) elif arg == '--dev': ssl_enabled = False redirect_port = None default_port = 8000 elif arg == '--nossl': ssl_enabled = False redirect_port = None default_port = 80 elif arg == '--noredirect': redirect_port = None if port is None: port = default_port config = Config() logging.basicConfig( stream=sys.stdout, level=logging.DEBUG, format= '%(asctime)s %(levelname) 7s [%(module) 8s L%(lineno)d] %(message)s', datefmt='%Y-%m-%dT%H:%M:%S%z', ) site = make_site(basefp, config) logging.info('Listening on port %d...' % (port, )) if ssl_enabled: logging.info('SSL/TLS is enabled (start with --nossl to disable).') KEYFILE = '../secret_config/rapidssl/server.key' CERTFILE = '../secret_config/rapidssl/server.crt' assert os.path.exists( KEYFILE), "Private key file %s not found" % (KEYFILE, ) assert os.path.exists( CERTFILE), "Certificate file %s not found" % (CERTFILE, ) # http://twistedmatrix.com/documents/current/core/howto/ssl.html sslfactory = ssl.DefaultOpenSSLContextFactory(KEYFILE, CERTFILE) reactor.listenSSL(port, site, sslfactory) if redirect_port is not None: logging.info('http->https redirector listening on port %d...' % (redirect_port, )) reactor.listenTCP(redirect_port, make_redirector_site(port)) else: logging.info('SSL/TLS is disabled.') reactor.listenTCP(port, site)
def main(basefp): print sys.argv default_port = 443 port = None ssl_enabled = True redirect_port = 80 for arg in sys.argv: if arg.startswith('--port='): port = int(arg[len('--port='):]) elif arg.startswith('--redirectport='): redirect_port = int(arg[len('--redirectport='):]) elif arg == '--dev': ssl_enabled = False redirect_port = None default_port = 8000 elif arg == '--nossl': ssl_enabled = False redirect_port = None default_port = 80 elif arg == '--noredirect': redirect_port = None if port is None: port = default_port config = Config() logging.basicConfig( stream = sys.stdout, level = logging.DEBUG, format = '%(asctime)s %(levelname) 7s [%(name)-65s L%(lineno)d] %(message)s', datefmt = '%Y-%m-%dT%H:%M:%S%z', ) root_log = logging.getLogger(__name__) site = make_site(basefp, config) root_log.info('Listening on port %d...' % (port,)) if ssl_enabled: root_log.info('SSL/TLS is enabled (start with --nossl to disable).') KEYFILE = '../secret_config/rapidssl/server.key' CERTFILE = '../secret_config/rapidssl/server.crt' assert os.path.exists(KEYFILE), "Private key file %s not found" % (KEYFILE,) assert os.path.exists(CERTFILE), "Certificate file %s not found" % (CERTFILE,) # http://twistedmatrix.com/documents/current/core/howto/ssl.html sslfactory = ssl.DefaultOpenSSLContextFactory(KEYFILE, CERTFILE) reactor.listenSSL(port, site, sslfactory) if redirect_port is not None: root_log.info('http->https redirector listening on port %d...' % (redirect_port,)) reactor.listenTCP(redirect_port, make_redirector_site(port)) else: root_log.info('SSL/TLS is disabled.') reactor.listenTCP(port, site)
def test_site(self): config = Config(StringIO(SITE_CONFIG_JSON)) site = make_site(FilePath('.'), config) (req, resp) = self._mock_request(site, '/', 'GET') req.setResponseCode.assert_called_with(OK) self.failUnlessIn("Simple, secure", resp) (req, resp) = self._mock_request(site, '/noexist', 'GET') req.setResponseCode.assert_called_with(NOT_FOUND)
def test_site(self): config = Config(StringIO(SITE_CONFIG_JSON)) site = make_site(FilePath('.'), config) (req, resp) = self._mock_request(site, '/', 'GET') req.setResponseCode.assert_called_with(OK) self.failUnlessIn("Simple, secure", resp) #(req, resp) = self._mock_request(site, '/support', 'GET') #req.setResponseCode.assert_called_with(OK) #self.failUnlessIn("<h2>Support</h2>", resp) (req, resp) = self._mock_request(site, '/noexist', 'GET') req.setResponseCode.assert_called_with(NOT_FOUND)
def site_for_options(reactor, options): provisioner = get_provisioner( reactor, options["subscription-manager"], provision_subscription, ) def get_signup(style): if style == u"wormhole": return get_wormhole_signup( reactor, provisioner, wormhole, options["rendezvous-url"], options["wormhole-result-path"], ) elif style == u"email": return get_email_signup( reactor, provisioner, send_signup_confirmation, send_notify_failure, ) else: raise ValueError( "Don't know about signup configuration {}".format( options["signup"], ), ) resource = make_resource( options["stripe-publishable-api-key-path"].getContent().strip(), get_signup, Stripe(options["stripe-secret-api-key-path"].getContent().strip()), Mailer(), ) site = make_site(resource, options["site-logs-path"]) return site
def main(basefp): print sys.argv default_port = 443 port = None ssl_enabled = True redirect_port = 80 for arg in sys.argv: if arg.startswith('--port='): port = int(arg[len('--port='):]) elif arg.startswith('--redirectport='): redirect_port = int(arg[len('--redirectport='):]) elif arg == '--dev': ssl_enabled = False redirect_port = None default_port = 8000 elif arg == '--nossl': ssl_enabled = False redirect_port = None default_port = 80 elif arg == '--noredirect': redirect_port = None if port is None: port = default_port config = Config() logging.basicConfig( stream = sys.stdout, level = logging.DEBUG, format = '%(asctime)s %(levelname) 7s [%(name)-65s L%(lineno)d] %(message)s', datefmt = '%Y-%m-%dT%H:%M:%S%z', ) root_log = logging.getLogger(__name__) site = make_site(basefp, config) root_log.info('Listening on port %d...' % (port,)) if ssl_enabled: root_log.info('SSL/TLS is enabled (start with --nossl to disable).') KEYFILE = '../secret_config/rapidssl/server.key' CERTFILE = '../secret_config/rapidssl/server.crt' assert os.path.exists(KEYFILE), "Private key file %s not found" % (KEYFILE,) assert os.path.exists(CERTFILE), "Certificate file %s not found" % (CERTFILE,) from twisted.internet import ssl import pem with open(KEYFILE) as keyFile: key = keyFile.read() certs = pem.parse_file(CERTFILE) cert = ssl.PrivateCertificate.loadPEM(str(key) + str(certs[0])) extraCertChain = [ssl.Certificate.loadPEM(str(certData)).original for certData in certs[1 :]] cert_options = ssl.CertificateOptions( privateKey=cert.privateKey.original, certificate=cert.original, extraCertChain=extraCertChain, ) reactor.listenSSL(port, site, cert_options) if redirect_port is not None: root_log.info('http->https redirector listening on port %d...' % (redirect_port,)) reactor.listenTCP(redirect_port, make_redirector_site(port)) else: root_log.info('SSL/TLS is disabled.') reactor.listenTCP(port, site)
def site_for_options(reactor, options): provisioner = get_provisioner( reactor, options["subscription-manager"], provision_subscription, ) def get_signup(style): if style == u"wormhole": return get_wormhole_signup( reactor, provisioner, wormhole, options["rendezvous-url"], options["wormhole-result-path"], ) elif style == u"email": return get_email_signup( reactor, provisioner, send_signup_confirmation, send_notify_failure, ) else: raise ValueError( "Don't know about signup configuration {}".format( options["signup"], ), ) chargebee_secret_key = options[ "chargebee-secret-api-key-path" ].getContent().strip() resource = make_resource( options["stripe-publishable-api-key-path"].getContent().strip(), get_signup, ChargeBee( chargebee_secret_key, options["chargebee-site-name"], options["chargebee-gateway-account-id"], options["chargebee-plan-id"], ), Mailer( '*****@*****.**', options["signup-failure-address"] if options["signup-failure-address"] is not None else "*****@*****.**" if "www-staging" in options["cross-domain"] else "*****@*****.**" ), options["cross-domain"], ) # Expose some ChargeBee APIs, too. These cannot be queried by a browser # directly so we proxy them here. resource.putChild( "chargebee", create_chargebee_resources( reactor, options["chargebee-site-name"], chargebee_secret_key, options["chargebee-domain"], ), ) site = make_site( # Set the CORS header on all resources on this site. access_control_allow_origins( [options['cross-domain']], resource, ), options["site-logs-path"], ) return site