diff --git a/main.py b/main.py index f5b633e5..3f5e2137 100644 --- a/main.py +++ b/main.py @@ -160,7 +160,10 @@ def prompt_worker(q, server): need_gc = False async def run(server, address='', port=8188, verbose=True, call_on_start=None): - await asyncio.gather(server.start(address, port, verbose, call_on_start), server.publish_loop()) + addresses = [] + for addr in address.split(","): + addresses.append((addr, port)) + await asyncio.gather(server.start_multi_address(addresses, call_on_start), server.publish_loop()) def hijack_progress(server): @@ -248,6 +251,8 @@ if __name__ == "__main__": import webbrowser if os.name == 'nt' and address == '0.0.0.0': address = '127.0.0.1' + if ':' in address: + address = "[{}]".format(address) webbrowser.open(f"{scheme}://{address}:{port}") call_on_start = startup_server diff --git a/server.py b/server.py index 482185f6..ea923e85 100644 --- a/server.py +++ b/server.py @@ -817,6 +817,9 @@ class PromptServer(): await self.send(*msg) async def start(self, address, port, verbose=True, call_on_start=None): + await self.start_multi_address([(address, port)], call_on_start=call_on_start) + + async def start_multi_address(self, addresses, call_on_start=None): runner = web.AppRunner(self.app, access_log=None) await runner.setup() ssl_ctx = None @@ -827,17 +830,26 @@ class PromptServer(): keyfile=args.tls_keyfile) scheme = "https" - site = web.TCPSite(runner, address, port, ssl_context=ssl_ctx) - await site.start() + logging.info("Starting server\n") + for addr in addresses: + address = addr[0] + port = addr[1] + site = web.TCPSite(runner, address, port, ssl_context=ssl_ctx) + await site.start() - self.address = address - self.port = port + if not hasattr(self, 'address'): + self.address = address #TODO: remove this + self.port = port + + if ':' in address: + address_print = "[{}]".format(address) + else: + address_print = address + + logging.info("To see the GUI go to: {}://{}:{}".format(scheme, address_print, port)) - if verbose: - logging.info("Starting server\n") - logging.info("To see the GUI go to: {}://{}:{}".format(scheme, address, port)) if call_on_start is not None: - call_on_start(scheme, address, port) + call_on_start(scheme, self.address, self.port) def add_on_prompt_handler(self, handler): self.on_prompt_handlers.append(handler)