mirror of
https://github.com/GNS3/gns3-server.git
synced 2025-06-21 00:22:56 +00:00
Merge branch '2.2' into 3.0
# Conflicts: # gns3server/compute/qemu/qemu_vm.py # gns3server/config_samples/gns3_server.conf # gns3server/controller/export_project.py # gns3server/controller/project.py # gns3server/controller/snapshot.py # gns3server/handlers/api/controller/project_handler.py # tests/controller/test_export_project.py # tests/controller/test_import_project.py # tests/controller/test_snapshot.py
This commit is contained in:
@ -54,6 +54,12 @@ import logging
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# forbidden additional options
|
||||
FORBIDDEN_OPTIONS = {"-blockdev", "-drive", "-hda", "-hdb", "-hdc", "-hdd",
|
||||
"-fsdev", "-virtfs"}
|
||||
FORBIDDEN_OPTIONS |= {"-" + opt for opt in FORBIDDEN_OPTIONS
|
||||
if opt.startswith("-") and not opt.startswith("--")}
|
||||
|
||||
|
||||
class QemuVM(BaseNode):
|
||||
module_name = "qemu"
|
||||
@ -2643,9 +2649,16 @@ class QemuVM(BaseNode):
|
||||
command.extend(self._tpm_options())
|
||||
if additional_options:
|
||||
try:
|
||||
command.extend(shlex.split(additional_options))
|
||||
additional_opt_list = shlex.split(additional_options)
|
||||
except ValueError as e:
|
||||
raise QemuError(f"Invalid additional options: {additional_options} error {e}")
|
||||
allow_unsafe_options = self.manager.config.settings.Qemu.allow_unsafe_options
|
||||
if allow_unsafe_options is False:
|
||||
for opt in additional_opt_list:
|
||||
if opt in FORBIDDEN_OPTIONS:
|
||||
raise QemuError("Forbidden additional option: {}".format(opt))
|
||||
command.extend(additional_opt_list)
|
||||
|
||||
# avoiding mouse offset (see https://github.com/GNS3/gns3-server/issues/2335)
|
||||
if self._console_type == "vnc":
|
||||
command.extend(['-machine', 'usb=on', '-device', 'usb-tablet'])
|
||||
|
Reference in New Issue
Block a user