From 658bfb7624c20caa581940b8de53c19dd6987aad Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 2 Aug 2023 15:28:32 +1000 Subject: [PATCH] Allow connection to ws console over IPv6. Fixes https://github.com/GNS3/gns3-web-ui/issues/1400 --- gns3server/handlers/api/controller/node_handler.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gns3server/handlers/api/controller/node_handler.py b/gns3server/handlers/api/controller/node_handler.py index c9e7c057..900d0400 100644 --- a/gns3server/handlers/api/controller/node_handler.py +++ b/gns3server/handlers/api/controller/node_handler.py @@ -17,6 +17,7 @@ import aiohttp import asyncio +import ipaddress from gns3server.web.route import Route from gns3server.controller import Controller @@ -477,7 +478,16 @@ class NodeHandler: await ws.prepare(request) request.app['websockets'].add(ws) - ws_console_compute_url = "ws://{compute_host}:{compute_port}/v2/compute/projects/{project_id}/{node_type}/nodes/{node_id}/console/ws".format(compute_host=compute.host, + compute_host = compute.host + try: + # handle IPv6 address + ip = ipaddress.ip_address(compute_host) + if isinstance(ip, ipaddress.IPv6Address): + compute_host = '[' + compute_host + ']' + except ValueError: + pass + + ws_console_compute_url = "ws://{compute_host}:{compute_port}/v2/compute/projects/{project_id}/{node_type}/nodes/{node_id}/console/ws".format(compute_host=compute_host, compute_port=compute.port, project_id=project.id, node_type=node.node_type,