def __enter__(self):
        for server_number in range(self.number_of_servers):
            self.mock_server_address, mock_server_port = get_free_port()
            mock_server = TCPServer(('localhost', mock_server_port),
                                    MockEpoServerRequestHandler)
            mock_server.socket = ssl.wrap_socket(
                mock_server.socket,
                certfile=MOCK_EPOHTTPSERVER_CERTNAME,
                keyfile=MOCK_EPOHTTPSERVER_KEYNAME,
                server_side=True)

            mock_server_thread = Thread(target=mock_server.serve_forever)

            self.servers[server_number] = {
                "server": mock_server,
                "thread": mock_server_thread
            }

            self.servers[server_number]["thread"].setDaemon(True)
            self.servers[server_number]["thread"].start()

            self.server_info_list.append({
                SERVER_INFO_SERVER_NAME_KEY:
                TEST_EPONAME_BASE + str(server_number),
                SERVER_INFO_SERVER_PORT_KEY:
                mock_server_port,
            })

        return self.server_info_list
예제 #2
0
	def open(self):
		self.netAdapter = TCPServer((self.address, self.port), jeedom_socket_handler)
		if self.netAdapter:
			logging.debug("Socket interface started")
			threading.Thread(target=self.loopNetServer, args=()).start()
		else:
			logging.debug("Cannot start socket interface")
예제 #3
0
파일: base.py 프로젝트: trevorbryant/pwncat
    def serve(self, on_progress: Callable):

        # Make sure it is accessible to the subclass
        local_path = self.local_path

        class SocketWrapper:
            def __init__(self, sock):
                self.s = sock

            def read(self, n: int):
                try:
                    return self.s.recv(n)
                except socket.timeout:
                    return b""

        # Class to handle incoming connections
        class ReceiveFile(BaseRequestHandler):
            def handle(self):
                self.request.settimeout(1)
                with open(local_path, "wb") as fp:
                    util.copyfileobj(SocketWrapper(self.request), fp,
                                     on_progress)
                self.request.close()

        self.server = TCPServer(("0.0.0.0", 0), ReceiveFile)

        thread = threading.Thread(target=lambda: self.server.serve_forever(),
                                  daemon=True)
        thread.start()
예제 #4
0
 def test_withaction(self):
     # set up http server
     TCPServer.allow_reuse_address = True
     http_server = TCPServer(('127.0.0.1', 8090), TCPAcceptHandler)
     http_server.last_payload = b''
     server_thread = threading.Thread(target=http_server.serve_forever)
     server_thread.daemon = True
     server_thread.start()
     print('http server started')
     # set up the forwarder
     fw = forwarder.Forwarder(path='tests/test.config.json')
     fw.connect()
     fw.start()
     time.sleep(1)
     print('forwarder started')
     # create a MQTT client to publish events
     client = mqtt.Client()
     client.connect('127.0.0.1', 1883)
     payload = 'foo'
     client.publish('hello/world', payload=payload)
     print('mqtt client published')
     time.sleep(1)
     self.assertEqual(payload, http_server.last_payload)
     client.disconnect()
     print('mqtt client disconnected')
     fw.stop()
     print('forwarder stopped')
     http_server.shutdown()
     print('httpserver shut down')
     http_server.server_close()
     print('http server stopped')
     self.assertTrue(True)
예제 #5
0
def main(argv=None):
  if argv is None:
    argv = sys.argv[1:]

  if len(argv) > 1 and argv[0] == 'always':
    Handler.filename = argv[1]
  elif argv:
    Handler.auth = True

  httpd = None
  port = None
  while port is None:
    try:
      port = random.randrange(32760, 59760)
      httpd = TCPServer(('', port), Handler)
    except socket.error:
      port = None

  try:
    sys.stdout.write('%d\nstarted\n' % (port,))
    sys.stdout.flush()
    sys.stdout.close()
    sys.stderr.write('Serving forever on %d.\n' % port)
    httpd.serve_forever()
  finally:
    sys.stderr.write('Goodbye.\n')
예제 #6
0
파일: serve.py 프로젝트: vijaykiran/dbt
    def run(self):
        os.chdir(self.project['target-path'])

        port = self.args.port

        shutil.copyfile(DOCS_INDEX_FILE_PATH, 'index.html')

        logger.info("Serving docs at 0.0.0.0:{}".format(port))
        logger.info(
            "To access from your browser, navigate to http://localhost:{}.".
            format(port))
        logger.info("Press Ctrl+C to exit.\n\n")

        httpd = TCPServer(('0.0.0.0', port), SimpleHTTPRequestHandler)

        try:
            webbrowser.open_new_tab('http://127.0.0.1:{}'.format(port))
        except webbrowser.Error as e:
            pass

        try:
            httpd.serve_forever()  # blocks
        finally:
            httpd.shutdown()
            httpd.server_close()

        return None
예제 #7
0
def main():
    host = ''
    port = 7777
    server = None
    board = PyMata3(5)
    shoulder = Actuator(board, 9)
    arm = Actuator(board, 10)
    elbow = Actuator(board, 11, min_angle=-90, max_angle=90, offset=-90)

    global mech_arm
    mech_arm = MechanicalArm(
        [shoulder, arm, elbow],
        Fabrik(
            joint_positions=[Vector2(0, 0), Vector2(53, 0), Vector2(100, 0)],
            link_lengths=[53, 47],
            tolerance=0.1
        )
    )

    sleep(2)

    while server is None:
        try:
            server = TCPServer((host, port), ConnectionHandler)
        except OSError:
            port += 1
            continue
    print("Serving on: {}".format(port))
    server.serve_forever()
    server.server_close()
예제 #8
0
def webserve():
    parser = argparse.ArgumentParser(
        description='Serve files from the current directory',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('-v',
                        '--verbose',
                        action='store_true',
                        help='provide verbose output on progress')
    parser.add_argument('-p',
                        '--port',
                        type=int,
                        default=2020,
                        help='port number to use')
    parser.add_argument('--logpath',
                        type=str,
                        metavar='PATH',
                        help='Path where logging output should be written')
    args = parser.parse_args()

    # Configure logging.
    logging.basicConfig(
        filename=args.logpath,
        level=logging.INFO if args.verbose else logging.WARNING,
        format='%(asctime)s %(levelname)s %(message)s',
        datefmt='%m/%d/%Y %H:%M:%S')

    with TCPServer(('', args.port), LoggingHandler) as httpd:
        logging.info('serving at port {0}'.format(args.port))
        httpd.serve_forever()
예제 #9
0
def test1():
    '''
    spam 函数 原本有4个参数,通过 partial 固定了一个参数的值,返回了一个新函数。

    pool.apply_async(func[, args[, kwds[, callback[, error_callback]]]])
    用进程池调用 func 函数(包括可选的args,kwds参数)
    callback 是一个回调函数,只有一个参数,是func执行的结果。    
    '''
    s1 = partial(spam, 1)  # a = 1
    s1(2, 3, 4)
    s1(4, 5, 6)
    s2 = partial(spam, d=42)  # d = 42
    s2(1, 2, 3)
    s2(4, 5, 5)
    s3 = partial(spam, 1, 2, d=42)  # a = 1, b = 2, d = 42
    s3(3)
    s3(4)

    logging.basicConfig(level=logging.DEBUG)
    log = logging.getLogger('test')

    p = Pool()
    p.apply_async(add, (3, 4), callback=partial(output_result, log=log))
    p.close()
    p.join()

    # socket服务器
    serv = TCPServer(('', 15000), partial(EchoHandler, ack=b'RECEIVED:'))
    serv.serve_forever()
예제 #10
0
파일: defs.py 프로젝트: IndianBoy42/drake
def _do_preview(*, build, subdir, port):
    """Implements the "serve" (http) mode of main().

    Args:
        build: Same as per main().
        subdir: Same as per main().
        port: Local port number to serve on, per the command line.
    """
    print("Generating documentation preview ...")
    with tempfile.TemporaryDirectory(prefix="doc_builder_preview_") as scratch:
        if subdir:
            out_dir = join(scratch, subdir)
            os.mkdir(out_dir)
        else:
            out_dir = scratch
        pages = _call_build(build=build, out_dir=out_dir)
        assert len(pages) > 0
        os.chdir(scratch)
        print(f"The files have temporarily been generated into {scratch}")
        print()
        print("Serving at the following URLs for local preview:")
        print()
        for page in pages:
            print(f"  http://127.0.0.1:{port}/{join(subdir, page)}")
        print()
        print("Use Ctrl-C to exit.")
        TCPServer.allow_reuse_address = True
        server = TCPServer(("127.0.0.1", port), _HttpHandler)
        try:
            server.serve_forever()
        except KeyboardInterrupt:
            print()
            return
예제 #11
0
def main():
    port = int(os.environ.get("PORT", "3000"))
    with TCPServer(("", port), Handler) as server:
        try:
            server.serve_forever()
        except KeyboardInterrupt:
            server.shutdown()
예제 #12
0
파일: server.py 프로젝트: qema/nanosite
def run_server(port, site_dir, ctx):
    output_dir = ctx["OutputDir"]

    # start server
    class RequestHandler(SimpleHTTPRequestHandler):
        def do_GET(self):
            if hasattr(self, "error") and self.error is not None:
                self.send_response(200, 'OK')
                self.send_header('Content-type', 'html')
                self.end_headers()
                self.wfile.write(bytes(self.error, 'UTF-8'))
            else:
                super().do_GET()

        def translate_path(self, path):
            return os.path.join(site_dir, output_dir, path[1:])

    handler = RequestHandler
    httpd = TCPServer(("", port), handler)
    atexit_register(lambda: httpd.shutdown())

    # start update thread
    thread = Thread(target=update, args=(site_dir, ctx, handler, port))
    thread.daemon = True
    thread.start()

    print("Serving at http://localhost:" + str(port) + "/")
    httpd.serve_forever()
예제 #13
0
def serve_forever(uwsgi_addr,
                  uwsgi_host=None,
                  local_addr='',
                  redirect_static=True):

    uwsgi_addr, uwsgi_port = parse_addr(uwsgi_addr, 3030)
    local_addr = parse_addr(local_addr, uwsgi_port)

    print('Proxying remote uWSGI server %s:%s "%s" to local HTTP server '
          '%s:%s...' % (uwsgi_addr, uwsgi_port,
                        (uwsgi_host or ''), local_addr[0], local_addr[1]))

    TCPServer.allow_reuse_address = True
    s = TCPServer(
        server_address=local_addr,
        RequestHandlerClass=RequestHandler,
    )
    s.uwsgi_addr = uwsgi_addr
    s.uwsgi_port = uwsgi_port
    s.uwsgi_host = uwsgi_host or uwsgi_addr
    s.redirect_static = redirect_static
    try:
        s.serve_forever()
    except KeyboardInterrupt:
        s.shutdown()
        s.server_close()
        print(' Bye.')
예제 #14
0
    def run(self):
        def signal_func(sig, stack):
            raise KeyboardInterrupt

        signal.signal(signal.SIGTERM, signal_func)
        try:
            self._logger.info("Start listening for other host's access.")
            addr = params.peer_address
            access_ip = addr.split(':')[0]
            access_port = int(addr.split(':')[1])
            peer_server = ThreadingTCPServer((access_ip, access_port),
                                             peers_handler)
            peer_server.socket = secure_socket(sock=peer_server.socket,
                                               server_side=True)

            listening_thread = threading.Thread(
                target=peer_server.serve_forever)
            listening_thread.setDaemon(True)
            listening_thread.start()

            self._logger.info("Device monitor start, listening %s." %
                              self._proxy_addr)
            device_server = TCPServer((self._proxy_ip, self._proxy_port),
                                      device_handler)
            device_server.serve_forever()
        except KeyboardInterrupt:
            self._logger.info("Device monitor receive KeyboardInterrupt.")
            device_server.shutdown()
            device_server.server_close()
            peer_server.shutdown()
            peer_server.server_close()
            self._logger.info("Device monitor closed.")
예제 #15
0
    def fixed_up_server_support_more_clients():
        """
        但由于客户端连接数没有限制,因此可以同时发送大量的
        连接让你的服务器崩溃。

        预防这个问题,可以预先分配固定的线程池或进程池。创建一个普通非线程服务器,然后在一个
        线程中使用 serve_forever() 来启动
        :return:
        """
        from threading import Thread
        from socketserver import TCPServer
        from socketserver import BaseRequestHandler

        class EchoHandler(BaseRequestHandler):
            def handle(self):
                print('Got connection from', self.client_address)
                while True:
                    msg = self.request.recv(8192)
                    print('---receive client message:----', msg)
                    if not msg:
                        break
                    self.request.send(msg)

        NWORKERS = 16
        serv = TCPServer(('', 20000), EchoHandler)
        for n in range(NWORKERS):
            t = Thread(target=serv.serve_forever)
            t.daemon = True
            t.start()
        serv.serve_forever()
예제 #16
0
def _create_socket_server(handler: BaseRequestHandler,
                          base_port: int,
                          max_port_offset: int = 10) -> TCPServer:
    """
    Convenience method for starting a TCP socket server, selecting an open
    port based on the initial port given. If no open socket can be found on which to
    host the server, an exception is thrown.
    """
    tries = 0
    while tries < max_port_offset:
        port = base_port + tries
        try:
            logger.debug("Opening 'server' port: {}".format(port))
            server = TCPServer((socket.gethostname(), port), handler)
            return server
        except:
            logger.debug("Problems opening port, trying another")
            tries = tries + 1

            # When we have exhausted the range of ports, we go here
            if tries >= max_port_offset:
                raise

    # Another one of those "this should not happen" scenarios that are bound to happen
    raise Exception("Reached faulty state when trying to start socket server")
예제 #17
0
    def change_socket_configuration():
        """
        设置参数 bind_and_activate=False 来修改 socket 参数
        设置参数 TCPServer.allow_reuse_address = True, 来允许服务器重新绑定一个
        之前使用过的端口号
         TCPServer.allow_reuse_address = True
         serv = TCPServer(('', 20000), EchoHandler)
         serv.serve_forever()
        :return:
        """
        from socketserver import TCPServer
        from socketserver import BaseRequestHandler
        from socket import socket

        class EchoHandler(BaseRequestHandler):
            def handle(self):
                print('Got connection from', self.client_address)
                while True:
                    msg = self.request.recv(8192)
                    print('---receive client message:----', msg)
                    if not msg:
                        break
                    self.request.send(msg)

        serv = TCPServer(('', 20000), EchoHandler, bind_and_activate=False)
        # Set up various socket options
        serv.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        # Bind and activate
        serv.server_bind()
        serv.server_activate()
        serv.serve_forever()
예제 #18
0
    def tcpserver(self, host: str, port: int):
        callback = self.onecmd
        welcome = 'vxi11cmd server, listening on port {}:{}, connected to remote {}.\r\n\r\n'
        welcome = welcome.format(host, port, self.address).encode()

        class CmdServerHandler(BaseRequestHandler):
            def handle(self):
                self.request.send(welcome)
                buffer = bytearray()
                while True:
                    buffer.extend(self.request.recv(64))
                    while True:
                        i = buffer.find(b'\n')
                        if i == -1:
                            break
                        else:
                            line = bytes(buffer[:i + 1])
                            buffer[:] = buffer[i + 1:]
                            command = line.decode().strip()
                            print(command)
                            answer = callback(command)
                            if answer:
                                self.request.send(answer.encode() + b'\r\n')

        server = TCPServer((host, port), CmdServerHandler)
        server.serve_forever()
예제 #19
0
def start_web_server(port_num: int, test_class_name: str):
    """テスト用のWEBサーバを起動する"""
    document_root: str = f'document_roots/{test_class_name}'
    if not exists(document_root):
        raise FileNotFoundError(
            f'document root is not exists. document_root: {document_root}')

    class __Handler(SimpleHTTPRequestHandler):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, directory=document_root, **kwargs)

        def do_POST(self):
            if self.path.startswith('/kill_server'):

                def kill_me_please(server):
                    server.shutdown()

                _thread.start_new_thread(kill_me_please, (httpd, ))
                self.send_error(500)
                print(
                    f'webserver stopped. port_num: {port_num}, document_root: {document_root}'
                )

    TCPServer.allow_reuse_address = True
    with TCPServer(('', port_num), __Handler) as httpd:
        print(
            f'webserver started. port_num: {port_num}, document_root: {document_root}'
        )
        httpd.serve_forever()
예제 #20
0
def serve(directory, port):
    "See https://docs.python.org/2/library/simplehttpserver.html"
    Handler = partial(SimpleHTTPRequestHandler, directory=directory)

    with TCPServer((HOST, port), Handler) as httpd:
        print(f"serving {directory} at http://{HOST}:{port}")
        httpd.serve_forever()
예제 #21
0
def launch_d3po(path):
    """Start a server to view an exported D3PO bundle, and open a browser.

    :param path: The TLD of the bundle
    """
    from socketserver import TCPServer
    from http.server import SimpleHTTPRequestHandler
    from random import randrange
    from socket import error
    import webbrowser
    from threading import Thread

    os.chdir(path)

    while True:
        try:
            PORT = randrange(8000, 9000)
            server = TCPServer(("", PORT), SimpleHTTPRequestHandler, False)
            server.allow_reuse_address = True
            server.server_bind()
            break
        except error:  # port already taken
            pass

    print('Serving D3PO on port 0.0.0.0:%i' % PORT)
    server.server_activate()

    thread = Thread(target=server.serve_forever)
    thread.setDaemon(True)  # do not prevent shutdown
    thread.start()
    webbrowser.open('http://0.0.0.0:%i' % PORT)
예제 #22
0
    def run(self):
        os.chdir(self.config.target_path)

        port = self.args.port

        shutil.copyfile(DOCS_INDEX_FILE_PATH, 'index.html')

        logger.info("Serving docs at 0.0.0.0:{}".format(port))
        logger.info(
            "To access from your browser, navigate to:  http://localhost:{}"
            .format(port)
        )
        logger.info("Press Ctrl+C to exit.\n\n")

        # mypy doesn't think SimpleHTTPRequestHandler is ok here, but it is
        httpd = TCPServer(  # type: ignore
            ('0.0.0.0', port),
            SimpleHTTPRequestHandler  # type: ignore
        )  # type: ignore

        if self.args.open_browser:
            try:
                webbrowser.open_new_tab(f'http://127.0.0.1:{port}')
            except webbrowser.Error:
                pass

        try:
            httpd.serve_forever()  # blocks
        finally:
            httpd.shutdown()
            httpd.server_close()

        return None
예제 #23
0
    def run(self):
        """

        :return:
        """
        remote_control_server = TCPServer((host, port), TcpHandler)
        remote_control_server.serve_forever()
예제 #24
0
def get_current_pose_joints(server_ip, server_port, ur_ip, tool_angle_axis):

    global script
    script = script.replace("{SERVER_ADDRESS}", server_ip)
    script = script.replace("{PORT}", str(server_port))
    script = script.replace(
        "{TCP}",
        str([
            tool_angle_axis[i] if i >= 3 else tool_angle_axis[i] / 1000.
            for i in range(len(tool_angle_axis))
        ]))

    print(script)

    ur_available = is_available(ur_ip)

    if ur_available:
        # start server
        server = TCPServer((server_ip, server_port), MyTCPHandler)

        send_script(ur_ip, script)
        # send file
        try:
            server.serve_forever()
        except:
            return list_str_to_list(server.rcv_msg)
예제 #25
0
    def __init__(self, server_address):
        self.server_address = server_address
        self.tcp_server = TCPServer(server_address, self.request_handler)

        self._terminate = False

        self.server_capability = {
            "document_completion": DOCUMENT_COMPLETION,
            "document_hover": DOCUMENT_HOVER,
            "document_formatting": DOCUMENT_FORMATTING,
            "document_publish_diagnostic": DOCUMENT_PUBLISH_DIAGNOSTIC,
        }

        self.service_map = {
            "ping": self.ping,
            "shutdown": self.shutdown,
            #
            # project
            "initialize": self.initialize,
            "change_workspace": self.change_workspace,
            "exit": self.exit,
            #
            # features
            "document_completion": self.document_completion,
            "document_hover": self.document_hover,
            "document_formatting": self.document_formatting,
            "document_publish_diagnostic": self.document_publish_diagnostic,
        }
        self.project_settings = {}

        self.jedi_svc = jedi_service.Service()
예제 #26
0
 def setUp(self):
     self.new_dist = None
     self.port = random.randint(1025, 65535)
     self.httpd = TCPServer(("", self.port), SillyProxyRequestHandler)
     self.httpd_process = multiprocessing.Process(
         target=self.httpd.serve_forever)
     self.httpd_process.start()
예제 #27
0
def receive_raw_file(
    dest_path: str, name: str, port: int = 0, progress: Callable = None
) -> TCPServer:
    """ Serve a file on the given port """

    class SocketWrapper:
        def __init__(self, sock):
            self.s = sock

        def read(self, n: int):
            try:
                return self.s.recv(n)
            except socket.timeout:
                return b""

    class ReceiveFile(BaseRequestHandler):
        def handle(self):
            # We shouldn't block that long during a streaming transfer
            self.request.settimeout(1)
            with open(dest_path, "wb") as fp:
                copyfileobj(SocketWrapper(self.request), fp, progress)

    server = TCPServer(("0.0.0.0", port), ReceiveFile)
    thread = threading.Thread(target=lambda: server.serve_forever(), daemon=True)
    thread.start()

    return server
예제 #28
0
파일: server.py 프로젝트: tildetown/bbj
def run(host, port):
    server = TCPServer((host, port), RequestHandler)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        print("bye")
        server.server_close()
예제 #29
0
    def _start_web_server():
        global http_server
        from http.server import SimpleHTTPRequestHandler
        from socketserver import TCPServer

        try:
            if need_chdir:
                os.chdir(root)
                handler = SimpleHTTPRequestHandler
            else:
                handler = partial(SimpleHTTPRequestHandler, directory=root)

            http_server = TCPServer(("", 8000),
                                    handler,
                                    bind_and_activate=False)
            http_server.daemon_threads = True
            http_server.allow_reuse_address = True
            http_server.server_bind()
            http_server.server_activate()
            http_server_ready.set()
            http_server.serve_forever()
        except:
            import traceback
            traceback.print_exc()
        finally:
            http_server = None
            http_server_ready.set()

            if need_chdir:
                os.chdir(curr_dir)
예제 #30
0
def main():
    with TCPServer(("", G.PORT), ReqHandler) as httpd:
        url = f"http://localhost:{G.PORT}"
        print(f"Task Manager Server Started: '{url}'")
        print(f"Static Dir: {G.STATIC_DIR}")
        Timer(2, open_webpage, [url]).start()
        httpd.serve_forever()