def on_server_start(self):
        """Initialize Service."""
        os.chdir(os.path.join(os.path.dirname(__file__), "www"))
        requestHandler = TrendnetTVIP100CamRequestHandler
        requestHandler.alert = self.alert
        requestHandler.logger = self.logger
        requestHandler.server_version = self.service_args.get("version", DEFAULT_SERVER_VERSION)
        requestHandler.image_src_url = self.service_args.get("image_src_url", None)
        requestHandler.image_src_path = self.service_args.get("image_src_path", None)

        if requestHandler.image_src_path and requestHandler.image_src_url:
            raise ValueError("cannot process both image_src_path and image_src_url")

        if not requestHandler.image_src_path and not requestHandler.image_src_url:
            raise ValueError("image_src_path or image_src_url must be provided")

        port = self.service_args.get("port")
        threading = self.service_args.get("threading", False)
        if threading:
            self.httpd = ThreadingHTTPServer(("", port), requestHandler)
        else:
            self.httpd = HTTPServer(("", port), requestHandler)

        self.signal_ready()
        self.logger.info(
            "Starting {}IP Cam TRENDnet TV-IP100 service on port: {}".format("Threading " if threading else "", port))
        self.httpd.serve_forever()
예제 #2
0
def start_local_http_server(port, handler=RequestHandler):
    server = HTTPServer(("127.0.0.1", port), handler)
    server.allow_reuse_address = True
    server.auth_code = None
    server.auth_token_form = None
    server.error = None
    return server
예제 #3
0
def fakeServer(actions, port=55555):
    """ helper to set up and activate a fake http server used for testing
        purposes; <actions> must be a list of handler functions, which will
        receive the base handler as their only argument and are used to
        process the incoming requests in turn; returns a thread that should
        be 'joined' when done """
    class Handler(BaseHTTPRequestHandler):
        def do_POST(self):
            action = actions.pop(0)  # get next action
            action(self)  # and process it...

        def do_GET(self):
            action = actions.pop(0)  # get next action
            action(self)  # and process it...

        def log_request(*args, **kw):
            pass

    def runner():
        while actions:
            server.handle_request()

    server = HTTPServer(("", port), Handler)
    thread = Thread(target=runner)
    thread.start()
    return thread
예제 #4
0
 def __init__(self, *args, **kwds):
     super(AuthServer, self).__init__(*args, **kwds)
     self.server = HTTPServer(('127.0.0.1', 0), RequestHandler)
     self.port = self.server.server_port
     self.server.timeout = 1
     self.server.response = self.response
     self.running = True
예제 #5
0
def main(argv):
    import getopt, imp

    def usage():
        print('usage: %s [-h host] [-p port] [-n name] module.class' % argv[0])
        return 100

    try:
        (opts, args) = getopt.getopt(argv[1:], 'h:p:n:')
    except getopt.GetoptError:
        return usage()
    host = ''
    port = 8080
    name = 'WebApp'
    for (k, v) in opts:
        if k == '-h': host = v
        elif k == '-p': port = int(v)
        elif k == '-n': name = v
    if not args: return usage()
    path = args.pop(0)
    module = imp.load_source('app', path)
    WebAppHandler.APP_CLASS = getattr(module, name)
    print('Listening %s:%d...' % (host, port))
    httpd = HTTPServer((host, port), WebAppHandler)
    httpd.serve_forever()
    return
예제 #6
0
def start_http_server(port, path):
    logger.info('Starting local http server')
    handler = partial(PathHTTPHandler, serve_path=path)
    thread = Thread(target=HTTPServer(('', port), handler).serve_forever)
    thread.daemon = True
    thread.start()
    logger.info('Local http server serving at port: %s', port)
예제 #7
0
def mirror_server(mirrors_dict):
    mirror_file_path = '/mirrors.json'
    mirror_corrupt_file_path = '/corrupt_mirrors.json'
    mirror_json_varname = 'ci_repos'
    mirror_data = {mirror_json_varname: mirrors_dict}
    mirror_json = json.dumps(mirror_data).encode('utf8')

    class MirrorRequestHandler(BaseHTTPRequestHandler):
        def do_GET(self):
            if self.path == mirror_file_path:
                self.send_response(200)
                self.send_header("Content-type", 'application/json')
                self.end_headers()
                self.wfile.write(mirror_json)
            elif self.path == mirror_corrupt_file_path:
                self.send_response(200)
                self.send_header("Content-type", 'application/json')
                self.end_headers()
                self.wfile.write('{"this": "is", "bad": "json"')
            else:
                self.send_error(404)

    for attempt in range(0, 20):
        server_address = ('127.0.0.1', randrange(8765, 8876))
        try:
            server = HTTPServer(server_address, MirrorRequestHandler)
        except socket.error as e:
            if e.errno == 98:
                continue
            raise
        break
    else:
        raise RuntimeError("Failed to allocate port for mirror_server fixture")

    server_url = 'http://{0}:{1}'.format(*server_address)

    sthread = Thread(target=server.serve_forever)
    sthread.start()
    try:
        # Wait for http server to start
        sleep(0.1)
        # ensure we won't implictly try to use proxies to access local server
        old_env = dict(((k, environ.pop(k))
                        for k in ('http_proxy', 'HTTP_PROXY') if k in environ))
        try:
            yield dict(
                mirror_url=urljoin(server_url, mirror_file_path),
                json_varname=mirror_json_varname,
                bad_path_url=urljoin(server_url, '/bad_file'),
                bad_port_url=urljoin(
                    'http://{0}:8764'.format(server_address[0]),
                    mirror_file_path),
                corrupt_url=urljoin(server_url, mirror_corrupt_file_path),
            )
        finally:
            environ.update(old_env)
    finally:
        server.shutdown()
        sthread.join()
예제 #8
0
def HelpServer():
	global server
	while 1:
		try:
			server = HTTPServer(('localhost', PORT_NUMBER), HelpHandler)
			server.serve_forever( poll_interval = 2 )
		except Exception as e:
			server = None
			time.sleep( 5 )
예제 #9
0
def main(ikey, skey, akey, host, port=8080):
    server = HTTPServer(('', port), RequestHandler)
    server.ikey = ikey
    server.skey = skey
    server.akey = akey
    server.host = host
    print("Visit the root URL with a 'user' argument, e.g.")
    print("'http://localhost:%d/?user=myname'." % port)
    server.serve_forever()
예제 #10
0
 def __init__(self, context):
     super(ExhibitorController, self).__init__(context, False)
     port = 8181
     exhibitor = HTTPServer(('', port), MockExhibitor)
     exhibitor.daemon_thread = True
     exhibitor_thread = threading.Thread(target=exhibitor.serve_forever)
     exhibitor_thread.daemon = True
     exhibitor_thread.start()
     os.environ.update({'PATRONI_EXHIBITOR_HOSTS': 'localhost', 'PATRONI_EXHIBITOR_PORT': str(port)})
예제 #11
0
    def test(self):
        server = HTTPServer(("", 0), FetcherTestHandler)

        import threading
        server_thread = threading.Thread(target=server.serve_forever)
        server_thread.setDaemon(True)
        server_thread.start()

        run_fetcher_tests(server)
예제 #12
0
    def run(self):
        log.debug("HttpImageServerThread:started")
        self.server = HTTPServer(('', PORT_NUMBER), HttpImageHandler)

        while self.keep_running:
            self.server.serve_forever()
            xbmc.sleep(1000)

        log.debug("HttpImageServerThread:exiting")
예제 #13
0
def run_server_test():
    global server_thread
    if server_thread is not None:
        return

    server = HTTPServer((HOST, PORT), HTTPTestHandler)

    server_thread = threading.Thread(target=server.serve_forever)
    server_thread.setDaemon(True)
    server_thread.start()
예제 #14
0
파일: conftest.py 프로젝트: rbtnguyen/rtv
def oauth_server():
    # Start the OAuth server on a random port in the background
    server = HTTPServer(('', 0), OAuthHandler)
    server.url = 'http://{0}:{1}/'.format(*server.server_address)
    thread = threading.Thread(target=server.serve_forever)
    thread.start()
    try:
        yield server
    finally:
        server.shutdown()
        thread.join()
        server.server_close()
예제 #15
0
def main(argv):
    args = argparser().parse_args(argv[1:])

    httpd = HTTPServer(('localhost', args.port), RestOATaggerHandler)
    info('REST-OA tagger service started')
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    info('REST-OA tagger service stopped')
    httpd.server_close()
    return 0
예제 #16
0
 def __init__(self, domain):
     port = random.randint(10000, 15000)
     self.url = 'http://{}:{}'.format(domain, port)
     mkpdirs(self.tmp_folder)
     logger.info('Start http server in local')
     httpd = HTTPServer(('', port),
                        partial(PathHTTPHandler,
                                serve_path=self.tmp_folder))
     thread = Thread(target=httpd.serve_forever)
     thread.daemon = True
     thread.start()
     logger.info('Serving at port: %s', port)
     self._client = docker.from_env(timeout=360)
예제 #17
0
 def run(self):
     """
     Runs the server using Python's simple HTTPServer.
     TODO: make this multithreaded.
     """
     httpd = HTTPServer((self.host, self.port), self._Handler)
     sa = httpd.socket.getsockname()
     serve_message = "Serving HTTP on {host} port {port} (http://{host}:{port}/) ..."
     print(serve_message.format(host=sa[0], port=sa[1]))
     try:
         httpd.serve_forever()
     except KeyboardInterrupt:
         print("\nKeyboard interrupt received, exiting.")
         httpd.shutdown()
예제 #18
0
파일: fake_sas.py 프로젝트: ganeshg87/magma
def RunFakeServer(cbsd_sas_version, sas_sas_version, is_ecc, crl_index):
    FakeSasHandler.SetVersion(cbsd_sas_version, sas_sas_version)
    if is_ecc:
        assert ssl.HAS_ECDH
    server = HTTPServer((HOST, PORT), FakeSasHandler)

    ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    ssl_context.options |= ssl.CERT_REQUIRED

    # If CRLs were provided, then enable revocation checking.
    if crl_index is not None:
        ssl_context.verify_flags = ssl.VERIFY_CRL_CHECK_CHAIN

        try:
            crl_files = ParseCrlIndex(crl_index)
        except IOError as e:
            print("Failed to parse CRL index file %r: %s" % (crl_index, e))

        # https://tools.ietf.org/html/rfc5280#section-4.2.1.13 specifies that
        # CRLs MUST be DER-encoded, but SSLContext expects the name of a PEM-encoded
        # file, so we must convert it first.
        for f in crl_files:
            try:
                with file(f) as handle:
                    der = handle.read()
                    try:
                        crl = crypto.load_crl(crypto.FILETYPE_ASN1, der)
                    except crypto.Error as e:
                        print("Failed to parse CRL file %r as DER format: %s" %
                              (f, e))
                        return
                    with tempfile.NamedTemporaryFile() as tmp:
                        tmp.write(crypto.dump_crl(crypto.FILETYPE_PEM, crl))
                        tmp.flush()
                        ssl_context.load_verify_locations(cafile=tmp.name)
                print("Loaded CRL file: %r" % f)
            except IOError as e:
                print("Failed to load CRL file %r: %s" % (f, e))
                return

    ssl_context.load_verify_locations(cafile=CA_CERT)
    ssl_context.load_cert_chain(
        certfile=ECC_CERT_FILE if is_ecc else CERT_FILE,
        keyfile=ECC_KEY_FILE if is_ecc else KEY_FILE,
    )
    ssl_context.set_ciphers(':'.join(ECC_CIPHERS if is_ecc else CIPHERS))
    ssl_context.verify_mode = ssl.CERT_REQUIRED
    server.socket = ssl_context.wrap_socket(server.socket, server_side=True)
    print('Will start server at %s:%d, use <Ctrl-C> to stop.' % (HOST, PORT))
    server.serve_forever()
예제 #19
0
def http_server():
    """
    Yields an HTTP server object, which stores JSON data from received POST
    requests in a .post_data queue.
    """
    PostHandler.post_data = []
    server = HTTPServer(("", 0), PostHandler)
    start_thread = threading.Thread(target=server.serve_forever)
    start_thread.daemon = True
    start_thread.start()

    yield server

    server.shutdown()
    start_thread.join()
예제 #20
0
    def start(self):
        class _RequestHandler(BaseHTTPRequestHandler):
            def do_GET(inner_self):
                inner_self.send_response(200)
                response_string = json.dumps(self.registry.get_stats())
                inner_self.send_header('Content-Type', 'application/json')
                inner_self.send_header('Content-Length', len(response_string))
                inner_self.end_headers()
                inner_self.wfile.write(response_string.encode('utf-8'))

        server_address = '', self.port

        self.httpd = HTTPServer(server_address, _RequestHandler)
        self.thread = Thread(target=self.httpd.serve_forever)
        self.thread.start()
예제 #21
0
    def __init__(self, host=DEFAULT_HOST, port=DEFAULT_PORT):
        self.stop_serving = False
        host = host
        port = port
        while True:
            try:
                self.server = HTTPServer(
                    (host, port), HtmlOnlyHandler)
                self.host = host
                self.port = port
                break
            except socket.error:
                log.debug("port %d is in use, trying to next one" % port)
                port += 1

        self.thread = threading.Thread(target=self._run_web_server)
예제 #22
0
 def setUp(self):
     if LIVE_CAMERA:
         multicast_ip = pysony.SSDP_ADDR
     else:
         multicast_ip = '224.0.0.111'
         self.ssdp_server = SSDPServer(multicast_ip)
         self.ssdp_server.register(
             manifestation=None,
             usn=uuid1().urn,
             st=pysony.SSDP_ST,
             location='http://127.0.0.1:64321/dd.xml',
         )
         FileRequestHandler.FILE = DD_FILE
         self.http = HTTPServer(('localhost', 64321), FileRequestHandler)
         threading.Thread(target=self.ssdp_server.run).start()
         threading.Thread(target=self.http.serve_forever).start()
     self.cp = pysony.ControlPoint(multicast_ip)
예제 #23
0
def runServer():
    import six.moves.SimpleHTTPServer
    import six.moves.socketserver

    PORT = 8000
    try:
        # Create a web server and define the handler to manage the
        # incoming request
        server = HTTPServer(('', PORT), myHandler)
        print('Started httpserver on port ', PORT)

        # Wait forever for incoming htto requests
        server.serve_forever()

    except KeyboardInterrupt:
        print('^C received, shutting down the web server')
        server.socket.close()
예제 #24
0
def run_echo_server():
    class Handler(BaseHTTPRequestHandler):
        def _do(self):
            self.send_response(200)
            self.send_header('Content-type', 'application/json')
            self.end_headers()
            parsed = urlparse(self.path)
            query_parameters = parse_qs(parsed.query)
            response = {'path': parsed.path, 'headers': dict(self.headers)}
            if query_parameters:
                response['query_params'] = query_parameters
            try:
                try:  #py2
                    raw_content_len = self.headers.getheader('content-length')
                except AttributeError:  #py3
                    raw_content_len = self.headers.get('content-length')
                content_len = int(raw_content_len)
            except TypeError:
                content_len = 0
            if content_len:
                body = self.rfile.read(content_len)
                try:  #py3
                    body = body.decode('UTF-8')
                except AttributeError:  #py2
                    pass
                if body:
                    response['body'] = body
            print(response)
            encoded_json = json.dumps(response)
            self.wfile.write(b(encoded_json))
            return

        do_GET = _do
        do_POST = _do
        do_PUT = _do
        do_HEAD = _do
        do_PATCH = _do
        do_OPTIONS = _do
        do_DELETE = _do
        do_TRACE = _do
        do_CONNECT = _do

    server_address = ('', PORT)
    httpd = HTTPServer(server_address, Handler)
    httpd.serve_forever()
예제 #25
0
def init_mock_server():
    # Get port
    s = socket.socket(socket.AF_INET, type=socket.SOCK_STREAM)
    s.bind(('localhost', 0))
    address, port = s.getsockname()
    s.close()

    # Start server
    mock_server = HTTPServer(('localhost', port), MockServerRequestHandler)
    mock_server_thread = Thread(target=mock_server.serve_forever)
    mock_server_thread.setDaemon(True)
    mock_server_thread.start()

    # Override production server
    server = 'http://localhost:{}'.format(port)
    os.environ['HYPERDASH_SERVER'] = server

    return handle_request_cache
    def on_server_start(self):
        """Initialize Service."""
        os.chdir(os.path.join(os.path.dirname(__file__), "www"))
        requestHandler = HoneyHTTPRequestHandler
        requestHandler.alert = self.alert
        requestHandler.logger = self.logger
        requestHandler.server_version = self.service_args.get("version", DEFAULT_SERVER_VERSION)

        port = self.service_args.get("port", DEFAULT_PORT)
        threading = self.service_args.get("threading", False)
        if threading:
            self.httpd = ThreadingHTTPServer(("", port), requestHandler)
        else:
            self.httpd = HTTPServer(("", port), requestHandler)

        self.signal_ready()
        self.logger.info("Starting {}Simple HTTP service on port: {}".format("Threading " if threading else "", port))
        self.httpd.serve_forever()
예제 #27
0
def main():
    """Run the HTTP server."""
    # Redirect our service output to a log file.
    global log
    ensure_directory_exists(os.path.dirname(config.bing_test_service.log))
    filelog = logging.FileHandler(config.bing_test_service.log)
    log.addHandler(filelog)
    log.setLevel(logging.DEBUG)

    # To support service shutdown we need to create a PID file that is
    # understood by the Launchpad services framework.
    global service_name
    make_pidfile(service_name)

    host, port = get_service_endpoint()
    server = HTTPServer((host, port), BingRequestHandler)

    log.info("Starting HTTP Bing webservice server on port %s", port)
    server.serve_forever()
예제 #28
0
def start_pprof_server(host='localhost', port=8080):
    '''Start a pprof server at the given host:port in a background thread.

    After calling this function, the pprof endpoints should be available
    at /debug/pprof/profile, etc.

    Returns the underlying HTTPServer. To stop the server, call shutdown().
    '''
    # WallProfiler's registers a Python signal handler, which must be done
    # on the main thread. So do it now before spawning the background thread.
    # As a result, starting the pprof server has the side effect of registering the
    # wall-clock profiler's SIGALRM handler, which may conflict with other uses.
    _wall_profiler.register_handler()

    server = HTTPServer((host, port), PProfRequestHandler)
    bg_thread = threading.Thread(target=server.serve_forever)
    bg_thread.daemon = True
    bg_thread.start()
    return server
예제 #29
0
def mirror_server(mirrors_dict):
    mirror_file_path = '/mirrors.json'
    mirror_json_varname = 'ci_repos'
    mirror_data = {mirror_json_varname: mirrors_dict}
    mirror_json = json.dumps(mirror_data).encode('utf8')

    class MirrorRequestHandler(BaseHTTPRequestHandler):
        def do_GET(self):
            if self.path == mirror_file_path:
                self.send_response(200)
                self.send_header("Content-type", 'application/json')
                self.end_headers()
                self.wfile.write(mirror_json)
            else:
                self.send_error(404)

    server_address = ('127.0.0.1', 8765)
    server_url = 'http://{0}:{1}'.format(*server_address)
    server = HTTPServer(server_address, MirrorRequestHandler)
    sthread = Thread(target=server.serve_forever)
    sthread.start()
    try:
        # Wait for http server to start
        sleep(0.1)
        # ensure we won't implictly try to use proxies to access local server
        old_env = dict(((k, environ.pop(k))
                        for k in ('http_proxy', 'HTTP_PROXY') if k in environ))
        try:
            yield dict(
                mirror_url=urljoin(server_url, mirror_file_path),
                json_varname=mirror_json_varname,
                bad_path_url=urljoin(server_url, '/bad_file'),
                bad_port_url=urljoin(
                    'http://{0}:8766'.format(server_address[0]),
                    mirror_file_path),
            )
        finally:
            environ.update(old_env)
    finally:
        server.shutdown()
        sthread.join()
예제 #30
0
def _zero_instance_app_through_http():
    class JSONRequestHandler(BaseHTTPRequestHandler):
        def do_GET(self):  # noqa: N802
            self.send_response(200)
            self.send_header("Content-type", "application/json")
            self.end_headers()
            self.wfile.write(
                open('tests/data/marathon/apps/zero_instance_sleep.json',
                     'rb').read())

    host = 'localhost'
    port = 12345
    server = HTTPServer((host, port), JSONRequestHandler)
    thread = threading.Thread(target=server.serve_forever)
    thread.setDaemon(True)
    thread.start()

    with app('http://{}:{}'.format(host, port), 'zero-instance-app'):
        try:
            yield
        finally:
            server.shutdown()