def run_server( *, app=None, socketio=None, host=DEFAULT_HOST, port=DEFAULT_PORT, debug=False, open_browser=True, browsername=None, testing=False, private_key=None, certificate=None, ): """Run the server of the gdb gui""" kwargs = {} ssl_context = get_ssl_context(private_key, certificate) if ssl_context: # got valid ssl context # force everything through https SSLify(app) # pass ssl_context to flask kwargs["ssl_context"] = ssl_context url = "%s:%s" % (host, port) if kwargs.get("ssl_context"): protocol = "https://" url_with_prefix = "https://" + url else: protocol = "http://" url_with_prefix = "http://" + url if debug: async_mode = "eventlet" else: async_mode = "gevent" socketio.server_options["async_mode"] = async_mode try: socketio.init_app(app) except Exception: print( 'failed to initialize socketio app with async mode "%s". Continuing with async mode "threading".' % async_mode ) socketio.server_options["async_mode"] = "threading" socketio.init_app(app) if testing is False: if host == DEFAULT_HOST: url = (DEFAULT_HOST, port) else: try: url = (socket.gethostbyname(socket.gethostname()), port) except Exception: url = (host, port) if open_browser is True and debug is False: browsertext = repr(browsername) if browsername else "default browser" args = (browsertext,) + url text = ("Opening gdbgui with %s at " + protocol + "%s:%d") % args print(colorize(text)) b = webbrowser.get(browsername) if browsername else webbrowser b.open(url_with_prefix) else: print(colorize(f"View gdbgui at {protocol}{url[0]}:{url[1]}")) print( colorize(f"View gdbgui dashboard at {protocol}{url[0]}:{url[1]}/dashboard") ) print("exit gdbgui by pressing CTRL+C") try: socketio.run( app, debug=debug, port=int(port), host=host, extra_files=get_extra_files(), **kwargs, ) except KeyboardInterrupt: # Process was interrupted by ctrl+c on keyboard, show message pass
def setup_backend( serve=True, host=DEFAULT_HOST, port=DEFAULT_PORT, debug=False, open_browser=True, testing=False, private_key=None, certificate=None, LLDB=False, ): """Run the server of the gdb gui""" app.config["LLDB"] = LLDB kwargs = {} ssl_context = get_ssl_context(private_key, certificate) if ssl_context: # got valid ssl context # force everything through https SSLify(app) # pass ssl_context to flask kwargs["ssl_context"] = ssl_context url = "%s:%s" % (host, port) if kwargs.get("ssl_context"): protocol = "https://" url_with_prefix = "https://" + url else: protocol = "http://" url_with_prefix = "http://" + url if debug: async_mode = "eventlet" else: async_mode = "gevent" socketio.server_options["async_mode"] = async_mode try: socketio.init_app(app) except Exception: print( 'failed to initialize socketio app with async mode "%s". Continuing with async mode "threading".' % async_mode) socketio.server_options["async_mode"] = "threading" socketio.init_app(app) if testing is False: if host == DEFAULT_HOST: url = (DEFAULT_HOST, port) else: try: url = (socket.gethostbyname(socket.gethostname()), port) except Exception: url = (host, port) if open_browser is True and debug is False: text = ("Opening gdbgui in browser at " + protocol + "%s:%d") % url print(colorize(text)) webbrowser.open(url_with_prefix) else: print( colorize("View gdbgui at %s%s:%d" % (protocol, url[0], url[1]))) print("exit gdbgui by pressing CTRL+C") try: socketio.run(app, debug=debug, port=int(port), host=host, extra_files=get_extra_files(), **kwargs) except KeyboardInterrupt: # Process was interrupted by ctrl+c on keyboard, show message pass