YueGuobin
3752b2bac8
fix: Handle connection errors when stopping node console
...
Add exception handling in stop_wrap_console to gracefully handle
ConnectionResetError, BrokenPipeError, and OSError when waiting
for console writer to close.
This prevents 500 errors when stopping QEMU nodes if the console
connection is reset before the writer finishes closing.
Fixes race condition where QEMU process exits and closes connections
before the console writer cleanup completes.
2026-05-08 23:30:41 +08:00
Cristi
d7c78f5744
feat(compute): Fix ambiguous log message related to the active console transport.
...
Co-authored-by: Copilot <copilot@github.com>
2026-04-30 18:07:23 +03:00
Cristi
d64eca0418
feat(compute): add SSH console type support
2026-04-30 15:52:47 +03:00
grossmj
80cc85e5d5
Fix exception when custom adapters is not set
2026-04-15 14:17:12 +08:00
Cristi
83558d4d9f
Enhancement: Re-write current Telnet server implementation using telnetlib3 library
2026-03-24 13:23:45 +02:00
YueGuobin
64d3c02d42
refactor(compute): remove SPICE WebSocket console support
...
Remove all SPICE WebSocket-related code due to frontend dependency issues
with spice-html5 library (missing RSAKey/BigInteger implementations).
Changes:
- Remove start_spice_websocket_console() from BaseNode
- Remove SPICE WebSocket endpoints from QEMU and Docker compute APIs
- Remove SPICE WebSocket proxy endpoint from controller API
- Remove WebSocket subprotocol handling from authentication layers
- Remove SPICE documentation
The SPICE console type remains functional for direct connections,
but WebSocket proxy support has been removed.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-17 01:15:26 +08:00
YueGuobin
c98f802362
feat(compute): add SPICE WebSocket console support
...
Add WebSocket-based console support for SPICE protocol, enabling
browser-based graphical console access with enhanced features
like clipboard sharing, USB redirection, and audio streaming.
Changes:
- Add start_spice_websocket_console() method in BaseNode for SPICE
WebSocket to TCP bridging with bidirectional binary forwarding
- Add /console/spice WebSocket endpoints in QEMU and Docker compute APIs
- Add /console/spice WebSocket proxy endpoint in controller API
- Add comprehensive API documentation in docs/features/
Supported console types:
- spice: Basic SPICE protocol support
- spice+agent: SPICE with spice-vdagent for enhanced features
Architecture:
- Browser WebSocket → Controller (JWT + RBAC) → Compute (Basic Auth)
- No external websockify processes required
- Consistent with existing VNC WebSocket implementation
2026-03-16 22:21:25 +08:00
YueGuobin
ba92b405da
feat: add VNC WebSocket console support for Docker and QEMU nodes
...
Add VNC console WebSocket endpoints for Docker and QEMU nodes:
- Add /console/vnc WebSocket endpoint to compute API (Docker & QEMU)
- Add /console/vnc WebSocket endpoint to controller API
- Implement start_vnc_websocket_console() in BaseNode
- Forward VNC WebSocket traffic between controller and compute layers
The implementation provides bidirectional WebSocket to TCP forwarding
for VNC protocol (RFB) connections, allowing browser-based VNC console
access to containers and VMs.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-16 16:40:00 +08:00
grossmj
69eafda777
Merge remote-tracking branch 'origin/2.2' into 3.0
...
# Conflicts:
# gns3server/version.py
2026-03-09 17:12:24 +08:00
grossmj
b658f7ff68
Make sure the node shows as stopped when the wrap console cannot be stopped. Ref https://github.com/GNS3/gns3-registry/pull/1010
2026-03-09 17:10:00 +08:00
grossmj
f3749e83ec
Catch error when cannot resize Docker container TTY.
2024-11-07 14:52:59 +10:00
grossmj
c4fcb43e78
Merge branch '2.2' into 3.0
...
# Conflicts:
# .github/workflows/testing.yml
# CHANGELOG
# README.md
# dev-requirements.txt
# gns3server/compute/docker/docker_vm.py
# gns3server/controller/export_project.py
# gns3server/controller/import_project.py
# gns3server/controller/project.py
# gns3server/crash_report.py
# gns3server/static/web-ui/index.html
# gns3server/static/web-ui/main.df8c319a3da6fb0e3629.js
# gns3server/version.py
# requirements.txt
# setup.py
# tests/compute/docker/test_docker_vm.py
# tests/controller/test_import_project.py
2024-10-31 12:54:35 +10:00
grossmj
c05e1cb8e7
Use @locking when sending uBridge commands. Ref https://github.com/GNS3/gns3-gui/issues/3651
2024-10-28 13:02:04 +10:00
Jeremy Grossmann
af6f34b2ca
Revert "Backport auxiliary console support for Qemu, Docker and Dynamips nodes"
2024-09-23 13:10:58 +07:00
grossmj
74782d413f
Change method to allocate AUX console for existing Dynamips nodes
2024-09-22 21:41:10 +07:00
grossmj
c41c11eb34
Backport auxiliary console support for Qemu, Docker and Dynamips nodes
2024-09-22 18:29:04 +07:00
grossmj
08ee40548f
Add custom executable paths on Windows
2024-01-28 12:13:08 +11:00
grossmj
44c066ac68
Fix compute authentication for websocket endpoints
2023-10-22 12:44:39 +10:00
grossmj
0f02cff5f2
Catch ConnectionResetError when waiting for the wrap console
2023-05-25 18:29:19 +08:00
grossmj
267c4cbbbb
Merge branch '2.2' into 3.0
...
# Conflicts:
# README.md
# gns3server/compute/base_node.py
# gns3server/compute/dynamips/__init__.py
# gns3server/compute/dynamips/hypervisor.py
# gns3server/compute/qemu/__init__.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/controller/__init__.py
# gns3server/crash_report.py
# gns3server/handlers/api/controller/node_handler.py
# gns3server/schemas/qemu_template.py
# gns3server/static/web-ui/index.html
# gns3server/static/web-ui/main.11410ae4eaf4d4c08cd0.js
# gns3server/version.py
# requirements.txt
2023-03-17 17:44:32 +10:00
grossmj
1f85abb036
Fix broken websocket console with Python 3.11
2023-02-18 15:32:57 +08:00
grossmj
a7d19fd89a
Fix StreamWriter doesn't have the wait_closed() method in Python3.6. Fixes #2170
2023-01-20 13:14:57 +08:00
grossmj
27d9063e56
Merge 2.2
2023-01-05 12:38:00 +08:00
grossmj
b3a6b9173b
Fix reset console. Fixes #1619
2022-12-31 09:43:17 +08:00
grossmj
1148dbc48e
Fix issue when calling reset_console with running VPCS and Qemu nodes. Ref #1619
2022-12-30 20:54:37 +08:00
grossmj
263febecbc
Merge branch '2.2' into 3.0
...
# Conflicts:
# .github/workflows/testing.yml
# CHANGELOG
# appveyor.yml
# dev-requirements.txt
# gns3server/compute/base_node.py
# gns3server/controller/__init__.py
# gns3server/controller/appliance_manager.py
# gns3server/crash_report.py
# gns3server/static/web-ui/index.html
# gns3server/utils/get_resource.py
# gns3server/version.py
# gns3server/web/route.py
# requirements.txt
# tests/handlers/api/compute/test_qemu.py
# win-requirements.txt
2022-11-09 20:30:28 +08:00
grossmj
f04702d607
Fix console vnc don't use configured ports in some case. Fixes #2111
2022-11-06 19:36:31 +08:00
BoHong Li
790bf4521d
fix: use exact match to find interface in windows to avoid get wrong interface
2022-07-06 14:22:11 +08:00
grossmj
bdd703a0dc
Support to reset all console connections. Ref https://github.com/GNS3/gns3-server/issues/1619
2022-06-15 15:30:44 +02:00
grossmj
74c675d5b0
Drop Windows support
2022-01-19 22:28:36 +10:30
grossmj
0b200def88
Merge branch 'master' into 3.0
...
# Conflicts:
# .github/workflows/testing.yml
# Dockerfile
# gns3server/version.py
2021-10-09 12:16:50 +10:30
grossmj
5eb5658a74
Fix memory percentage left warning. Fixes #1966
2021-09-20 18:08:02 +09:30
Andrej Krpič
3b7dc21ef0
Fix binary websocket access to the console
...
telnet_writer.write is not an async method - drain() is.
Remove async keyword so the call is the same as for the text websocket.
2021-07-26 12:58:35 +02:00
grossmj
c021e21309
Use black with -l 120 param.
2021-04-13 18:46:50 +09:30
grossmj
f928738bd5
Use pyupgrade with --py36-plus param.
2021-04-13 18:37:58 +09:30
grossmj
30ebae207f
Use Pydantic to validate the server config file.
2021-04-12 17:02:23 +09:30
grossmj
6aefb5d32b
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/base_node.py
# gns3server/version.py
# gns3server/web/web_server.py
2020-12-07 18:00:33 +10:30
grossmj
5244ae6d4c
New config file options to configure the VNC console port range.
2020-12-03 18:04:42 +10:30
grossmj
c043830e3f
Move endpoints to routes & preparations to use a database.
2020-11-19 15:21:03 +10:30
grossmj
bd8565b2b9
Refactor WebSocket console code to work with FastAPI.
...
Fix endpoint routes.
2020-10-19 15:00:41 +10:30
grossmj
eb3cb8a41f
Migration to FastAPI
2020-10-02 16:07:50 +09:30
grossmj
7043d48f1a
Auxiliary console support for Qemu. Ref #2873
...
Improvements for auxiliary console support for Docker and Dynamips.
2020-07-29 16:23:51 +09:30
grossmj
831ee5f468
Support to reset all console connections. Ref https://github.com/GNS3/gns3-server/issues/1619
2020-07-26 18:27:18 +09:30
grossmj
c313475f68
Support for WebSocket consoles
2020-01-31 17:31:27 +08:00
grossmj
456ef1348b
Fix DeprecationWarning: invalid escape sequence. Fixes https://github.com/GNS3/gns3-gui/issues/2670
2019-01-17 18:01:58 +07:00
grossmj
5cb0957f35
Require privileged access for uBridge when using VMware VMs and Docker containers. Fixes #1461 .
2018-11-20 00:22:16 +07:00
grossmj
3fae6ada95
Only require privileged access for uBridge when connecting a cloud to an Ethernet/TAP interface. Fixes #1461 .
2018-11-19 17:33:17 +07:00
grossmj
76af98404a
Drop Python 3.4 and switch to async / await syntax for asyncio. Fixes #1425
2018-10-15 17:05:49 +07:00
grossmj
33e8710495
Merge branch '2.1' into 2.2
...
# Conflicts:
# gns3server/compute/docker/docker_vm.py
# gns3server/controller/compute.py
# gns3server/controller/gns3vm/__init__.py
# gns3server/controller/link.py
# gns3server/controller/project.py
# gns3server/handlers/api/controller/project_handler.py
# gns3server/handlers/api/controller/server_handler.py
# gns3server/utils/asyncio/__init__.py
# gns3server/utils/asyncio/telnet_server.py
# gns3server/version.py
# gns3server/web/web_server.py
# tests/compute/qemu/test_qemu_vm.py
2018-08-29 15:57:54 +07:00
grossmj
902de3dd47
Refactor asyncio locking system for Python 3.7 support. Ref https://github.com/GNS3/gns3-gui/issues/2566 Ref https://github.com/GNS3/gns3-gui/issues/2568
2018-08-25 14:10:47 +07:00