Exemple #1
0
 def Matches(self, addr, port):
     """Tests if addr and port correspond to self.Address() / self.Port()."""
     if isinstance(addr, list):
         if self.Address() not in addr:
             return False
     else:
         myip = utils.ResolveHostnameToIP(self.Address(), self.Port())
         other_ip = utils.ResolveHostnameToIP(addr, port)
         if ipaddr.IPAddress(myip) != ipaddr.IPAddress(other_ip):
             return False
     return self.Port() == port
Exemple #2
0
    def setUpClass(cls):
        super(GRRHTTPServerTest, cls).setUpClass()

        cls.config_overrider = test_lib.ConfigOverrider({
            "Rekall.profile_server":
            rekall_test_lib.TestRekallRepositoryProfileServer.__name__,
            "FileUploadFileStore.root_dir":
            test_lib.TempDirPath()
        })
        cls.config_overrider.Start()

        # Frontend must be initialized to register all the stats counters.
        frontend_lib.FrontendInit().RunOnce()

        # Bring up a local server for testing.
        port = portpicker.PickUnusedPort()
        ip = utils.ResolveHostnameToIP("localhost", port)
        cls.httpd = frontend.GRRHTTPServer((ip, port),
                                           frontend.GRRHTTPServerHandler)

        if ipaddr.IPAddress(ip).version == 6:
            cls.address_family = socket.AF_INET6
            cls.base_url = "http://[%s]:%d/" % (ip, port)
        else:
            cls.address_family = socket.AF_INET
            cls.base_url = "http://%s:%d/" % (ip, port)

        cls.httpd_thread = threading.Thread(target=cls.httpd.serve_forever)
        cls.httpd_thread.daemon = True
        cls.httpd_thread.start()
Exemple #3
0
    def run(self):
        """Run the WSGI server in a thread."""
        logging.info("Listening on port %d.", self.port)

        ssl_context = None
        if config.CONFIG["AdminUI.enable_ssl"]:
            cert_file = config.CONFIG["AdminUI.ssl_cert_file"]
            if not cert_file:
                raise ValueError("Need a valid cert file to enable SSL.")

            key_file = config.CONFIG["AdminUI.ssl_key_file"]
            if not key_file:
                raise ValueError("Need a valid key file to enable SSL.")

            ssl_context = (cert_file, key_file)

        # Werkzeug only handles IPv6 if ":" is in the host (i.e. we pass
        # an IPv6 ip).
        ip = utils.ResolveHostnameToIP("localhost", self.port)
        server = serving.make_server(ip,
                                     self.port,
                                     wsgiapp.AdminUIApp().WSGIHandler(),
                                     ssl_context=ssl_context)

        # We want to notify other threads that we are now ready to serve right
        # before we enter the serving loop.
        self.ready_to_serve.set()
        while self.keep_running:
            server.handle_request()
Exemple #4
0
    def run(self):
        """Run the WSGI server in a thread."""
        logging.info("Listening on port %d.", self.port)

        # Werkzeug only handles IPv6 if ":" is in the host (i.e. we pass
        # an IPv6 ip).
        ip = utils.ResolveHostnameToIP("localhost", self.port)
        server = serving.make_server(ip, self.port,
                                     wsgiapp.AdminUIApp().WSGIHandler())

        # We want to notify other threads that we are now ready to serve right
        # before we enter the serving loop.
        self.ready_to_serve.set()
        while self.keep_running:
            server.handle_request()
Exemple #5
0
    def setUpClass(cls):
        super(GRRHTTPServerTest, cls).setUpClass()
        # Frontend must be initialized to register all the stats counters.
        front_end.FrontendInit().RunOnce()

        # Bring up a local server for testing.
        port = portpicker.PickUnusedPort()
        ip = utils.ResolveHostnameToIP("localhost", port)
        cls.httpd = frontend.GRRHTTPServer((ip, port),
                                           frontend.GRRHTTPServerHandler)

        if ipaddr.IPAddress(ip).version == 6:
            cls.address_family = socket.AF_INET6
            cls.base_url = "http://[%s]:%d/" % (ip, port)
        else:
            cls.address_family = socket.AF_INET4
            cls.base_url = "http://%s:%d/" % (ip, port)

        cls.httpd_thread = threading.Thread(target=cls.httpd.serve_forever)
        cls.httpd_thread.daemon = True
        cls.httpd_thread.start()
Exemple #6
0
def _GetLocalIPAsString():
    return utils.ResolveHostnameToIP("localhost", 0)