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 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)
Exemple #6
0
    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)
Exemple #7
0
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