From 363fdb7d1058b0eeeccb53f8dafd4ec6dc2bd5a3 Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 24 Aug 2021 20:40:06 +0930 Subject: [PATCH] Fix wrong error when NAT interface is not allowed. Fixes #1943 --- gns3server/compute/builtin/nodes/nat.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gns3server/compute/builtin/nodes/nat.py b/gns3server/compute/builtin/nodes/nat.py index 35984315..a32b8700 100644 --- a/gns3server/compute/builtin/nodes/nat.py +++ b/gns3server/compute/builtin/nodes/nat.py @@ -35,13 +35,22 @@ class Nat(Cloud): def __init__(self, name, node_id, project, manager, ports=None): + allowed_interfaces = Config.instance().get_section_config("Server").get("allowed_interfaces", None) + if allowed_interfaces: + allowed_interfaces = allowed_interfaces.split(',') if sys.platform.startswith("linux"): nat_interface = Config.instance().get_section_config("Server").get("default_nat_interface", "virbr0") + if allowed_interfaces and nat_interface not in allowed_interfaces: + raise NodeError("NAT interface {} is not allowed be used on this server. " + "Please check the server configuration file.".format(nat_interface)) if nat_interface not in [interface["name"] for interface in gns3server.utils.interfaces.interfaces()]: raise NodeError("NAT interface {} is missing, please install libvirt".format(nat_interface)) interface = nat_interface else: nat_interface = Config.instance().get_section_config("Server").get("default_nat_interface", "vmnet8") + if allowed_interfaces and nat_interface not in allowed_interfaces: + raise NodeError("NAT interface {} is not allowed be used on this server. " + "Please check the server configuration file.".format(nat_interface)) interfaces = list(filter(lambda x: nat_interface in x.lower(), [interface["name"] for interface in gns3server.utils.interfaces.interfaces()])) if not len(interfaces):