From 504a4af4ab93b66c3d863d59af3018a9704508e7 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Fri, 16 Oct 2015 18:15:27 +0200 Subject: [PATCH] Enforce console port for VNC Ref https://github.com/GNS3/gns3-gui/issues/721 --- gns3server/modules/base_vm.py | 4 ++++ tests/modules/test_base_vm.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/gns3server/modules/base_vm.py b/gns3server/modules/base_vm.py index d21219aff..2cf32c45c 100644 --- a/gns3server/modules/base_vm.py +++ b/gns3server/modules/base_vm.py @@ -224,6 +224,10 @@ class BaseVM: if console == self._console: return + + if self._console_type == "vnc" and console < 5900: + raise VMError("VNC console require a port superior or equal to 5900") + if self._console: self._manager.port_manager.release_tcp_port(self._console, self._project) self._console = self._manager.port_manager.reserve_tcp_port(console, self._project) diff --git a/tests/modules/test_base_vm.py b/tests/modules/test_base_vm.py index f12844f93..27467c94d 100644 --- a/tests/modules/test_base_vm.py +++ b/tests/modules/test_base_vm.py @@ -25,6 +25,7 @@ from tests.utils import asyncio_patch from unittest.mock import patch, MagicMock from gns3server.modules.vpcs.vpcs_vm import VPCSVM from gns3server.modules.vpcs.vpcs_error import VPCSError +from gns3server.modules.vm_error import VMError from gns3server.modules.vpcs import VPCS @@ -43,3 +44,16 @@ def vm(project, manager): def test_temporary_directory(project, manager): vm = VPCSVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", project, manager) assert isinstance(vm.temporary_directory, str) + + +def test_console(project, manager): + vm = VPCSVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", project, manager) + vm.console = 2001 + assert vm.console == 2001 + + +def test_console_vnc_invalid(project, manager): + vm = VPCSVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", project, manager) + vm.console_type = "vnc" + with pytest.raises(VMError): + vm.console = 2002