Esempio n. 1
0
    def _deferred_start(self):
        ret = update_db()

        if ret == -1:
            reactor.stop()
            return

        if ret == 0:
            create_db()
            init_db()

        sync_clean_untracked_files()
        sync_refresh_memory_variables()
        sync_initialize_snimap()

        self.state.orm_tp.start()

        reactor.addSystemEventTrigger('before', 'shutdown', self.shutdown)

        for sock in self.state.http_socks:
            listen_tcp_on_sock(reactor, sock.fileno(), self.api_factory)

        for sock in self.state.https_socks:
            listen_tls_on_sock(reactor,
                               fd=sock.fileno(),
                               contextFactory=self.state.snimap,
                               factory=self.api_factory)

        self.start_jobs()

        self.print_listening_interfaces()
Esempio n. 2
0
    def __init__(self, *args, **kwargs):
        super(HTTPSProcess, self).__init__(*args, **kwargs)

        proxy_url = 'http://' + self.cfg['proxy_ip'] + ':' + str(
            self.cfg['proxy_port'])

        http_proxy_factory = HTTPStreamFactory(proxy_url)

        cv = ChainValidator()
        ok, err = cv.validate(self.cfg,
                              must_be_disabled=False,
                              check_expiration=False)
        if not ok or not err is None:
            raise err

        snimap = SNIMap({
            'DEFAULT':
            TLSServerContextFactory(self.cfg['ssl_key'], self.cfg['ssl_cert'],
                                    self.cfg['ssl_intermediate'],
                                    self.cfg['ssl_dh'])
        })

        socket_fds = self.cfg['tls_socket_fds']

        for socket_fd in socket_fds:
            self.log("Opening socket: %d : %s" %
                     (socket_fd, os.fstat(socket_fd)))

            port = listen_tls_on_sock(reactor,
                                      fd=socket_fd,
                                      contextFactory=snimap,
                                      factory=http_proxy_factory)

            self.ports.append(port)
            self.log("HTTPS proxy listening on %s" % port)
Esempio n. 3
0
    def __init__(self, *args, **kwargs):
        super(HTTPSProcess, self).__init__(*args, **kwargs)

        proxy_url = 'http://' + self.cfg['proxy_ip'] + ':' + str(
            self.cfg['proxy_port'])

        self.http_proxy_factory = HTTPStreamFactory(proxy_url)

        for site_cfg in self.cfg['site_cfgs']:
            cv = ChainValidator()
            ok, err = cv.validate(site_cfg,
                                  must_be_disabled=False,
                                  check_expiration=False)
            if not ok or not err is None:
                raise err

        default_site = self.cfg['site_cfgs'].pop(0)
        sni_dict = {'DEFAULT': make_TLSContextFactory(default_site)}

        for site_cfg in self.cfg['site_cfgs']:
            sni_dict[site_cfg['hostname']] = make_TLSContextFactory(site_cfg)

        self.snimap = SNIMap(sni_dict)

        for socket_fd in self.cfg['tls_socket_fds']:
            self.log("Opening socket: %d : %s" %
                     (socket_fd, os.fstat(socket_fd)))

            port = listen_tls_on_sock(reactor,
                                      fd=socket_fd,
                                      contextFactory=self.snimap,
                                      factory=self.http_proxy_factory)

            self.ports.append(port)
            self.log("HTTPS proxy listening on %s" % port)
Esempio n. 4
0
    def __init__(self, *args, **kwargs):
        super(HTTPSProcess, self).__init__(*args, **kwargs)

        proxy_url = 'http://' + self.cfg['proxy_ip'] + ':' + str(self.cfg['proxy_port'])

        self.http_proxy_factory = HTTPStreamFactory(proxy_url)

        for site_cfg in self.cfg['site_cfgs']:
            cv = ChainValidator()
            ok, _ = cv.validate(site_cfg, must_be_disabled=False, check_expiration=False)
            if not ok:
                raise Exception("Invalid HTTPS configuration")

        default_site = self.cfg['site_cfgs'].pop(0)
        sni_dict = {'DEFAULT': make_TLSContextFactory(default_site)}

        for site_cfg in self.cfg['site_cfgs']:
            sni_dict[site_cfg['hostname']] = make_TLSContextFactory(site_cfg)

        self.snimap = SNIMap(sni_dict)

        for socket_fd in self.cfg['tls_socket_fds']:
            self.log("Opening socket: %d : %s" % (socket_fd, os.fstat(socket_fd)))

            port = listen_tls_on_sock(reactor,
                                      fd=socket_fd,
                                      contextFactory=self.snimap,
                                      factory=self.http_proxy_factory)

            self.ports.append(port)
            self.log("HTTPS proxy listening on {} for hostnames: {}".format(
                     port._realPortNumber, ', '.join(sni_dict.keys())))