From 878987a26eb6970a1d5493ef95103df0b0df1ed1 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 22 May 2019 16:13:28 +0700 Subject: [PATCH 01/46] Release v2.1.18 --- CHANGELOG | 5 +++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1cbc6b9b..91915d77 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # Change Log +## 2.1.18 22/05/2019 + +* Revert "Force aiohttp version to 2.3.10 and aiohttp-cors version to 0.5.3" Ref https://github.com/GNS3/gns3-server/issues/1583 Ref https://github.com/GNS3/gns3-server/issues/1592 +* Fix invalid reStructuredText for long description in setup.py + ## 2.1.17 17/05/2019 * Force aiohttp version to 2.3.10 and aiohttp-cors version to 0.5.3 This is to fix build issue for Ubuntu 19.04 package on Launchpad. Ref #1583 https://github.com/GNS3/gns3-gui/issues/2774 diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index 2620a383..0c0d4700 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -57,7 +57,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://e4fc8dc4f6f5477da9fac2c8c7b56ebf:c6b9325018ec4d37aabba5340d617664@sentry.io/38482" + DSN = "https://2b1412df322748bc8b36639671f1a40e:25804fdd614d498aa429c689f540779e@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index 19df8656..5b4de7e8 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.17" -__version_info__ = (2, 1, 17, 0) +__version__ = "2.1.18" +__version_info__ = (2, 1, 18, 0) # If it's a git checkout try to add the commit if "dev" in __version__: From 457ae4783f3de05baf3c338e0c08f922517b1e46 Mon Sep 17 00:00:00 2001 From: grossmj Date: Thu, 23 May 2019 14:37:37 +0700 Subject: [PATCH 02/46] Development on 2.1.19dev1 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index 5b4de7e8..c9285839 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.18" -__version_info__ = (2, 1, 18, 0) +__version__ = "2.1.19dev1" +__version_info__ = (2, 1, 19, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From 3b87a199798c093440c5ffb56da8ff9e40806263 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 25 May 2019 15:31:35 +0700 Subject: [PATCH 03/46] Do not start QEMU console if QEMU process is not started. Fixes https://github.com/GNS3/gns3-gui/issues/2712 --- gns3server/compute/qemu/qemu_vm.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 332e5813..d715d873 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -972,7 +972,8 @@ class QemuVM(BaseNode): await self._control_vm_commands(set_link_commands) try: - await self.start_wrap_console() + if self.is_running(): + await self.start_wrap_console() except OSError as e: raise QemuError("Could not start Telnet QEMU console {}\n".format(e)) From 4ac999461b7e934105c76a244111bb72874ee95a Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 25 May 2019 18:23:51 +0700 Subject: [PATCH 04/46] Support for log rotation and compression. Fixes #1586 --- gns3server/run.py | 11 +++++++++-- gns3server/web/logger.py | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/gns3server/run.py b/gns3server/run.py index f1768402..fa064080 100644 --- a/gns3server/run.py +++ b/gns3server/run.py @@ -101,6 +101,9 @@ def parse_arguments(argv): parser.add_argument("-d", "--debug", action="store_true", help="show debug logs") parser.add_argument("--shell", action="store_true", help="start a shell inside the server (debugging purpose only you need to install ptpython before)") parser.add_argument("--log", help="send output to logfile instead of console") + parser.add_argument("--logmaxsize", help="maximum logfile size in bytes (default is 1GB)") + parser.add_argument("--logbackupcount", help="number of historical log files to keep (default is 10)") + parser.add_argument("--logcompression", action="store_true", help="compress inactive (historical) logs") parser.add_argument("--daemon", action="store_true", help="start as a daemon") parser.add_argument("--pid", help="store process pid") parser.add_argument("--profile", help="Settings profile (blank will use default settings files)") @@ -123,7 +126,10 @@ def parse_arguments(argv): "allow": config.getboolean("allow_remote_console", False), "quiet": config.getboolean("quiet", False), "debug": config.getboolean("debug", False), - "logfile": config.getboolean("logfile", "") + "logfile": config.getboolean("logfile", ""), + "logmaxsize": config.get("logfile", 1000000000), # default is 1GB + "logbackupcount": config.get("logbackupcount", 10), + "logcompression": config.getboolean("logcompression", False) } parser.set_defaults(**defaults) @@ -208,7 +214,8 @@ def run(): if args.debug: level = logging.DEBUG - user_log = init_logger(level, logfile=args.log, quiet=args.quiet) + user_log = init_logger(level, logfile=args.log, max_bytes=int(args.logmaxsize), backup_count=int(args.logbackupcount), + compression=args.logcompression, quiet=args.quiet) user_log.info("GNS3 server version {}".format(__version__)) current_year = datetime.date.today().year user_log.info("Copyright (c) 2007-{} GNS3 Technologies Inc.".format(current_year)) diff --git a/gns3server/web/logger.py b/gns3server/web/logger.py index 063ae5ab..1f9b65bb 100644 --- a/gns3server/web/logger.py +++ b/gns3server/web/logger.py @@ -21,6 +21,11 @@ import logging import sys +import os +import shutil +import gzip + +from logging.handlers import RotatingFileHandler class ColouredFormatter(logging.Formatter): @@ -108,9 +113,37 @@ class LogFilter: return 1 -def init_logger(level, logfile=None, quiet=False): +class CompressedRotatingFileHandler(RotatingFileHandler): + """ + Custom rotating file handler with compression support. + """ + + def doRollover(self): + if self.stream: + self.stream.close() + if self.backupCount > 0: + for i in range(self.backupCount - 1, 0, -1): + sfn = "%s.%d.gz" % (self.baseFilename, i) + dfn = "%s.%d.gz" % (self.baseFilename, i + 1) + if os.path.exists(sfn): + if os.path.exists(dfn): + os.remove(dfn) + os.rename(sfn, dfn) + dfn = self.baseFilename + ".1.gz" + if os.path.exists(dfn): + os.remove(dfn) + with open(self.baseFilename, 'rb') as f_in, gzip.open(dfn, 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + self.mode = 'w' + self.stream = self._open() + + +def init_logger(level, logfile=None, max_bytes=1000000000, backup_count=10, compression=True, quiet=False): if logfile and len(logfile) > 0: - stream_handler = logging.FileHandler(logfile) + if compression: + stream_handler = CompressedRotatingFileHandler(logfile, maxBytes=max_bytes, backupCount=backup_count) + else: + stream_handler = RotatingFileHandler(logfile, maxBytes=max_bytes, backupCount=backup_count) stream_handler.formatter = ColouredFormatter("{asctime} {levelname} {filename}:{lineno} {message}", "%Y-%m-%d %H:%M:%S", "{") elif sys.platform.startswith("win"): stream_handler = WinStreamHandler(sys.stdout) From 2289fd4a2f027d65ca79bd3291c869abe3949ca3 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 25 May 2019 21:33:47 +0700 Subject: [PATCH 05/46] Set log max size to 10MB. Ref #1586 --- gns3server/run.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/run.py b/gns3server/run.py index fa064080..d4c875e7 100644 --- a/gns3server/run.py +++ b/gns3server/run.py @@ -101,7 +101,7 @@ def parse_arguments(argv): parser.add_argument("-d", "--debug", action="store_true", help="show debug logs") parser.add_argument("--shell", action="store_true", help="start a shell inside the server (debugging purpose only you need to install ptpython before)") parser.add_argument("--log", help="send output to logfile instead of console") - parser.add_argument("--logmaxsize", help="maximum logfile size in bytes (default is 1GB)") + parser.add_argument("--logmaxsize", help="maximum logfile size in bytes (default is 10MB)") parser.add_argument("--logbackupcount", help="number of historical log files to keep (default is 10)") parser.add_argument("--logcompression", action="store_true", help="compress inactive (historical) logs") parser.add_argument("--daemon", action="store_true", help="start as a daemon") @@ -127,7 +127,7 @@ def parse_arguments(argv): "quiet": config.getboolean("quiet", False), "debug": config.getboolean("debug", False), "logfile": config.getboolean("logfile", ""), - "logmaxsize": config.get("logfile", 1000000000), # default is 1GB + "logmaxsize": config.get("logfile", 10000000), # default is 10MB "logbackupcount": config.get("logbackupcount", 10), "logcompression": config.getboolean("logcompression", False) } From 81a48df9bbb6e51cea7ed7d24415ff4ba281ceb9 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 26 May 2019 15:44:55 +0700 Subject: [PATCH 06/46] Update the GNS3 version in topology file if converted. Ref https://github.com/GNS3/gns3-gui/issues/2798 --- gns3server/controller/topology.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gns3server/controller/topology.py b/gns3server/controller/topology.py index 4e7326e6..2f42ec57 100644 --- a/gns3server/controller/topology.py +++ b/gns3server/controller/topology.py @@ -128,17 +128,18 @@ def load_topology(path): raise aiohttp.web.HTTPConflict(text="Could not load topology {}: {}".format(path, str(e))) if topo.get("revision", 0) > GNS3_FILE_FORMAT_REVISION: - raise aiohttp.web.HTTPConflict(text="This project is designed for a more recent version of GNS3 please update GNS3 to version {} or later".format(topo["version"])) + raise aiohttp.web.HTTPConflict(text="This project was created with more recent version of GNS3 (file revision: {}). Please upgrade GNS3 to version {} or later".format(topo["revision"], topo["version"])) changed = False if "revision" not in topo or topo["revision"] < GNS3_FILE_FORMAT_REVISION: - # If it's an old GNS3 file we need to convert it - # first we backup the file + # Convert the topology if this is an old one but backup the file first try: shutil.copy(path, path + ".backup{}".format(topo.get("revision", 0))) - except (OSError) as e: + except OSError as e: raise aiohttp.web.HTTPConflict(text="Can't write backup of the topology {}: {}".format(path, str(e))) changed = True + # update the version because we converted the topology + topo["version"] = __version__ if "revision" not in topo or topo["revision"] < 5: topo = _convert_1_3_later(topo, path) From 6229fadace2b712d5427d94b0173f086da9bb87e Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 26 May 2019 15:55:29 +0700 Subject: [PATCH 07/46] Fix topology test --- tests/test_topologies.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_topologies.py b/tests/test_topologies.py index 0dcf16a4..1033a565 100644 --- a/tests/test_topologies.py +++ b/tests/test_topologies.py @@ -28,6 +28,7 @@ import shutil from gns3server.controller.topology import load_topology, GNS3_FILE_FORMAT_REVISION +from gns3server.version import __version__ topologies_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "topologies") @@ -104,7 +105,7 @@ def compare_dict(path, source, reference): """ assert isinstance(source, dict), "Source is not a dict in {}".format(path) for key in source: - assert key in reference, "Unexcepted {} in {} it should be {}".format(key, source, reference) + assert key in reference, "Unexpected {} in {} it should be {}".format(key, source, reference) for key in sorted(reference.keys()): val = reference[key] assert key in source, "{} is missing in {}".format(key, source) @@ -113,10 +114,12 @@ def compare_dict(path, source, reference): pass elif val == "ANYUUID" and len(source[key]) == 36: pass - # We test that the revision number has been bumpd to last version. This avoid modifying all the tests + # We test that the revision number has been bumped to last version. This avoid modifying all the tests # at each new revision bump. elif key == "revision": assert source[key] == GNS3_FILE_FORMAT_REVISION + elif key == "version": + assert source[key] == __version__ else: assert val == source[key], "Wrong value for {}: \n{}\nit should be\n{}".format(key, source[key], val) elif isinstance(val, dict): From 5cbfafbeb2aa559ad86e825160d9a6d22bc44fcd Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 27 May 2019 15:35:47 +0700 Subject: [PATCH 08/46] Support snapshots for portable projects. Fixes https://github.com/GNS3/gns3-gui/issues/2792 --- gns3server/controller/import_project.py | 68 +++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/gns3server/controller/import_project.py b/gns3server/controller/import_project.py index eb76ceb1..678de2ac 100644 --- a/gns3server/controller/import_project.py +++ b/gns3server/controller/import_project.py @@ -22,10 +22,13 @@ import uuid import shutil import zipfile import aiohttp +import aiofiles import itertools +import tempfile from .topology import load_topology from ..utils.asyncio import wait_run_in_executor +from ..utils.asyncio import aiozipstream import logging log = logging.getLogger(__name__) @@ -159,8 +162,13 @@ async def import_project(controller, project_id, stream, location=None, name=Non json.dump(topology, f, indent=4) os.remove(os.path.join(path, "project.gns3")) - if os.path.exists(os.path.join(path, "images")): - _import_images(controller, path) + images_path = os.path.join(path, "images") + if os.path.exists(images_path): + await _import_images(controller, images_path) + + snapshots_path = os.path.join(path, "snapshots") + if os.path.exists(snapshots_path): + await _import_snapshots(snapshots_path, project_name, project_id) project = await controller.load_project(dot_gns3_path, load=False) return project @@ -215,13 +223,13 @@ async def _upload_file(compute, project_id, file_path, path): await compute.http_query("POST", path, f, timeout=None) -def _import_images(controller, path): +async def _import_images(controller, images_path): """ Copy images to the images directory or delete them if they already exists. """ image_dir = controller.images_path() - root = os.path.join(path, "images") + root = images_path for (dirpath, dirnames, filenames) in os.walk(root, followlinks=False): for filename in filenames: path = os.path.join(dirpath, filename) @@ -229,4 +237,54 @@ def _import_images(controller, path): continue dst = os.path.join(image_dir, os.path.relpath(path, root)) os.makedirs(os.path.dirname(dst), exist_ok=True) - shutil.move(path, dst) + await wait_run_in_executor(shutil.move, path, dst) + + +async def _import_snapshots(snapshots_path, project_name, project_id): + """ + Import the snapshots and update their project name and ID to be the same as the main project. + """ + + for snapshot in os.listdir(snapshots_path): + if not snapshot.endswith(".gns3project"): + continue + snapshot_path = os.path.join(snapshots_path, snapshot) + with tempfile.TemporaryDirectory(dir=snapshots_path) as tmpdir: + + # extract everything to a temporary directory + try: + with open(snapshot_path, "rb") as f: + with zipfile.ZipFile(f) as zip_file: + await wait_run_in_executor(zip_file.extractall, tmpdir) + except OSError as e: + raise aiohttp.web.HTTPConflict(text="Cannot open snapshot '{}': {}".format(os.path.basename(snapshot), e)) + except zipfile.BadZipFile: + raise aiohttp.web.HTTPConflict(text="Cannot extract files from snapshot '{}': not a GNS3 project (invalid zip)".format(os.path.basename(snapshot))) + + # patch the topology with the correct project name and ID + try: + topology_file_path = os.path.join(tmpdir, "project.gns3") + with open(topology_file_path, encoding="utf-8") as f: + topology = json.load(f) + + topology["name"] = project_name + topology["project_id"] = project_id + with open(topology_file_path, "w+", encoding="utf-8") as f: + json.dump(topology, f, indent=4, sort_keys=True) + except OSError as e: + raise aiohttp.web.HTTPConflict(text="Cannot update snapshot '{}': the project.gns3 file cannot be modified: {}".format(os.path.basename(snapshot), e)) + except (ValueError, KeyError): + raise aiohttp.web.HTTPConflict(text="Cannot update snapshot '{}': the project.gns3 file is corrupted".format(os.path.basename(snapshot))) + + # write everything back to the original snapshot file + try: + with aiozipstream.ZipFile(compression=zipfile.ZIP_STORED) as zstream: + for root, dirs, files in os.walk(tmpdir, topdown=True, followlinks=False): + for file in files: + path = os.path.join(root, file) + zstream.write(path, os.path.relpath(path, tmpdir)) + async with aiofiles.open(snapshot_path, 'wb+') as f: + async for chunk in zstream: + await f.write(chunk) + except OSError as e: + raise aiohttp.web.HTTPConflict(text="Cannot update snapshot '{}': the snapshot cannot be recreated: {}".format(os.path.basename(snapshot), e)) From 907807dc5335f0cd27446d2b4e778154e33dded6 Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 27 May 2019 17:38:16 +0700 Subject: [PATCH 09/46] Drop typing dependency. --- requirements.txt | 3 +-- setup.py | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2578f031..22375f97 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,10 @@ jsonschema==2.6.0 aiohttp>=2.3.3,<2.4.0 # pyup: ignore -aiohttp-cors>=0.5.3,<0.6.0 # pyup: ignore +aiohttp-cors==0.6.0 # pyup: ignore; last version to support python 3.4 yarl>=0.11 Jinja2>=2.7.3 raven>=5.23.0 psutil>=3.0.0 zipstream>=1.1.4 -typing>=3.5.3.0 # Otherwise yarl fails with python 3.4 prompt-toolkit==1.0.15 async-timeout<3.0.0 # pyup: ignore; 3.0 drops support for python 3.4 diff --git a/setup.py b/setup.py index 46f9b2cb..d19e522c 100644 --- a/setup.py +++ b/setup.py @@ -49,6 +49,11 @@ setup( cmdclass={"test": PyTest}, description="GNS3 server", long_description=open("README.rst", "r").read(), + setup_requires=[ + # Environment markers were implemented and stabilized in setuptools + # v20.8.1 (see ). + "setuptools>=20.8.1" + ], install_requires=dependencies, entry_points={ "console_scripts": [ From 54c4bd31d434ad6c67d13809be31ce79c40405cc Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 27 May 2019 17:57:37 +0700 Subject: [PATCH 10/46] Remove setup require since we do not use environment makers yet. --- setup.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/setup.py b/setup.py index d19e522c..46f9b2cb 100644 --- a/setup.py +++ b/setup.py @@ -49,11 +49,6 @@ setup( cmdclass={"test": PyTest}, description="GNS3 server", long_description=open("README.rst", "r").read(), - setup_requires=[ - # Environment markers were implemented and stabilized in setuptools - # v20.8.1 (see ). - "setuptools>=20.8.1" - ], install_requires=dependencies, entry_points={ "console_scripts": [ From 87d85c1947b2187fd654cc86895a97a62bf77265 Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 27 May 2019 18:10:46 +0700 Subject: [PATCH 11/46] Remove yarl from requirements.txt since it is installed by aiohttp. --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 22375f97..c06ee6c7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,6 @@ jsonschema==2.6.0 aiohttp>=2.3.3,<2.4.0 # pyup: ignore aiohttp-cors==0.6.0 # pyup: ignore; last version to support python 3.4 -yarl>=0.11 Jinja2>=2.7.3 raven>=5.23.0 psutil>=3.0.0 From 591d4f29ff651aab8cee556f0f04d66e0b8d9193 Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 28 May 2019 10:34:27 +0700 Subject: [PATCH 12/46] Fix minor bugs with log rotation support. Ref #1586 --- gns3server/run.py | 2 +- gns3server/web/logger.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/run.py b/gns3server/run.py index d4c875e7..e864b787 100644 --- a/gns3server/run.py +++ b/gns3server/run.py @@ -127,7 +127,7 @@ def parse_arguments(argv): "quiet": config.getboolean("quiet", False), "debug": config.getboolean("debug", False), "logfile": config.getboolean("logfile", ""), - "logmaxsize": config.get("logfile", 10000000), # default is 10MB + "logmaxsize": config.get("logmaxsize", 10000000), # default is 10MB "logbackupcount": config.get("logbackupcount", 10), "logcompression": config.getboolean("logcompression", False) } diff --git a/gns3server/web/logger.py b/gns3server/web/logger.py index 1f9b65bb..64f4c043 100644 --- a/gns3server/web/logger.py +++ b/gns3server/web/logger.py @@ -138,7 +138,7 @@ class CompressedRotatingFileHandler(RotatingFileHandler): self.stream = self._open() -def init_logger(level, logfile=None, max_bytes=1000000000, backup_count=10, compression=True, quiet=False): +def init_logger(level, logfile=None, max_bytes=10000000, backup_count=10, compression=True, quiet=False): if logfile and len(logfile) > 0: if compression: stream_handler = CompressedRotatingFileHandler(logfile, maxBytes=max_bytes, backupCount=backup_count) From 4f803ff16280927a8a9c04b535891305eced2abf Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 28 May 2019 10:37:43 +0700 Subject: [PATCH 13/46] Sync appliances. --- gns3server/appliances/arista-ceos.gns3a | 2 +- gns3server/appliances/arista-veos.gns3a | 123 +++++++++++ gns3server/appliances/aruba-arubaoscx.gns3a | 53 +++++ gns3server/appliances/aruba-vmc.gns3a | 56 +++++ gns3server/appliances/asterisk.gns3a | 34 ++- gns3server/appliances/bsdrp.gns3a | 30 +++ gns3server/appliances/centos-cloud.gns3a | 52 +++++ gns3server/appliances/centos7.gns3a | 30 +++ gns3server/appliances/cisco-3745.gns3a | 1 - gns3server/appliances/cisco-csr1000v.gns3a | 26 +++ gns3server/appliances/cisco-dcnm.gns3a | 16 +- gns3server/appliances/cisco-fcnf.gns3a | 70 +++++++ gns3server/appliances/cisco-fsve.gns3a | 56 +++++ gns3server/appliances/cisco-iosxrv9k.gns3a | 30 ++- gns3server/appliances/cisco-ise.gns3a | 23 ++- gns3server/appliances/cisco-nxosv9k.gns3a | 56 +++++ gns3server/appliances/cisco-smc.gns3a | 70 +++++++ gns3server/appliances/clearos.gns3a | 14 ++ gns3server/appliances/coreos.gns3a | 60 ++++++ gns3server/appliances/cumulus-vx.gns3a | 60 +++++- gns3server/appliances/dell-ftos.gns3a | 10 +- gns3server/appliances/exos.gns3a | 195 +++++++----------- .../appliances/extreme-networks-voss.gns3a | 2 +- gns3server/appliances/f5-bigip.gns3a | 14 ++ gns3server/appliances/f5-bigiq.gns3a | 14 ++ gns3server/appliances/fortiadc-manager.gns3a | 53 +++++ gns3server/appliances/fortiadc.gns3a | 42 ++++ gns3server/appliances/fortianalyzer.gns3a | 56 +++++ .../appliances/fortiauthenticator.gns3a | 60 +++++- gns3server/appliances/forticache.gns3a | 28 +++ gns3server/appliances/fortigate.gns3a | 56 +++++ gns3server/appliances/fortimail.gns3a | 28 +++ gns3server/appliances/fortimanager.gns3a | 35 ++++ gns3server/appliances/fortiproxy.gns3a | 68 ++++++ gns3server/appliances/fortirecorder.gns3a | 68 ++++++ gns3server/appliances/fortisandbox.gns3a | 60 +++++- .../appliances/fortisiem-super_worker.gns3a | 66 +++++- gns3server/appliances/fortiweb.gns3a | 42 ++++ gns3server/appliances/freebsd.gns3a | 30 +++ gns3server/appliances/freenas.gns3a | 50 ++++- gns3server/appliances/frr.gns3a | 33 ++- gns3server/appliances/hp-vsr1001.gns3a | 15 +- gns3server/appliances/ipfire.gns3a | 30 +++ gns3server/appliances/juniper-vmx-vcp.gns3a | 26 +++ gns3server/appliances/juniper-vmx-vfp.gns3a | 13 ++ gns3server/appliances/kali-linux.gns3a | 45 +++- gns3server/appliances/kemp-vlm.gns3a | 13 ++ gns3server/appliances/kerio-connect.gns3a | 14 ++ gns3server/appliances/kerio-control.gns3a | 28 +++ gns3server/appliances/kerio-operator.gns3a | 14 ++ gns3server/appliances/lede.gns3a | 97 --------- gns3server/appliances/mikrotik-chr.gns3a | 45 ++++ gns3server/appliances/mininet.gns3a | 46 +++++ gns3server/appliances/op5-monitor.gns3a | 13 ++ gns3server/appliances/openwrt.gns3a | 65 +++++- gns3server/appliances/packetfence-zen.gns3a | 30 +++ gns3server/appliances/parrot-os.gns3a | 53 +++++ gns3server/appliances/pfsense.gns3a | 41 ++-- gns3server/appliances/proxmox-mg.gns3a | 15 ++ gns3server/appliances/security-onion.gns3a | 19 +- gns3server/appliances/sophos-iview.gns3a | 18 +- gns3server/appliances/sophos-utm.gns3a | 14 ++ gns3server/appliances/sophos-xg.gns3a | 25 ++- gns3server/appliances/turnkey-wordpress.gns3a | 2 +- gns3server/appliances/untangle.gns3a | 28 +++ gns3server/appliances/vpp.gns3a | 46 +++++ gns3server/appliances/windows.gns3a | 8 +- gns3server/appliances/zentyal-server.gns3a | 15 ++ 68 files changed, 2343 insertions(+), 307 deletions(-) create mode 100644 gns3server/appliances/aruba-arubaoscx.gns3a create mode 100644 gns3server/appliances/aruba-vmc.gns3a create mode 100644 gns3server/appliances/centos-cloud.gns3a create mode 100644 gns3server/appliances/cisco-fcnf.gns3a create mode 100644 gns3server/appliances/cisco-fsve.gns3a create mode 100644 gns3server/appliances/cisco-smc.gns3a create mode 100644 gns3server/appliances/fortiadc-manager.gns3a create mode 100644 gns3server/appliances/fortiproxy.gns3a create mode 100644 gns3server/appliances/fortirecorder.gns3a delete mode 100644 gns3server/appliances/lede.gns3a create mode 100644 gns3server/appliances/mininet.gns3a create mode 100644 gns3server/appliances/parrot-os.gns3a create mode 100644 gns3server/appliances/vpp.gns3a diff --git a/gns3server/appliances/arista-ceos.gns3a b/gns3server/appliances/arista-ceos.gns3a index 3c7851eb..84790a41 100644 --- a/gns3server/appliances/arista-ceos.gns3a +++ b/gns3server/appliances/arista-ceos.gns3a @@ -9,7 +9,7 @@ "status": "experimental", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Download:\nCreate a (free) Arista account and login.\nThen navigate to Support / Software Download and download the cEOS-lab image.\n\nInstallation:\nCopy the image to your GNS3VM (or other Linux) server, then run the following commands:\n\ndocker import cEOS-lab.tar.xz ceosimage:4.20.5F\necho \"rm /etc/systemd/system/getty.target.wants/getty@tty1.service\" | \\\ndocker run --name=ceos-container -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceossim -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i ceosimage:4.20.5F sh\ndocker commit --change='CMD [\"/sbin/init\"]' --change='VOLUME /mnt/flash' ceos-container ceosimage:GNS3\ndocker rm ceos-container\n\nUsage:\nThe login is admin, with no password by default", + "usage": "Download:\nCreate a (free) Arista account and login.\nThen navigate to Support / Software Download and download the cEOS-lab image.\n\nInstallation:\nCopy the image to your GNS3VM (or other Linux) server, then run the following commands:\n\ncEOS-4.21.0F and newer, replace by the cEOS version:\ndocker import cEOS-lab.tar.xz ceosimage:\necho \"rm /etc/systemd/system/getty.target.wants/getty@tty1.service\" | \\\ndocker run --name=ceos-container -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i ceosimage: sh\ndocker commit --change='CMD [\"/sbin/init\"]' --change='VOLUME /mnt/flash' ceos-container ceosimage:GNS3\ndocker rm ceos-container\n\ncEOS-4.20.5F:\ndocker import cEOS-lab.tar.xz ceosimage:4.20.5F\necho \"rm /etc/systemd/system/getty.target.wants/getty@tty1.service\" | \\\ndocker run --name=ceos-container -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceossim -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i ceosimage:4.20.5F sh\ndocker commit --change='CMD [\"/sbin/init\"]' --change='VOLUME /mnt/flash' ceos-container ceosimage:GNS3\ndocker rm ceos-container\n\nUsage:\nStart an auxiliary console on the cEOS and issue the \"Cli\" command.\nOnly cEOS-4.20.5F: Login on the console with username \"admin\".", "symbol": ":/symbols/multilayer_switch.svg", "docker": { "adapters": 8, diff --git a/gns3server/appliances/arista-veos.gns3a b/gns3server/appliances/arista-veos.gns3a index 58376afb..57685e19 100644 --- a/gns3server/appliances/arista-veos.gns3a +++ b/gns3server/appliances/arista-veos.gns3a @@ -24,6 +24,20 @@ "kvm": "require" }, "images": [ + { + "filename": "vEOS-lab-4.21.1.1F.vmdk", + "version": "4.21.1.1F", + "md5sum": "02bfb7e53781fd44ff02357f201586d9", + "filesize": 358809600, + "download_url": "https://www.arista.com/en/support/software-download" + }, + { + "filename": "vEOS-lab-4.20.10M-combined.vmdk", + "version": "4.20.10M-combined", + "md5sum": "d1f2d650f93dbf24e04fdd2c9d62bd62", + "filesize": 334626816, + "download_url": "https://www.arista.com/en/support/software-download" + }, { "filename": "vEOS-lab-4.20.1F.vmdk", "version": "4.20.1F", @@ -31,6 +45,34 @@ "filesize": 662044672, "download_url": "https://www.arista.com/en/support/software-download" }, + { + "filename": "vEOS-lab-4.19.10M-combined.vmdk", + "version": "4.19.10M-combined", + "md5sum": "103daa45c33be4584cbe6adc60de46a3", + "filesize": 324141056, + "download_url": "https://www.arista.com/en/support/software-download" + }, + { + "filename": "vEOS-lab-4.19.10M.vmdk", + "version": "4.19.10M", + "md5sum": "665ed14389411ae5f16ba0a2ff84240a", + "filesize": 637337600, + "download_url": "https://www.arista.com/en/support/software-download" + }, + { + "filename": "vEOS-lab-4.18.10M-combined.vmdk", + "version": "4.18.10M-combined", + "md5sum": "e33e0ef5b8cecc84c5bb57569b36b9c6", + "filesize": 317652992, + "download_url": "https://www.arista.com/en/support/software-download" + }, + { + "filename": "vEOS-lab-4.18.10M.vmdk", + "version": "4.18.10M", + "md5sum": "1d87e9ace37fe3706dbf3e49c8d4d231", + "filesize": 624427008, + "download_url": "https://www.arista.com/en/support/software-download" + }, { "filename": "vEOS-lab-4.18.5M.vmdk", "version": "4.18.5M", @@ -45,6 +87,13 @@ "filesize": 620625920, "download_url": "https://www.arista.com/en/support/software-download" }, + { + "filename": "vEOS-lab-4.17.8M.vmdk", + "version": "4.17.8M", + "md5sum": "afc79a06f930ea2cc0ae3e03cbfd3f23", + "filesize": 608829440, + "download_url": "https://www.arista.com/en/support/software-download" + }, { "filename": "vEOS-lab-4.17.2F.vmdk", "version": "4.17.2F", @@ -52,6 +101,13 @@ "filesize": 609615872, "download_url": "https://www.arista.com/en/support/software-download" }, + { + "filename": "vEOS-lab-4.16.13M.vmdk", + "version": "4.16.13M", + "md5sum": "4d0facf90140fc3aab031f0f8f88a32f", + "filesize": 521404416, + "download_url": "https://www.arista.com/en/support/software-download" + }, { "filename": "vEOS-lab-4.16.6M.vmdk", "version": "4.16.6M", @@ -59,6 +115,13 @@ "filesize": 519962624, "download_url": "https://www.arista.com/en/support/software-download" }, + { + "filename": "vEOS-lab-4.15.10M.vmdk", + "version": "4.15.10M", + "md5sum": "98e08281a9c48ddf6f3c5d62a124a20f", + "filesize": 517079040, + "download_url": "https://www.arista.com/en/support/software-download" + }, { "filename": "vEOS-lab-4.15.5M.vmdk", "version": "4.15.5M", @@ -96,6 +159,19 @@ } ], "versions": [ + { + "name": "4.21.1F", + "images": { + "hda_disk_image": "Aboot-veos-serial-8.0.0.iso", + "hdb_disk_image": "vEOS-lab-4.21.1.1F.vmdk" + } + }, + { + "name": "4.20.10M-combined", + "images": { + "hda_disk_image": "vEOS-lab-4.20.10M-combined.vmdk" + } + }, { "name": "4.20.1F", "images": { @@ -103,6 +179,32 @@ "hdb_disk_image": "vEOS-lab-4.20.1F.vmdk" } }, + { + "name": "4.19.10M-combined", + "images": { + "hda_disk_image": "vEOS-lab-4.19.10M-combined.vmdk" + } + }, + { + "name": "4.19.10M", + "images": { + "hda_disk_image": "Aboot-veos-serial-8.0.0.iso", + "hdb_disk_image": "vEOS-lab-4.19.10M.vmdk" + } + }, + { + "name": "4.18.10M-combined", + "images": { + "hda_disk_image": "vEOS-lab-4.18.10M-combined.vmdk" + } + }, + { + "name": "4.18.10M", + "images": { + "hda_disk_image": "Aboot-veos-serial-8.0.0.iso", + "hdb_disk_image": "vEOS-lab-4.18.10M.vmdk" + } + }, { "name": "4.18.5M", "images": { @@ -117,6 +219,13 @@ "hdb_disk_image": "vEOS-lab-4.18.1F.vmdk" } }, + { + "name": "4.17.8M", + "images": { + "hda_disk_image": "Aboot-veos-serial-8.0.0.iso", + "hdb_disk_image": "vEOS-lab-4.17.8M.vmdk" + } + }, { "name": "4.17.2F", "images": { @@ -124,6 +233,13 @@ "hdb_disk_image": "vEOS-lab-4.17.2F.vmdk" } }, + { + "name": "4.16.13M", + "images": { + "hda_disk_image": "Aboot-veos-serial-8.0.0.iso", + "hdb_disk_image": "vEOS-lab-4.16.13M.vmdk" + } + }, { "name": "4.16.6M", "images": { @@ -131,6 +247,13 @@ "hdb_disk_image": "vEOS-lab-4.16.6M.vmdk" } }, + { + "name": "4.15.10M", + "images": { + "hda_disk_image": "Aboot-veos-serial-8.0.0.iso", + "hdb_disk_image": "vEOS-lab-4.15.10M.vmdk" + } + }, { "name": "4.15.5M", "images": { diff --git a/gns3server/appliances/aruba-arubaoscx.gns3a b/gns3server/appliances/aruba-arubaoscx.gns3a new file mode 100644 index 00000000..7556b67c --- /dev/null +++ b/gns3server/appliances/aruba-arubaoscx.gns3a @@ -0,0 +1,53 @@ +{ + "name": "ArubaOS-CX Simulation Software", + "category": "multilayer_switch", + "status": "stable", + "product_name": "ArubaOS-CX Simulation Software", + "description": "The ArubaOS-CX Simulation Software OVA is a virtual platform to enable simulation of the ArubaOS-CX Network Operating System. Simulated networks can be created using many of the protocols in the ArubaOS-CX Operating system like OSPF and BGP. Key features like the Aruba Network Analytics Engine and the REST API can be simulated, providing a lightweight development platform to building the modern network. This software can be easily implemented in the GNS3 simulation software to enable drag and drop network design for building complex simulated topologies.", + "maintainer_email": "alloytm@gmail.com", + "vendor_url": "arubanetworks.com", + "vendor_name": "HPE Aruba", + "availability": "service-contract", + "maintainer": "Tak Mem Loy", + "registry_version": 4, + "usage": "Default username admin with blank password.", + "symbol": ":/symbols/route_switch_processor.svg", + "first_port_name": "mgmt", + "port_name_format": "1/1/{0}", + + "qemu": { + "arch": "x86_64", + "ram": 4096, + "adapters": 8, + "hdb_disk_interface": "ide", + "hdc_disk_interface": "ide", + "hda_disk_interface": "ide", + "cpus": 2, + "kvm": "require", + "adapter_type": "virtio-net-pci", + "console_type": "vnc", + "options": "-nographic", + "process_priority": "normal" + }, + + "images": [ + { + "filename": "arubaoscx-disk-image-genericx86-p4-20180712161119.vmdk", + "version": "10.01.0001", + "md5sum": "9146ae0ac650d8206c9600e03753f022", + "filesize": 287734784, + "download_url": "http://support.arubanetworks.com/" + } + + ], + + "versions": [ + { + "name": "10.01.0001", + "images": { + "hda_disk_image": "arubaoscx-disk-image-genericx86-p4-20180712161119.vmdk" + } + } + ] + +} diff --git a/gns3server/appliances/aruba-vmc.gns3a b/gns3server/appliances/aruba-vmc.gns3a new file mode 100644 index 00000000..9a81cac7 --- /dev/null +++ b/gns3server/appliances/aruba-vmc.gns3a @@ -0,0 +1,56 @@ +{ + "versions": [ + { + "name": "8.2.1.1", + "images": { + "hda_disk_image": "ArubaOS_VMC_8.2.1.1_65265-disk1.qcow2", + "hdb_disk_image": "ArubaOS_VMC_8.2.1.1_65265-disk2.qcow2" + } + } + ], + "status": "stable", + "name": "Aruba VMC", + "product_name": "Aruba VMC", + "maintainer_email": "gary.ossewaarde@gmail.com", + "vendor_url": "arubanetworks.com", + "vendor_name": "HPE Aruba", + "images": [ + { + "filename": "ArubaOS_VMC_8.2.1.1_65265-disk1.qcow2", + "version": "8.2.1.1", + "md5sum": "f3bc233f0714e4b1cc127e337d077574", + "filesize": 197066752, + "download_url": "http://support.arubanetworks.com/" + }, + { + "filename": "ArubaOS_VMC_8.2.1.1_65265-disk2.qcow2", + "version": "8.2.1.1", + "md5sum": "18ede2afc7595fdac4508a8a3972e302", + "filesize": 19202048, + "download_url": "http://support.arubanetworks.com/" + } + + ], + "port_name_format": "GE0/0/{0}", + "qemu": { + "arch": "x86_64", + "ram": 6144, + "adapters": 4, + "hdb_disk_interface": "ide", + "hdc_disk_interface": "ide", + "hda_disk_interface": "ide", + "cpus": 3, + "kvm": "require", + "kernel_command_line": "-smp cores=3,threads=1,sockets=1 -cpu host -nographic", + "adapter_type": "e1000", + "console_type": "vnc", + "options": "-smp cores=3,threads=1,sockets=1 -cpu host -nographic", + "process_priority": "normal" + }, + "availability": "service-contract", + "category": "guest", + "maintainer": "Gary Ossewaarde", + "description": "Aruba Virtual Mobility Controller", + "first_port_name": "mgmt", + "registry_version": 4 +} diff --git a/gns3server/appliances/asterisk.gns3a b/gns3server/appliances/asterisk.gns3a index 4f6d0c9e..7edc44a4 100644 --- a/gns3server/appliances/asterisk.gns3a +++ b/gns3server/appliances/asterisk.gns3a @@ -1,11 +1,11 @@ { - "name": "AsteriskNOW", + "name": "AsteriskNOW / FreePBX", "category": "guest", "description": "AsteriskNOW makes it easy to create custom telephony solutions by automatically installing the 'plumbing'. It's a complete Linux distribution with Asterisk, the DAHDI driver framework, and, the FreePBX administrative GUI. Much of the complexity of Asterisk and Linux is handled by the installer, the yum package management utility and the administrative GUI. With AsteriskNOW, application developers and integrators can concentrate on building solutions, not maintaining the plumbing.", "vendor_name": "Digium", "vendor_url": "http://www.asterisk.org/", "documentation_url": "https://wiki.asterisk.org/wiki/display/AST/Installing+AsteriskNOW", - "product_name": "AsteriskNOW", + "product_name": "AsteriskNOW / FreePBX", "product_url": "http://www.asterisk.org/downloads/asterisknow", "registry_version": 3, "status": "stable", @@ -24,6 +24,22 @@ "kvm": "allow" }, "images": [ + { + "filename": "SNG7-FPBX-64bit-1904-2.iso", + "version": "14-1904", + "md5sum": "f37c316bc0ff208682769b6f2d468e93", + "filesize": 2015363072, + "download_url": "https://www.freepbx.org/downloads/", + "direct_download_url": "https://downloads.freepbxdistro.org/ISO/SNG7-FPBX-64bit-1904-2.iso" + }, + { + "filename": "SNG7-FPBX-64bit-1805-2.iso", + "version": "14-1805", + "md5sum": "64f0c38c17ce680f7106f94183bc5745", + "filesize": 1755316224, + "download_url": "https://www.freepbx.org/downloads/", + "direct_download_url": "https://downloads.freepbxdistro.org/ISO/SNG7-FPBX-64bit-1805-2.iso" + }, { "filename": "AsteriskNow-1013-current-64.iso", "version": "10.13", @@ -58,6 +74,20 @@ } ], "versions": [ + { + "name": "14-1904", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "SNG7-FPBX-64bit-1904-2.iso" + } + }, + { + "name": "14-1805", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "SNG7-FPBX-64bit-1805-2.iso" + } + }, { "name": "10.13", "images": { diff --git a/gns3server/appliances/bsdrp.gns3a b/gns3server/appliances/bsdrp.gns3a index 838441cf..5adf87fe 100644 --- a/gns3server/appliances/bsdrp.gns3a +++ b/gns3server/appliances/bsdrp.gns3a @@ -19,6 +19,24 @@ "kvm": "allow" }, "images": [ + { + "filename": "BSDRP-1.92-full-amd64-serial.img", + "version": "1.92", + "md5sum": "b02f2502188915490bb9756ffca36910", + "filesize": 1000000000, + "download_url": "https://bsdrp.net/downloads", + "direct_download_url": "https://sourceforge.net/projects/bsdrp/files/BSD_Router_Project/1.92/amd64/BSDRP-1.92-full-amd64-serial.img.xz/download", + "compression": "xz" + }, + { + "filename": "BSDRP-1.91-full-amd64-serial.img", + "version": "1.91", + "md5sum": "cea67b29ce94e66b617e7dc90956af45", + "filesize": 1000000000, + "download_url": "https://bsdrp.net/downloads", + "direct_download_url": "https://sourceforge.net/projects/bsdrp/files/BSD_Router_Project/1.91/amd64/BSDRP-1.91-full-amd64-serial.img.xz/download", + "compression": "xz" + }, { "filename": "BSDRP-1.90-full-amd64-serial.img", "version": "1.90", @@ -48,6 +66,18 @@ } ], "versions": [ + { + "name": "1.92", + "images": { + "hda_disk_image": "BSDRP-1.92-full-amd64-serial.img" + } + }, + { + "name": "1.91", + "images": { + "hda_disk_image": "BSDRP-1.91-full-amd64-serial.img" + } + }, { "name": "1.90", "images": { diff --git a/gns3server/appliances/centos-cloud.gns3a b/gns3server/appliances/centos-cloud.gns3a new file mode 100644 index 00000000..c2c60b92 --- /dev/null +++ b/gns3server/appliances/centos-cloud.gns3a @@ -0,0 +1,52 @@ +{ + "name": "CentOS Cloud Guest", + "category": "guest", + "description": "CentOS official image for self-hosted cloud", + "vendor_name": "The CentOS Project", + "vendor_url": "https://www.centos.org/", + "documentation_url": "https://wiki.centos.org/Documentation", + "product_name": "Centos Cloud", + "product_url": "https://wiki.centos.org/Cloud", + "registry_version": 3, + "status": "stable", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "Username: centos\nPassword: centos", + "port_name_format": "Ethernet{0}", + "qemu": { + "adapter_type": "virtio-net-pci", + "adapters": 1, + "ram": 1024, + "hda_disk_interface": "virtio", + "arch": "x86_64", + "console_type": "telnet", + "boot_priority": "c", + "kvm": "require", + "options": "-nographic" + }, + "images": [ + { + "filename": "CentOS-7-x86_64-GenericCloud-1809.qcow2", + "version": "7-1809", + "md5sum": "da79108d1324b27bd1759362b82fbe40", + "filesize": 914948096, + "download_url": "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1809.qcow2" + }, + { + "filename": "centos-cloud-init-data.iso", + "version": "1.0", + "md5sum": "15ca60c12db6d13b8eeae1a19613fd6e", + "filesize": 378880, + "download_url": "https://github.com/asenci/gns3-centos-cloud-init-data/raw/master/centos-cloud-init-data.iso" + } + ], + "versions": [ + { + "name": "7 (1809)", + "images": { + "hda_disk_image": "CentOS-7-x86_64-GenericCloud-1809.qcow2", + "cdrom_image": "centos-cloud-init-data.iso" + } + } + ] +} diff --git a/gns3server/appliances/centos7.gns3a b/gns3server/appliances/centos7.gns3a index 8c80ac89..f46edfee 100644 --- a/gns3server/appliances/centos7.gns3a +++ b/gns3server/appliances/centos7.gns3a @@ -27,6 +27,22 @@ }, "images": [ + { + "filename": "CentOS 7-18.10 (64bit).vmdk", + "version": "7-1810", + "md5sum": "7307e143c11910f3c782b1e013e6f14f", + "filesize": 4886233088, + "download_url": "http://www.osboxes.org/centos/" + }, + + { + "filename": "CentOS 7-1804 (64bit).vmdk", + "version": "7-1804", + "md5sum": "eae8dc48bb390c0c2d9a9a0432ced9bc", + "filesize": 4701356032, + "download_url": "http://www.osboxes.org/centos/" + }, + { "filename": "CentOS 7-1611 (64bit).vmdk", "version": "7-1611", @@ -36,6 +52,20 @@ } ], "versions": [ + { + "name": "7-1810", + "images": { + "hda_disk_image": "CentOS 7-18.10 (64bit).vmdk" + } + }, + + { + "name": "7-1804", + "images": { + "hda_disk_image": "CentOS 7-1804 (64bit).vmdk" + } + }, + { "name": "7-1611", "images": { diff --git a/gns3server/appliances/cisco-3745.gns3a b/gns3server/appliances/cisco-3745.gns3a index 99956a63..9a683493 100644 --- a/gns3server/appliances/cisco-3745.gns3a +++ b/gns3server/appliances/cisco-3745.gns3a @@ -11,7 +11,6 @@ "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", "dynamips": { - "chassis": "", "platform": "c3745", "ram": 256, "nvram": 256, diff --git a/gns3server/appliances/cisco-csr1000v.gns3a b/gns3server/appliances/cisco-csr1000v.gns3a index 5078d9f5..2884904a 100644 --- a/gns3server/appliances/cisco-csr1000v.gns3a +++ b/gns3server/appliances/cisco-csr1000v.gns3a @@ -22,6 +22,20 @@ "kvm": "require" }, "images": [ + { + "filename": "csr1000v-universalk9.16.10.01b-serial.qcow2", + "version": "16.10.1b", + "md5sum": "0d3d647f83631c7955ad7899e6cce293", + "filesize": 950468608, + "download_url": "https://software.cisco.com/download/home/284364978/type/282046477/release/Gibraltar-16.10.1b" + }, + { + "filename": "csr1000v-universalk9.16.09.01-serial.qcow2", + "version": "16.9.1", + "md5sum": "d7e1c83b6f513beb4200c7691d119086", + "filesize": 917897216, + "download_url": "https://software.cisco.com/download/home/284364978/type/282046477/release/Fuji-16.9.1" + }, { "filename": "csr1000v-universalk9.16.08.01a-serial.qcow2", "version": "16.8.1a", @@ -101,6 +115,18 @@ } ], "versions": [ + { + "name": "16.10.1b", + "images": { + "hda_disk_image": "csr1000v-universalk9.16.10.01b-serial.qcow2" + } + }, + { + "name": "16.9.1", + "images": { + "hda_disk_image": "csr1000v-universalk9.16.09.01-serial.qcow2" + } + }, { "name": "16.8.1a", "images": { diff --git a/gns3server/appliances/cisco-dcnm.gns3a b/gns3server/appliances/cisco-dcnm.gns3a index ff828246..7d6484d9 100644 --- a/gns3server/appliances/cisco-dcnm.gns3a +++ b/gns3server/appliances/cisco-dcnm.gns3a @@ -25,12 +25,19 @@ "options": "-smp 2" }, "images": [ + { + "filename": "dcnm-va.11.1.1.iso", + "version": "11.1.1", + "md5sum": "43af970d046d1430d3ec7950dbe4a20a", + "filesize": 4432132096, + "download_url": "https://software.cisco.com/download/home/281722751/type/282088134/release/11.1%25281%2529" + }, { "filename": "dcnm-va.10.1.1.iso", "version": "10.1.1", "md5sum": "4eca14506decaf166251c64e67adb110", "filesize": 2927532032, - "download_url": "https://software.cisco.com/download/release.html?mdfid=281722751&softwareid=282088134&release=10.1(1)&relind=AVAILABLE&rellifecycle=&reltype=latest" + "download_url": "https://software.cisco.com/download/home/281722751/type/282088134/release/10.1%25281%2529" }, { "filename": "empty100G.qcow2", @@ -42,6 +49,13 @@ } ], "versions": [ + { + "name": "11.1.1", + "images": { + "hda_disk_image": "empty100G.qcow2", + "cdrom_image": "dcnm-va.11.1.1.iso" + } + }, { "name": "10.1.1", "images": { diff --git a/gns3server/appliances/cisco-fcnf.gns3a b/gns3server/appliances/cisco-fcnf.gns3a new file mode 100644 index 00000000..e0aa5599 --- /dev/null +++ b/gns3server/appliances/cisco-fcnf.gns3a @@ -0,0 +1,70 @@ +{ + "name": "Cisco Flow Collector for NetFlow", + "category": "firewall", + "description": "Cisco Stealthwatch is the most comprehensive visibility and network traffic security analytics solution that uses enterprise telemetry from the existing network infrastructure. It provides advanced threat detection, accelerated threat response, and simplified network segmentation using multilayer machine learning and entity modeling. With advanced behavioral analytics, you’ll always know who is on your network and what they are doing.\n\nAt the heart of the Stealthwatch System is the highly scalable Stealthwatch Flow Collector. The Flow Collector is available as either a physical or a virtual appliance. The Flow Collector VE performs the same functions as its physical counterpart, but in a virtual environment. The Stealthwatch Flow Collector for NetFlow gathers NetFlow, cFlow, J-Flow, Packeteer 2, NetStream, and IPFIX data. To achieve full network visibility with a traditional probe-based approach, you would need to install a probe for each router or switch on your network. This results in many costly hardware installations. Conversely, Stealthwatch’s flow-based approach provides you with full network visibility at a fraction of the cost. Each Flow Collector can process data for as many as 1,000,000 hosts from up to 2,000 flow exporters, depending on the Flow Collector model and license restrictions. ", + "vendor_name": "Cisco", + "vendor_url": "http://www.cisco.com/", + "documentation_url": "https://www.cisco.com/c/en/us/support/security/stealthwatch/tsd-products-support-series-home.html", + "product_name": "Flow Collector for NetFlow", + "product_url": "https://www.cisco.com/c/en/us/products/security/stealthwatch/index.html", + "registry_version": 4, + "status": "experimental", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "Starting Flow Collector for NetFlow will start an installation of FCNF onto a blank 200GB Drive.\nDefault console username/password: sysadmin/lan1cope.\nDefault web username/password: admin/lan411cope.", + "symbol": ":/symbols/asa.svg", + "first_port_name": "eth0", + "port_name_format": "eth{port1}", + "qemu": { + "cpus": 2, + "adapter_type": "e1000", + "adapters": 1, + "ram": 8192, + "hda_disk_interface": "scsi", + "arch": "x86_64", + "console_type": "vnc", + "boot_priority": "cd", + "kvm": "require", + "options": "" + }, + "images": [ + { + "filename": "FlowCollector-NetFlow-6.10.4-2018.11.14.1757-0.iso", + "version": "6.10.4-2018.11.14.1757-0", + "md5sum": "accd9fb9dd2d312805883749899a2fc0", + "filesize": 2479288320, + "download_url": "https://stealthwatch.flexnetoperations.com/control/lncp/product?child_plneID=786407" + }, + { + "filename": "FlowCollector-NetFlow-6.10.2-2018.03.19.2230-0.iso", + "version": "6.10.2-2018.03.19.2230-0", + "md5sum": "e2ac83fa617ed9e073e845cedae76873", + "filesize": 2430076928, + "download_url": "https://software.cisco.com/download/home/286307342/type/286307754/release/6.10.2" + }, + { + "filename": "empty200G.qcow2", + "version": "1.0", + "md5sum": "d1686d2f25695dee32eab9a6f4652c7c", + "filesize": 200192, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty200G.qcow2/download" + } + ], + "versions": [ + { + "name": "6.10.4-2018.11.14.1757-0", + "images": { + "hda_disk_image": "empty200G.qcow2", + "cdrom_image": "FlowCollector-NetFlow-6.10.4-2018.11.14.1757-0.iso" + } + }, + { + "name": "6.10.2-2018.03.19.2230-0", + "images": { + "hda_disk_image": "empty200G.qcow2", + "cdrom_image": "FlowCollector-NetFlow-6.10.2-2018.03.19.2230-0.iso" + } + } + ] +} diff --git a/gns3server/appliances/cisco-fsve.gns3a b/gns3server/appliances/cisco-fsve.gns3a new file mode 100644 index 00000000..d84f5150 --- /dev/null +++ b/gns3server/appliances/cisco-fsve.gns3a @@ -0,0 +1,56 @@ +{ + "name": "Cisco Flow Sensor", + "category": "firewall", + "description": "Cisco Stealthwatch is the most comprehensive visibility and network traffic security analytics solution that uses enterprise telemetry from the existing network infrastructure. It provides advanced threat detection, accelerated threat response, and simplified network segmentation using multilayer machine learning and entity modeling. With advanced behavioral analytics, you’ll always know who is on your network and what they are doing.\n\nUsing the same technology as the Stealthwatch Flow Sensor appliance, the Flow Sensor VE is a virtual appliance that provides visibility into virtual environments, generating flow data for areas that are not flow-enabled. ", + "vendor_name": "Cisco", + "vendor_url": "http://www.cisco.com/", + "documentation_url": "https://www.cisco.com/c/en/us/support/security/stealthwatch/tsd-products-support-series-home.html", + "product_name": "Flow Sensor VE", + "product_url": "https://www.cisco.com/c/en/us/products/security/stealthwatch/index.html", + "registry_version": 4, + "status": "experimental", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "Starting Flow Sensor will start an installation of FSVE onto a blank 100GB Drive.\nDefault console username/password: sysadmin/lan1cope.\nDefault web username/password: admin/lan411cope.", + "symbol": ":/symbols/asa.svg", + "first_port_name": "eth0", + "port_name_format": "eth{port1}", + "qemu": { + "cpus": 1, + "adapter_type": "e1000", + "adapters": 2, + "ram": 8192, + "hda_disk_interface": "scsi", + "arch": "x86_64", + "console_type": "vnc", + "boot_priority": "cd", + "kvm": "require", + "options": "" + }, + "images": [ + { + "filename": "FlowSensor-AE-6.10.2-2018.03.19.2224-0.iso", + "version": "6.10.2-2018.03.19.2224-0", + "md5sum": "ef8712e655fcbc92dc1a1551ee2e4a80", + "filesize": 1287245824, + "download_url": "https://software.cisco.com/download/home/286307342/type/286307754/release/6.10.2" + }, + { + "filename": "empty100G.qcow2", + "version": "1.0", + "md5sum": "1e6409a4523ada212dea2ebc50e50a65", + "filesize": 198656, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty100G.qcow2/download" + } + ], + "versions": [ + { + "name": "6.10.2-2018.03.19.2224-0", + "images": { + "hda_disk_image": "empty100G.qcow2", + "cdrom_image": "FlowSensor-AE-6.10.2-2018.03.19.2224-0.iso" + } + } + ] +} diff --git a/gns3server/appliances/cisco-iosxrv9k.gns3a b/gns3server/appliances/cisco-iosxrv9k.gns3a index 8618d0e8..5516a2c2 100644 --- a/gns3server/appliances/cisco-iosxrv9k.gns3a +++ b/gns3server/appliances/cisco-iosxrv9k.gns3a @@ -11,9 +11,9 @@ "status": "experimental", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Default username/password: admin/admin, cisco/cisco and lab/lab. There is no default configuration present. Interfaces may take several minutes to be usable after appliance boot.", + "usage": "Default username/password: admin/admin, cisco/cisco and lab/lab. There is no default configuration present. Interfaces may take several minutes to be usable after appliance boot.\n\nThe interfaces are mapped the following way:\n- NIC0: unused\n- NIC1: unused\n- NIC2: Gi0/0/0/0\n- NIC3: Gi0/0/0/1\n- NICn: Gi0/0/0/(n-2)", "first_port_name": "MgmtEth0/0/CPU0/0", - "port_name_format": "GigabitEthernet0/0/0/{0}", + "port_name_format": "NIC{0}", "qemu": { "adapter_type": "virtio-net-pci", "adapters": 7, @@ -24,6 +24,20 @@ "options": "-smp 4 -cpu host" }, "images": [ + { + "filename": "xrv9k-fullk9-x-6.5.2.qcow2", + "version": "6.5.2", + "md5sum": "506d9e23dda7365c99dd82b613859697", + "filesize": 1205010432, + "download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.5.1" + }, + { + "filename": "xrv9k-fullk9-x-6.5.1.qcow2", + "version": "6.5.1", + "md5sum": "730868e7cd46de9aa2e950899c7f9498", + "filesize": 1208811520, + "download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.5.1" + }, { "filename": "xrv9k-fullk9-x-6.4.2.qcow2", "version": "6.4.2", @@ -60,6 +74,18 @@ } ], "versions": [ + { + "name": "6.5.2", + "images": { + "hda_disk_image": "xrv9k-fullk9-x-6.5.2.qcow2" + } + }, + { + "name": "6.5.1", + "images": { + "hda_disk_image": "xrv9k-fullk9-x-6.5.1.qcow2" + } + }, { "name": "6.4.2", "images": { diff --git a/gns3server/appliances/cisco-ise.gns3a b/gns3server/appliances/cisco-ise.gns3a index 950e532c..b7056f5b 100644 --- a/gns3server/appliances/cisco-ise.gns3a +++ b/gns3server/appliances/cisco-ise.gns3a @@ -23,29 +23,36 @@ "console_type": "vnc", "boot_priority": "cd", "kvm": "require", - "options": "-smp 2" + "options": "-smp 2 -smbios type=1,product=KVM" }, "images": [ + { + "filename": "ise-2.2.0.470.SPA.x86_64.iso", + "version": "2.2.0.470", + "md5sum": "7fe5e730d0a51ef66e69d1463717ff3f", + "filesize": 8044992512, + "download_url": "https://software.cisco.com/download/home/283801620/type/283802505/release/2.2.0" + }, { "filename": "ise-2.1.0.474.SPA.x86_64.iso", "version": "2.1.0.474", "md5sum": "8dc844696790f2f5f37054899fab3e2a", "filesize": 6161475584, - "download_url": "https://software.cisco.com/download/release.html?mdfid=283801620&flowid=&softwareid=283802505&release=2.1.0&relind=AVAILABLE&rellifecycle=&reltype=latest" + "download_url": "https://software.cisco.com/download/home/283801620/type/283802505/release/2.1.0" }, { "filename": "ise-2.0.1.130.SPA.x86_64.iso", "version": "2.0.1.130", "md5sum": "25ac842fdbb61f6e75f2f8b26beea28e", "filesize": 5129990144, - "download_url": "https://software.cisco.com/download/release.html?mdfid=283801620&flowid=&softwareid=283802505&release=2.1.0&relind=AVAILABLE&rellifecycle=&reltype=latest" + "download_url": "https://software.cisco.com/download/home/283801620/type/283802505/release/2.0.1" }, { "filename": "ise-2.0.0.306.SPA.x86_64.iso", "version": "2.0.0.306", "md5sum": "b7a454ee235db29b5c208b19bfd1fbd1", "filesize": 5088827392, - "download_url": "https://software.cisco.com/download/release.html?mdfid=283801620&flowid=&softwareid=283802505&release=2.0.0&relind=AVAILABLE&rellifecycle=&reltype=latest" + "download_url": "https://software.cisco.com/download/home/283801620/type/283802505/release/2.0" }, { "filename": "empty200G.qcow2", @@ -57,6 +64,13 @@ } ], "versions": [ + { + "name": "2.2.0.470", + "images": { + "hda_disk_image": "empty200G.qcow2", + "cdrom_image": "ise-2.2.0.470.SPA.x86_64.iso" + } + }, { "name": "2.1.0.474", "images": { @@ -78,6 +92,5 @@ "cdrom_image": "ise-2.0.0.306.SPA.x86_64.iso" } } - ] } diff --git a/gns3server/appliances/cisco-nxosv9k.gns3a b/gns3server/appliances/cisco-nxosv9k.gns3a index 0078a90c..6c3650ed 100644 --- a/gns3server/appliances/cisco-nxosv9k.gns3a +++ b/gns3server/appliances/cisco-nxosv9k.gns3a @@ -25,6 +25,20 @@ "kvm": "require" }, "images": [ + { + "filename": "nxosv-final.9.2.3.qcow2", + "version": "9.2.3", + "md5sum": "74bd9a5b4970e868685f753e48979194", + "filesize": 1357643776, + "download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.2%25283%2529" + }, + { + "filename": "nxosv-final.9.2.2.qcow2", + "version": "9.2.2", + "md5sum": "2119702c488552fc4d1b4210a04d4f64", + "filesize": 1344077824, + "download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.2%25281%2529" + }, { "filename": "nxosv-final.9.2.1.qcow2", "version": "9.2.1", @@ -32,6 +46,20 @@ "filesize": 1330315264, "download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.2%25281%2529" }, + { + "filename": "nxosv-final.7.0.3.I7.6.qcow2", + "version": "7.0.3.I7.6", + "md5sum": "a122ee954b4c11761abd99291b70544e", + "filesize": 1031995392, + "download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/7.0%25283%2529I7%25286%2529" + }, + { + "filename": "nxosv-final.7.0.3.I7.5.qcow2", + "version": "7.0.3.I7.5", + "md5sum": "68a4008e189c8a35ccb8ee58db9608bb", + "filesize": 1027670016, + "download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/7.0%25283%2529I7%25285%2529" + }, { "filename": "nxosv-final.7.0.3.I7.4.qcow2", "version": "7.0.3.I7.4", @@ -92,6 +120,20 @@ } ], "versions": [ + { + "name": "9.2.3", + "images": { + "bios_image": "OVMF-20160813.fd", + "hda_disk_image": "nxosv-final.9.2.3.qcow2" + } + }, + { + "name": "9.2.2", + "images": { + "bios_image": "OVMF-20160813.fd", + "hda_disk_image": "nxosv-final.9.2.2.qcow2" + } + }, { "name": "9.2.1", "images": { @@ -99,6 +141,20 @@ "hda_disk_image": "nxosv-final.9.2.1.qcow2" } }, + { + "name": "7.0.3.I7.6", + "images": { + "bios_image": "OVMF-20160813.fd", + "hda_disk_image": "nxosv-final.7.0.3.I7.6.qcow2" + } + }, + { + "name": "7.0.3.I7.5", + "images": { + "bios_image": "OVMF-20160813.fd", + "hda_disk_image": "nxosv-final.7.0.3.I7.5.qcow2" + } + }, { "name": "7.0.3.I7.4", "images": { diff --git a/gns3server/appliances/cisco-smc.gns3a b/gns3server/appliances/cisco-smc.gns3a new file mode 100644 index 00000000..e17155cd --- /dev/null +++ b/gns3server/appliances/cisco-smc.gns3a @@ -0,0 +1,70 @@ +{ + "name": "Cisco Stealthwatch Management Console", + "category": "firewall", + "description": "Cisco Stealthwatch is the most comprehensive visibility and network traffic security analytics solution that uses enterprise telemetry from the existing network infrastructure. It provides advanced threat detection, accelerated threat response, and simplified network segmentation using multilayer machine learning and entity modeling. With advanced behavioral analytics, you’ll always know who is on your network and what they are doing.\n\nAs the control center for the Stealthwatch System, the SMC manages, coordinates, configures, and organizes all of the different components of the system. The SMC client software allows you to access the SMC’s user-friendly graphical user interface from any local computer with access to a Web browser. Through the client interface, you can easily access real-time security and network information about critical segments throughout your enterprise. ", + "vendor_name": "Cisco", + "vendor_url": "http://www.cisco.com/", + "documentation_url": "https://www.cisco.com/c/en/us/support/security/stealthwatch/tsd-products-support-series-home.html", + "product_name": "Stealthwatch Management Console", + "product_url": "https://www.cisco.com/c/en/us/products/security/stealthwatch/index.html", + "registry_version": 4, + "status": "experimental", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "Starting Stealthwatch Management Console will start an installation of SMC onto a blank 200GB Drive.\nDefault console username/password: sysadmin/lan1cope.\nDefault web username/password: admin/lan411cope.", + "symbol": "cisco-fmcv.svg", + "first_port_name": "eth0", + "port_name_format": "eth{port1}", + "qemu": { + "cpus": 3, + "adapter_type": "e1000", + "adapters": 1, + "ram": 8192, + "hda_disk_interface": "scsi", + "arch": "x86_64", + "console_type": "vnc", + "boot_priority": "cd", + "kvm": "require", + "options": "" + }, + "images": [ + { + "filename": "SMC-6.10.4-2018.11.14.1757-0.iso", + "version": "6.10.4-2018.11.14.1757-0", + "md5sum": "1de82eddf5303012aa8701144a7d4c7b", + "filesize": 2518747136, + "download_url": "https://stealthwatch.flexnetoperations.com/control/lncp/product?child_plneID=786407" + }, + { + "filename": "SMC-6.10.2-2018.03.19.2228-0.iso", + "version": "6.10.2-2018.03.19.2228-0", + "md5sum": "e4e31ea6eb5c17c12769724f0c70b452", + "filesize": 2311847936, + "download_url": "https://software.cisco.com/download/home/286307342/type/286307754/release/6.10.2" + }, + { + "filename": "empty200G.qcow2", + "version": "1.0", + "md5sum": "d1686d2f25695dee32eab9a6f4652c7c", + "filesize": 200192, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty200G.qcow2/download" + } + ], + "versions": [ + { + "name": "6.10.4-2018.11.14.1757-0", + "images": { + "hda_disk_image": "empty200G.qcow2", + "cdrom_image": "SMC-6.10.4-2018.11.14.1757-0.iso" + } + }, + { + "name": "6.10.2-2018.03.19.2228-0", + "images": { + "hda_disk_image": "empty200G.qcow2", + "cdrom_image": "SMC-6.10.2-2018.03.19.2228-0.iso" + } + } + ] +} diff --git a/gns3server/appliances/clearos.gns3a b/gns3server/appliances/clearos.gns3a index 25cd1876..37c2cc14 100644 --- a/gns3server/appliances/clearos.gns3a +++ b/gns3server/appliances/clearos.gns3a @@ -22,6 +22,13 @@ "kvm": "require" }, "images": [ + { + "filename": "ClearOS-7.5-DVD-x86_64.iso", + "version": "7.5", + "md5sum": "1e23c5f73a6c996420d8e0e70b000bf9", + "filesize": 1146093568, + "download_url": "https://www.clearos.com/clearfoundation/software/clearos-downloads" + }, { "filename": "ClearOS-7.4-DVD-x86_64.iso", "version": "7.4", @@ -53,6 +60,13 @@ } ], "versions": [ + { + "name": "7.5", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "ClearOS-7.5-DVD-x86_64.iso" + } + }, { "name": "7.4", "images": { diff --git a/gns3server/appliances/coreos.gns3a b/gns3server/appliances/coreos.gns3a index c5aa480b..32ac0c73 100644 --- a/gns3server/appliances/coreos.gns3a +++ b/gns3server/appliances/coreos.gns3a @@ -21,6 +21,42 @@ "kvm": "allow" }, "images": [ + { + "filename": "coreos_production_qemu_image.img", + "version": "2079.4.0", + "md5sum": "d5e28d68bcadf252ff9c909a159b9504", + "filesize": 970129408, + "download_url": "http://stable.release.core-os.net/amd64-usr/2079.4.0/", + "direct_download_url": "http://stable.release.core-os.net/amd64-usr/2079.4.0/coreos_production_qemu_image.img.bz2", + "compression": "bzip2" + }, + { + "filename": "coreos_production_qemu_image.2023.5.0.img", + "version": "2023.5.0", + "md5sum": "f8b12e524aa81220222d06473b3f36dc", + "filesize": 587661312, + "download_url": "http://stable.release.core-os.net/amd64-usr/2023.5.0/", + "direct_download_url": "http://stable.release.core-os.net/amd64-usr/2023.5.0/coreos_production_qemu_image.img.bz2", + "compression": "bzip2" + }, + { + "filename": "coreos_production_qemu_image.1911.5.0.img", + "version": "1911.5.0", + "md5sum": "3b5b33697cfc545d8eb9fb461c612e76", + "filesize": 940507136, + "download_url": "http://stable.release.core-os.net/amd64-usr/1911.5.0/", + "direct_download_url": "http://stable.release.core-os.net/amd64-usr/1911.5.0/coreos_production_qemu_image.img.bz2", + "compression": "bzip2" + }, + { + "filename": "coreos_production_qemu_image.1855.5.0.img", + "version": "1855.5.0", + "md5sum": "6b5b06bc47446277c5c536c09b5a7988", + "filesize": 924319744, + "download_url": "http://stable.release.core-os.net/amd64-usr/1855.5.0/", + "direct_download_url": "http://stable.release.core-os.net/amd64-usr/1855.5.0/coreos_production_qemu_image.img.bz2", + "compression": "bzip2" + }, { "filename": "coreos_production_qemu_image.1688.5.3.img", "version": "1688.5.3", @@ -167,6 +203,30 @@ } ], "versions": [ + { + "name": "2079.4.0", + "images": { + "hda_disk_image": "coreos_production_qemu_image.img" + } + }, + { + "name": "2023.5.0", + "images": { + "hda_disk_image": "coreos_production_qemu_image.2023.5.0.img" + } + }, + { + "name": "1911.5.0", + "images": { + "hda_disk_image": "coreos_production_qemu_image.1911.5.0.img" + } + }, + { + "name": "1855.5.0", + "images": { + "hda_disk_image": "coreos_production_qemu_image.1855.5.0.img" + } + }, { "name": "1688.5.3", "images": { diff --git a/gns3server/appliances/cumulus-vx.gns3a b/gns3server/appliances/cumulus-vx.gns3a index e5baedfa..c743d2d4 100644 --- a/gns3server/appliances/cumulus-vx.gns3a +++ b/gns3server/appliances/cumulus-vx.gns3a @@ -23,11 +23,43 @@ "kvm": "require" }, "images": [ + { + "filename": "cumulus-linux-3.7.6-vx-amd64-qemu.qcow2", + "version": "3.7.6", + "md5sum": "34de965074332cbc40d51832da7d6a5d", + "filesize": 540278784, + "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", + "direct_download_url": "http://cumulusfiles.s3.amazonaws.com/CumulusLinux-3.7.6/cumulus-linux-3.7.6-vx-amd64-qemu.qcow2" + }, + { + "filename": "cumulus-linux-3.7.3-vx-amd64-qemu.qcow2", + "version": "3.7.3", + "md5sum": "e6f438cd44ede841ff290c85dedd127e", + "filesize": 1514340352, + "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", + "direct_download_url": "http://cumulusfiles.s3.amazonaws.com/CumulusLinux-3.7.3/cumulus-linux-3.7.3-vx-amd64-qemu.qcow2" + }, + { + "filename": "cumulus-linux-3.7.2-vx-amd64-qemu.qcow2", + "version": "3.7.2", + "md5sum": "2fcd785da0452e403c44ba5f3ac4e870", + "filesize": 1574502400, + "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", + "direct_download_url": "http://cumulusfiles.s3.amazonaws.com/CumulusLinux-3.7.2/cumulus-linux-3.7.2-vx-amd64-qemu.qcow2" + }, + { + "filename": "cumulus-linux-3.7.1-vx-amd64-qemu.qcow2", + "version": "3.7.1", + "md5sum": "201055c57e4a20bb5772289ea6216631", + "filesize": 1640300544, + "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", + "direct_download_url": "http://cumulusfiles.s3.amazonaws.com/CumulusLinux-3.7.1/cumulus-linux-3.7.1-vx-amd64-qemu.qcow2" + }, { "filename": "cumulus-linux-3.6.2-vx-amd64.qcow2", "version": "3.6.2", - "md5sum": "02b0621d68fb2e709b4bcc48748c7b6f", - "filesize": 1150746624, + "md5sum": "fda2cfc556de7b12daf45369bd60d33b", + "filesize": 1157169152, "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", "direct_download_url": "https://s3.amazonaws.com/cumulusfiles/CumulusLinux-3.6.2/cumulus-linux-3.6.2-vx-amd64.qcow2" }, @@ -173,6 +205,30 @@ } ], "versions": [ + { + "name": "3.7.6", + "images": { + "hda_disk_image": "cumulus-linux-3.7.6-vx-amd64-qemu.qcow2" + } + }, + { + "name": "3.7.3", + "images": { + "hda_disk_image": "cumulus-linux-3.7.3-vx-amd64-qemu.qcow2" + } + }, + { + "name": "3.7.2", + "images": { + "hda_disk_image": "cumulus-linux-3.7.2-vx-amd64-qemu.qcow2" + } + }, + { + "name": "3.7.1", + "images": { + "hda_disk_image": "cumulus-linux-3.7.1-vx-amd64-qemu.qcow2" + } + }, { "name": "3.6.2", "images": { diff --git a/gns3server/appliances/dell-ftos.gns3a b/gns3server/appliances/dell-ftos.gns3a index 136fb48a..af13461a 100644 --- a/gns3server/appliances/dell-ftos.gns3a +++ b/gns3server/appliances/dell-ftos.gns3a @@ -1,16 +1,16 @@ { - "name": "Dell FTOS", + "name": "Dell OS9", "category": "router", - "description": "Dell Networking OS10 combines the best of Linux, open computing and networking to advance open networking disaggregation. Dell Networking OS10 is a transformational software platform that provides networking hardware abstraction through a common set of APIs. Enable consistency across compute and network resources for your system operators (SysOps) groups that require server-like manageability. Easily leverage your existing network configuration. Dell Networking OS10 incorporates traditional networking integration. Enhance the integration and control you allow your development and operations (DevOps) teams, down to identifying an object as an individual, manageable entity within the platform.", + "description": "Dell Networking OS9 (formerly FTOS).\nOS9 powers the Dell Networking product portfolio and has been hardened in some of the largest and most demanding environments in the world to meet stringent reliability, scalability and serviceability requirements. \n\nDownload and uncompress zip files from the Dell support site - corresponding to the FTOS/OS9 image name. Please 'Select FTOS for S-Series OS-EMULATOR'. Import the resulting ISO image.", "vendor_name": "Dell Inc.", "vendor_url": "http://www.dell.com/", - "product_name": "Dell FTOS", + "product_name": "Dell OS9", "product_url": "http://www.dell.com/us/business/p/open-platform-software/pd", "registry_version": 3, "status": "experimental", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Abort the BCM process and format the flash after first boot by entering these commands:\nen\nformat flash:\n\nSometimes the flash device is not available after boot.", + "usage": "Make sure the Boot priority of the configuration template is HDD or CD.\n\nAbort the BCM process and format the flash after first boot by entering these commands:\nen\nformat flash:\n\nSometimes the flash device is not available after boot.", "first_port_name": "Management0/0", "port_name_format": "fortyGigE0/{0}", "qemu": { @@ -29,7 +29,7 @@ "version": "9.8.0", "md5sum": "b9b50eda0a73407dc381792ff7975e24", "filesize": 108115968, - "download_url": "https://www.force10networks.com/csportal20/Software/Downloads.aspx", + "download_url": "https://www.force10networks.com/CSPortal20/Software/SSeriesDownloads.aspx", "compression": "zip" }, { diff --git a/gns3server/appliances/exos.gns3a b/gns3server/appliances/exos.gns3a index 2aa8522d..33b95944 100644 --- a/gns3server/appliances/exos.gns3a +++ b/gns3server/appliances/exos.gns3a @@ -1,174 +1,139 @@ { - "name": "EXOS", + "name": "EXOS VM", "category": "multilayer_switch", - "description": "ExtremeXOS was designed from the ground up to meet the needs of large cloud and private data centers, service providers, intelligent, converged enterprise edge networks, and everything in between. It provides the high performance and rich features required by these diverse environments.", + "description": "The ExtremeXOS VM is created and maintained by Extreme Networks for users to emulate a network using EXOS switches.", "vendor_name": "Extreme Networks", - "vendor_url": "http://www.extremenetworks.com/", - "documentation_url": "http://www.extremenetworks.com/support/documentation", - "product_name": "EXOS", - "product_url": "http://www.extremenetworks.com/product/extremexos-network-operating-system", + "vendor_url": "https://www.extremenetworks.com", + "documentation_url": "https://www.extremenetworks.com/support/documentation", + "product_name": "EXOS VM", "registry_version": 3, "status": "stable", - "maintainer": "GNS3 Team", - "maintainer_email": "developers@gns3.net", - "usage": "You can change the console to telnet after install. Default user: admin (no password set)", - "first_port_name": "Management", + "maintainer": "Extreme Networks", + "maintainer_email": "GitHubscripting@extremenetworks.com", + "usage": "Boot up and login is admin with no password.", + "symbol": "ethernet_switch.svg", + "first_port_name": "Mgmt", "port_name_format": "Port{port1}", "qemu": { - "adapter_type": "e1000", + "adapter_type": "rtl8139", "adapters": 13, - "ram": 256, + "ram": 512, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "telnet", - "boot_priority": "cd", - "kvm": "require", - "options": "-smp 2 -cpu core2duo" + "boot_priority": "dc", + "kvm": "allow", + "options": "-cpu core2duo" }, + "images": [ - { - "filename": "exosvm-22.5.1.7.iso", + + { + "filename": "EXOS-VM_v30.1.1.4.qcow2", + "version": "30.1.1.4", + "md5sum": "92d3f9b13d750f7bfa804823fa545772", + "filesize": 383385600, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.1.1.4.qcow2" + }, + { + "filename": "EXOS-VM_v22.6.1.4.qcow2", + "version": "22.6.1.4", + "md5sum": "82b31b11b26143a82c8259a4825696fc", + "filesize": 180355072, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.6.1.4.qcow2" + }, + { + "filename": "EXOS-VM_v22.5.1.7.qcow2", "version": "22.5.1.7", - "md5sum": "132ac87de368ab55d1f496f292338cd4", - "filesize": 51779584, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/raw/master/vm-22.5.1.7.iso" + "md5sum": "d2e8ae6783b6ed777ad5cd8cafd83c86", + "filesize": 180289536, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.5.1.7.qcow2" }, { - "filename": "exosvm-22.4.1.4.iso", + "filename": "EXOS-VM_v22.4.1.4-disk1.qcow2", "version": "22.4.1.4", - "md5sum": "2134a511084519a5f8ad00a6f7cd71a9", - "filesize": 49993728, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/raw/master/vm-22.4.1.4.iso" + "md5sum": "5f1ee41912d74d423ce8ae57ea413602", + "filesize": 229638144, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.4.1.4-disk1.qcow2" }, { - "filename": "exosvm-22.2.1.5.iso", + "filename": "EXOS-VM_v22.3.1.4patch1-4-disk1.qcow2", + "version": "22.3.1.4", + "md5sum": "a4585b6e987ff730f5c044af339fe090", + "filesize": 218431488, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.3.1.4patch1-4-disk1.qcow2" + }, + { + "filename": "EXOS-VM_v22.2.1.5-disk1.qcow2", "version": "22.2.1.5", - "md5sum": "bf51fd5b3c5e9dab10a616055265bcf2", - "filesize": 44578816, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/raw/master/vm-22.2.1.5.iso" + "md5sum": "e3cfe92077addda6ad34185288c90acf", + "filesize": 179568640, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.2.1.5-disk1.qcow2" }, { - "filename": "exosvm-22.1.1.5.iso", + "filename": "EXOS-VM_v22.1.1.5-disk1.qcow2", "version": "22.1.1.5", - "md5sum": "df3897ca2d7c7053582587ed120114fa", - "filesize": 44220416, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/raw/master/vm-22.1.1.5.iso" - }, - { - "filename": "exosvm-21.1.2.14.iso", - "version": "21.1.2.14", - "md5sum": "de0752d56e41d92027ce1fccd604b14b", - "filesize": 41101312, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/blob/master/vm-21.1.2.14.iso?raw=true" + "md5sum": "77683060e75d81b776761f6829b15e9b", + "filesize": 179437568, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.1.1.5-disk1.qcow2" }, - { - "filename": "exosvm-21.1.1.4.iso", + { + "filename": "EXOS-VM_v21.1.1.4-disk1.qcow2", "version": "21.1.1.4", - "md5sum": "4d5db0e01a39b08775ed6a3e2c8bf663", - "filesize": 41046016, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/blob/master/vm-21.1.1.4.iso?raw=true" - }, - { - "filename": "exospc-16.2.1.6.iso", - "version": "16.2.1.6", - "md5sum": "b4be339afb02c03dcb4349630c1adb4f", - "filesize": 36306944, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/blob/master/exospc-16.2.1.6.iso?raw=true" - }, - { - "filename": "exospc-16.1.3.6.iso", - "version": "16.1.3.6", - "md5sum": "4c17b2bf2a4909527f6c866a68ba406e", - "filesize": 35758080, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/blob/master/exospc-16.1.3.6.iso?raw=true" - }, - { - "filename": "exospc-16.1.2.14.iso", - "version": "16.1.2.14", - "md5sum": "140cdc11f426156ffcbde150b2f46768", - "filesize": 35743744, - "download_url": "https://github.com/extremenetworks/Virtual_EXOS", - "direct_download_url": "https://github.com/extremenetworks/Virtual_EXOS/blob/master/exospc-16.1.2.14.iso?raw=true" - }, - { - "filename": "empty8G.qcow2", - "version": "1.0", - "md5sum": "f1d2c25b6990f99bd05b433ab603bdb4", - "filesize": 197120, - "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", - "direct_download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty8G.qcow2/download" + "md5sum": "654606809b6fd3bca400377483eb4a79", + "filesize": 117560832, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v21.1.1.4-disk1.qcow2" } + ], + "versions": [ { - "name": "22.5.1.7", + "name": "30.1.1.4", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exosvm-22.5.1.7.iso" + "hda_disk_image": "EXOS-VM_v30.1.1.4.qcow2" } }, - { - "name": "22.4.1.4", + { + "name": "22.6.1.4", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exosvm-22.4.1.4.iso" + "hda_disk_image": "EXOS-VM_v22.6.1.4.qcow2" } }, - { - "name": "22.2.1.5", - "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exosvm-22.2.1.5.iso" - } - }, - { - "name": "22.1.1.5", + { + "name": "22.5.1.7", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exosvm-22.1.1.5.iso" + "hda_disk_image": "EXOS-VM_v22.5.1.7.qcow2" } }, { - "name": "21.1.2.14", + "name": "22.4.1.4", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exosvm-21.1.2.14.iso" + "hda_disk_image": "EXOS-VM_v22.4.1.4-disk1.qcow2" } }, { - "name": "21.1.1.4", + "name": "22.3.1.4", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exosvm-21.1.1.4.iso" + "hda_disk_image": "EXOS-VM_v22.3.1.4patch1-4-disk1.qcow2" } }, { - "name": "16.2.1.6", + "name": "22.2.1.5", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exospc-16.2.1.6.iso" + "hda_disk_image": "EXOS-VM_v22.2.1.5-disk1.qcow2" } }, { - "name": "16.1.3.6", + "name": "22.1.1.5", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exospc-16.1.3.6.iso" + "hda_disk_image": "EXOS-VM_v22.1.1.5-disk1.qcow2" } }, { - "name": "16.1.2.14", + "name": "21.1.1.4", "images": { - "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "exospc-16.1.2.14.iso" + "hda_disk_image": "EXOS-VM_v21.1.1.4-disk1.qcow2" } } ] diff --git a/gns3server/appliances/extreme-networks-voss.gns3a b/gns3server/appliances/extreme-networks-voss.gns3a index ff15d60b..077883be 100644 --- a/gns3server/appliances/extreme-networks-voss.gns3a +++ b/gns3server/appliances/extreme-networks-voss.gns3a @@ -11,7 +11,7 @@ "maintainer": "Extreme Networks", "maintainer_email": "voss@extremenetworks.com", "usage": "Boot up and login is rwa/rwa", - "symbol": "ethernet_switch.svg", + "symbol": ":/symbols/multilayer_switch.svg", "first_port_name": "Mgmt", "port_name_format": "1/{port1}", "qemu": diff --git a/gns3server/appliances/f5-bigip.gns3a b/gns3server/appliances/f5-bigip.gns3a index 78e39877..efaf8464 100644 --- a/gns3server/appliances/f5-bigip.gns3a +++ b/gns3server/appliances/f5-bigip.gns3a @@ -27,6 +27,13 @@ "options": "-smp 2 -cpu host" }, "images": [ + { + "filename": "BIGIP-14.0.0.3-0.0.4.qcow2", + "version": "14.0.0 HF3", + "md5sum": "dc80a7e436ff93e2f4092eece18d369b", + "filesize": 4550164480, + "download_url": "https://downloads.f5.com/esd/serveDownload.jsp?path=/big-ip/big-ip_v14.x/14.0.0/english/14.0.0.3_virtual-edition/&sw=BIG-IP&pro=big-ip_v14.x&ver=14.0.0&container=14.0.0.3_Virtual-Edition&file=BIGIP-14.0.0.3-0.0.4.ALL.qcow2.zip" + }, { "filename": "BIGIP-13.1.0.5-0.0.5.qcow2", "version": "13.1.0 HF5", @@ -135,6 +142,13 @@ } ], "versions": [ + { + "name": "14.0.0 HF3", + "images": { + "hda_disk_image": "BIGIP-14.0.0.3-0.0.4.qcow2", + "hdb_disk_image": "empty100G.qcow2" + } + }, { "name": "13.1.0 HF5", "images": { diff --git a/gns3server/appliances/f5-bigiq.gns3a b/gns3server/appliances/f5-bigiq.gns3a index d1878658..45c71511 100644 --- a/gns3server/appliances/f5-bigiq.gns3a +++ b/gns3server/appliances/f5-bigiq.gns3a @@ -29,6 +29,13 @@ "options": "-smp 2 -cpu host" }, "images": [ + { + "filename": "BIG-IQ-6.0.1.1.0.0.9.qcow2", + "version": "6.0.1.1", + "md5sum": "3ae32308fe39d5db555f7f1cdcc734dd", + "filesize": 3895787520, + "download_url": "https://downloads.f5.com/esd/serveDownload.jsp?path=/big-iq/big-iq_cm/6.0.1/english/v6.0.1.1/&sw=BIG-IQ&pro=big-iq_CM&ver=6.0.1&container=v6.0.1.1&file=BIG-IQ-6.0.1.1.0.0.9.qcow2.zip" + }, { "filename": "BIG-IQ-5.4.0.2.24.7467.qcow2", "version": "5.4.0.2", @@ -88,6 +95,13 @@ } ], "versions": [ + { + "name": "6.0.1.1", + "images": { + "hda_disk_image": "BIG-IQ-6.0.1.1.0.0.9.qcow2", + "hdb_disk_image": "empty100G.qcow2" + } + }, { "name": "5.4.0.2", "images": { diff --git a/gns3server/appliances/fortiadc-manager.gns3a b/gns3server/appliances/fortiadc-manager.gns3a new file mode 100644 index 00000000..74090e70 --- /dev/null +++ b/gns3server/appliances/fortiadc-manager.gns3a @@ -0,0 +1,53 @@ +{ + "name": "FortiADC Manager", + "category": "guest", + "description": "FortiADC Manager allows you to use a web- based user interface to configure remote FortiADC devices. It allows you to simplify and speed up the FortiADC deployment and update process by maintaining configuration templates and policy packages that you can modify and apply as needed.", + "vendor_name": "Fortinet", + "vendor_url": "http://www.fortinet.com/", + "documentation_url": "https://docs.fortinet.com/fortiadc-manager/", + "product_name": "FortiADC Manager", + "product_url": "https://www.fortinet.com/products/application-delivery-controller/fortiadc.html", + "registry_version": 3, + "status": "stable", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "Default username is admin, no password is set.", + "port_name_format": "Port{port1}", + "symbol": "fortinet.svg", + "qemu": { + "adapter_type": "virtio-net-pci", + "adapters": 10, + "ram": 2048, + "hda_disk_interface": "virtio", + "hdb_disk_interface": "virtio", + "arch": "x86_64", + "console_type": "telnet", + "boot_priority": "c", + "kvm": "allow" + }, + "images": [ + { + "filename": "FADCManager-KVM-V500-build0020-FORTINET.out.kvm-boot.qcow2", + "version": "5.2.0", + "md5sum": "a79d04040848b704ce4efe925518fd3f", + "filesize": 70057984, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FADCManager-KVM-v500-data.qcow2", + "version": "5.x", + "md5sum": "b7500835594e62d8acb1c6ec43d597c1", + "filesize": 30998528, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + } + ], + "versions": [ + { + "name": "5.2.0", + "images": { + "hda_disk_image": "FADCManager-KVM-V500-build0020-FORTINET.out.kvm-boot.qcow2", + "hdb_disk_image": "FADCManager-KVM-v500-data.qcow2" + } + } + ] +} diff --git a/gns3server/appliances/fortiadc.gns3a b/gns3server/appliances/fortiadc.gns3a index 5a6e7c83..03d8524f 100644 --- a/gns3server/appliances/fortiadc.gns3a +++ b/gns3server/appliances/fortiadc.gns3a @@ -34,6 +34,27 @@ "filesize": 30998528, "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" }, + { + "filename": "FAD_KVM-V500-build0442-FORTINET.out.kvm-boot.qcow2", + "version": "5.2.2", + "md5sum": "7d959ed264b064716e8f1378fceed48f", + "filesize": 104857600, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FAD_KVM-V500-build0423-FORTINET.out.kvm-boot.qcow2", + "version": "5.2.0", + "md5sum": "993bcd0e8e5496fdacb78dffb3c9a9b3", + "filesize": 104333312, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FAD_KVM-V500-build0239-FORTINET.out.kvm-boot.qcow2", + "version": "5.1.1", + "md5sum": "f94323bc6415dd1477f2352bd3323d14", + "filesize": 75235328, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FAD_KVM-V500-build0056-FORTINET.out.kvm-boot.qcow2", "version": "5.0.1", @@ -176,6 +197,27 @@ } ], "versions": [ + { + "name": "5.2.2", + "images": { + "hda_disk_image": "FAD_KVM-V500-build0442-FORTINET.out.kvm-boot.qcow2", + "hdb_disk_image": "FAD_KVM-FORTINET.out.kvm-data.qcow2" + } + }, + { + "name": "5.2.0", + "images": { + "hda_disk_image": "FAD_KVM-V500-build0423-FORTINET.out.kvm-boot.qcow2", + "hdb_disk_image": "FAD_KVM-FORTINET.out.kvm-data.qcow2" + } + }, + { + "name": "5.1.1", + "images": { + "hda_disk_image": "FAD_KVM-V500-build0239-FORTINET.out.kvm-boot.qcow2", + "hdb_disk_image": "FAD_KVM-FORTINET.out.kvm-data.qcow2" + } + }, { "name": "5.0.1", "images": { diff --git a/gns3server/appliances/fortianalyzer.gns3a b/gns3server/appliances/fortianalyzer.gns3a index 31475fa9..1055e466 100644 --- a/gns3server/appliances/fortianalyzer.gns3a +++ b/gns3server/appliances/fortianalyzer.gns3a @@ -26,6 +26,27 @@ "kvm": "allow" }, "images": [ + { + "filename": "FAZ_VM64_KVM-v6-build1050-FORTINET.out.kvm.qcow2", + "version": "6.2.0", + "md5sum": "dc123116e4c816d8b4dee244bd671844", + "filesize": 140177408, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FAZ_VM64_KVM-v6-build0255-FORTINET.out.kvm.qcow2", + "version": "6.0.3", + "md5sum": "14c98b20ed1d0729e2d04aad49ff1be5", + "filesize": 114589696, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FAZ_VM64_KVM-v6-build0205-FORTINET.out.kvm.qcow2", + "version": "6.0.2", + "md5sum": "1c9c6a99244aaf8b215c52194e1f82ed", + "filesize": 115777536, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FAZ_VM64_KVM-v6-build0092-FORTINET.out.kvm.qcow2", "version": "6.0.0", @@ -33,6 +54,13 @@ "filesize": 117940224, "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" }, + { + "filename": "FAZ_VM64_KVM-v5-build1782-FORTINET.out.kvm.qcow2", + "version": "5.6.7", + "md5sum": "f67c115cc51e911802e9cbcb5cb0c8c2", + "filesize": 110862336, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FAZ_VM64_KVM-v5-build1631-FORTINET.out.kvm.qcow2", "version": "5.6.2", @@ -127,6 +155,27 @@ } ], "versions": [ + { + "name": "6.2.0", + "images": { + "hda_disk_image": "FAZ_VM64_KVM-v6-build1050-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.3", + "images": { + "hda_disk_image": "FAZ_VM64_KVM-v6-build0255-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.2", + "images": { + "hda_disk_image": "FAZ_VM64_KVM-v6-build0205-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "6.0.0", "images": { @@ -134,6 +183,13 @@ "hdb_disk_image": "empty30G.qcow2" } }, + { + "name": "5.6.7", + "images": { + "hda_disk_image": "FAZ_VM64_KVM-v5-build1782-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "5.6.2", "images": { diff --git a/gns3server/appliances/fortiauthenticator.gns3a b/gns3server/appliances/fortiauthenticator.gns3a index 4be5bd2b..382eebab 100644 --- a/gns3server/appliances/fortiauthenticator.gns3a +++ b/gns3server/appliances/fortiauthenticator.gns3a @@ -26,6 +26,27 @@ "kvm": "allow" }, "images": [ + { + "filename": "FAC_VM_KVM-v6-build0010-FORTINET.out.kvm.qcow2", + "version": "6.0.0", + "md5sum": "6699c0b24e54dc6a5215ba3945abb364", + "filesize": 74317824, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FAC_VM_KVM-v5-build0366-FORTINET.out.kvm.qcow2", + "version": "5.5.0", + "md5sum": "c6ae060f8840b467efac6701a7e8e6af", + "filesize": 72982528, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FAC_VM_KVM-v5-build0297-FORTINET.out.kvm.qcow2", + "version": "5.4.1", + "md5sum": "e63bcaae040f903f9de315f582702619", + "filesize": 72617984, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FAC_VM_KVM-v5-build0163-FORTINET.out.kvm.qcow2", "version": "5.2.2", @@ -76,61 +97,82 @@ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" }, { - "filename": "FAC_VM_KVM-v500-DATADRIVE.qcow2", - "version": "5.x.x", + "filename": "FAC_VM_KVM-ALL-DATADRIVE.qcow2", + "version": "All", "md5sum": "09bad6cfe6301930adbc829eb8a67149", "filesize": 258048, "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" } ], "versions": [ + { + "name": "6.0.0", + "images": { + "hda_disk_image": "FAC_VM_KVM-v6-build0010-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" + } + }, + { + "name": "5.5.0", + "images": { + "hda_disk_image": "FAC_VM_KVM-v5-build0366-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" + } + }, + { + "name": "5.4.1", + "images": { + "hda_disk_image": "FAC_VM_KVM-v5-build0297-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" + } + }, { "name": "5.2.2", "images": { "hda_disk_image": "FAC_VM_KVM-v5-build0163-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } }, { "name": "5.2.1", "images": { "hda_disk_image": "FAC_VM_KVM-v500-build0161-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } }, { "name": "5.2.0", "images": { "hda_disk_image": "FAC_VM_KVM-v5-build0155-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } }, { "name": "5.1.2", "images": { "hda_disk_image": "FAC_VM_KVM-v500-build0091-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } }, { "name": "5.1.1", "images": { "hda_disk_image": "FAC_VM_KVM-v500-build0086-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } }, { "name": "5.1.0", "images": { "hda_disk_image": "FAC_VM_KVM-v500-build0083-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } }, { "name": "5.0.0", "images": { "hda_disk_image": "FAC_VM_KVM-v500-build0012-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FAC_VM_KVM-v500-DATADRIVE.qcow2" + "hdb_disk_image": "FAC_VM_KVM-ALL-DATADRIVE.qcow2" } } ] diff --git a/gns3server/appliances/forticache.gns3a b/gns3server/appliances/forticache.gns3a index dddf5974..38ccaaa8 100644 --- a/gns3server/appliances/forticache.gns3a +++ b/gns3server/appliances/forticache.gns3a @@ -26,6 +26,20 @@ "kvm": "require" }, "images": [ + { + "filename": "FCHKVM-v400-build0230-FORTINET.out.kvm.qcow2", + "version": "4.2.9", + "md5sum": "a3583f162004da2f1e0b751e7b23504a", + "filesize": 27672576, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FCHKVM-v400-build0226-FORTINET.out.kvm.qcow2", + "version": "4.2.8", + "md5sum": "17efdc8f037c8ec1d1fc67ae262f619e", + "filesize": 27676672, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FCHKVM-v400-build0222-FORTINET.out.kvm.qcow2", "version": "4.2.7", @@ -106,6 +120,20 @@ } ], "versions": [ + { + "name": "4.2.9", + "images": { + "hda_disk_image": "FCHKVM-v400-build0230-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty100G.qcow2" + } + }, + { + "name": "4.2.8", + "images": { + "hda_disk_image": "FCHKVM-v400-build0226-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty100G.qcow2" + } + }, { "name": "4.2.7", "images": { diff --git a/gns3server/appliances/fortigate.gns3a b/gns3server/appliances/fortigate.gns3a index f3c1afc4..f9c5e659 100644 --- a/gns3server/appliances/fortigate.gns3a +++ b/gns3server/appliances/fortigate.gns3a @@ -26,6 +26,20 @@ "kvm": "allow" }, "images": [ + { + "filename": "FGT_VM64_KVM-v6-build0866-FORTINET.out.kvm.qcow2", + "version": "6.2.0", + "md5sum": "588df9ba0db485976f6681810001ae73", + "filesize": 57868288, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FGT_VM64_KVM-v6-build0200-FORTINET.out.kvm.qcow2", + "version": "6.0.3", + "md5sum": "be6f74ea13da09cf0b68e87234e2d8d5", + "filesize": 51552256, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FGT_VM64_KVM-v6-build0076-FORTINET.out.kvm.qcow2", "version": "6.0.0", @@ -33,6 +47,13 @@ "filesize": 46104576, "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" }, + { + "filename": "FGT_VM64_KVM-v5-build1653-FORTINET.out.kvm.qcow2", + "version": "5.6.7", + "md5sum": "202e1ed7582b02493be63f14cc48c2cb", + "filesize": 43180032, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FGT_VM64_KVM-v5-build1575-FORTINET.out.kvm.qcow2", "version": "5.6.4", @@ -68,6 +89,13 @@ "filesize": 38760448, "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" }, + { + "filename": "FGT_VM64_KVM-v5-build1220-FORTINET.out.kvm.qcow2", + "version": "5.4.10", + "md5sum": "7444d6c85ef6b937a98163482caa5a90", + "filesize": 39043072, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FGT_VM64_KVM-v5-build1183-FORTINET.out.kvm.qcow2", "version": "5.4.8", @@ -197,6 +225,20 @@ } ], "versions": [ + { + "name": "6.2.0", + "images": { + "hda_disk_image": "FGT_VM64_KVM-v6-build0866-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.3", + "images": { + "hda_disk_image": "FGT_VM64_KVM-v6-build0200-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "6.0.0", "images": { @@ -204,6 +246,13 @@ "hdb_disk_image": "empty30G.qcow2" } }, + { + "name": "5.6.7", + "images": { + "hda_disk_image": "FGT_VM64_KVM-v5-build1653-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "5.6.4", "images": { @@ -239,6 +288,13 @@ "hdb_disk_image": "empty30G.qcow2" } }, + { + "name": "5.4.10", + "images": { + "hda_disk_image": "FGT_VM64_KVM-v5-build1220-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "5.4.8", "images": { diff --git a/gns3server/appliances/fortimail.gns3a b/gns3server/appliances/fortimail.gns3a index a970d912..511cf513 100644 --- a/gns3server/appliances/fortimail.gns3a +++ b/gns3server/appliances/fortimail.gns3a @@ -26,6 +26,20 @@ "kvm": "allow" }, "images": [ + { + "filename": "FML_VMKV-64-v60-build0143-FORTINET.out.kvm.qcow2", + "version": "6.0.4", + "md5sum": "e6401ecfe9b145256cccb29757bbddfe", + "filesize": 98959360, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FML_VMKV-64-v60-build0126-FORTINET.out.kvm.qcow2", + "version": "6.0.3", + "md5sum": "b062636f029ff0f3d4b74451cc70b755", + "filesize": 96731136, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FML_VMKV-64-v54-build0719-FORTINET.out.kvm.qcow2", "version": "5.4.5", @@ -155,6 +169,20 @@ } ], "versions": [ + { + "name": "6.0.4", + "images": { + "hda_disk_image": "FML_VMKV-64-v60-build0143-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.3", + "images": { + "hda_disk_image": "FML_VMKV-64-v60-build0126-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "5.4.5", "images": { diff --git a/gns3server/appliances/fortimanager.gns3a b/gns3server/appliances/fortimanager.gns3a index 7827c2e5..a0347aa4 100644 --- a/gns3server/appliances/fortimanager.gns3a +++ b/gns3server/appliances/fortimanager.gns3a @@ -26,6 +26,27 @@ "kvm": "allow" }, "images": [ + { + "filename": "FMG_VM64_KVM-v6-build1050-FORTINET.out.kvm.qcow2", + "version": "6.2.0", + "md5sum": "c19d2527f91ad1bbafbde5bf08487867", + "filesize": 126894080, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FMG_VM64_KVM-v6-build0255-FORTINET.out.kvm.qcow2", + "version": "6.0.3", + "md5sum": "5f34d52d9289b0be2a4c04943446ea39", + "filesize": 115703808, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FMG_VM64_KVM-v6-build0205-FORTINET.out.kvm.qcow2", + "version": "6.0.2", + "md5sum": "8f748649c537d9b5466b24c5b4e62017", + "filesize": 116981760, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FMG_VM64_KVM-v6-build0092-FORTINET.out.kvm.qcow2", "version": "6.0.0", @@ -127,6 +148,20 @@ } ], "versions": [ + { + "name": "6.2.0", + "images": { + "hda_disk_image": "FMG_VM64_KVM-v6-build1050-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.2", + "images": { + "hda_disk_image": "FMG_VM64_KVM-v6-build0205-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "6.0.0", "images": { diff --git a/gns3server/appliances/fortiproxy.gns3a b/gns3server/appliances/fortiproxy.gns3a new file mode 100644 index 00000000..03e39fdf --- /dev/null +++ b/gns3server/appliances/fortiproxy.gns3a @@ -0,0 +1,68 @@ +{ + "name": "FortiProxy", + "category": "firewall", + "description": "FortiProxy is a secure web proxy that protects employees against internet-borne attacks by incorporating multiple detection techniques such as web filtering, DNS filtering, data loss prevention, antivirus, intrusion prevention and advanced threat protection. It helps enterprises enforce internet compliance using granular application control.", + "vendor_name": "Fortinet", + "vendor_url": "http://www.fortinet.com/", + "documentation_url": "https://docs.fortinet.com/fortiproxy/", + "product_name": "FortiProxy", + "product_url": "https://www.fortinet.com/content/dam/fortinet/assets/data-sheets/FortiProxy.pdf", + "registry_version": 3, + "status": "stable", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "The system reboots twice during the initial setup; this is normal.\nDefault username is admin, no password is set.", + "port_name_format": "Port{port1}", + "symbol": "fortinet.svg", + "qemu": { + "adapter_type": "virtio-net-pci", + "adapters": 10, + "ram": 2048, + "hda_disk_interface": "virtio", + "hdb_disk_interface": "virtio", + "arch": "x86_64", + "console_type": "telnet", + "boot_priority": "c", + "kvm": "allow" + }, + "images": [ + { + "filename": "FPX_KVM-v100-build0162-FORTINET.out.kvm.qcow2", + "version": "1.1.2", + "md5sum": "00db4c04fcc4ac0d7c389a86c71d20a5", + "filesize": 44601344, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FPX_KVM-v100-build0147-FORTINET.out.kvm.qcow2", + "version": "1.1.0", + "md5sum": "d7c60693bfa58246e5063304cd450c89", + "filesize": 42668032, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "empty30G.qcow2", + "version": "1.0", + "md5sum": "3411a599e822f2ac6be560a26405821a", + "filesize": 197120, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty30G.qcow2/download" + } + ], + "versions": [ + { + "name": "1.1.2", + "images": { + "hda_disk_image": "FPX_KVM-v100-build0162-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "1.1.0", + "images": { + "hda_disk_image": "FPX_KVM-v100-build0147-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + } + ] +} diff --git a/gns3server/appliances/fortirecorder.gns3a b/gns3server/appliances/fortirecorder.gns3a new file mode 100644 index 00000000..fe2a115c --- /dev/null +++ b/gns3server/appliances/fortirecorder.gns3a @@ -0,0 +1,68 @@ +{ + "name": "FortiRecorder", + "category": "guest", + "description": "Surveillance systems can be complicated, expensive, and unreliable. But FortiCamera and FortiRecorder simplify IP video surveillance and there are no license fees. With FortiCams, you can see everything: doors, POS terminals, public areas--whatever you need to keep an eye on. FortiRecorder captures the images for easy monitoring, storage, and retrieval. Just plug in your cameras, connect the FortiRecorder, open a web browser or client application, and you're ready to go. It's easy to navigate and configure with event timelines and profile-driven configuration.", + "vendor_name": "Fortinet", + "vendor_url": "http://www.fortinet.com/", + "documentation_url": "https://docs.fortinet.com/fortirecorder/", + "product_name": "FortiRecorder", + "product_url": "https://www.fortinet.com/products/network-based-video-security/forticam-fortirecorder.html", + "registry_version": 3, + "status": "stable", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "Use HTTPS when connecting to the WebUI.\nDefault username is admin, no password is set.", + "port_name_format": "Port{port1}", + "symbol": "fortinet.svg", + "qemu": { + "adapter_type": "virtio-net-pci", + "adapters": 10, + "ram": 2048, + "hda_disk_interface": "virtio", + "hdb_disk_interface": "virtio", + "arch": "x86_64", + "console_type": "telnet", + "boot_priority": "c", + "kvm": "allow" + }, + "images": [ + { + "filename": "FRC_VMKV-64-v27-build0700-FORTINET.out.kvm.qcow2", + "version": "2.7.1", + "md5sum": "3736c66af7d958fc672fe29439b405b8", + "filesize": 79429632, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FRC_VMKV-64-v26-build0607-FORTINET.out.kvm.qcow2", + "version": "2.6.3", + "md5sum": "ffa5d42119de576631673516f60e028b", + "filesize": 63569920, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "empty30G.qcow2", + "version": "1.0", + "md5sum": "3411a599e822f2ac6be560a26405821a", + "filesize": 197120, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty30G.qcow2/download" + } + ], + "versions": [ + { + "name": "2.7.1", + "images": { + "hda_disk_image": "FRC_VMKV-64-v27-build0700-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "2.6.3", + "images": { + "hda_disk_image": "FRC_VMKV-64-v26-build0607-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + } + ] +} diff --git a/gns3server/appliances/fortisandbox.gns3a b/gns3server/appliances/fortisandbox.gns3a index 9abf5228..e022265f 100644 --- a/gns3server/appliances/fortisandbox.gns3a +++ b/gns3server/appliances/fortisandbox.gns3a @@ -27,6 +27,27 @@ "options": "-smp 2" }, "images": [ + { + "filename": "FSA_KVM-v300-build0060-FORTINET.out.kvm.qcow2", + "version": "3.0.4", + "md5sum": "7e744c4d62430917aea4533672710b5a", + "filesize": 157221376, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FSA_KVM-v300-build0049-FORTINET.out.kvm.qcow2", + "version": "3.0.3", + "md5sum": "3ef1f05124d13e23332b8b90f8f71c2c", + "filesize": 156828160, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FSA_KVM-v300-build0029-FORTINET.out.kvm.qcow2", + "version": "3.0.1", + "md5sum": "a2f6c5297a722c5dba40327734a6e0ac", + "filesize": 153158144, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FSA_KVM-v200-build0340-FORTINET.out.kvm.qcow2", "version": "2.5.2", @@ -77,61 +98,82 @@ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" }, { - "filename": "FSA_v200-datadrive.qcow2", - "version": "2.x", + "filename": "FSA-datadrive.qcow2", + "version": "All", "md5sum": "f2dc0a8fc7591699c364aff400369157", "filesize": 200192, "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" } ], "versions": [ + { + "name": "3.0.4", + "images": { + "hda_disk_image": "FSA_KVM-v300-build0060-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "FSA-datadrive.qcow2" + } + }, + { + "name": "3.0.3", + "images": { + "hda_disk_image": "FSA_KVM-v300-build0049-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "FSA-datadrive.qcow2" + } + }, + { + "name": "3.0.1", + "images": { + "hda_disk_image": "FSA_KVM-v300-build0029-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "FSA-datadrive.qcow2" + } + }, { "name": "2.5.2", "images": { "hda_disk_image": "FSA_KVM-v200-build0340-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } }, { "name": "2.5.1", "images": { "hda_disk_image": "FSA_KVM-v200-build0329-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } }, { "name": "2.4.1", "images": { "hda_disk_image": "FSA_KVM-v200-build0261-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } }, { "name": "2.4.0", "images": { "hda_disk_image": "FSA_KVM-v200-build0252-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } }, { "name": "2.3.3", "images": { "hda_disk_image": "FSA_KVM-v200-build0205-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } }, { "name": "2.3.2", "images": { "hda_disk_image": "FSA_KVM-v200-build0195-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } }, { "name": "2.3.0", "images": { "hda_disk_image": "FSA_VM-v200-build0183-FORTINET.out.kvm.qcow2", - "hdb_disk_image": "FSA_v200-datadrive.qcow2" + "hdb_disk_image": "FSA-datadrive.qcow2" } } ] diff --git a/gns3server/appliances/fortisiem-super_worker.gns3a b/gns3server/appliances/fortisiem-super_worker.gns3a index 739d1cf2..d6223091 100644 --- a/gns3server/appliances/fortisiem-super_worker.gns3a +++ b/gns3server/appliances/fortisiem-super_worker.gns3a @@ -11,7 +11,7 @@ "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "This is the Super/Worker component. Default credentials:\n- admin / admin*1\n - root / ProspectHills\n\nIf you get a 503 error on the WebUI, run /opt/phoenix/deployment/jumpbox/phinitsuper as root.", + "usage": "This is the Super/Worker component. Default credentials:\n- admin / admin*1\n - root / ProspectHills\n\nIf you get a 503 error on the WebUI, run /opt/phoenix/deployment/jumpbox/phinitsuper as root.\n\nMake sure that Super, Worker(s), Collector(s) and Report Server can connect to FortiSIEM hosted CentOS repo on https port 443 under the URLs below. Otherwise, some packages may not install and 5.0.0 binaries will not run.\n- https://os-pkgs-cdn.fortisiem.fortinet.com/centos6/\n- https://os-pkgs.fortisiem.fortinet.com/centos6/", "port_name_format": "Port{port1}", "symbol": "fortinet.svg", "qemu": { @@ -28,26 +28,68 @@ "options": "-smp 4" }, "images": [ + { + "filename": "FortiSIEM-VA-5.2.1.1553-OS.qcow2", + "version": "5.2.1", + "md5sum": "9dc3f4a9614b65c83d3e9733248cbcea", + "filesize": 3902208000, + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release510.html" + }, + { + "filename": "FortiSIEM-VA-5.2.1.1553-CMDB.qcow2", + "version": "5.2.1", + "md5sum": "ea3f69191eb803cdf021227ec666bf7b", + "filesize": 46858240, + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release510.html" + }, + { + "filename": "FortiSIEM-VA-5.2.1.1553-SVN.qcow2", + "version": "5.2.1", + "md5sum": "eff32e40baf6ede7bc57ad8d241812ad", + "filesize": 46858240, + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release510.html" + }, + { + "filename": "FortiSIEM-VA-5.1.0.1336.qcow2", + "version": "5.1.0", + "md5sum": "753685ee68287c7a56f9da53566ac522", + "filesize": 10376904704, + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release510.html" + }, + { + "filename": "FortiSIEM-VA-5.1.0.1336-1.qcow2", + "version": "5.1.0", + "md5sum": "6ffb7e16d89a6731fc077982cb012ee2", + "filesize": 46858240, + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release510.html" + }, + { + "filename": "FortiSIEM-VA-5.1.0.1336-2.qcow2", + "version": "5.1.0", + "md5sum": "8185e537ce222c2e8407e9bf08e604bb", + "filesize": 46858240, + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release510.html" + }, { "filename": "FortiSIEM-VA-5.0.0.1201.qcow2", "version": "5.0.0", "md5sum": "1f2f0b1d84e89495fc5b5ca722cb5710", "filesize": 10029432832, - "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/latestrelease.html" + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release500.html" }, { "filename": "FortiSIEM-VA-5.0.0.1201-1.qcow2", "version": "5.0.0", "md5sum": "88e96259f44a82b7c545b82925880513", "filesize": 46858240, - "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/latestrelease.html" + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release500.html" }, { "filename": "FortiSIEM-VA-5.0.0.1201-2.qcow2", "version": "5.0.0", "md5sum": "58d61498e1adc1df062fc12113d42d86", "filesize": 46858240, - "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/latestrelease.html" + "download_url": "https://images-cdn.fortisiem.fortinet.com/VirtualAppliances/release500.html" }, { "filename": "FortiSIEM-VA-KVM-4.10.0.1102.qcow2", @@ -93,6 +135,22 @@ } ], "versions": [ + { + "name": "5.2.1", + "images": { + "hda_disk_image": "FortiSIEM-VA-5.2.1.1553-OS.qcow2", + "hdb_disk_image": "FortiSIEM-VA-5.2.1.1553-CMDB.qcow2", + "hdc_disk_image": "FortiSIEM-VA-5.2.1.1553-SVN.qcow2" + } + }, + { + "name": "5.1.0", + "images": { + "hda_disk_image": "FortiSIEM-VA-5.1.0.1336.qcow2", + "hdb_disk_image": "FortiSIEM-VA-5.1.0.1336-1.qcow2", + "hdc_disk_image": "FortiSIEM-VA-5.1.0.1336-2.qcow2" + } + }, { "name": "5.0.0", "images": { diff --git a/gns3server/appliances/fortiweb.gns3a b/gns3server/appliances/fortiweb.gns3a index 64368fce..c365d84f 100644 --- a/gns3server/appliances/fortiweb.gns3a +++ b/gns3server/appliances/fortiweb.gns3a @@ -26,6 +26,27 @@ "kvm": "allow" }, "images": [ + { + "filename": "FWB_KVM-v600-build0383-FORTINET.out.kvm.qcow2", + "version": "6.1.0", + "md5sum": "d2dbbde9f03eb716a54119cc3e6055c4", + "filesize": 190120448, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FWB_KVM-v600-build0056-FORTINET.out.kvm.qcow2", + "version": "6.0.2", + "md5sum": "cc7800bc6c2dd60c583d2d4ef1965e01", + "filesize": 156959232, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, + { + "filename": "FWB_KVM-v600-build0036-FORTINET.out.kvm.qcow2", + "version": "6.0.1", + "md5sum": "220170383b66a6f8091729d67a8fef3e", + "filesize": 138412544, + "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx" + }, { "filename": "FWB_KVM-v500-build1618-FORTINET.out.kvm.qcow2", "version": "5.9.1", @@ -93,6 +114,27 @@ ], "versions": [ + { + "name": "6.1.0", + "images": { + "hda_disk_image": "FWB_KVM-v600-build0383-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.2", + "images": { + "hda_disk_image": "FWB_KVM-v600-build0056-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, + { + "name": "6.0.1", + "images": { + "hda_disk_image": "FWB_KVM-v600-build0036-FORTINET.out.kvm.qcow2", + "hdb_disk_image": "empty30G.qcow2" + } + }, { "name": "5.9.1", "images": { diff --git a/gns3server/appliances/freebsd.gns3a b/gns3server/appliances/freebsd.gns3a index 90d97218..31789069 100644 --- a/gns3server/appliances/freebsd.gns3a +++ b/gns3server/appliances/freebsd.gns3a @@ -22,6 +22,24 @@ "kvm": "require" }, "images": [ + { + "filename": "FreeBSD-12.0-RELEASE-amd64.qcow2", + "version": "12.0", + "md5sum": "4d2126ba79dad224628be6f25a908bd8", + "filesize": 2644836352, + "download_url": "https://www.freebsd.org/where.html", + "direct_download_url": "https://download.freebsd.org/ftp/releases/VM-IMAGES/12.0-RELEASE/amd64/Latest/FreeBSD-12.0-RELEASE-amd64.qcow2.xz", + "compression": "xz" + }, + { + "filename": "FreeBSD-11.2-RELEASE-amd64.qcow2", + "version": "11.2", + "md5sum": "44d37e65be4bb4054f067911c84d074a", + "filesize": 1630076928, + "download_url": "https://www.freebsd.org/where.html", + "direct_download_url": "https://download.freebsd.org/ftp/releases/VM-IMAGES/11.2-RELEASE/amd64/Latest/FreeBSD-11.2-RELEASE-amd64.qcow2.xz", + "compression": "xz" + }, { "filename": "FreeBSD-11.1-RELEASE-amd64.qcow2", "version": "11.1", @@ -60,6 +78,18 @@ } ], "versions": [ + { + "name": "12.0", + "images": { + "hda_disk_image": "FreeBSD-12.0-RELEASE-amd64.qcow2" + } + }, + { + "name": "11.2", + "images": { + "hda_disk_image": "FreeBSD-11.2-RELEASE-amd64.qcow2" + } + }, { "name": "11.1", "images": { diff --git a/gns3server/appliances/freenas.gns3a b/gns3server/appliances/freenas.gns3a index 866e7023..114f3319 100644 --- a/gns3server/appliances/freenas.gns3a +++ b/gns3server/appliances/freenas.gns3a @@ -24,9 +24,33 @@ "kvm": "require" }, "images": [ + { + "filename": "FreeNAS-11.2-U3.iso", + "version": "11.2 U3", + "md5sum": "59ee32e2598a792eec0355b40a511251", + "filesize": 600387584, + "download_url": "http://www.freenas.org/download/", + "direct_download_url": "https://download.freenas.org/11.2/STABLE/U3/x64/FreeNAS-11.2-U3.iso" + }, + { + "filename": "FreeNAS-11.2-RELEASE.iso", + "version": "11.2", + "md5sum": "bf4a9ebb19313c3d45f84c1550477727", + "filesize": 603410432, + "download_url": "http://www.freenas.org/download/", + "direct_download_url": "https://download.freenas.org/11.2/STABLE/RELEASE/x64/FreeNAS-11.2-RELEASE.iso" + }, + { + "filename": "FreeNAS-11.1-U6.iso", + "version": "11.1 U6", + "md5sum": "633d6444cad903c707983b54e04fc053", + "filesize": 636065792, + "download_url": "http://www.freenas.org/download/", + "direct_download_url": "https://download.freenas.org/11/11.1-U6/x64/FreeNAS-11.1-U6.iso" + }, { "filename": "FreeNAS-11.1-U4.iso", - "version": "11.1 U1", + "version": "11.1 U4", "md5sum": "d75623e5671dbc82f32f4b4f8d46092f", "filesize": 633833472, "download_url": "http://www.freenas.org/download/", @@ -74,6 +98,30 @@ } ], "versions": [ + { + "name": "11.2 U3", + "images": { + "hda_disk_image": "empty30G.qcow2", + "hdb_disk_image": "empty30G.qcow2", + "cdrom_image": "FreeNAS-11.2-U3.iso" + } + }, + { + "name": "11.2", + "images": { + "hda_disk_image": "empty30G.qcow2", + "hdb_disk_image": "empty30G.qcow2", + "cdrom_image": "FreeNAS-11.2-RELEASE.iso" + } + }, + { + "name": "11.1 U6", + "images": { + "hda_disk_image": "empty30G.qcow2", + "hdb_disk_image": "empty30G.qcow2", + "cdrom_image": "FreeNAS-11.1-U6.iso" + } + }, { "name": "11.1 U4", "images": { diff --git a/gns3server/appliances/frr.gns3a b/gns3server/appliances/frr.gns3a index ed3ad7a5..476556e6 100644 --- a/gns3server/appliances/frr.gns3a +++ b/gns3server/appliances/frr.gns3a @@ -14,12 +14,31 @@ "qemu": { "adapter_type": "virtio-net-pci", "adapters": 8, - "ram": 256, + "ram": 512, + "hda_disk_interface": "virtio", "arch": "x86_64", "console_type": "telnet", "kvm": "require" }, "images": [ + { + "filename": "frr7.0-vm0.3.qcow2", + "version": "FRR7.0 - VM0.3", + "md5sum": "5fa8ce0ee74215f4c4a8c61778ee0b10", + "filesize": 2044657664, + "download_url": "https://sourceforge.net/projects/frr/files/", + "direct_download_url": "https://sourceforge.net/projects/frr/files/FRR7.0-VM0.3.qcow2.bz2/download", + "compression": "bzip2" + }, + { + "filename": "frr6.0-vm0.2.qcow2", + "version": "FRR6.0 - VM0.2", + "md5sum": "bf5aebd98352716bfabb119abb2ba19a", + "filesize": 1762066432, + "download_url": "https://sourceforge.net/projects/frr/files/", + "direct_download_url": "https://sourceforge.net/projects/frr/files/frr6.0-vm0.2.qcow2.bz2/download", + "compression": "bzip2" + }, { "filename": "frr4.0-vm0.1.qcow2", "version": "FRR4.0 - VM0.1", @@ -31,6 +50,18 @@ } ], "versions": [ + { + "name": "FRR7.0 - VM0.3", + "images": { + "hda_disk_image": "frr7.0-vm0.3.qcow2" + } + }, + { + "name": "FRR6.0 - VM0.2", + "images": { + "hda_disk_image": "frr6.0-vm0.2.qcow2" + } + }, { "name": "FRR4.0 - VM0.1", "images": { diff --git a/gns3server/appliances/hp-vsr1001.gns3a b/gns3server/appliances/hp-vsr1001.gns3a index c0b7f9c8..6d0fb3fc 100644 --- a/gns3server/appliances/hp-vsr1001.gns3a +++ b/gns3server/appliances/hp-vsr1001.gns3a @@ -1,7 +1,7 @@ { "name": "HPE VSR1001", "category": "router", - "description": "The HP VSR1000 Virtual Services Router Series is a software application, running on a server, which provides functionality similar to that of a physical router: robust routing between networked devices using a number of popular routing protocols. It also delivers the critical network services associated with today's enterprise routers such as VPN gateway, firewall and other security and traffic management functions.\n\nThe virtual services router (VSR) application runs on a hypervqcor on the server, and supports VMware vSphere and Linux KVM hypervqcors. From one to eight virtual CPUs are supported, depending on license.\n\nBecause the VSR1000 Series application runs the same HP Comware version 7 operating system as HP switches and routers, it enables significant operational savings. And being virtual, additional agility and ease of deployment is realized, as resources on the VSR can be dynamically allocated and upgraded upon demand as performance requirements grow.\n\nA variety of deployment models are supported including enterprise branch CPE routing, and cloud offload for small to medium workloads.", + "description": "The HPE VSR1000 Virtual Services Router Series is a software application, running on a server, which provides functionality similar to that of a physical router: robust routing between networked devices using a number of popular routing protocols. It also delivers the critical network services associated with today's enterprise routers such as VPN gateway, firewall and other security and traffic management functions.\n\nThe virtual services router (VSR) application runs on a hypervqcor on the server, and supports VMware vSphere and Linux KVM hypervqcors. From one to eight virtual CPUs are supported, depending on license.\n\nBecause the VSR1000 Series application runs the same HPE Comware version 7 operating system as HPE switches and routers, it enables significant operational savings. And being virtual, additional agility and ease of deployment is realized, as resources on the VSR can be dynamically allocated and upgraded upon demand as performance requirements grow.\n\nA variety of deployment models are supported including enterprise branch CPE routing, and cloud offload for small to medium workloads.", "vendor_name": "HPE", "vendor_url": "http://www.hpe.com", "documentation_url": "https://support.hpe.com/hpesc/public/home/documentHome?document_type=135&sp4ts.oid=5195141", @@ -24,6 +24,13 @@ "options": "-machine type=pc-1.0" }, "images": [ + { + "filename": "VSR1000_HPE-CMW710-E0519L03-X64.qco", + "version": "7.10.E0519L03", + "md5sum": "83e23d27e7c3ef7ce813e6aad31d74f7", + "filesize": 202047488, + "download_url": "https://h10145.www1.hpe.com/Downloads/DownloadSoftware.aspx?SoftwareReleaseUId=23726&ProductNumber=JG811AAE&lang=en&cc=us&prodSeriesId=5443163&SaidNumber=" + }, { "filename": "VSR1000_HPE-CMW710-R0327L01-X64.qco", "version": "7.10.R0327L01", @@ -82,6 +89,12 @@ } ], "versions": [ + { + "name": "7.10.E0519L03", + "images": { + "hda_disk_image": "VSR1000_HPE-CMW710-E0519L03-X64.qco" + } + }, { "name": "7.10.R0327L01", "images": { diff --git a/gns3server/appliances/ipfire.gns3a b/gns3server/appliances/ipfire.gns3a index 616c7e43..bfc08507 100644 --- a/gns3server/appliances/ipfire.gns3a +++ b/gns3server/appliances/ipfire.gns3a @@ -24,6 +24,24 @@ "kvm": "allow" }, "images": [ + { + "filename": "ipfire-2.21.2gb-ext4.x86_64-full-core129.img", + "version": "2.21.129", + "md5sum": "84801c588174763c585967a2851a7769", + "filesize": 1541160960, + "download_url": "http://www.ipfire.org/download", + "direct_download_url": "https://downloads.ipfire.org/releases/ipfire-2.x/2.21-core129/ipfire-2.21.2gb-ext4.x86_64-full-core129.img.xz", + "compression": "xz" + }, + { + "filename": "ipfire-2.21.2gb-ext4.x86_64-full-core124.img", + "version": "2.21.124", + "md5sum": "970a5cafaa0cb4cfbf42772f41d24932", + "filesize": 1541160960, + "download_url": "http://www.ipfire.org/download", + "direct_download_url": "https://downloads.ipfire.org/releases/ipfire-2.x/2.21-core124/ipfire-2.21.2gb-ext4.x86_64-full-core124.img.xz", + "compression": "xz" + }, { "filename": "ipfire-2.19.1gb-ext4-scon.x86_64-full-core119.img", "version": "2.19.119", @@ -80,6 +98,18 @@ } ], "versions": [ + { + "name": "2.21.129", + "images": { + "hda_disk_image": "ipfire-2.21.2gb-ext4.x86_64-full-core129.img" + } + }, + { + "name": "2.21.124", + "images": { + "hda_disk_image": "ipfire-2.21.2gb-ext4.x86_64-full-core124.img" + } + }, { "name": "2.19.119", "images": { diff --git a/gns3server/appliances/juniper-vmx-vcp.gns3a b/gns3server/appliances/juniper-vmx-vcp.gns3a index a07e00f8..4d3ffc5b 100644 --- a/gns3server/appliances/juniper-vmx-vcp.gns3a +++ b/gns3server/appliances/juniper-vmx-vcp.gns3a @@ -43,6 +43,24 @@ "md5sum": "a5b125822b798c7167c35966ea00229a", "filesize": 16777216 }, + { + "filename": "junos-vmx-x86-64-17.3R2.10.qcow2", + "version": "17.3R2.10-KVM", + "md5sum": "11984eb87b471e8cc2677212c4277959", + "filesize": 1298137088 + }, + { + "filename": "vmxhdd-17.3R2.10.img", + "version": "17.3R2.10-KVM", + "md5sum": "9d843e5493d5e86d37853a72885d84c8", + "filesize": 108986368 + }, + { + "filename": "metadata-usb-re-17.3R2.10.img", + "version": "17.3R2.10-KVM", + "md5sum": "564ca5b7c03ed39680d2d42464d9489b", + "filesize": 16777216 + }, { "filename": "vcp_17.1R1.8-disk1.vmdk", "version": "17.1R1.8-ESXi", @@ -308,6 +326,14 @@ "hdc_disk_image": "metadata-usb-re-17.4R1.16.img" } }, + { + "name": "17.3R2.10-KVM", + "images": { + "hda_disk_image": "junos-vmx-x86-64-17.3R2.10.qcow2", + "hdb_disk_image": "vmxhdd-17.3R2.10.img", + "hdc_disk_image": "metadata-usb-re-17.3R2.10.img" + } + }, { "name": "17.1R1.8-ESXi", "images": { diff --git a/gns3server/appliances/juniper-vmx-vfp.gns3a b/gns3server/appliances/juniper-vmx-vfp.gns3a index b7c0c513..697bfb0e 100644 --- a/gns3server/appliances/juniper-vmx-vfp.gns3a +++ b/gns3server/appliances/juniper-vmx-vfp.gns3a @@ -32,6 +32,13 @@ "filesize": 2313158656, "download_url": "http://www.juniper.net/us/en/products-services/routing/mx-series/vmx/" }, + { + "filename": "vFPC-20180126.img", + "version": "17.3R2.10-KVM", + "md5sum": "02d6b719053485c52a511fe6f5a598e3", + "filesize": 2313158656, + "download_url": "http://www.juniper.net/us/en/products-services/routing/mx-series/vmx/" + }, { "filename": "vfpc_17.1R1.8-disk1.vmdk", "version": "17.1R1.8-ESXi", @@ -139,6 +146,12 @@ "hda_disk_image": "vFPC-20171213.img" } }, + { + "name": "17.3R2.10-KVM", + "images": { + "hda_disk_image": "vFPC-20180126.img" + } + }, { "name": "17.1R1.8-ESXi", "images": { diff --git a/gns3server/appliances/kali-linux.gns3a b/gns3server/appliances/kali-linux.gns3a index 742f6956..65e5e9e7 100644 --- a/gns3server/appliances/kali-linux.gns3a +++ b/gns3server/appliances/kali-linux.gns3a @@ -21,12 +21,28 @@ }, "images": [ { - "filename": "kali-linux-2018.3-amd64.iso", - "version": "2018.3", - "md5sum": "6dc3e57177249f73492b9edb95d082d1", - "filesize": 3188391936, + "filename": "kali-linux-2019.1a-amd64.iso", + "version": "2019.1a", + "md5sum": "58c6111ed0be1919ea87267e7e65ab0f", + "filesize": 3483873280, "download_url": "https://www.kali.org/downloads/", - "direct_download_url": "http://cdimage.kali.org/kali-2018.3/kali-linux-2018.3-amd64.iso" + "direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-2019.1a-amd64.iso" + }, + { + "filename": "kali-linux-2018.4-amd64.iso", + "version": "2018.4", + "md5sum": "1b2d598bb8d2003e6207c119c0ba42fe", + "filesize": 3139436544, + "download_url": "https://www.kali.org/downloads/", + "direct_download_url": "http://cdimage.kali.org/kali-2018.4/kali-linux-2018.4-amd64.iso" + }, + { + "filename": "kali-linux-2018.3a-amd64.iso", + "version": "2018.3a", + "md5sum": "2da675d016bd690c05e180e33aa98b94", + "filesize": 3192651776, + "download_url": "https://www.kali.org/downloads/", + "direct_download_url": "http://cdimage.kali.org/kali-2018.3a/kali-linux-2018.3a-amd64.iso" }, { "filename": "kali-linux-2018.1-amd64.iso", @@ -87,11 +103,24 @@ ], "versions": [ { - "name": "2018.3", + "name": "2019.1a", + "images": { + "cdrom_image": "kali-linux-2019.1a-amd64.iso" + } + }, + { + "name": "2018.4", + "images": { + "cdrom_image": "kali-linux-2018.4-amd64.iso" + } + }, + { + "name": "2018.3a", "images": { - "cdrom_image": "kali-linux-2018.3-amd64.iso" + "cdrom_image": "kali-linux-2018.3a-amd64.iso" } - }, { + }, + { "name": "2018.1", "images": { "cdrom_image": "kali-linux-2018.1-amd64.iso" diff --git a/gns3server/appliances/kemp-vlm.gns3a b/gns3server/appliances/kemp-vlm.gns3a index b873db5c..16f1beb2 100644 --- a/gns3server/appliances/kemp-vlm.gns3a +++ b/gns3server/appliances/kemp-vlm.gns3a @@ -26,6 +26,13 @@ "options": "-smp 2" }, "images": [ + { + "filename": "LoadMaster-VLM-7.2.44.0.16685.RELEASE-Linux-KVM-XEN-FREE.disk", + "version": "7.2.44.0", + "md5sum": "90d2f84fcabe0ba530c84cf12fab87f1", + "filesize": 17179869185, + "download_url": "http://freeloadbalancer.com/download/" + }, { "filename": "LoadMaster-VLM-7.2.40.0.15707.RELEASE-Linux-KVM-XEN-FREE.disk", "version": "7.2.40.0", @@ -63,6 +70,12 @@ } ], "versions": [ + { + "name": "7.2.44.0", + "images": { + "hda_disk_image": "LoadMaster-VLM-7.2.44.0.16685.RELEASE-Linux-KVM-XEN-FREE.disk" + } + }, { "name": "7.2.40.0", "images": { diff --git a/gns3server/appliances/kerio-connect.gns3a b/gns3server/appliances/kerio-connect.gns3a index 206e91bb..c5117fc2 100644 --- a/gns3server/appliances/kerio-connect.gns3a +++ b/gns3server/appliances/kerio-connect.gns3a @@ -24,6 +24,14 @@ "kvm": "require" }, "images": [ + { + "filename": "kerio-connect-appliance-9.2.7-4225-p3-vmware-amd64-disk1.vmdk", + "version": "9.2.7p3", + "md5sum": "12950c8244300f1d86c85c109f0b3413", + "filesize": 914165248, + "download_url": "http://www.kerio.com/support/kerio-connect", + "direct_download_url": "http://cdn.kerio.com/dwn/connect/connect-9.2.7-4225/kerio-connect-appliance-9.2.7-4225-p3-vmware-amd64-disk1.vmdk" + }, { "filename": "kerio-connect-appliance-9.2.6-3851-p1-vmware-amd64-disk1.vmdk", "version": "9.2.6p1", @@ -75,6 +83,12 @@ } ], "versions": [ + { + "name": "9.2.7p3", + "images": { + "hda_disk_image": "kerio-connect-appliance-9.2.7-4225-p3-vmware-amd64-disk1.vmdk" + } + }, { "name": "9.2.6p1", "images": { diff --git a/gns3server/appliances/kerio-control.gns3a b/gns3server/appliances/kerio-control.gns3a index 02a868bb..1b2904e7 100644 --- a/gns3server/appliances/kerio-control.gns3a +++ b/gns3server/appliances/kerio-control.gns3a @@ -23,6 +23,22 @@ "kvm": "require" }, "images": [ + { + "filename": "kerio-control-appliance-9.3.0-3273-vmware-disk1.vmdk", + "version": "9.3.0", + "md5sum": "6e6faf64b4ffce8b5639cdfce11ba31e", + "filesize": 192825856, + "download_url": "http://www.kerio.com/support/kerio-control", + "direct_download_url": "http://cdn.kerio.com/dwn/control/control-9.3.0-3273/kerio-control-appliance-9.3.0-3273-vmware-disk1.vmdk" + }, + { + "filename": "kerio-control-appliance-9.2.7-2921-vmware-disk1.vmdk", + "version": "9.2.7", + "md5sum": "d286a240be53f8dd9da5f80deb9086b0", + "filesize": 191135232, + "download_url": "http://www.kerio.com/support/kerio-control", + "direct_download_url": "http://cdn.kerio.com/dwn/control/control-9.2.7-2921/kerio-control-appliance-9.2.7-2921-vmware-disk1.vmdk" + }, { "filename": "kerio-control-appliance-9.2.5-2641-p5-vmware-disk1.vmdk", "version": "9.2.5p5", @@ -71,6 +87,18 @@ "direct_download_url": "http://cdn.kerio.com/dwn/control/control-9.1.4-1535/kerio-control-appliance-9.1.4-1535-vmware.vmdk" } ], "versions": [ + { + "name": "9.3.0", + "images": { + "hda_disk_image": "kerio-control-appliance-9.3.0-3273-vmware-disk1.vmdk" + } + }, + { + "name": "9.2.7", + "images": { + "hda_disk_image": "kerio-control-appliance-9.2.7-2921-vmware-disk1.vmdk" + } + }, { "name": "9.2.5p5", "images": { diff --git a/gns3server/appliances/kerio-operator.gns3a b/gns3server/appliances/kerio-operator.gns3a index 7d1d1781..7d4bf307 100644 --- a/gns3server/appliances/kerio-operator.gns3a +++ b/gns3server/appliances/kerio-operator.gns3a @@ -24,6 +24,14 @@ "kvm": "require" }, "images": [ + { + "filename": "kerio-operator-appliance-2.6.4-9320-vmware-disk1.vmdk", + "version": "2.6.4", + "md5sum": "3823565dbc96069dc556158ebbbfb977", + "filesize": 307840512, + "download_url": "http://www.kerio.com/support/kerio-operator", + "direct_download_url": "http://cdn.kerio.com/dwn/operator/operator-2.6.4-9320/kerio-operator-appliance-2.6.4-9320-vmware-disk1.vmdk" + }, { "filename": "kerio-operator-appliance-2.6.2-9085-vmware-disk1.vmdk", "version": "2.6.2", @@ -74,6 +82,12 @@ } ], "versions": [ + { + "name": "2.6.4", + "images": { + "hda_disk_image": "kerio-operator-appliance-2.6.4-9320-vmware-disk1.vmdk" + } + }, { "name": "2.6.2", "images": { diff --git a/gns3server/appliances/lede.gns3a b/gns3server/appliances/lede.gns3a deleted file mode 100644 index 74c388a4..00000000 --- a/gns3server/appliances/lede.gns3a +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "LEDE", - "category": "router", - "description": "LEDE is a highly extensible GNU/Linux distribution for embedded devices (typically wireless routers). Unlike many other distributions for these routers, OpenWrt is built from the ground up to be a full-featured, easily modifiable operating system for your router. In practice, this means that you can have all the features you need with none of the bloat, powered by a Linux kernel that's more recent than most other distributions.", - "vendor_name": "LEDE Project", - "vendor_url": "https://lede-project.org/", - "documentation_url": "http://wiki.openwrt.org/doc/", - "product_name": "LEDE", - "product_url": "https://lede-project.org/", - "registry_version": 3, - "status": "stable", - "maintainer": "GNS3 Team", - "maintainer_email": "developers@gns3.net", - "usage": "Ethernet0 is the LAN link, Ethernet1 the WAN link.", - "qemu": { - "adapter_type": "virtio-net-pci", - "adapters": 2, - "ram": 64, - "arch": "i386", - "console_type": "telnet", - "kvm": "allow" - }, - "images": [ - { - "filename": "lede-17.01.4-x86-generic-combined-squashfs.img", - "version": "17.01.4", - "md5sum": "ae5d8d3fcab109565fe337d28e51c4b4", - "filesize": 19779546, - "download_url": "https://downloads.lede-project.org/releases/17.01.4/targets/x86/generic/", - "direct_download_url": "https://downloads.lede-project.org/releases/17.01.4/targets/x86/generic/lede-17.01.4-x86-generic-combined-squashfs.img" - }, - { - "filename": "lede-17.01.3-x86-generic-combined-squashfs.img", - "version": "17.01.3", - "md5sum": "d315fc638160a9aec0966d58828bfccf", - "filesize": 19775618, - "download_url": "https://downloads.lede-project.org/releases/17.01.3/targets/x86/generic/", - "direct_download_url": "https://downloads.lede-project.org/releases/17.01.3/targets/x86/generic/lede-17.01.3-x86-generic-combined-squashfs.img" - }, - { - "filename": "lede-17.01.2-x86-generic-combined-squashfs.img", - "version": "17.01.2", - "md5sum": "a466e493ef12935dad5e0c622b1a7859", - "filesize": 19774794, - "download_url": "https://downloads.lede-project.org/releases/17.01.2/targets/x86/generic/", - "direct_download_url": "https://downloads.lede-project.org/releases/17.01.2/targets/x86/generic/lede-17.01.2-x86-generic-combined-squashfs.img" - }, - { - "filename": "lede-17.01.1-x86-generic-combined-squashfs.img", - "version": "17.01.1", - "md5sum": "b050e734c605a34a429389c752ae7c30", - "filesize": 19771166, - "download_url": "https://downloads.lede-project.org/releases/17.01.1/targets/x86/generic/", - "direct_download_url": "https://downloads.lede-project.org/releases/17.01.1/targets/x86/generic/lede-17.01.1-x86-generic-combined-squashfs.img" - }, - { - "filename": "lede-17.01.0-r3205-59508e3-x86-generic-combined-squashfs.img", - "version": "17.01.0", - "md5sum": "3c5e068d50a377d4e26b548ab1ca7b1e", - "filesize": 19755118, - "download_url": "https://downloads.lede-project.org/releases/17.01.0/targets/x86/generic/", - "direct_download_url": "https://downloads.lede-project.org/releases/17.01.0/targets/x86/generic/lede-17.01.0-r3205-59508e3-x86-generic-combined-squashfs.img" - } - ], - "versions": [ - { - "name": "lede 17.01.4", - "images": { - "hda_disk_image": "lede-17.01.4-x86-generic-combined-squashfs.img" - } - }, - { - "name": "lede 17.01.3", - "images": { - "hda_disk_image": "lede-17.01.3-x86-generic-combined-squashfs.img" - } - }, - { - "name": "lede 17.01.2", - "images": { - "hda_disk_image": "lede-17.01.2-x86-generic-combined-squashfs.img" - } - }, - { - "name": "lede 17.01.1", - "images": { - "hda_disk_image": "lede-17.01.1-x86-generic-combined-squashfs.img" - } - }, - { - "name": "lede 17.01.0", - "images": { - "hda_disk_image": "lede-17.01.0-r3205-59508e3-x86-generic-combined-squashfs.img" - } - } - ] -} diff --git a/gns3server/appliances/mikrotik-chr.gns3a b/gns3server/appliances/mikrotik-chr.gns3a index fefae16a..ac0a42ba 100644 --- a/gns3server/appliances/mikrotik-chr.gns3a +++ b/gns3server/appliances/mikrotik-chr.gns3a @@ -26,6 +26,33 @@ "options": "-nographic" }, "images": [ + { + "filename": "chr-6.44.2.img", + "version": "6.44.2", + "md5sum": "f1ddaa47829e12c1f9f023d8c06b88cc", + "filesize": 67108864, + "download_url": "http://www.mikrotik.com/download", + "direct_download_url": "https://download.mikrotik.com/routeros/6.44.2/chr-6.44.2.img.zip", + "compression": "zip" + }, + { + "filename": "chr-6.43.8.img", + "version": "6.43.8", + "md5sum": "9437133fc7e77779dc3ff62b98f30dc2", + "filesize": 134217728, + "download_url": "http://www.mikrotik.com/download", + "direct_download_url": "https://download2.mikrotik.com/routeros/6.43.8/chr-6.43.8.img.zip", + "compression": "zip" + }, + { + "filename": "chr-6.42.9.img", + "version": "6.42.9", + "md5sum": "1f856978cfc3ceb4b5e18e4e079f2e32", + "filesize": 134217728, + "download_url": "http://www.mikrotik.com/download", + "direct_download_url": "https://download2.mikrotik.com/routeros/6.42.9/chr-6.42.9.img.zip", + "compression": "zip" + }, { "filename": "chr-6.42.img", "version": "6.42", @@ -262,6 +289,24 @@ } ], "versions": [ + { + "name": "6.44.2", + "images": { + "hda_disk_image": "chr-6.44.2.img" + } + }, + { + "name": "6.43.8", + "images": { + "hda_disk_image": "chr-6.43.8.img" + } + }, + { + "name": "6.42.9", + "images": { + "hda_disk_image": "chr-6.42.9.img" + } + }, { "name": "6.41.4", "images": { diff --git a/gns3server/appliances/mininet.gns3a b/gns3server/appliances/mininet.gns3a new file mode 100644 index 00000000..80900c2b --- /dev/null +++ b/gns3server/appliances/mininet.gns3a @@ -0,0 +1,46 @@ +{ + "category": "guest", + "status": "stable", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "description": "Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine (VM, cloud or native), in seconds, with a single command.", + "product_name": "Mininet", + "registry_version": 4, + "product_url": "http://mininet.org/", + "documentation_url": "http://mininet.org/walkthrough/", + "first_port_name": "eth0", + "usage": "Username: mininet\nPassword: mininet", + "port_name_format": "eth{0}", + "vendor_name": "Mininet Team", + "qemu": { + "adapters": 1, + "adapter_type": "virtio-net-pci", + "arch": "x86_64", + "ram": 2048, + "console_type": "vnc", + "hda_disk_interface": "virtio", + "kvm": "allow" + }, + "availability": "free", + "vendor_url": "http://mininet.org/", + "name": "Mininet", + "images": [ + { + "filename": "mininet-vm-x86_64.vmdk", + "version": "2.2.2", + "md5sum": "a683441642300bdaf37b8e614de85342", + "filesize": 2047868928, + "download_url": "https://github.com/mininet/mininet/releases/", + "direct_download_url": "https://github.com/mininet/mininet/releases/download/2.2.2/mininet-2.2.2-170321-ubuntu-14.04.4-server-amd64.zip", + "compression": "zip" + } + ], + "versions": [ + { + "images": { + "hda_disk_image": "mininet-vm-x86_64.vmdk" + }, + "name": "2.2.2" + } + ] +} diff --git a/gns3server/appliances/op5-monitor.gns3a b/gns3server/appliances/op5-monitor.gns3a index 9a612293..ee73a787 100644 --- a/gns3server/appliances/op5-monitor.gns3a +++ b/gns3server/appliances/op5-monitor.gns3a @@ -25,6 +25,13 @@ "kvm": "require" }, "images": [ + { + "filename": "op5-Monitor-Virtual-Appliance-7.4.10.x86_64-disk1.vmdk", + "version": "7.4.10", + "md5sum": "48ec6d7ee3809d9ed705a089c679e076", + "filesize": 1111941120, + "download_url": "https://www.op5.com/download/" + }, { "filename": "op5-Monitor-Virtual-Appliance-7.3.15.x86_64.vmdk", "version": "7.3.15", @@ -34,6 +41,12 @@ } ], "versions": [ + { + "name": "7.4.10", + "images": { + "hda_disk_image": "op5-Monitor-Virtual-Appliance-7.4.10.x86_64-disk1.vmdk" + } + }, { "name": "7.3.15", "images": { diff --git a/gns3server/appliances/openwrt.gns3a b/gns3server/appliances/openwrt.gns3a index 3e70cafc..84a1bdbc 100644 --- a/gns3server/appliances/openwrt.gns3a +++ b/gns3server/appliances/openwrt.gns3a @@ -11,31 +11,76 @@ "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Ethernet0 is the LAN link, Ethernet1 the WAN link.", + "usage": "Ethernet0 is the LAN link, Ethernet1 the WAN link, Ethernet2 and Ethernet3 are optional links.", "qemu": { "adapter_type": "virtio-net-pci", - "adapters": 2, - "ram": 64, - "arch": "i386", + "adapters": 4, + "ram": 128, + "arch": "x86_64", "console_type": "telnet", "kvm": "allow" }, "images": [ { - "filename": "openwrt-15.05.1-x86-kvm_guest-combined-ext4.img", + "filename": "openwrt-18.06.2-x86-64-combined-ext4.img", + "version": "18.06.2", + "md5sum": "d112cd432bf51e2ddadbf9513f272fd9", + "filesize": 285736960, + "download_url": "https://downloads.openwrt.org/releases/18.06.2/targets/x86/64/", + "direct_download_url": "https://downloads.openwrt.org/releases/18.06.2/targets/x86/64/openwrt-18.06.2-x86-64-combined-ext4.img.gz", + "compression": "gzip" + }, + { + "filename": "openwrt-18.06.1-x86-64-combined-ext4.img", + "version": "18.06.1", + "md5sum": "3e2da47c5c2496b6df364a60ded8f40a", + "filesize": 285736960, + "download_url": "https://downloads.openwrt.org/releases/18.06.1/targets/x86/64/", + "direct_download_url": "https://downloads.openwrt.org/releases/18.06.1/targets/x86/64/openwrt-18.06.1-x86-64-combined-ext4.img.gz", + "compression": "gzip" + }, + { + "filename": "lede-17.01.6-x86-64-combined-ext4.img", + "version": "17.01.6", + "md5sum": "015c0d5038ddd469fbdabce7eb5265dc", + "filesize": 285736960, + "download_url": "https://downloads.openwrt.org/releases/17.01.6/targets/x86/64/", + "direct_download_url": "https://downloads.openwrt.org/releases/17.01.6/targets/x86/64/lede-17.01.6-x86-64-combined-ext4.img.gz", + "compression": "gzip" + }, + { + "filename": "openwrt-15.05.1-x86-64-combined-ext4.img", "version": "15.05.1", - "md5sum": "d02f5224b7fbe929efa4d3f10f4dc996", + "md5sum": "307d8cdb11faeb1b5e27fe55078bd152", "filesize": 55050240, - "download_url": "http://downloads.openwrt.org/chaos_calmer/15.05.1/x86/kvm_guest/", - "direct_download_url": "https://downloads.openwrt.org/chaos_calmer/15.05.1/x86/kvm_guest/openwrt-15.05.1-x86-kvm_guest-combined-ext4.img.gz", + "download_url": "http://archive.openwrt.org/chaos_calmer/15.05.1/x86/64/", + "direct_download_url": "http://archive.openwrt.org/chaos_calmer/15.05.1/x86/64/openwrt-15.05.1-x86-64-combined-ext4.img.gz", "compression": "gzip" } ], "versions": [ { - "name": "Chaos Calmer 15.05.1", + "name": "openwrt 18.06.2", + "images": { + "hda_disk_image": "openwrt-18.06.2-x86-64-combined-ext4.img" + } + }, + { + "name": "openwrt 18.06.1", + "images": { + "hda_disk_image": "openwrt-18.06.1-x86-64-combined-ext4.img" + } + }, + { + "name": "openwrt/lede 17.01.6", + "images": { + "hda_disk_image": "lede-17.01.6-x86-64-combined-ext4.img" + } + }, + { + "name": "openwrt 15.05.1", "images": { - "hda_disk_image": "openwrt-15.05.1-x86-kvm_guest-combined-ext4.img" + "hda_disk_image": "openwrt-15.05.1-x86-64-combined-ext4.img" } } ] diff --git a/gns3server/appliances/packetfence-zen.gns3a b/gns3server/appliances/packetfence-zen.gns3a index efc68820..90e34d17 100644 --- a/gns3server/appliances/packetfence-zen.gns3a +++ b/gns3server/appliances/packetfence-zen.gns3a @@ -22,6 +22,24 @@ "kvm": "require" }, "images": [ + { + "filename": "PacketFenceZEN_USB-8.3.0.img", + "version": "8.3.0", + "md5sum": "b9de52dc2513220ad42d350486da4884", + "filesize": 3221225472, + "download_url": "https://packetfence.org/download.html#/zen", + "direct_download_url": "https://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/8.3.0/PacketFenceZEN_USB-8.3.0.tar.bz2/download", + "compression": "bzip2" + }, + { + "filename": "PacketFenceZEN_USB-8.1.0.img", + "version": "8.1.0", + "md5sum": "f326f0e70b35d598c8b84ee3fc9c611f", + "filesize": 3221225472, + "download_url": "https://packetfence.org/download.html#/zen", + "direct_download_url": "https://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/8.1.0/PacketFenceZEN_USB-8.1.0.tar.bz2/download", + "compression": "bzip2" + }, { "filename": "PacketFenceZEN_USB-7.4.0.img", "version": "7.4.0", @@ -105,6 +123,18 @@ } ], "versions": [ + { + "name": "8.3.0", + "images": { + "hda_disk_image": "PacketFenceZEN_USB-8.3.0.img" + } + }, + { + "name": "8.1.0", + "images": { + "hda_disk_image": "PacketFenceZEN_USB-8.1.0.img" + } + }, { "name": "7.4.0", "images": { diff --git a/gns3server/appliances/parrot-os.gns3a b/gns3server/appliances/parrot-os.gns3a new file mode 100644 index 00000000..1146ed32 --- /dev/null +++ b/gns3server/appliances/parrot-os.gns3a @@ -0,0 +1,53 @@ +{ + "name": "ParrotOS", + "category": "guest", + "description": " Parrot is a GNU/Linux distribution based on Debian Testing and designed with Security, Development and Privacy in mind. It includes a full portable laboratory for security and digital forensics experts, but it also includes all you need to develop your own software or protect your privacy while surfing the net.", + "vendor_name": "Parrot Project", + "vendor_url": "https://parrotsec.org/", + "documentation_url": "https://docs.parrotsec.org/doku.php", + "product_name": "ParrotOS", + "product_url": "https://parrotsec.org/", + "registry_version": 3, + "status": "stable", + "maintainer": "Brent Stewart", + "maintainer_email": "brent@stewart.tc", + "usage": "Passwords are set during installation.", + "symbol": "parrotlogo.png", + "qemu": { + "adapter_type": "e1000", + "adapters": 1, + "ram": 2048, + "arch": "x86_64", + "console_type": "vnc", + "kvm": "require" + }, + "images": [ + { + "filename": "Parrot-security-3.11_amd64.iso", + "version": "Security Build 3.11", + "md5sum": "71c94474fb474f682da0844d95f0040b", + "filesize": 3788668928, + "download_url": "https://www.parrotsec.org/download.fx", + "direct_download_url": "https://www.parrotsec.org/download-full.fx" + }, + { + "filename": "empty30G.qcow2", + "version": "1.0", + "md5sum": "3411a599e822f2ac6be560a26405821a", + "filesize": 197120, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%30disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty30G.qcow2/download" + } + + ], + "versions": [ + { + "name": "Security Build 3.11", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "Parrot-security-3.11_amd64.iso" + } + } + +] +} diff --git a/gns3server/appliances/pfsense.gns3a b/gns3server/appliances/pfsense.gns3a index 8b14db06..ae66160b 100644 --- a/gns3server/appliances/pfsense.gns3a +++ b/gns3server/appliances/pfsense.gns3a @@ -2,51 +2,50 @@ "name": "pfSense", "category": "firewall", "description": "The pfSense project is a free network firewall distribution, based on the FreeBSD operating system with a custom kernel and including third party free software packages for additional functionality. pfSense software, with the help of the package system, is able to provide the same functionality or more of common commercial firewalls, without any of the artificial limitations. It has successfully replaced every big name commercial firewall you can imagine in numerous installations around the world, including Check Point, Cisco PIX, Cisco ASA, Juniper, Sonicwall, Netgear, Watchguard, Astaro, and more.", - "vendor_name": "Electric Sheep Fencing LLC", + "vendor_name": "Rubicon Communications, LLC (Netgate)", "vendor_url": "https://www.pfsense.org", "documentation_url": "https://doc.pfsense.org/index.php/Main_Page", "product_name": "pfSense", "registry_version": 3, "status": "stable", - "maintainer": "GNS3 Team", - "maintainer_email": "developers@gns3.net", + "maintainer": "Jose Phillips", + "maintainer_email": "jose@latinol.com", + "usage": "Credentials: admin / pfsense\nTo install pfSense use all the defaults settings.\n\nNote:The default LAN port is em1.", "port_name_format": "em{0}", "qemu": { "adapter_type": "e1000", "adapters": 6, "ram": 2048, "arch": "x86_64", - "console_type": "telnet", + "console_type": "vnc", + "hda_disk_interface": "virtio", "kvm": "allow", "process_priority": "normal" }, "images": [ { - "filename": "pfSense-CE-memstick-2.4.3-RELEASE-amd64.img", - "version": "2.4.3", - "md5sum": "b754d7e75dece5e756b6539c95714a74", - "filesize": 650392576, + "filename": "pfSense-CE-2.4.4-RELEASE-amd64.iso", + "version": "2.4.4", + "md5sum": "71386433238f96fc167d14cec9c708c6", + "filesize": 685557760, "download_url": "https://www.pfsense.org/download/mirror.php?section=downloads" }, { - "filename": "pfSense-CE-2.3.5-RELEASE-2g-amd64-nanobsd.img", - "version": "2.3.5", - "md5sum": "b6cb76adba3e1113892f84ea01894228", - "filesize": 1989969408, - "download_url": "https://www.pfsense.org/download/mirror.php?section=downloads" + "filename": "empty100G.qcow2", + "version": "1.0", + "md5sum": "1e6409a4523ada212dea2ebc50e50a65", + "filesize": 197120, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/", + "direct_download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty100G.qcow2/download" } + ], "versions": [ { - "name": "2.4.3", - "images": { - "hda_disk_image": "pfSense-CE-memstick-2.4.3-RELEASE-amd64.img" - } - }, - { - "name": "2.3.5", + "name": "2.4.4", "images": { - "hda_disk_image": "pfSense-CE-2.3.5-RELEASE-2g-amd64-nanobsd.img" + "hda_disk_image": "empty100G.qcow2", + "cdrom_image": "pfSense-CE-2.4.4-RELEASE-amd64.iso" } } ] diff --git a/gns3server/appliances/proxmox-mg.gns3a b/gns3server/appliances/proxmox-mg.gns3a index 56d2a774..2f00d6e6 100644 --- a/gns3server/appliances/proxmox-mg.gns3a +++ b/gns3server/appliances/proxmox-mg.gns3a @@ -24,6 +24,14 @@ "kvm": "require" }, "images": [ + { + "filename": "proxmox-mailgateway_5.1-1.iso", + "version": "5.1-1", + "md5sum": "e629d5ff3213ff3ffbe5a8ab8ef87489", + "filesize": 724660224, + "download_url": "http://www.proxmox.com/en/downloads", + "direct_download_url": "https://www.proxmox.com/en/downloads?task=callelement&format=raw&item_id=415&element=f85c494b-2b32-4109-b8c1-083cca2b7db6&method=download&args[0]=7348486df9daacc8bd891a1d7ef1e5cb" + }, { "filename": "proxmox-mailgateway_4.1-5.iso", "version": "4.1-5", @@ -42,6 +50,13 @@ } ], "versions": [ + { + "name": "5.1-1", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "proxmox-mailgateway_5.1-1.iso" + } + }, { "name": "4.1-5", "images": { diff --git a/gns3server/appliances/security-onion.gns3a b/gns3server/appliances/security-onion.gns3a index c2011f4d..f894fbe1 100644 --- a/gns3server/appliances/security-onion.gns3a +++ b/gns3server/appliances/security-onion.gns3a @@ -22,12 +22,20 @@ "kvm": "allow" }, "images": [ + { + "filename": "securityonion-16.04.5.3.iso", + "version": "16.04.5.3", + "md5sum": "886b369548c9c3841bc820cc3ab02bd9", + "filesize": 1895825408, + "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/", + "direct_download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v16.04.5.3_20181010/securityonion-16.04.5.3.iso" + }, { "filename": "securityonion-14.04.5.4.iso", "version": "14.04.5.4", "md5sum": "9c7cab756b675beb10de4274a3ad3bc6", "filesize": 1874853888, - "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v14.04.5.4_20171031/securityonion-14.04.5.4.iso", + "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/", "direct_download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v14.04.5.4_20171031/securityonion-14.04.5.4.iso" }, { @@ -35,7 +43,7 @@ "version": "14.04.5.3", "md5sum": "fb80ccb2d3c0f3f511823fa5858f87d1", "filesize": 1889533952, - "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v14.04.5.4_20171031/securityonion-14.04.5.3.iso", + "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/", "direct_download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v14.04.5.4_20171031/securityonion-14.04.5.3.iso" }, { @@ -49,6 +57,13 @@ ], "versions": [ + { + "name": "16.04.5.3", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "securityonion-16.04.5.3.iso" + } + }, { "name": "14.04.5.4", "images": { diff --git a/gns3server/appliances/sophos-iview.gns3a b/gns3server/appliances/sophos-iview.gns3a index 0ef5a699..59670f7a 100644 --- a/gns3server/appliances/sophos-iview.gns3a +++ b/gns3server/appliances/sophos-iview.gns3a @@ -24,6 +24,13 @@ "kvm": "require" }, "images": [ + { + "filename": "VI-SIVOS_03.01.2.KVM-009-PRIMARY.qcow2", + "version": "3.1.2", + "md5sum": "62551f70f71e08283d3a23929321eba9", + "filesize": 644218880, + "download_url": "https://secure2.sophos.com/en-us/products/next-gen-firewall/free-trial.aspx" + }, { "filename": "VI-SIVOS_02.00.0_MR-2.KVM-776-PRIMARY.qcow2", "version": "2.0.0 MR2", @@ -32,7 +39,7 @@ "download_url": "https://secure2.sophos.com/en-us/products/next-gen-firewall/free-trial.aspx" }, { - "filename": "VI-SIVOS_02.00.0_MR-2.KVM-776-AUXILARY.qcow2", + "filename": "VI-SIVOS-AUXILARY.qcow2", "version": "2.0.0 MR2", "md5sum": "a52d8cedb1ccd4b5b9f2723dfb41588b", "filesize": 204800, @@ -40,11 +47,18 @@ } ], "versions": [ + { + "name": "3.1.2", + "images": { + "hda_disk_image": "VI-SIVOS_03.01.2.KVM-009-PRIMARY.qcow2", + "hdb_disk_image": "VI-SIVOS-AUXILARY.qcow2" + } + }, { "name": "2.0.0 MR2", "images": { "hda_disk_image": "VI-SIVOS_02.00.0_MR-2.KVM-776-PRIMARY.qcow2", - "hdb_disk_image": "VI-SIVOS_02.00.0_MR-2.KVM-776-AUXILARY.qcow2" + "hdb_disk_image": "VI-SIVOS-AUXILARY.qcow2" } } ] diff --git a/gns3server/appliances/sophos-utm.gns3a b/gns3server/appliances/sophos-utm.gns3a index 30584d40..431e991c 100644 --- a/gns3server/appliances/sophos-utm.gns3a +++ b/gns3server/appliances/sophos-utm.gns3a @@ -24,6 +24,13 @@ "kvm": "allow" }, "images": [ + { + "filename": "asg-9.510-5.1.iso", + "version": "9.510-5.1", + "md5sum": "ae21f96686f238c25941fd3240c7da5b", + "filesize": 871266304, + "download_url": "https://www.sophos.com/en-us/support/utm-downloads.aspx" + }, { "filename": "asg-9.506-2.1.iso", "version": "9.506-2.1", @@ -139,6 +146,13 @@ } ], "versions": [ + { + "name": "9.510-5.1", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "asg-9.510-5.1.iso" + } + }, { "name": "9.506-2.1", "images": { diff --git a/gns3server/appliances/sophos-xg.gns3a b/gns3server/appliances/sophos-xg.gns3a index d190ee48..e17a9b67 100644 --- a/gns3server/appliances/sophos-xg.gns3a +++ b/gns3server/appliances/sophos-xg.gns3a @@ -23,6 +23,20 @@ "kvm": "require" }, "images": [ + { + "filename": "VI-17.1.3_MR-3.KVM-250-PRIMARY.qcow2", + "version": "17.1.3 MR3", + "md5sum": "f11c4f63656bcdacbd27c44c52416941", + "filesize": 298844160, + "download_url": "https://secure2.sophos.com/en-us/products/next-gen-firewall/free-trial.aspx" + }, + { + "filename": "VI-17.1.3_MR-3.KVM-250-AUXILARY.qcow2", + "version": "17.1.3 MR3", + "md5sum": "fbea59f7aa81f305bea78c86f82dc3a6", + "filesize": 59441152, + "download_url": "https://secure2.sophos.com/en-us/products/next-gen-firewall/free-trial.aspx" + }, { "filename": "VI-SFOS_17.0.2_MR-2.KVM-116-PRIMARY.qcow2", "version": "17.0.2 MR2", @@ -32,7 +46,7 @@ }, { "filename": "VI-SFOS_17.0.2_MR-2.KVM-116-AUXILARY.qcow2", - "version": "16.05.1 MR1", + "version": "17.0.2 MR2", "md5sum": "c3ef795423dbfc01771348b0daa75125", "filesize": 59441152, "download_url": "https://secure2.sophos.com/en-us/products/next-gen-firewall/free-trial.aspx" @@ -46,7 +60,7 @@ }, { "filename": "VI-SFOS_16.05.4_MR-4.KVM-215-AUXILARY.qcow2", - "version": "16.05.1 MR1", + "version": "16.05.4 MR4", "md5sum": "cafac2d997a3ead087d5823b86ce6cb4", "filesize": 59441152, "download_url": "https://secure2.sophos.com/en-us/products/next-gen-firewall/free-trial.aspx" @@ -109,6 +123,13 @@ } ], "versions": [ + { + "name": "17.1.3 MR3", + "images": { + "hda_disk_image": "VI-17.1.3_MR-3.KVM-250-PRIMARY.qcow2", + "hdb_disk_image": "VI-17.1.3_MR-3.KVM-250-AUXILARY.qcow2" + } + }, { "name": "17.0.2 MR2", "images": { diff --git a/gns3server/appliances/turnkey-wordpress.gns3a b/gns3server/appliances/turnkey-wordpress.gns3a index bb8a13b9..978f49fb 100644 --- a/gns3server/appliances/turnkey-wordpress.gns3a +++ b/gns3server/appliances/turnkey-wordpress.gns3a @@ -13,7 +13,7 @@ "usage": "For security reasons there are no default passwords. All passwords are set at system initialization time.", "docker": { "adapters": 1, - "image": "turnkeylinux/wordpress-14.2:latest", + "image": "turnkeylinux/wordpress:latest", "console_type": "telnet" } } diff --git a/gns3server/appliances/untangle.gns3a b/gns3server/appliances/untangle.gns3a index 236400ea..26958027 100644 --- a/gns3server/appliances/untangle.gns3a +++ b/gns3server/appliances/untangle.gns3a @@ -24,6 +24,20 @@ "kvm": "allow" }, "images": [ + { + "filename": "untangle_1410_x64.iso", + "version": "14.1.0", + "md5sum": "49bb09e4796f225f482ca1d9c93de66b", + "filesize": 682622976, + "download_url": "https://www.untangle.com/get-untangle/" + }, + { + "filename": "untangle_1401_x64.iso", + "version": "14.0.1", + "md5sum": "d9c01afd8bf4b5dfdc40c22aa3b2fd98", + "filesize": 680525824, + "download_url": "https://www.untangle.com/get-untangle/" + }, { "filename": "untangle_1321_x64.iso", "version": "13.2.1", @@ -104,6 +118,20 @@ } ], "versions": [ + { + "name": "14.1.0", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "untangle_1410_x64.iso" + } + }, + { + "name": "14.0.1", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "untangle_1401_x64.iso" + } + }, { "name": "13.2.1", "images": { diff --git a/gns3server/appliances/vpp.gns3a b/gns3server/appliances/vpp.gns3a new file mode 100644 index 00000000..cbd39997 --- /dev/null +++ b/gns3server/appliances/vpp.gns3a @@ -0,0 +1,46 @@ +{ + "name": "VPP", + "category": "router", + "description": "Vector Packet Processing (VPP) platform", + "vendor_name": "FD.IO VPP router", + "vendor_url": "https://fd.io/", + "documentation_url": "https://fd.io/resources/", + "product_name": "VPP", + "registry_version": 4, + "status": "experimental", + "availability": "free", + "maintainer": "Virginijus Magelinskas", + "maintainer_email": "virginijus.m@gmail.com", + "usage": "Login: root , pass: vpp. This appliance requires >2 vCPUs and 4GB of RAM to run", + "port_name_format": "eth{0}", + "qemu": { + "adapter_type": "virtio-net-pci", + "adapters": 5, + "ram": 4096, + "hda_disk_interface": "ide", + "arch": "x86_64", + "console_type": "telnet", + "boot_priority": "c", + "kvm": "require", + "options": "-nographic -cpu host -smp 2" + }, + "images": [ + { + "filename": "vpp_public-18.10-07.qcow2", + "version": "0.7", + "md5sum": "3e962985e5bbda0de4dc7893e60f6366", + "filesize": 2065825792, + "direct_download_url": "https://sigaba.net/vpp/vpp_public-18.10-07.qcow2" + } + ], + "versions": [ + + { + "name": "18.10-07", + "images": { + "hda_disk_image": "vpp_public-18.10-07.qcow2" + } + } + ] +} + diff --git a/gns3server/appliances/windows.gns3a b/gns3server/appliances/windows.gns3a index ac84deee..d8c0dc83 100644 --- a/gns3server/appliances/windows.gns3a +++ b/gns3server/appliances/windows.gns3a @@ -27,10 +27,10 @@ }, "images": [ { - "filename": "MSEdge-Win10-VMWare-disk1.vmdk", + "filename": "MSEdge-Win10-VMware-disk1.vmdk", "version": "10 w/ Edge", - "md5sum": "fef74c69e1949480d4e2095324a169af", - "filesize": 5636608512, + "md5sum": "670f3c2b03a5629dc85d0d1c261e5929", + "filesize": 7293386240, "download_url": "https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/" }, { @@ -80,7 +80,7 @@ { "name": "10 w/ Edge", "images": { - "hda_disk_image": "MSEdge-Win10-VMWare-disk1.vmdk" + "hda_disk_image": "MSEdge-Win10-VMware-disk1.vmdk" } }, { diff --git a/gns3server/appliances/zentyal-server.gns3a b/gns3server/appliances/zentyal-server.gns3a index d38e9227..1370eeec 100644 --- a/gns3server/appliances/zentyal-server.gns3a +++ b/gns3server/appliances/zentyal-server.gns3a @@ -24,6 +24,14 @@ "kvm": "require" }, "images": [ + { + "filename": "zentyal-6.0-development-amd64.iso", + "version": "6.0", + "md5sum": "e1765d2c4d86debc9d9cbab2b7a8adbd", + "filesize": 895483904, + "download_url": "http://download.zentyal.com/", + "direct_download_url": "http://download.zentyal.com/zentyal-6.0-development-amd64.iso" + }, { "filename": "zentyal-5.1-development-amd64.iso", "version": "5.1", @@ -82,6 +90,13 @@ } ], "versions": [ + { + "name": "6.0", + "images": { + "hda_disk_image": "empty100G.qcow2", + "cdrom_image": "zentyal-6.0-development-amd64.iso" + } + }, { "name": "5.1", "images": { From 6fb613dcffac56c80a88b69257dfaacdc9ea0378 Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 28 May 2019 15:23:35 +0700 Subject: [PATCH 14/46] Release v2.1.19 --- CHANGELOG | 6 ++++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 91915d77..058d32f3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,11 @@ # Change Log +## 2.1.19 28/05/2019 + +* Sync appliances. +* Remove yarl from requirements.txt since it is installed by aiohttp. +* Drop typing dependency. + ## 2.1.18 22/05/2019 * Revert "Force aiohttp version to 2.3.10 and aiohttp-cors version to 0.5.3" Ref https://github.com/GNS3/gns3-server/issues/1583 Ref https://github.com/GNS3/gns3-server/issues/1592 diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index 0c0d4700..94f769b2 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -57,7 +57,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://2b1412df322748bc8b36639671f1a40e:25804fdd614d498aa429c689f540779e@sentry.io/38482" + DSN = "https://1a438abf17244ba98bb5e5869b9185c7:40dd0ad5e49b4e5e80a4cb057498f4d3@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index c9285839..33fc9800 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.19dev1" -__version_info__ = (2, 1, 19, 99) +__version__ = "2.1.19" +__version_info__ = (2, 1, 19, 0) # If it's a git checkout try to add the commit if "dev" in __version__: From 99886d3f0c3a05d76516cb8013a514575e611f8f Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 28 May 2019 16:33:43 +0700 Subject: [PATCH 15/46] Development on 2.1.20dev1 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index 33fc9800..28370cef 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.19" -__version_info__ = (2, 1, 19, 0) +__version__ = "2.1.20dev1" +__version_info__ = (2, 1, 20, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From a8602435312d9f7e8a7ab1e7eb7e7e3399013d91 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 29 May 2019 15:43:17 +0700 Subject: [PATCH 16/46] Ignore Unicode errors when reading base config file contents. --- gns3server/controller/node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gns3server/controller/node.py b/gns3server/controller/node.py index 796c08aa..fb91c815 100644 --- a/gns3server/controller/node.py +++ b/gns3server/controller/node.py @@ -175,7 +175,7 @@ class Node: if not os.path.isabs(path): path = os.path.join(self.project.controller.configs_path(), path) try: - with open(path, encoding="utf-8") as f: + with open(path, encoding="utf-8", errors="ignore") as f: return f.read() except OSError: return None From 053a16960cdfefad3fe8710b6dd8b910a5b501a1 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 29 May 2019 15:44:25 +0700 Subject: [PATCH 17/46] Release v2.1.20 --- CHANGELOG | 4 ++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 058d32f3..fc248245 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ # Change Log +## 2.1.20 29/05/2019 + +* Ignore Unicode errors when reading base config file contents. + ## 2.1.19 28/05/2019 * Sync appliances. diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index 94f769b2..ca042692 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -57,7 +57,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://1a438abf17244ba98bb5e5869b9185c7:40dd0ad5e49b4e5e80a4cb057498f4d3@sentry.io/38482" + DSN = "https://7906a5d6a7d74311a065c18376ccbcd6:2ac5bbbc01a74192a8059a8f350d4efe@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index 28370cef..bf94719e 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.20dev1" -__version_info__ = (2, 1, 20, 99) +__version__ = "2.1.20" +__version_info__ = (2, 1, 20, 0) # If it's a git checkout try to add the commit if "dev" in __version__: From 3dbce3fa406a718ab6da0a42a07bac662dff699b Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 29 May 2019 16:37:42 +0700 Subject: [PATCH 18/46] Development on 2.1.21dev1 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index bf94719e..1e848f62 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.20" -__version_info__ = (2, 1, 20, 0) +__version__ = "2.1.21dev1" +__version_info__ = (2, 1, 21, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From a6bc6bc79cd33bc47edc6574efaf486a61bf91f4 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 29 May 2019 16:52:50 +0700 Subject: [PATCH 19/46] Update appliance files. --- gns3server/appliances/asterisk.gns3a | 19 +++++++++++++++++-- gns3server/appliances/bsdrp.gns3a | 2 +- gns3server/appliances/coreos.gns3a | 15 +++++++++++++++ gns3server/appliances/cumulus-vx.gns3a | 14 ++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/gns3server/appliances/asterisk.gns3a b/gns3server/appliances/asterisk.gns3a index 272f302c..7edc44a4 100644 --- a/gns3server/appliances/asterisk.gns3a +++ b/gns3server/appliances/asterisk.gns3a @@ -24,9 +24,17 @@ "kvm": "allow" }, "images": [ + { + "filename": "SNG7-FPBX-64bit-1904-2.iso", + "version": "14-1904", + "md5sum": "f37c316bc0ff208682769b6f2d468e93", + "filesize": 2015363072, + "download_url": "https://www.freepbx.org/downloads/", + "direct_download_url": "https://downloads.freepbxdistro.org/ISO/SNG7-FPBX-64bit-1904-2.iso" + }, { "filename": "SNG7-FPBX-64bit-1805-2.iso", - "version": "14", + "version": "14-1805", "md5sum": "64f0c38c17ce680f7106f94183bc5745", "filesize": 1755316224, "download_url": "https://www.freepbx.org/downloads/", @@ -67,7 +75,14 @@ ], "versions": [ { - "name": "14", + "name": "14-1904", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "SNG7-FPBX-64bit-1904-2.iso" + } + }, + { + "name": "14-1805", "images": { "hda_disk_image": "empty30G.qcow2", "cdrom_image": "SNG7-FPBX-64bit-1805-2.iso" diff --git a/gns3server/appliances/bsdrp.gns3a b/gns3server/appliances/bsdrp.gns3a index ac100721..5adf87fe 100644 --- a/gns3server/appliances/bsdrp.gns3a +++ b/gns3server/appliances/bsdrp.gns3a @@ -22,7 +22,7 @@ { "filename": "BSDRP-1.92-full-amd64-serial.img", "version": "1.92", - "md5sum": "1a123f3ba7ce73aa5823a65a7c571be1", + "md5sum": "b02f2502188915490bb9756ffca36910", "filesize": 1000000000, "download_url": "https://bsdrp.net/downloads", "direct_download_url": "https://sourceforge.net/projects/bsdrp/files/BSD_Router_Project/1.92/amd64/BSDRP-1.92-full-amd64-serial.img.xz/download", diff --git a/gns3server/appliances/coreos.gns3a b/gns3server/appliances/coreos.gns3a index 07d27af5..32ac0c73 100644 --- a/gns3server/appliances/coreos.gns3a +++ b/gns3server/appliances/coreos.gns3a @@ -21,6 +21,15 @@ "kvm": "allow" }, "images": [ + { + "filename": "coreos_production_qemu_image.img", + "version": "2079.4.0", + "md5sum": "d5e28d68bcadf252ff9c909a159b9504", + "filesize": 970129408, + "download_url": "http://stable.release.core-os.net/amd64-usr/2079.4.0/", + "direct_download_url": "http://stable.release.core-os.net/amd64-usr/2079.4.0/coreos_production_qemu_image.img.bz2", + "compression": "bzip2" + }, { "filename": "coreos_production_qemu_image.2023.5.0.img", "version": "2023.5.0", @@ -194,6 +203,12 @@ } ], "versions": [ + { + "name": "2079.4.0", + "images": { + "hda_disk_image": "coreos_production_qemu_image.img" + } + }, { "name": "2023.5.0", "images": { diff --git a/gns3server/appliances/cumulus-vx.gns3a b/gns3server/appliances/cumulus-vx.gns3a index cc085d7d..c743d2d4 100644 --- a/gns3server/appliances/cumulus-vx.gns3a +++ b/gns3server/appliances/cumulus-vx.gns3a @@ -23,6 +23,14 @@ "kvm": "require" }, "images": [ + { + "filename": "cumulus-linux-3.7.6-vx-amd64-qemu.qcow2", + "version": "3.7.6", + "md5sum": "34de965074332cbc40d51832da7d6a5d", + "filesize": 540278784, + "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", + "direct_download_url": "http://cumulusfiles.s3.amazonaws.com/CumulusLinux-3.7.6/cumulus-linux-3.7.6-vx-amd64-qemu.qcow2" + }, { "filename": "cumulus-linux-3.7.3-vx-amd64-qemu.qcow2", "version": "3.7.3", @@ -197,6 +205,12 @@ } ], "versions": [ + { + "name": "3.7.6", + "images": { + "hda_disk_image": "cumulus-linux-3.7.6-vx-amd64-qemu.qcow2" + } + }, { "name": "3.7.3", "images": { From e58f86e204ef353db172237a0ef97a045f581e3f Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 29 May 2019 17:16:59 +0700 Subject: [PATCH 20/46] Release v2.2.0b2 --- CHANGELOG | 11 +++++++++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7f7e8e74..1b58762e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,16 @@ # Change Log +## 2.2.0b2 29/05/2019 + +* Ignore Unicode errors when reading base config file contents. +* Sync appliances. +* Support snapshots for portable projects. Fixes https://github.com/GNS3/gns3-gui/issues/2792 +* Update the GNS3 version in topology file if converted. Ref https://github.com/GNS3/gns3-gui/issues/2798 +* Support for log rotation and compression. Fixes #1586 +* Do not start QEMU console if QEMU process is not started. Fixes https://github.com/GNS3/gns3-gui/issues/2712 +* Avoid sending warning message all the time for Ethernet switch. +* Support to include snapshots in portable projects. + ## 2.1.20 29/05/2019 * Ignore Unicode errors when reading base config file contents. diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index 320dcbe4..6416bc7f 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -58,7 +58,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://6b4544f8cc1b42f798941c844ca6dfa6:885563130aca4d8e87ba097d098229a3@sentry.io/38482" + DSN = "https://eb9c34a9e4504bf99a6392a3ed2e0568:65d873fc33544886b239628c5e8577e4@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index 9263bd52..e62e1228 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.2.0dev12" -__version_info__ = (2, 2, 0, 99) +__version__ = "2.2.0b2" +__version_info__ = (2, 2, 0, -99) # If it's a git checkout try to add the commit if "dev" in __version__: From dd05884096168819c93ff0fab45aaca2e2d07737 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 29 May 2019 17:52:38 +0700 Subject: [PATCH 21/46] Development on 2.2.0dev13 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index e62e1228..0e73452f 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.2.0b2" -__version_info__ = (2, 2, 0, -99) +__version__ = "2.2.0dev13" +__version_info__ = (2, 2, 0, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From e9154f6af649c8f4570d5123e521fc9973185114 Mon Sep 17 00:00:00 2001 From: grossmj Date: Fri, 31 May 2019 08:41:44 +0200 Subject: [PATCH 22/46] Fix KeyError: 'usage' exception when configuring IOU template. Fixes https://github.com/GNS3/gns3-gui/issues/2806 --- gns3server/schemas/iou_template.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gns3server/schemas/iou_template.py b/gns3server/schemas/iou_template.py index f2dab0fb..769234ee 100644 --- a/gns3server/schemas/iou_template.py +++ b/gns3server/schemas/iou_template.py @@ -28,6 +28,7 @@ IOU_TEMPLATE_PROPERTIES = { "usage": { "description": "How to use the IOU VM", "type": "string", + "default": "" }, "ethernet_adapters": { "description": "Number of ethernet adapters", From 9e518412b305737162352f1f06245da77a534817 Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 4 Jun 2019 15:03:28 +0200 Subject: [PATCH 23/46] Set keyserver port to 80 in remote install script. Fixes #1596 --- scripts/remote-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/remote-install.sh b/scripts/remote-install.sh index 00580d4a..39598dd8 100644 --- a/scripts/remote-install.sh +++ b/scripts/remote-install.sh @@ -146,7 +146,7 @@ deb-src http://archive.ubuntu.com/ubuntu/ ${UBUNTU_CODENAME}-updates main univer EOFLIST2 fi -apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A2E3EF7B +apt-key adv --keyserver keyserver.ubuntu.com:80 --recv-keys A2E3EF7B log "Update system packages" apt-get update From 54d50b2ef49f5bb74b1b98a5a97c4fe5fb15a807 Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 4 Jun 2019 15:10:34 +0200 Subject: [PATCH 24/46] Set hkp protocol for keyserver in remote install script. Fixes #1596 --- scripts/remote-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/remote-install.sh b/scripts/remote-install.sh index 39598dd8..6937141e 100644 --- a/scripts/remote-install.sh +++ b/scripts/remote-install.sh @@ -146,7 +146,7 @@ deb-src http://archive.ubuntu.com/ubuntu/ ${UBUNTU_CODENAME}-updates main univer EOFLIST2 fi -apt-key adv --keyserver keyserver.ubuntu.com:80 --recv-keys A2E3EF7B +apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys A2E3EF7B log "Update system packages" apt-get update From 9cce4de190cd1267fb806e734f03d4ad3ec39fbd Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 4 Jun 2019 18:00:44 +0200 Subject: [PATCH 25/46] %guest-cid% variable implementation for Qemu VMs. Fixes https://github.com/GNS3/gns3-gui/issues/2804 --- gns3server/compute/qemu/__init__.py | 21 +++++++++++ gns3server/compute/qemu/qemu_vm.py | 18 ++++++++-- gns3server/compute/qemu/utils/__init__.py | 0 gns3server/compute/qemu/utils/guest_cid.py | 38 ++++++++++++++++++++ gns3server/compute/qemu/{ => utils}/qcow2.py | 0 tests/compute/qemu/test_qcow2.py | 2 +- 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 gns3server/compute/qemu/utils/__init__.py create mode 100644 gns3server/compute/qemu/utils/guest_cid.py rename gns3server/compute/qemu/{ => utils}/qcow2.py (100%) diff --git a/gns3server/compute/qemu/__init__.py b/gns3server/compute/qemu/__init__.py index 922064e8..10d8187f 100644 --- a/gns3server/compute/qemu/__init__.py +++ b/gns3server/compute/qemu/__init__.py @@ -30,6 +30,7 @@ from ...utils.asyncio import subprocess_check_output from ..base_manager import BaseManager from .qemu_error import QemuError from .qemu_vm import QemuVM +from .utils.guest_cid import get_next_guest_cid import logging log = logging.getLogger(__name__) @@ -40,6 +41,26 @@ class Qemu(BaseManager): _NODE_CLASS = QemuVM _NODE_TYPE = "qemu" + def __init__(self): + + super().__init__() + self._guest_cid_lock = asyncio.Lock() + + async def create_node(self, *args, **kwargs): + """ + Creates a new Qemu VM. + + :returns: QemuVM instance + """ + + async with self._guest_cid_lock: + # wait for a node to be completely created before adding a new one + # this is important otherwise we allocate the same application ID + # when creating multiple Qemu VMs at the same time + guest_cid = get_next_guest_cid(self.nodes) + node = await super().create_node(*args, guest_cid=guest_cid, **kwargs) + return node + @staticmethod async def get_kvm_archs(): """ diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index d715d873..301eaa20 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -36,6 +36,7 @@ import json from gns3server.utils import parse_version from gns3server.utils.asyncio import subprocess_check_output, cancellable_wait_run_in_executor from .qemu_error import QemuError +from .utils.qcow2 import Qcow2, Qcow2Error from ..adapters.ethernet_adapter import EthernetAdapter from ..nios.nio_udp import NIOUDP from ..nios.nio_tap import NIOTAP @@ -43,7 +44,6 @@ from ..base_node import BaseNode from ...schemas.qemu import QEMU_OBJECT_SCHEMA, QEMU_PLATFORMS from ...utils.asyncio import monitor_process from ...utils.images import md5sum -from .qcow2 import Qcow2, Qcow2Error from ...utils import macaddress_to_int, int_to_macaddress @@ -67,7 +67,7 @@ class QemuVM(BaseNode): :param platform: Platform to emulate """ - def __init__(self, name, node_id, project, manager, linked_clone=True, qemu_path=None, console=None, console_type="telnet", platform=None): + def __init__(self, name, node_id, project, manager, guest_cid=None, linked_clone=True, qemu_path=None, console=None, console_type="telnet", platform=None): super().__init__(name, node_id, project, manager, console=console, console_type=console_type, linked_clone=linked_clone, wrap_console=True) server_config = manager.config.get_section_config("Server") @@ -80,6 +80,7 @@ class QemuVM(BaseNode): self._qemu_img_stdout_file = "" self._execute_lock = asyncio.Lock() self._local_udp_tunnels = {} + self._guest_cid = guest_cid # QEMU VM settings if qemu_path: @@ -124,6 +125,16 @@ class QemuVM(BaseNode): self.adapters = 1 # creates 1 adapter by default log.info('QEMU VM "{name}" [{id}] has been created'.format(name=self._name, id=self._id)) + @property + def guest_cid(self): + """ + Returns guest_cid (console ID) which unique identifier between 3 and 65535 + + :returns: integer between 3 and 65535 + """ + + return self._guest_cid + @property def monitor(self): """ @@ -1917,7 +1928,8 @@ class QemuVM(BaseNode): additional_options = additional_options.replace("%vm-id%", self._id) additional_options = additional_options.replace("%project-id%", self.project.id) additional_options = additional_options.replace("%project-path%", '"' + self.project.path.replace('"', '\\"') + '"') - if self._console: + additional_options = additional_options.replace("%guest-cid%", str(self._guest_cid)) + if self._console_type != "none" and self._console: additional_options = additional_options.replace("%console-port%", str(self._console)) command = [self.qemu_path] command.extend(["-name", self._name]) diff --git a/gns3server/compute/qemu/utils/__init__.py b/gns3server/compute/qemu/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gns3server/compute/qemu/utils/guest_cid.py b/gns3server/compute/qemu/utils/guest_cid.py new file mode 100644 index 00000000..22218b31 --- /dev/null +++ b/gns3server/compute/qemu/utils/guest_cid.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 GNS3 Technologies Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from ..qemu_error import QemuError + +import logging +log = logging.getLogger(__name__) + + +def get_next_guest_cid(nodes): + """ + Calculates free guest_id from given nodes + + :param nodes: + :raises QemuError when exceeds number + :return: integer first free cid + """ + + used = set([n.guest_cid for n in nodes]) + pool = set(range(3, 65535)) + try: + return (pool - used).pop() + except KeyError: + raise QemuError("Cannot create a new Qemu VM (limit of 65535 guest ID on one host reached)") diff --git a/gns3server/compute/qemu/qcow2.py b/gns3server/compute/qemu/utils/qcow2.py similarity index 100% rename from gns3server/compute/qemu/qcow2.py rename to gns3server/compute/qemu/utils/qcow2.py diff --git a/tests/compute/qemu/test_qcow2.py b/tests/compute/qemu/test_qcow2.py index bf09e584..d8532940 100644 --- a/tests/compute/qemu/test_qcow2.py +++ b/tests/compute/qemu/test_qcow2.py @@ -20,7 +20,7 @@ import pytest import shutil import asyncio -from gns3server.compute.qemu.qcow2 import Qcow2, Qcow2Error +from gns3server.compute.qemu.utils.qcow2 import Qcow2, Qcow2Error def qemu_img(): From 61c87e57a4e38324cca209d6cc9728e9479e0d52 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 5 Jun 2019 11:25:35 +0200 Subject: [PATCH 26/46] Use console port to allocate guest CID (console ID) for Qemu VMs. Fixes #2804 --- gns3server/compute/qemu/__init__.py | 19 +++++++++++++------ gns3server/compute/qemu/qemu_vm.py | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/gns3server/compute/qemu/__init__.py b/gns3server/compute/qemu/__init__.py index 10d8187f..07d0ff97 100644 --- a/gns3server/compute/qemu/__init__.py +++ b/gns3server/compute/qemu/__init__.py @@ -53,12 +53,19 @@ class Qemu(BaseManager): :returns: QemuVM instance """ - async with self._guest_cid_lock: - # wait for a node to be completely created before adding a new one - # this is important otherwise we allocate the same application ID - # when creating multiple Qemu VMs at the same time - guest_cid = get_next_guest_cid(self.nodes) - node = await super().create_node(*args, guest_cid=guest_cid, **kwargs) + node = await super().create_node(*args, **kwargs) + + # allocate a guest console ID (CID) + if node.console_type != "none" and node.console: + # by default, the guest CID is equal to the console port + node.guest_cid = node.console + else: + # otherwise pick a guest CID if no console port is configured + async with self._guest_cid_lock: + # wait for a node to be completely created before adding a new one + # this is important otherwise we allocate the same guest ID + # when creating multiple Qemu VMs at the same time + node.guest_cid = get_next_guest_cid(self.nodes) return node @staticmethod diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 301eaa20..af1cf859 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -67,7 +67,7 @@ class QemuVM(BaseNode): :param platform: Platform to emulate """ - def __init__(self, name, node_id, project, manager, guest_cid=None, linked_clone=True, qemu_path=None, console=None, console_type="telnet", platform=None): + def __init__(self, name, node_id, project, manager, linked_clone=True, qemu_path=None, console=None, console_type="telnet", platform=None): super().__init__(name, node_id, project, manager, console=console, console_type=console_type, linked_clone=linked_clone, wrap_console=True) server_config = manager.config.get_section_config("Server") @@ -80,7 +80,7 @@ class QemuVM(BaseNode): self._qemu_img_stdout_file = "" self._execute_lock = asyncio.Lock() self._local_udp_tunnels = {} - self._guest_cid = guest_cid + self._guest_cid = None # QEMU VM settings if qemu_path: @@ -128,13 +128,23 @@ class QemuVM(BaseNode): @property def guest_cid(self): """ - Returns guest_cid (console ID) which unique identifier between 3 and 65535 + Returns the CID (console ID) which is an unique identifier between 3 and 65535 :returns: integer between 3 and 65535 """ return self._guest_cid + @guest_cid.setter + def guest_cid(self, guest_cid): + """ + Set the CID (console ID) which is an unique identifier between 3 and 65535 + + :returns: integer between 3 and 65535 + """ + + self._guest_cid = guest_cid + @property def monitor(self): """ From af780313229187eb2633684d57e3f45696002a77 Mon Sep 17 00:00:00 2001 From: Karim Date: Wed, 5 Jun 2019 09:39:44 +0100 Subject: [PATCH 27/46] Resolve conflicts in docker volumes instead of error. Fixes https://github.com/GNS3/gns3-server/issues/1595 --- gns3server/compute/docker/docker_vm.py | 21 ++- tests/compute/docker/test_docker_vm.py | 220 +++++++++++++++++++++++-- 2 files changed, 215 insertions(+), 26 deletions(-) diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py index 27053ea4..d7d4b0dc 100644 --- a/gns3server/compute/docker/docker_vm.py +++ b/gns3server/compute/docker/docker_vm.py @@ -248,27 +248,32 @@ class DockerVM(BaseNode): # We mount our own etc/network try: - network_config = self._create_network_config() + self._create_network_config() except OSError as e: raise DockerError("Could not create network config in the container: {}".format(e)) - binds.append("{}:/gns3volumes/etc/network:rw".format(network_config)) + volumes = ["/etc/network"] - self._volumes = ["/etc/network"] - volumes = list((image_info.get("Config", {}).get("Volumes") or {}).keys()) + volumes.extend((image_info.get("Config", {}).get("Volumes") or {}).keys()) for volume in self._extra_volumes: if not volume.strip() or volume[0] != "/" or volume.find("..") >= 0: raise DockerError("Persistent volume '{}' has invalid format. It must start with a '/' and not contain '..'.".format(volume)) volumes.extend(self._extra_volumes) + + self._volumes = [] # define lambdas for validation checks nf = lambda x: re.sub(r"//+", "/", (x if x.endswith("/") else x + "/")) - incompatible = lambda v1, v2: nf(v1).startswith(nf(v2)) or nf(v2).startswith(nf(v1)) + generalises = lambda v1, v2: nf(v2).startswith(nf(v1)) for volume in volumes: - if [ v for v in self._volumes if incompatible(v, volume) ] : - raise DockerError("Duplicate persistent volume {} detected.\n\nVolumes specified in docker image as well as user specified persistent volumes must be unique.".format(volume)) + # remove any mount that is equal or more specific, then append this one + self._volumes = list(filter(lambda v: not generalises(volume, v), self._volumes)) + # if there is nothing more general, append this mount + if not [ v for v in self._volumes if generalises(v, volume) ] : + self._volumes.append(volume) + + for volume in self._volumes: source = os.path.join(self.working_dir, os.path.relpath(volume, "/")) os.makedirs(source, exist_ok=True) binds.append("{}:/gns3volumes{}".format(source, volume)) - self._volumes.append(volume) return binds diff --git a/tests/compute/docker/test_docker_vm.py b/tests/compute/docker/test_docker_vm.py index 0f05fe59..da54bfbc 100644 --- a/tests/compute/docker/test_docker_vm.py +++ b/tests/compute/docker/test_docker_vm.py @@ -99,7 +99,7 @@ def test_create(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -138,7 +138,7 @@ def test_create_with_tag(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -180,7 +180,7 @@ def test_create_vnc(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), '/tmp/.X11-unix/:/tmp/.X11-unix/' ], "Privileged": True @@ -296,7 +296,7 @@ def test_create_start_cmd(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -396,7 +396,7 @@ def test_create_image_not_available(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -439,7 +439,7 @@ def test_create_with_user(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -509,8 +509,35 @@ def test_create_with_extra_volumes_duplicate_1_image(loop, project, manager): with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]) as mock_list_images: with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock: vm = DockerVM("test", str(uuid.uuid4()), project, manager, "ubuntu:latest", extra_volumes=["/vol/1"]) - with pytest.raises(DockerError): - loop.run_until_complete(asyncio.ensure_future(vm.create())) + loop.run_until_complete(asyncio.ensure_future(vm.create())) + mock.assert_called_with("POST", "containers/create", data={ + "Tty": True, + "OpenStdin": True, + "StdinOnce": False, + "HostConfig": + { + "CapAdd": ["ALL"], + "Binds": [ + "{}:/gns3:ro".format(get_resource("compute/docker/resources")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/vol/1".format(os.path.join(vm.working_dir, "vol", "1")), + ], + "Privileged": True + }, + "Volumes": {}, + "NetworkDisabled": True, + "Name": "test", + "Hostname": "test", + "Image": "ubuntu:latest", + "Env": [ + "container=docker", + "GNS3_MAX_ETHERNET=eth0", + "GNS3_VOLUMES=/etc/network:/vol/1" + ], + "Entrypoint": ["/gns3/init.sh"], + "Cmd": ["/bin/sh"] + }) + assert vm._cid == "e90e34656806" def test_create_with_extra_volumes_duplicate_2_user(loop, project, manager): @@ -521,8 +548,35 @@ def test_create_with_extra_volumes_duplicate_2_user(loop, project, manager): with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]) as mock_list_images: with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock: vm = DockerVM("test", str(uuid.uuid4()), project, manager, "ubuntu:latest", extra_volumes=["/vol/1", "/vol/1"]) - with pytest.raises(DockerError): - loop.run_until_complete(asyncio.ensure_future(vm.create())) + loop.run_until_complete(asyncio.ensure_future(vm.create())) + mock.assert_called_with("POST", "containers/create", data={ + "Tty": True, + "OpenStdin": True, + "StdinOnce": False, + "HostConfig": + { + "CapAdd": ["ALL"], + "Binds": [ + "{}:/gns3:ro".format(get_resource("compute/docker/resources")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/vol/1".format(os.path.join(vm.working_dir, "vol", "1")), + ], + "Privileged": True + }, + "Volumes": {}, + "NetworkDisabled": True, + "Name": "test", + "Hostname": "test", + "Image": "ubuntu:latest", + "Env": [ + "container=docker", + "GNS3_MAX_ETHERNET=eth0", + "GNS3_VOLUMES=/etc/network:/vol/1" + ], + "Entrypoint": ["/gns3/init.sh"], + "Cmd": ["/bin/sh"] + }) + assert vm._cid == "e90e34656806" def test_create_with_extra_volumes_duplicate_3_subdir(loop, project, manager): @@ -533,8 +587,35 @@ def test_create_with_extra_volumes_duplicate_3_subdir(loop, project, manager): with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]) as mock_list_images: with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock: vm = DockerVM("test", str(uuid.uuid4()), project, manager, "ubuntu:latest", extra_volumes=["/vol/1/", "/vol"]) - with pytest.raises(DockerError): - loop.run_until_complete(asyncio.ensure_future(vm.create())) + loop.run_until_complete(asyncio.ensure_future(vm.create())) + mock.assert_called_with("POST", "containers/create", data={ + "Tty": True, + "OpenStdin": True, + "StdinOnce": False, + "HostConfig": + { + "CapAdd": ["ALL"], + "Binds": [ + "{}:/gns3:ro".format(get_resource("compute/docker/resources")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/vol".format(os.path.join(vm.working_dir, "vol")), + ], + "Privileged": True + }, + "Volumes": {}, + "NetworkDisabled": True, + "Name": "test", + "Hostname": "test", + "Image": "ubuntu:latest", + "Env": [ + "container=docker", + "GNS3_MAX_ETHERNET=eth0", + "GNS3_VOLUMES=/etc/network:/vol" + ], + "Entrypoint": ["/gns3/init.sh"], + "Cmd": ["/bin/sh"] + }) + assert vm._cid == "e90e34656806" def test_create_with_extra_volumes_duplicate_4_backslash(loop, project, manager): @@ -545,8 +626,111 @@ def test_create_with_extra_volumes_duplicate_4_backslash(loop, project, manager) with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]) as mock_list_images: with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock: vm = DockerVM("test", str(uuid.uuid4()), project, manager, "ubuntu:latest", extra_volumes=["/vol//", "/vol"]) - with pytest.raises(DockerError): - loop.run_until_complete(asyncio.ensure_future(vm.create())) + loop.run_until_complete(asyncio.ensure_future(vm.create())) + mock.assert_called_with("POST", "containers/create", data={ + "Tty": True, + "OpenStdin": True, + "StdinOnce": False, + "HostConfig": + { + "CapAdd": ["ALL"], + "Binds": [ + "{}:/gns3:ro".format(get_resource("compute/docker/resources")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/vol".format(os.path.join(vm.working_dir, "vol")), + ], + "Privileged": True + }, + "Volumes": {}, + "NetworkDisabled": True, + "Name": "test", + "Hostname": "test", + "Image": "ubuntu:latest", + "Env": [ + "container=docker", + "GNS3_MAX_ETHERNET=eth0", + "GNS3_VOLUMES=/etc/network:/vol" + ], + "Entrypoint": ["/gns3/init.sh"], + "Cmd": ["/bin/sh"] + }) + assert vm._cid == "e90e34656806" + +def test_create_with_extra_volumes_duplicate_5_subdir_issue_1595(loop, project, manager): + + response = { + "Id": "e90e34656806", + "Warnings": [], + } + with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]) as mock_list_images: + with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock: + vm = DockerVM("test", str(uuid.uuid4()), project, manager, "ubuntu:latest", extra_volumes=["/etc"]) + loop.run_until_complete(asyncio.ensure_future(vm.create())) + mock.assert_called_with("POST", "containers/create", data={ + "Tty": True, + "OpenStdin": True, + "StdinOnce": False, + "HostConfig": + { + "CapAdd": ["ALL"], + "Binds": [ + "{}:/gns3:ro".format(get_resource("compute/docker/resources")), + "{}:/gns3volumes/etc".format(os.path.join(vm.working_dir, "etc")), + ], + "Privileged": True + }, + "Volumes": {}, + "NetworkDisabled": True, + "Name": "test", + "Hostname": "test", + "Image": "ubuntu:latest", + "Env": [ + "container=docker", + "GNS3_MAX_ETHERNET=eth0", + "GNS3_VOLUMES=/etc" + ], + "Entrypoint": ["/gns3/init.sh"], + "Cmd": ["/bin/sh"] + }) + assert vm._cid == "e90e34656806" + +def test_create_with_extra_volumes_duplicate_6_subdir_issue_1595(loop, project, manager): + + response = { + "Id": "e90e34656806", + "Warnings": [], + } + with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]) as mock_list_images: + with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock: + vm = DockerVM("test", str(uuid.uuid4()), project, manager, "ubuntu:latest", extra_volumes=["/etc/test", "/etc"]) + loop.run_until_complete(asyncio.ensure_future(vm.create())) + mock.assert_called_with("POST", "containers/create", data={ + "Tty": True, + "OpenStdin": True, + "StdinOnce": False, + "HostConfig": + { + "CapAdd": ["ALL"], + "Binds": [ + "{}:/gns3:ro".format(get_resource("compute/docker/resources")), + "{}:/gns3volumes/etc".format(os.path.join(vm.working_dir, "etc")), + ], + "Privileged": True + }, + "Volumes": {}, + "NetworkDisabled": True, + "Name": "test", + "Hostname": "test", + "Image": "ubuntu:latest", + "Env": [ + "container=docker", + "GNS3_MAX_ETHERNET=eth0", + "GNS3_VOLUMES=/etc" + ], + "Entrypoint": ["/gns3/init.sh"], + "Cmd": ["/bin/sh"] + }) + assert vm._cid == "e90e34656806" def test_create_with_extra_volumes(loop, project, manager): @@ -572,7 +756,7 @@ def test_create_with_extra_volumes(loop, project, manager): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), "{}:/gns3volumes/vol/1".format(os.path.join(vm.working_dir, "vol", "1")), "{}:/gns3volumes/vol/2".format(os.path.join(vm.working_dir, "vol", "2")), ], @@ -795,7 +979,7 @@ def test_update(loop, vm): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -864,7 +1048,7 @@ def test_update_running(loop, vm): "CapAdd": ["ALL"], "Binds": [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")) + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")) ], "Privileged": True }, @@ -1138,7 +1322,7 @@ def test_mount_binds(vm, tmpdir): dst = os.path.join(vm.working_dir, "test/experimental") assert vm._mount_binds(image_infos) == [ "{}:/gns3:ro".format(get_resource("compute/docker/resources")), - "{}:/gns3volumes/etc/network:rw".format(os.path.join(vm.working_dir, "etc", "network")), + "{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")), "{}:/gns3volumes{}".format(dst, "/test/experimental") ] From b7af2e4d5cbcec43b0d4544d473a3ba457a66190 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 12 Jun 2019 14:23:03 +0200 Subject: [PATCH 28/46] Refresh mounted media after ISO switch. --- gns3server/compute/qemu/qemu_vm.py | 28 ++++++++++++++++--- .../handlers/api/compute/qemu_handler.py | 5 +++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index af1cf859..0e560f0d 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -434,10 +434,30 @@ class QemuVM(BaseNode): :param cdrom_image: QEMU cdrom image path """ - self._cdrom_image = self.manager.get_abs_image_path(cdrom_image, self.project.path) - log.info('QEMU VM "{name}" [{id}] has set the QEMU cdrom image path to {cdrom_image}'.format(name=self._name, - id=self._id, - cdrom_image=self._cdrom_image)) + if cdrom_image: + self._cdrom_image = self.manager.get_abs_image_path(cdrom_image, self.project.path) + + log.info('QEMU VM "{name}" [{id}] has set the QEMU cdrom image path to {cdrom_image}'.format(name=self._name, + id=self._id, + cdrom_image=self._cdrom_image)) + else: + self._cdrom_image = "" + + async def update_cdrom_image(self): + """ + Update the cdrom image path for the Qemu guest OS + """ + + if self.is_running(): + if self._cdrom_image: + self._cdrom_option() # this will check the cdrom image is accessible + await self._control_vm("change ide1-cd0 {}".format(self._cdrom_image)) + log.info('QEMU VM "{name}" [{id}] has changed the cdrom image path to {cdrom_image} for the guest OS'.format(name=self._name, + id=self._id, + cdrom_image=self._cdrom_image)) + else: + await self._control_vm("eject ide1-cd0") + log.info('QEMU VM "{name}" [{id}] has ejected the cdrom image for the guest OS'.format(name=self._name, id=self._id)) @property def bios_image(self): diff --git a/gns3server/handlers/api/compute/qemu_handler.py b/gns3server/handlers/api/compute/qemu_handler.py index 30453f6e..0c3779cc 100644 --- a/gns3server/handlers/api/compute/qemu_handler.py +++ b/gns3server/handlers/api/compute/qemu_handler.py @@ -116,7 +116,7 @@ class QEMUHandler: description="Update a Qemu VM instance", input=QEMU_UPDATE_SCHEMA, output=QEMU_OBJECT_SCHEMA) - def update(request, response): + async def update(request, response): qemu_manager = Qemu.instance() vm = qemu_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) @@ -125,6 +125,9 @@ class QEMUHandler: for name, value in request.json.items(): if hasattr(vm, name) and getattr(vm, name) != value: setattr(vm, name, value) + if name == "cdrom_image": + # let the guest know about the new cdrom image + await vm.update_cdrom_image() vm.updated() response.json(vm) From 2476581dca9d6057286140dc313bd16a14076e3e Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 12 Jun 2019 14:35:13 +0200 Subject: [PATCH 29/46] Change uBridge debug level to '1' when debugging is enabled. Fixes #1598 --- gns3server/ubridge/hypervisor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gns3server/ubridge/hypervisor.py b/gns3server/ubridge/hypervisor.py index 91ed58c4..12a8aff5 100644 --- a/gns3server/ubridge/hypervisor.py +++ b/gns3server/ubridge/hypervisor.py @@ -256,5 +256,5 @@ class Hypervisor(UBridgeHypervisor): command = [self._path] command.extend(["-H", "{}:{}".format(self._host, self._port)]) if log.getEffectiveLevel() == logging.DEBUG: - command.extend(["-d", "2"]) + command.extend(["-d", "1"]) return command From cb1f73e9a2e48a3fae93c981af8be225e7928c84 Mon Sep 17 00:00:00 2001 From: grossmj Date: Fri, 14 Jun 2019 10:47:07 +0200 Subject: [PATCH 30/46] Release v2.1.21 --- CHANGELOG | 4 ++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index fc248245..5061f73a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ # Change Log +## 2.1.21 14/06/2019 + +* Change uBridge debug level to '1' when debugging is enabled. Fixes #1598 + ## 2.1.20 29/05/2019 * Ignore Unicode errors when reading base config file contents. diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index ca042692..ef803116 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -57,7 +57,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://7906a5d6a7d74311a065c18376ccbcd6:2ac5bbbc01a74192a8059a8f350d4efe@sentry.io/38482" + DSN = "https://d3a7fc2e40154fa1935e0def7d9b97d6:2cacd4ef1aea4077ace2d071c4b5f4d6@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index 1e848f62..0d1516d4 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.21dev1" -__version_info__ = (2, 1, 21, 99) +__version__ = "2.1.21" +__version_info__ = (2, 1, 21, 0) # If it's a git checkout try to add the commit if "dev" in __version__: From 7c33d3510a7fa6314fde32373f33b705a8326160 Mon Sep 17 00:00:00 2001 From: grossmj Date: Fri, 14 Jun 2019 19:42:18 +0200 Subject: [PATCH 31/46] Development on 2.1.22dev1 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index 0d1516d4..4d850afd 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.1.21" -__version_info__ = (2, 1, 21, 0) +__version__ = "2.1.22dev1" +__version_info__ = (2, 1, 22, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From 06ce0868ec495cb21652aea9d99c2306cae203bd Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 15 Jun 2019 12:52:50 +0200 Subject: [PATCH 32/46] Fix template migration issues from GUI to controller. Fixes https://github.com/GNS3/gns3-gui/issues/2803 --- gns3server/controller/__init__.py | 113 ---------------------------- tests/controller/test_controller.py | 91 ---------------------- 2 files changed, 204 deletions(-) diff --git a/gns3server/controller/__init__.py b/gns3server/controller/__init__.py index e1c887c6..e73ac8f3 100644 --- a/gns3server/controller/__init__.py +++ b/gns3server/controller/__init__.py @@ -175,7 +175,6 @@ class Controller: try: if not os.path.exists(self._config_file): - await self._import_gns3_gui_conf() self._config_loaded = True self.save() with open(self._config_file) as f: @@ -254,118 +253,6 @@ class Controller: os.makedirs(images_path, exist_ok=True) return images_path - async def _import_gns3_gui_conf(self): - """ - Import old config from GNS3 GUI - """ - - config_file = os.path.join(os.path.dirname(self._config_file), "gns3_gui.conf") - if os.path.exists(config_file): - with open(config_file) as f: - settings = json.load(f) - server_settings = settings.get("Servers", {}) - for remote in server_settings.get("remote_servers", []): - try: - await self.add_compute(host=remote.get("host", "localhost"), - port=remote.get("port", 3080), - protocol=remote.get("protocol", "http"), - name=remote.get("url"), - user=remote.get("user"), - password=remote.get("password")) - except aiohttp.web.HTTPConflict: - pass # if the server is broken we skip it - if "vm" in server_settings: - vmname = None - vm_settings = server_settings["vm"] - if vm_settings["virtualization"] == "VMware": - engine = "vmware" - vmname = vm_settings.get("vmname", "") - elif vm_settings["virtualization"] == "VirtualBox": - engine = "virtualbox" - vmname = vm_settings.get("vmname", "") - else: - engine = "remote" - # In case of remote server we match the compute with url parameter - for compute in self._computes.values(): - if compute.host == vm_settings.get("remote_vm_host") and compute.port == vm_settings.get("remote_vm_port"): - vmname = compute.name - - if vm_settings.get("auto_stop", True): - when_exit = "stop" - else: - when_exit = "keep" - - self.gns3vm.settings = { - "engine": engine, - "enable": vm_settings.get("auto_start", False), - "when_exit": when_exit, - "headless": vm_settings.get("headless", False), - "vmname": vmname - } - - vms = [] - for vm in settings.get("Qemu", {}).get("vms", []): - vm["template_type"] = "qemu" - vms.append(vm) - for vm in settings.get("IOU", {}).get("devices", []): - vm["template_type"] = "iou" - vms.append(vm) - for vm in settings.get("Docker", {}).get("containers", []): - vm["template_type"] = "docker" - vms.append(vm) - for vm in settings.get("Builtin", {}).get("cloud_nodes", []): - vm["template_type"] = "cloud" - vms.append(vm) - for vm in settings.get("Builtin", {}).get("ethernet_switches", []): - vm["template_type"] = "ethernet_switch" - vms.append(vm) - for vm in settings.get("Builtin", {}).get("ethernet_hubs", []): - vm["template_type"] = "ethernet_hub" - vms.append(vm) - for vm in settings.get("Dynamips", {}).get("routers", []): - vm["template_type"] = "dynamips" - vms.append(vm) - for vm in settings.get("VMware", {}).get("vms", []): - vm["template_type"] = "vmware" - vms.append(vm) - for vm in settings.get("VirtualBox", {}).get("vms", []): - vm["template_type"] = "virtualbox" - vms.append(vm) - for vm in settings.get("VPCS", {}).get("nodes", []): - vm["template_type"] = "vpcs" - vms.append(vm) - for vm in settings.get("TraceNG", {}).get("nodes", []): - vm["template_type"] = "traceng" - vms.append(vm) - - for vm in vms: - # remove deprecated properties - for prop in vm.copy(): - if prop in ["enable_remote_console", "use_ubridge", "acpi_shutdown"]: - del vm[prop] - - # remove deprecated default_symbol and hover_symbol - # and set symbol if not present - deprecated = ["default_symbol", "hover_symbol"] - if len([prop for prop in vm.keys() if prop in deprecated]) > 0: - if "default_symbol" in vm.keys(): - del vm["default_symbol"] - if "hover_symbol" in vm.keys(): - del vm["hover_symbol"] - - if "symbol" not in vm.keys(): - vm["symbol"] = ":/symbols/computer.svg" - - vm.setdefault("template_id", str(uuid.uuid4())) - try: - template = Template(vm["template_id"], vm) - template.__json__() # Check if loaded without error - self.template_manager.templates[template.id] = template - except KeyError as e: - # template data is not complete (missing name or type) - log.warning("Cannot load template {} ('{}'): missing key {}".format(vm["template_id"], vm.get("name", "unknown"), e)) - continue - async def add_compute(self, compute_id=None, name=None, force=False, connect=True, **kwargs): """ Add a server to the dictionary of computes controlled by this controller diff --git a/tests/controller/test_controller.py b/tests/controller/test_controller.py index 14bae932..e76c7e65 100644 --- a/tests/controller/test_controller.py +++ b/tests/controller/test_controller.py @@ -106,97 +106,6 @@ def test_import_computes_1_x(controller, controller_config_path, async_run): assert compute.password is None -def test_import_gns3vm_1_x(controller, controller_config_path, async_run): - """ - At first start the server should import the - gns3vm settings from the gns3_gui 1.X - """ - gns3_gui_conf = { - "Servers": { - "vm": { - "adjust_local_server_ip": True, - "auto_start": True, - "auto_stop": False, - "headless": True, - "remote_vm_host": "", - "remote_vm_password": "", - "remote_vm_port": 3080, - "remote_vm_protocol": "http", - "remote_vm_url": "", - "remote_vm_user": "", - "virtualization": "VMware", - "vmname": "GNS3 VM", - "vmx_path": "/Users/joe/Documents/Virtual Machines.localized/GNS3 VM.vmwarevm/GNS3 VM.vmx" - } - } - } - config_dir = os.path.dirname(controller_config_path) - os.makedirs(config_dir, exist_ok=True) - with open(os.path.join(config_dir, "gns3_gui.conf"), "w+") as f: - json.dump(gns3_gui_conf, f) - - controller.gns3vm.settings["engine"] = None - async_run(controller._load_controller_settings()) - assert controller.gns3vm.settings["engine"] == "vmware" - assert controller.gns3vm.settings["enable"] - assert controller.gns3vm.settings["headless"] - assert controller.gns3vm.settings["when_exit"] == "keep" - assert controller.gns3vm.settings["vmname"] == "GNS3 VM" - - -def test_import_remote_gns3vm_1_x(controller, controller_config_path, async_run): - """ - At first start the server should import the - computes and remote GNS3 VM from the gns3_gui 1.X - """ - gns3_gui_conf = { - "Servers": { - "remote_servers": [ - { - "host": "127.0.0.1", - "password": "", - "port": 3080, - "protocol": "http", - "url": "http://127.0.0.1:3080", - "user": "" - }, - { - "host": "127.0.0.1", - "password": "", - "port": 3081, - "protocol": "http", - "url": "http://127.0.0.1:3081", - "user": "" - } - ], - "vm": { - "adjust_local_server_ip": True, - "auto_start": True, - "auto_stop": False, - "headless": True, - "remote_vm_host": "127.0.0.1", - "remote_vm_password": "", - "remote_vm_port": 3081, - "remote_vm_protocol": "http", - "remote_vm_url": "http://127.0.0.1:3081", - "remote_vm_user": "", - "virtualization": "remote", - "vmname": "GNS3 VM", - "vmx_path": "/Users/joe/Documents/Virtual Machines.localized/GNS3 VM.vmwarevm/GNS3 VM.vmx" - } - } - } - config_dir = os.path.dirname(controller_config_path) - os.makedirs(config_dir, exist_ok=True) - with open(os.path.join(config_dir, "gns3_gui.conf"), "w+") as f: - json.dump(gns3_gui_conf, f) - - with asyncio_patch("gns3server.controller.compute.Compute.connect"): - async_run(controller._load_controller_settings()) - assert controller.gns3vm.settings["engine"] == "remote" - assert controller.gns3vm.settings["vmname"] == "http://127.0.0.1:3081" - - def test_load_projects(controller, projects_dir, async_run): controller.save() From 7a463676cd2ac52b3b2d3302dd96ca6b3bab6630 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 15 Jun 2019 15:20:21 +0200 Subject: [PATCH 33/46] Eject cdrom first before changing an image. Use 'force' when ejecting. --- gns3server/compute/qemu/qemu_vm.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 0e560f0d..62eaef90 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -451,13 +451,14 @@ class QemuVM(BaseNode): if self.is_running(): if self._cdrom_image: self._cdrom_option() # this will check the cdrom image is accessible + await self._control_vm("eject -f ide1-cd0") await self._control_vm("change ide1-cd0 {}".format(self._cdrom_image)) - log.info('QEMU VM "{name}" [{id}] has changed the cdrom image path to {cdrom_image} for the guest OS'.format(name=self._name, - id=self._id, - cdrom_image=self._cdrom_image)) + log.info('QEMU VM "{name}" [{id}] has changed the cdrom image path to {cdrom_image}'.format(name=self._name, + id=self._id, + cdrom_image=self._cdrom_image)) else: - await self._control_vm("eject ide1-cd0") - log.info('QEMU VM "{name}" [{id}] has ejected the cdrom image for the guest OS'.format(name=self._name, id=self._id)) + await self._control_vm("eject -f ide1-cd0") + log.info('QEMU VM "{name}" [{id}] has ejected the cdrom image'.format(name=self._name, id=self._id)) @property def bios_image(self): From 5dbedb744e37fa4bca43ce7fe0a1e44e7a287512 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 15 Jun 2019 15:24:45 +0200 Subject: [PATCH 34/46] Sync appliance files. --- gns3server/appliances/Simulator.gns3a | 68 ++++ gns3server/appliances/checkpoint-gaia.gns3a | 18 +- gns3server/appliances/cisco-ise.gns3a | 14 + gns3server/appliances/exos.gns3a | 14 + gns3server/appliances/ipfire.gns3a | 15 + gns3server/appliances/kali-linux.gns3a | 28 ++ gns3server/appliances/mikrotik-chr.gns3a | 336 +------------------- gns3server/appliances/opennac.gns3a | 44 +++ gns3server/appliances/packetfence-zen.gns3a | 93 +----- gns3server/appliances/parrot-os.gns3a | 15 + gns3server/appliances/security-onion.gns3a | 18 +- gns3server/appliances/vyos.gns3a | 15 +- 12 files changed, 263 insertions(+), 415 deletions(-) create mode 100644 gns3server/appliances/Simulator.gns3a create mode 100644 gns3server/appliances/opennac.gns3a diff --git a/gns3server/appliances/Simulator.gns3a b/gns3server/appliances/Simulator.gns3a new file mode 100644 index 00000000..21715ae2 --- /dev/null +++ b/gns3server/appliances/Simulator.gns3a @@ -0,0 +1,68 @@ +{ + "name": "ParrotOS", + "category": "guest", + "description": " Parrot is a GNU/Linux distribution based on Debian Testing and designed with Security, Development and Privacy in mind. It includes a full portable laboratory for security and digital forensics experts, but it also includes all you need to develop your own software or protect your privacy while surfing the net.", + "vendor_name": "Parrot Project", + "vendor_url": "https://parrotsec.org/", + "documentation_url": "https://docs.parrotsec.org/doku.php", + "product_name": "ParrotOS", + "product_url": "https://parrotsec.org/", + "registry_version": 3, + "status": "stable", + "maintainer": "Brent Stewart", + "maintainer_email": "brent@stewart.tc", + "usage": "Passwords are set during installation.", + "symbol": "parrotlogo.png", + "qemu": { + "adapter_type": "e1000", + "adapters": 1, + "ram": 2048, + "arch": "x86_64", + "console_type": "vnc", + "kvm": "require" + }, + "images": [ + { + "filename": "Parrot-security-4.6_amd64.iso", + "version": "Security Build 4.6", + "md5sum": "ead812edc83119e8bcb4ee9daabdc105", + "filesize": 3788668928, + "download_url": "https://www.parrotsec.org/download-security.php", + "direct_download_url": "https://download.parrotsec.org/parrot/iso/4.6/Parrot-security-4.6_amd64.iso" + }, + { + "filename": "Parrot-security-3.11_amd64.iso", + "version": "Security Build 3.11", + "md5sum": "71c94474fb474f682da0844d95f0040b", + "filesize": 3788668928, + "download_url": "https://www.parrotsec.org/download.fx", + "direct_download_url": "https://www.parrotsec.org/download-full.fx" + }, + { + "filename": "empty30G.qcow2", + "version": "1.0", + "md5sum": "3411a599e822f2ac6be560a26405821a", + "filesize": 197120, + "download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%30disk/", + "direct_download_url": "http://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty30G.qcow2/download" + } + + ], + "versions": [ + { + "name": "Security Build 4.6", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "Parrot-security-4.6_amd64.iso" + } + }, + { + "name": "Security Build 3.11", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "Parrot-security-3.11_amd64.iso" + } + } + +] +} diff --git a/gns3server/appliances/checkpoint-gaia.gns3a b/gns3server/appliances/checkpoint-gaia.gns3a index 122e6fc3..0fff9b43 100644 --- a/gns3server/appliances/checkpoint-gaia.gns3a +++ b/gns3server/appliances/checkpoint-gaia.gns3a @@ -24,17 +24,17 @@ }, "images": [ { - "filename": "Check_Point_R80.10_T421_Gaia.iso", + "filename": "Check_Point_R80.10_T479_Gaia.iso", "version": "80.10", - "md5sum": "12d9723fadb89bb722e20ca3f89012ce", - "filesize": 3420127232, - "download_url": "https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk104859" + "md5sum": "1b97cce21dbee78fec505b44e637cc9a", + "filesize": 3301212160, + "download_url": "https://supportcenter.checkpoint.com/supportcenter/portal/user/anon/page/default.psml/media-type/html?action=portlets.DCFileAction&eventSubmit_doGetdcdetails=&fileid=54509" }, { - "filename": "Check_Point_R77.30_T204_Install_and_Upgrade.Gaia.iso", + "filename": "Check_Point_R77.30_Install_and_Upgrade_T5.Gaia.iso", "version": "77.30", - "md5sum": "6fa7586bbb6832fa965d3173276c5b87", - "filesize": 2799271936, + "md5sum": "3f6f459df3fb3beaf7b2457f08982425", + "filesize": 289692076, "download_url": "https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk104859" }, { @@ -58,14 +58,14 @@ "name": "80.10", "images": { "hda_disk_image": "empty100G.qcow2", - "cdrom_image": "Check_Point_R80.10_T421_Gaia.iso" + "cdrom_image": "Check_Point_R80.10_T479_Gaia.iso" } }, { "name": "77.30", "images": { "hda_disk_image": "empty100G.qcow2", - "cdrom_image": "Check_Point_R77.30_T204_Install_and_Upgrade.Gaia.iso" + "cdrom_image": "Check_Point_R77.30_Install_and_Upgrade_T5.Gaia.iso" } }, { diff --git a/gns3server/appliances/cisco-ise.gns3a b/gns3server/appliances/cisco-ise.gns3a index b7056f5b..5c9a0016 100644 --- a/gns3server/appliances/cisco-ise.gns3a +++ b/gns3server/appliances/cisco-ise.gns3a @@ -27,6 +27,13 @@ }, "images": [ { + "filename": "ise-2.4.0.357.SPA.x86_64.iso", + "version": "2.4.0.357", + "md5sum": "766945618a0ff35f6c720b3bc4b46bfb", + "filesize": 8326062080, + "download_url": "https://software.cisco.com/download/home/283801620/type/283802505/release/2.4.0" + }, + { "filename": "ise-2.2.0.470.SPA.x86_64.iso", "version": "2.2.0.470", "md5sum": "7fe5e730d0a51ef66e69d1463717ff3f", @@ -65,6 +72,13 @@ ], "versions": [ { + "name": "2.4.0.357", + "images": { + "hda_disk_image": "empty200G.qcow2", + "cdrom_image": "ise-2.4.0.357.SPA.x86_64.iso" + } + }, + { "name": "2.2.0.470", "images": { "hda_disk_image": "empty200G.qcow2", diff --git a/gns3server/appliances/exos.gns3a b/gns3server/appliances/exos.gns3a index 33b95944..7ace1681 100644 --- a/gns3server/appliances/exos.gns3a +++ b/gns3server/appliances/exos.gns3a @@ -28,6 +28,13 @@ "images": [ + { + "filename": "EXOS-VM_v30.2.1.8.qcow2", + "version": "30.2.1.8", + "md5sum": "4bdbf3ddff7a030e19c6bb71270b56d2", + "filesize": 355205120, + "direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.2.1.8.qcow2" + }, { "filename": "EXOS-VM_v30.1.1.4.qcow2", "version": "30.1.1.4", @@ -88,6 +95,13 @@ ], "versions": [ + + { + "name": "30.2.1.8", + "images": { + "hda_disk_image": "EXOS-VM_v30.2.1.8.qcow2" + } + }, { "name": "30.1.1.4", "images": { diff --git a/gns3server/appliances/ipfire.gns3a b/gns3server/appliances/ipfire.gns3a index bfc08507..92f2e6b5 100644 --- a/gns3server/appliances/ipfire.gns3a +++ b/gns3server/appliances/ipfire.gns3a @@ -24,6 +24,15 @@ "kvm": "allow" }, "images": [ + { + "filename": "ipfire-2.23.2gb-ext4.x86_64-full-core131.img", + "version": "2.23", + "md5sum": "604c06e20c36985ff00802da4509340c", + "filesize": 1541160960, + "download_url": "http://www.ipfire.org/download", + "direct_download_url": "https://muug.ca/mirror/ipfire/releases/ipfire-2.x/2.23-core131/ipfire-2.23.2gb-ext4.x86_64-full-core131.img.xz", + "compression": "xz" + }, { "filename": "ipfire-2.21.2gb-ext4.x86_64-full-core129.img", "version": "2.21.129", @@ -98,6 +107,12 @@ } ], "versions": [ + { + "name": "2.23", + "images": { + "hda_disk_image": "ipfire-2.23.2gb-ext4.x86_64-full-core131.img" + } + }, { "name": "2.21.129", "images": { diff --git a/gns3server/appliances/kali-linux.gns3a b/gns3server/appliances/kali-linux.gns3a index 65e5e9e7..10ce5e20 100644 --- a/gns3server/appliances/kali-linux.gns3a +++ b/gns3server/appliances/kali-linux.gns3a @@ -20,6 +20,22 @@ "kvm": "require" }, "images": [ + { + "filename": "kali-linux-mate-2019.2-amd64.iso", + "version": "2019.2 (MATE)", + "md5sum": "fec8dd7009f932c51a74323df965a709", + "filesize": 3313217536, + "download_url": "https://www.kali.org/downloads/", + "direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-mate-2019.2-amd64.iso" + }, + { + "filename": "kali-linux-2019.2-amd64.iso", + "version": "2019.2", + "md5sum": "0f89b6225d7ea9c18682f7cc541c1179", + "filesize": 3353227264, + "download_url": "https://www.kali.org/downloads/", + "direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-2019.2-amd64.iso" + }, { "filename": "kali-linux-2019.1a-amd64.iso", "version": "2019.1a", @@ -102,6 +118,18 @@ } ], "versions": [ + { + "name": "2019.2 (MATE)", + "images": { + "cdrom_image": "kali-linux-mate-2019.2-amd64.iso" + } + }, + { + "name": "2019.2", + "images": { + "cdrom_image": "kali-linux-2019.2-amd64.iso" + } + }, { "name": "2019.1a", "images": { diff --git a/gns3server/appliances/mikrotik-chr.gns3a b/gns3server/appliances/mikrotik-chr.gns3a index ac0a42ba..d2981557 100644 --- a/gns3server/appliances/mikrotik-chr.gns3a +++ b/gns3server/appliances/mikrotik-chr.gns3a @@ -26,6 +26,15 @@ "options": "-nographic" }, "images": [ + { + "filename": "chr-6.44.3.img", + "version": "6.44.2", + "md5sum": "c46b33125d536faa24473a519abbb89d", + "filesize": 67108864, + "download_url": "http://www.mikrotik.com/download", + "direct_download_url": "https://download.mikrotik.com/routeros/6.44.2/chr-6.44.2.img.zip", + "compression": "zip" + }, { "filename": "chr-6.44.2.img", "version": "6.44.2", @@ -97,198 +106,15 @@ "download_url": "http://www.mikrotik.com/download", "direct_download_url": "https://download2.mikrotik.com/routeros/6.40.3/chr-6.40.3.img.zip", "compression": "zip" - }, - { - "filename": "chr-6.39.2.img", - "version": "6.39.2", - "md5sum": "ecb37373dedfba04267a999d23b8e203", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "https://download2.mikrotik.com/routeros/6.39.2/chr-6.39.2.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.39.1.img", - "version": "6.39.1", - "md5sum": "c53293bc41f76d85a8642005fd1cbd54", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "https://download2.mikrotik.com/routeros/6.39.1/chr-6.39.1.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.39.img", - "version": "6.39", - "md5sum": "7e77c8ac4c9aeaf88f6ff15897f33163", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "https://download2.mikrotik.com/routeros/6.39/chr-6.39.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.38.7.img", - "version": "6.38.7", - "md5sum": "69a51c96b1247bbaf1253d2873617122", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "https://download2.mikrotik.com/routeros/6.38.7/chr-6.38.7.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.38.5.img", - "version": "6.38.5", - "md5sum": "8147f42ea1ee96f580a35a298b7f9354", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "https://download2.mikrotik.com/routeros/6.38.5/chr-6.38.5.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.38.1.img", - "version": "6.38.1", - "md5sum": "753ed7c86e0f54fd9e18d044db64538d", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "https://download2.mikrotik.com/routeros/6.38.1/chr-6.38.1.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.38.img", - "version": "6.38", - "md5sum": "37e2165112f8a9beccac06a9a6009000", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.38/chr-6.38.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.37.3.img", - "version": "6.37.3", - "md5sum": "bda87db475f80debdf3181accf6b78e2", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.37.3/chr-6.37.3.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.37.1.img", - "version": "6.37.1", - "md5sum": "713b14a5aba9f967f7bdd9029c8d85b6", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.37.1/chr-6.37.1.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.36.4.img", - "version": "6.36.4", - "md5sum": "09527bde50697711926c08d545940c1e", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.36.4/chr-6.36.4.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.34.2.vmdk", - "version": "6.34.2 (.vmdk)", - "md5sum": "0360f121b76a8b491a05dc37640ca319", - "filesize": 30277632, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.34.2/chr-6.34.2.vmdk" - }, - { - "filename": "chr-6.34.2.vdi", - "version": "6.34.2 (.vdi)", - "md5sum": "e7e4021aeeee2eaabd024d48702bb2e1", - "filesize": 30409728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.34.2/chr-6.34.2.vdi" - }, - { - "filename": "chr-6.34.2.img", - "version": "6.34.2 (.img)", - "md5sum": "984d4d11c2ff209fcdc21ac42895edbe", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.34.2/chr-6.34.2.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.34.vmdk", - "version": "6.34 (.vmdk)", - "md5sum": "c5e6d192ae19d263a9a313d4b4bee7e4", - "filesize": 30277632, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.34/chr-6.34.vmdk" - }, - { - "filename": "chr-6.34.vdi", - "version": "6.34 (.vdi)", - "md5sum": "34b161f83a792c744c76a529afc094a8", - "filesize": 30409728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.34/chr-6.34.vdi" - }, - { - "filename": "chr-6.34.img", - "version": "6.34 (.img)", - "md5sum": "32ffde7fb934c7bfee555c899ccd77b6", - "filesize": 134217728, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.34/chr-6.34.img.zip", - "compression": "zip" - }, - { - "filename": "chr-6.33.5.vmdk", - "version": "6.33.5 (.vmdk)", - "md5sum": "cd284e28aa02ae59f55ed8f43ff27fbf", - "filesize": 23920640, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.33.5/chr-6.33.5.vmdk" - }, - { - "filename": "chr-6.33.5.vdi", - "version": "6.33.5 (.vdi)", - "md5sum": "fa84e63a558e7c61d7d338386cfd08c9", - "filesize": 24118272, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.33.5/chr-6.33.5.vdi" - }, - { - "filename": "chr-6.33.5.img", - "version": "6.33.5 (.img)", - "md5sum": "210cc8ad06f25c9f27b6b99f6e00bd91", - "filesize": 67108864, - "direct_download_url": "http://download2.mikrotik.com/routeros/6.33.5/chr-6.33.5.img.zip", - "download_url": "http://www.mikrotik.com/download", - "compression": "zip" - }, - { - "filename": "chr-6.33.3.vmdk", - "version": "6.33.3 (.vmdk)", - "md5sum": "08532a5af1a830182d65c416eab2b089", - "filesize": 23920640, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.33.3/chr-6.33.3.vmdk" - }, - { - "filename": "chr-6.33.2.vmdk", - "version": "6.33.2 (.vmdk)", - "md5sum": "6291893c2c9626603c6d38d23390a8be", - "filesize": 23920640, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.33.2/chr-6.33.2.vmdk" - }, - { - "filename": "chr-6.33.vmdk", - "version": "6.33 (.vmdk)", - "md5sum": "63bee5405fa1e209388adc6b5f78bb70", - "filesize": 23920640, - "download_url": "http://www.mikrotik.com/download", - "direct_download_url": "http://download2.mikrotik.com/routeros/6.33/chr-6.33.vmdk" } ], "versions": [ + { + "name": "6.44.3", + "images": { + "hda_disk_image": "chr-6.44.3.img" + } + }, { "name": "6.44.2", "images": { @@ -330,138 +156,6 @@ "images": { "hda_disk_image": "chr-6.40.3.img" } - }, - { - "name": "6.39.2", - "images": { - "hda_disk_image": "chr-6.39.2.img" - } - }, - { - "name": "6.39.1", - "images": { - "hda_disk_image": "chr-6.39.1.img" - } - }, - { - "name": "6.39", - "images": { - "hda_disk_image": "chr-6.39.img" - } - }, - { - "name": "6.38.7", - "images": { - "hda_disk_image": "chr-6.38.7.img" - } - }, - { - "name": "6.38.5", - "images": { - "hda_disk_image": "chr-6.38.5.img" - } - }, - { - "name": "6.38.1", - "images": { - "hda_disk_image": "chr-6.38.1.img" - } - }, - { - "name": "6.38", - "images": { - "hda_disk_image": "chr-6.38.img" - } - }, - { - "name": "6.37.3", - "images": { - "hda_disk_image": "chr-6.37.3.img" - } - }, - { - "name": "6.37.1", - "images": { - "hda_disk_image": "chr-6.37.1.img" - } - }, - { - "name": "6.36.4", - "images": { - "hda_disk_image": "chr-6.36.4.img" - } - }, - { - "name": "6.34.2 (.vmdk)", - "images": { - "hda_disk_image": "chr-6.34.2.vmdk" - } - }, - { - "name": "6.34.2 (.vdi)", - "images": { - "hda_disk_image": "chr-6.34.2.vdi" - } - }, - { - "name": "6.34.2 (.img)", - "images": { - "hda_disk_image": "chr-6.34.2.img" - } - }, - { - "name": "6.34 (.vmdk)", - "images": { - "hda_disk_image": "chr-6.34.vmdk" - } - }, - { - "name": "6.34 (.vdi)", - "images": { - "hda_disk_image": "chr-6.34.vdi" - } - }, - { - "name": "6.34 (.img)", - "images": { - "hda_disk_image": "chr-6.34.img" - } - }, - { - "name": "6.33.5 (.vmdk)", - "images": { - "hda_disk_image": "chr-6.33.5.vmdk" - } - }, - { - "name": "6.33.5 (.vdi)", - "images": { - "hda_disk_image": "chr-6.33.5.vdi" - } - }, - { - "name": "6.33.5 (.img)", - "images": { - "hda_disk_image": "chr-6.33.5.img" - } - }, - { - "name": "6.33.3 (.vmdk)", - "images": { - "hda_disk_image": "chr-6.33.3.vmdk" - } - }, - { - "name": "6.33.2 (.vmdk)", - "images": { - "hda_disk_image": "chr-6.33.2.vmdk" - } - }, - { - "name": "6.33 (.vmdk)", - "images": { - "hda_disk_image": "chr-6.33.vmdk" - } } ] } diff --git a/gns3server/appliances/opennac.gns3a b/gns3server/appliances/opennac.gns3a new file mode 100644 index 00000000..34c894ab --- /dev/null +++ b/gns3server/appliances/opennac.gns3a @@ -0,0 +1,44 @@ +{ + "name": "OpenNAC", + "category": "guest", + "description": "openNAC is an opensource Network Access Control for corporate LAN / WAN environments. It enables authentication, authorization and audit policy-based all access to network. It supports diferent network vendors like Cisco, Alcatel, 3Com or Extreme Networks, and different clients like PCs with Windows or Linux, Mac,devices like smartphones and tablets. Based on open source components and self-development It is based on industry standards such as FreeRadius, 802.1x, AD, ldap, ...It is very extensible, new features can be incorporated because it is architectured in plugins. Easily integrated with existing systems Last but not least, It provides value added services such as configuration management, network, backup configurations, Network Discovery and Network Monitoring. Download the OVA, then extract the VMDK (tar -xvf FILE.ova), then convert to qcow2 (qemu-img convert -O qcow2 FILE.vmdk FILE.qcow2).", + "vendor_name": "Opennactech", + "vendor_url": "http://www.opennac.org/opennac/en.html", + "documentation_url": "http://www.opennac.org/opennac/en/support.html", + "product_name": "OpenNAC", + "product_url": "https://opennac.org/", + "registry_version": 3, + "status": "stable", + "maintainer": "Brent Stewart", + "maintainer_email": "brent@stewart.tc", + "usage": "Passwords are set during installation.", + "symbol": "opennac.png", + "qemu": { + "adapter_type": "e1000", + "adapters": 1, + "ram": 512, + "arch": "x86_64", + "console_type": "vnc", + "kvm": "require", + "options": "-smp 2" + }, + "images": [ + { + "filename": "opennac_3711_img.qcow2", + "version": "OpenNAC 3711", + "md5sum": "88d6129265860aa58c5306cd7b413aab", + "filesize": 3968729088, + "download_url": "http://www.opennac.org/opennac/en/download.html", + "direct_download_url": "http://sourceforge.net/projects/opennac/files/ova/opennac_3711_img.ova/download" + } + ], + "versions": [ + { + "name": "OpenNAC 3711", + "images": { + "hda_disk_image": "opennac_3711_img.qcow2" + } + } + +] +} diff --git a/gns3server/appliances/packetfence-zen.gns3a b/gns3server/appliances/packetfence-zen.gns3a index 90e34d17..baf4d625 100644 --- a/gns3server/appliances/packetfence-zen.gns3a +++ b/gns3server/appliances/packetfence-zen.gns3a @@ -11,7 +11,8 @@ "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Boot the live CD", + "usage": "Rename the downloaded file to include the version number. Boot the live CD", + "symbol": "packetfence2.png", "qemu": { "adapter_type": "virtio-net-pci", "adapters": 2, @@ -22,6 +23,15 @@ "kvm": "require" }, "images": [ + { + "filename": "PacketFenceZEN_USB-9.0.1.img", + "version": "9.0.1", + "md5sum": "05a18a5a3c53bf10e84082b3d8db3961", + "filesize": 3221225472, + "download_url": "https://packetfence.org/download.html#/zen", + "direct_download_url": "https://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/9.0.1/PacketFenceZEN_USB-9.0.1.tar.bz2/download", + "compression": "bzip2" + }, { "filename": "PacketFenceZEN_USB-8.3.0.img", "version": "8.3.0", @@ -75,54 +85,15 @@ "download_url": "https://packetfence.org/download.html#/zen", "direct_download_url": "https://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/7.0.0/PacketFenceZEN_USB-7.0.0.tar.bz2/download", "compression": "bzip2" - }, - { - "filename": "PacketFenceZEN_USB-6.5.1.img", - "version": "6.5.1", - "md5sum": "937c02640bd487889b7071e8f094a62a", - "filesize": 3221225472, - "download_url": "https://packetfence.org/download.html#/zen", - "direct_download_url": "http://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/6.5.1/PacketFenceZEN_USB-6.5.1.tar.bz2/download", - "compression": "bzip2" - }, - { - "filename": "PacketFenceZEN_USB-6.5.0.img", - "version": "6.5.0", - "md5sum": "5d5ff015f115e9dbcfd355f1bb22f5d9", - "filesize": 3221225472, - "download_url": "https://packetfence.org/download.html#/zen", - "direct_download_url": "http://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/6.5.0/PacketFenceZEN_USB-6.5.0.tar.bz2/download", - "compression": "bzip2" - }, - { - "filename": "PacketFenceZEN_USB-6.4.0.img", - "version": "6.4.0", - "md5sum": "7f2bea58421d094152ea71f49cc3084a", - "filesize": 3221225472, - "download_url": "https://packetfence.org/download.html#/zen", - "direct_download_url": "https://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/6.4.0/PacketFenceZEN_USB-6.4.0.tar.bz2/download", - "compression": "bzip2" - }, - { - "filename": "PacketFenceZEN_USB-6.3.0.img", - "version": "6.3.0", - "md5sum": "94e19349faedf292743fdc0ab48f8466", - "filesize": 3221225472, - "download_url": "https://packetfence.org/download.html#/zen", - "direct_download_url": "https://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/6.3.0/PacketFenceZEN_USB-6.3.0.tar.bz2/download", - "compression": "bzip2" - }, - { - "filename": "PacketFenceZEN_USB-6.2.1.img", - "version": "6.2.1", - "md5sum": "f212be7c8621b90d973f500f00ef1277", - "filesize": 3221225472, - "download_url": "https://packetfence.org/download.html#/zen", - "direct_download_url": "http://sourceforge.net/projects/packetfence/files/PacketFence%20ZEN/6.2.1/PacketFenceZEN_USB-6.2.1.tar.bz2/download", - "compression": "bzip2" } ], "versions": [ + { + "name": "9.0.1", + "images": { + "hda_disk_image": "PacketFenceZEN_USB-9.0.1.img" + } + }, { "name": "8.3.0", "images": { @@ -158,36 +129,6 @@ "images": { "hda_disk_image": "PacketFenceZEN_USB-7.0.0.img" } - }, - { - "name": "6.5.0", - "images": { - "hda_disk_image": "PacketFenceZEN_USB-6.5.1.img" - } - }, - { - "name": "6.5.0", - "images": { - "hda_disk_image": "PacketFenceZEN_USB-6.5.0.img" - } - }, - { - "name": "6.4.0", - "images": { - "hda_disk_image": "PacketFenceZEN_USB-6.4.0.img" - } - }, - { - "name": "6.3.0", - "images": { - "hda_disk_image": "PacketFenceZEN_USB-6.3.0.img" - } - }, - { - "name": "6.2.1", - "images": { - "hda_disk_image": "PacketFenceZEN_USB-6.2.1.img" - } } ] } diff --git a/gns3server/appliances/parrot-os.gns3a b/gns3server/appliances/parrot-os.gns3a index 1146ed32..21715ae2 100644 --- a/gns3server/appliances/parrot-os.gns3a +++ b/gns3server/appliances/parrot-os.gns3a @@ -22,6 +22,14 @@ "kvm": "require" }, "images": [ + { + "filename": "Parrot-security-4.6_amd64.iso", + "version": "Security Build 4.6", + "md5sum": "ead812edc83119e8bcb4ee9daabdc105", + "filesize": 3788668928, + "download_url": "https://www.parrotsec.org/download-security.php", + "direct_download_url": "https://download.parrotsec.org/parrot/iso/4.6/Parrot-security-4.6_amd64.iso" + }, { "filename": "Parrot-security-3.11_amd64.iso", "version": "Security Build 3.11", @@ -41,6 +49,13 @@ ], "versions": [ + { + "name": "Security Build 4.6", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "Parrot-security-4.6_amd64.iso" + } + }, { "name": "Security Build 3.11", "images": { diff --git a/gns3server/appliances/security-onion.gns3a b/gns3server/appliances/security-onion.gns3a index f894fbe1..597abecb 100644 --- a/gns3server/appliances/security-onion.gns3a +++ b/gns3server/appliances/security-onion.gns3a @@ -17,11 +17,19 @@ "adapter_type": "e1000", "adapters": 2, "ram": 3072, - "arch": "i386", - "console_type": "telnet", + "arch": "x86_64", + "console_type": "vnc", "kvm": "allow" }, "images": [ + { + "filename": "securityonion-16.04.6.1.iso", + "version": "16.04.6.1", + "md5sum": "ca835cef92c2c0daafa16e789c343d1d", + "filesize": 2020605952, + "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/", + "direct_download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v16.04.5.3_20181010/securityonion-16.04.6.1.iso" + }, { "filename": "securityonion-16.04.5.3.iso", "version": "16.04.5.3", @@ -58,6 +66,12 @@ ], "versions": [ { + "name": "16.04.6.1", + "images": { + "hda_disk_image": "empty30G.qcow2", + "cdrom_image": "securityonion-16.04.6.1.iso" + } + }, { "name": "16.04.5.3", "images": { "hda_disk_image": "empty30G.qcow2", diff --git a/gns3server/appliances/vyos.gns3a b/gns3server/appliances/vyos.gns3a index 7e3cd601..7c22626b 100644 --- a/gns3server/appliances/vyos.gns3a +++ b/gns3server/appliances/vyos.gns3a @@ -1,7 +1,7 @@ { "name": "VyOS", "category": "router", - "description": "VyOS is a community fork of Vyatta, a Linux-based network operating system that provides software-based network routing, firewall, and VPN functionality.", + "description": "VyOS is a community fork of Vyatta, a Linux-based network operating system that provides software-based network routing, firewall, and VPN functionality. VyOS has a subscription LTS version and a community rolling release. The latest version in this appliance is in the rolling release track.", "vendor_name": "Linux", "vendor_url": "http://vyos.net/", "documentation_url": "http://vyos.net/wiki/User_Guide", @@ -9,6 +9,7 @@ "product_url": "http://vyos.net/", "registry_version": 3, "status": "stable", + "symbol": "vyos.png", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", "usage": "Default username/password is vyos/vyos. At first boot the router will start from the cdrom, login and then type install system and follow the instructions.", @@ -24,10 +25,10 @@ }, "images": [ { - "filename": "vyos-1.2.0-beta1-amd64.iso", - "version": "1.2.0-beta1", - "md5sum": "c2906532d4c7a0d29b61e8eab326d6c7", - "filesize": 243269632, + "filename": "vyos-1.2.0-rolling+201906040337-amd64.iso", + "version": "1.2.0-2019-06-04", + "md5sum": "2a1342985b2a9edfef9f66310ce11a92", + "filesize": 427819008, "download_url": "http://dev.packages.vyos.net/iso/preview/1.2.0-beta1/", "direct_download_url": "http://dev.packages.vyos.net/iso/preview/1.2.0-beta1/vyos-1.2.0-beta1-amd64.iso" }, @@ -74,10 +75,10 @@ ], "versions": [ { - "name": "1.2.0-beta1", + "name": "1.2.0-2019-06-04", "images": { "hda_disk_image": "empty8G.qcow2", - "cdrom_image": "vyos-1.2.0-beta1-amd64.iso" + "cdrom_image": "vyos-1.2.0-rolling+201906040337-amd64.iso" } }, { From 43c7acb0cf46d6751307538c33dd276189377954 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 15 Jun 2019 15:39:32 +0200 Subject: [PATCH 35/46] Release v2.2.0b3 --- CHANGELOG | 8 ++++++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1b58762e..46785d7a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,13 @@ # Change Log +## 2.2.0b3 15/06/2019 + +* Fix template migration issues from GUI to controller. Fixes https://github.com/GNS3/gns3-gui/issues/2803 +* Refresh mounted media after ISO switch. +* Resolve conflicts in docker volumes instead of error. Fixes https://github.com/GNS3/gns3-server/issues/1595 +* %guest-cid% variable implementation for Qemu VMs. Fixes https://github.com/GNS3/gns3-gui/issues/2804 +* Fix KeyError: 'usage' exception when configuring IOU template. Fixes https://github.com/GNS3/gns3-gui/issues/2806 + ## 2.2.0b2 29/05/2019 * Ignore Unicode errors when reading base config file contents. diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index 6416bc7f..f58b313d 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -58,7 +58,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://eb9c34a9e4504bf99a6392a3ed2e0568:65d873fc33544886b239628c5e8577e4@sentry.io/38482" + DSN = "https://52dee6fc5b2a4a61880328386919e2f4:c84e7bbd39ce43b7aec27349e49fedf0@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index 0e73452f..23614700 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.2.0dev13" -__version_info__ = (2, 2, 0, 99) +__version__ = "2.2.0b3" +__version_info__ = (2, 2, 0, -99) # If it's a git checkout try to add the commit if "dev" in __version__: From 0df3322b6cd6c999d8dcc349e22bb3f8af232a54 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 15 Jun 2019 16:38:06 +0200 Subject: [PATCH 36/46] Development on 2.2.0dev14 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index 23614700..133b2bed 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.2.0b3" -__version_info__ = (2, 2, 0, -99) +__version__ = "2.2.0dev14" +__version_info__ = (2, 2, 0, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From aad74dbcb9a60e7f9a59fb2e20fe09f0df08d73e Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 11:16:50 +0200 Subject: [PATCH 37/46] Add debug message when searching for an image. Ref https://github.com/GNS3/gns3-gui/issues/2828 --- gns3server/compute/base_manager.py | 8 ++++++-- gns3server/utils/images.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gns3server/compute/base_manager.py b/gns3server/compute/base_manager.py index 0eb6426a..23656a43 100644 --- a/gns3server/compute/base_manager.py +++ b/gns3server/compute/base_manager.py @@ -492,15 +492,17 @@ class BaseManager: # Windows path should not be send to a unix server if not sys.platform.startswith("win"): if re.match(r"^[A-Z]:", path) is not None: - raise NodeError("{} is not allowed on this remote server. Please use only a filename in {}.".format(path, img_directory)) + raise NodeError("{} is not allowed on this remote server. Please only use a file from '{}'".format(path, img_directory)) if not os.path.isabs(path): for directory in valid_directory_prefices: + log.debug("Searching for image '{}' in '{}'".format(orig_path, directory)) path = self._recursive_search_file_in_directory(directory, orig_path) if path: return force_unix_path(path) # Not found we try the default directory + log.debug("Searching for image '{}' in default directory".format(orig_path)) s = os.path.split(orig_path) path = force_unix_path(os.path.join(img_directory, *s)) if os.path.exists(path): @@ -509,6 +511,7 @@ class BaseManager: # For local server we allow using absolute path outside image directory if server_config.getboolean("local", False) is True: + log.debug("Searching for '{}'".format(orig_path)) path = force_unix_path(path) if os.path.exists(path): return path @@ -517,11 +520,12 @@ class BaseManager: # Check to see if path is an absolute path to a valid directory path = force_unix_path(path) for directory in valid_directory_prefices: + log.debug("Searching for image '{}' in '{}'".format(orig_path, directory)) if os.path.commonprefix([directory, path]) == directory: if os.path.exists(path): return path raise ImageMissingError(orig_path) - raise NodeError("{} is not allowed on this remote server. Please use only a filename in {}.".format(path, img_directory)) + raise NodeError("{} is not allowed on this remote server. Please only use a file from '{}'".format(path, img_directory)) def _recursive_search_file_in_directory(self, directory, searched_file): """ diff --git a/gns3server/utils/images.py b/gns3server/utils/images.py index 21bfb9a8..93420069 100644 --- a/gns3server/utils/images.py +++ b/gns3server/utils/images.py @@ -120,7 +120,7 @@ def default_images_directory(type): def images_directories(type): """ - Return all directory where we will look for images + Return all directories where we will look for images by priority :param type: Type of emulator From 63fb82a89d232b25c0880626e383eee664a153bc Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 11:33:04 +0200 Subject: [PATCH 38/46] Remove deprecated Qemu parameter to run legacy ASA VMs. Fixes #2827 --- scripts/docker_dev_server.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/docker_dev_server.sh diff --git a/scripts/docker_dev_server.sh b/scripts/docker_dev_server.sh old mode 100644 new mode 100755 From b0f74c2a5e9b1c4c958190efdffba96f539179d7 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 15:40:11 +0200 Subject: [PATCH 39/46] Fix issue when trying to rename a Dynamips node that is already powered on. Fixes #2824 --- gns3server/compute/dynamips/nodes/router.py | 3 ++- gns3server/controller/node.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gns3server/compute/dynamips/nodes/router.py b/gns3server/compute/dynamips/nodes/router.py index d7472a46..e97a33ba 100644 --- a/gns3server/compute/dynamips/nodes/router.py +++ b/gns3server/compute/dynamips/nodes/router.py @@ -1525,6 +1525,8 @@ class Router(BaseNode): :param new_name: new name string """ + await self._hypervisor.send('vm rename "{name}" "{new_name}"'.format(name=self._name, new_name=new_name)) + # change the hostname in the startup-config if os.path.isfile(self.startup_config_path): try: @@ -1547,7 +1549,6 @@ class Router(BaseNode): except OSError as e: raise DynamipsError("Could not amend the configuration {}: {}".format(self.private_config_path, e)) - await self._hypervisor.send('vm rename "{name}" "{new_name}"'.format(name=self._name, new_name=new_name)) log.info('Router "{name}" [{id}]: renamed to "{new_name}"'.format(name=self._name, id=self._id, new_name=new_name)) self._name = new_name diff --git a/gns3server/controller/node.py b/gns3server/controller/node.py index 1b9f8eaf..c50aad9f 100644 --- a/gns3server/controller/node.py +++ b/gns3server/controller/node.py @@ -388,7 +388,6 @@ class Node: # When updating properties used only on controller we don't need to call the compute update_compute = False - old_json = self.__json__() compute_properties = None @@ -402,6 +401,8 @@ class Node: if prop == "properties": compute_properties = kwargs[prop] else: + if prop == "name" and self.node_type == "dynamips" and self.status == "started": + raise aiohttp.web.HTTPConflict(text="Sorry, it is not possible rename of a Dynamips node that is already powered on") setattr(self, prop, kwargs[prop]) if compute_properties and "custom_adapters" in compute_properties: From 03c7744efd3fa10b468dbd940c7644f6d714ef71 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 15:51:06 +0200 Subject: [PATCH 40/46] Set defaults for custom cloud nodes. --- gns3server/schemas/cloud_template.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gns3server/schemas/cloud_template.py b/gns3server/schemas/cloud_template.py index 43d6c4ab..6e340ab2 100644 --- a/gns3server/schemas/cloud_template.py +++ b/gns3server/schemas/cloud_template.py @@ -28,13 +28,15 @@ CLOUD_TEMPLATE_PROPERTIES = { "remote_console_host": { "description": "Remote console host or IP", "type": ["string"], - "minLength": 1 + "minLength": 1, + "default": "127.0.0.1" }, "remote_console_port": { "description": "Console TCP port", "minimum": 1, "maximum": 65535, - "type": "integer" + "type": "integer", + "default": 23 }, "remote_console_type": { "description": "Console type", @@ -43,7 +45,8 @@ CLOUD_TEMPLATE_PROPERTIES = { "remote_console_http_path": { "description": "Path of the remote web interface", "type": "string", - "minLength": 1 + "minLength": 1, + "default": "/" }, } From cba39a37442d4de43936ca222c1fb4e174defe99 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 15:56:54 +0200 Subject: [PATCH 41/46] Fix issue when starting GNS3 VM for Hyper-V --- gns3server/controller/gns3vm/hyperv_gns3_vm.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gns3server/controller/gns3vm/hyperv_gns3_vm.py b/gns3server/controller/gns3vm/hyperv_gns3_vm.py index a072e61d..5cc80f2e 100644 --- a/gns3server/controller/gns3vm/hyperv_gns3_vm.py +++ b/gns3server/controller/gns3vm/hyperv_gns3_vm.py @@ -248,7 +248,10 @@ class HyperVGNS3VM(BaseGNS3VM): vnics = self._get_vm_resources(self._vm, 'Msvm_SyntheticEthernetPortSettingData') while True: for port in ports: - vnic = [v for v in vnics if port.Parent == v.path_()][0] + try: + vnic = [v for v in vnics if port.Parent == v.path_()][0] + except IndexError: + continue config = vnic.associators(wmi_result_class='Msvm_GuestNetworkAdapterConfiguration') ip_addresses = config[0].IPAddresses for ip_address in ip_addresses: From dcf94a585209ebbb979773769528555a8191559f Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 17:07:13 +0200 Subject: [PATCH 42/46] Requires a project to be opened to start/stop/suspend all nodes. Fixes #1609 --- gns3server/controller/project.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gns3server/controller/project.py b/gns3server/controller/project.py index 0c0093ab..c8bbd45e 100644 --- a/gns3server/controller/project.py +++ b/gns3server/controller/project.py @@ -1032,6 +1032,7 @@ class Project: except OSError as e: raise aiohttp.web.HTTPInternalServerError(text="Could not write topology: {}".format(e)) + @open_required async def start_all(self): """ Start all nodes @@ -1041,6 +1042,7 @@ class Project: pool.append(node.start) await pool.join() + @open_required async def stop_all(self): """ Stop all nodes @@ -1050,6 +1052,7 @@ class Project: pool.append(node.stop) await pool.join() + @open_required async def suspend_all(self): """ Suspend all nodes @@ -1059,6 +1062,7 @@ class Project: pool.append(node.suspend) await pool.join() + @open_required async def duplicate_node(self, node, x, y, z): """ Duplicate a node From 3172985a2150c5533e9865db7e4b7a01f5a51579 Mon Sep 17 00:00:00 2001 From: grossmj Date: Thu, 11 Jul 2019 16:55:13 +0200 Subject: [PATCH 43/46] Sync appliance files. --- gns3server/appliances/kali-linux.gns3a | 50 ++++++++++++++++++-------- gns3server/appliances/ubuntu-gui.gns3a | 50 ++++++++++++++++---------- 2 files changed, 68 insertions(+), 32 deletions(-) diff --git a/gns3server/appliances/kali-linux.gns3a b/gns3server/appliances/kali-linux.gns3a index 10ce5e20..c4d66615 100644 --- a/gns3server/appliances/kali-linux.gns3a +++ b/gns3server/appliances/kali-linux.gns3a @@ -10,31 +10,33 @@ "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Default password is toor", + "usage": "Default password is toor\nEnable persistence by selecting boot option 'Live USB Persistence'", + "port_name_format": "eth{0}", "qemu": { "adapter_type": "e1000", "adapters": 8, "ram": 1024, "arch": "x86_64", "console_type": "vnc", + "boot_priority": "d", "kvm": "require" }, "images": [ - { - "filename": "kali-linux-mate-2019.2-amd64.iso", - "version": "2019.2 (MATE)", - "md5sum": "fec8dd7009f932c51a74323df965a709", - "filesize": 3313217536, - "download_url": "https://www.kali.org/downloads/", - "direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-mate-2019.2-amd64.iso" - }, { "filename": "kali-linux-2019.2-amd64.iso", "version": "2019.2", "md5sum": "0f89b6225d7ea9c18682f7cc541c1179", "filesize": 3353227264, "download_url": "https://www.kali.org/downloads/", - "direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-2019.2-amd64.iso" + "direct_download_url": "http://cdimage.kali.org/kali-2019.2/kali-linux-2019.2-amd64.iso" + }, + { + "filename": "kali-linux-mate-2019.2-amd64.iso", + "version": "2019.2 (MATE)", + "md5sum": "fec8dd7009f932c51a74323df965a709", + "filesize": 3313217536, + "download_url": "https://www.kali.org/downloads/", + "direct_download_url": "http://cdimage.kali.org/kali-2019.2/kali-linux-mate-2019.2-amd64.iso" }, { "filename": "kali-linux-2019.1a-amd64.iso", @@ -115,78 +117,98 @@ "filesize": 3320512512, "download_url": "https://www.offensive-security.com/kali-linux-vmware-arm-image-download/", "direct_download_url": "http://images.kali.org/Kali-Linux-2.0.0-vm-amd64.7z" + }, + { + "filename": "kali-linux-persistence-1gb.qcow2", + "version": "1.0", + "md5sum": "14e9c92f3ba5a0bd1128c1ea26a129ea", + "filesize": 34734080, + "download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/", + "direct_download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/kali-linux-persistence-1gb.qcow2/download" } ], "versions": [ { - "name": "2019.2 (MATE)", + "name": "2019.2", "images": { - "cdrom_image": "kali-linux-mate-2019.2-amd64.iso" + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", + "cdrom_image": "kali-linux-2019.2-amd64.iso" } }, { - "name": "2019.2", + "name": "2019.2 (MATE)", "images": { - "cdrom_image": "kali-linux-2019.2-amd64.iso" + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", + "cdrom_image": "kali-linux-mate-2019.2-amd64.iso" } }, { "name": "2019.1a", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2019.1a-amd64.iso" } }, { "name": "2018.4", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2018.4-amd64.iso" } }, { "name": "2018.3a", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2018.3a-amd64.iso" } }, { "name": "2018.1", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2018.1-amd64.iso" } }, { "name": "2017.3", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2017.3-amd64.iso" } }, { "name": "2017.2", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2017.2-amd64.iso" } }, { "name": "2017.1", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2017.1-amd64.iso" } }, { "name": "2016.2", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2016.2-amd64.iso" } }, { "name": "2016.1", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2016.1-amd64.iso" } }, { "name": "2.0", "images": { + "hda_disk_image": "kali-linux-persistence-1gb.qcow2", "cdrom_image": "kali-linux-2.0-amd64.iso" } } diff --git a/gns3server/appliances/ubuntu-gui.gns3a b/gns3server/appliances/ubuntu-gui.gns3a index 410abe1e..fe1050d2 100644 --- a/gns3server/appliances/ubuntu-gui.gns3a +++ b/gns3server/appliances/ubuntu-gui.gns3a @@ -26,45 +26,59 @@ }, "images": [ { - "filename": "Ubuntu_17.04-VM-64bit.vmdk", - "version": "17.04", - "md5sum": "5c82d69c49ba08179e9a94901f67da1f", - "filesize": 4792123392, + "filename": "Ubuntu 19.04 (64bit).vmdk", + "version": "19.04", + "md5sum": "21535675c54507e9325bf8774a7bd73e", + "filesize": 5558435840, "download_url": "http://www.osboxes.org/ubuntu/" }, { - "filename": "Ubuntu_16.10_Yakkety-VM-64bit.vmdk", - "version": "16.10", - "md5sum": "c835f24dbb86f5f61c78d992ed38b6b1", - "filesize": 9133293568, + "filename": "Ubuntu 18.10 Cosmic (64Bit).vmdk", + "version": "18.10", + "md5sum": "7f72be569356baa20863cd354d2efa60", + "filesize": 6747389952, "download_url": "http://www.osboxes.org/ubuntu/" }, { - "filename": "Ubuntu_16.04.3-VM-64bit.vmdk", - "version": "16.04", - "md5sum": "45bccf63f2777e492f022dbf025f67d0", - "filesize": 4302110720, + "filename": "Ubuntu 18.04.2 (64bit).vmdk", + "version": "18.04.2", + "md5sum": "d57b732d90759e3b3a62594a83f8f196", + "filesize": 6003097600, + "download_url": "http://www.osboxes.org/ubuntu/" + }, + { + "filename": "Ubuntu 16.04.6 (64bit).vmdk", + "version": "16.04.6", + "md5sum": "33b2964cef607c1c9fe748db8a2fa6ea", + "filesize": 4780982272, "download_url": "http://www.osboxes.org/ubuntu/" } ], "versions": [ { - "name": "17.04", + "name": "19.04", + "images": { + "hda_disk_image": "Ubuntu 19.04 (64bit).vmdk" + } + }, + { + "name": "18.10", "images": { - "hda_disk_image": "Ubuntu_17.04-VM-64bit.vmdk" + "hda_disk_image": "Ubuntu 18.10 Cosmic (64Bit).vmdk" } }, { - "name": "16.10", + "name": "18.04.2", "images": { - "hda_disk_image": "Ubuntu_16.10_Yakkety-VM-64bit.vmdk" + "hda_disk_image": "Ubuntu 18.04.2 (64bit).vmdk" } }, { - "name": "16.04", + "name": "16.04.6", "images": { - "hda_disk_image": "Ubuntu_16.04.3-VM-64bit.vmdk" + "hda_disk_image": "Ubuntu 16.04.6 (64bit).vmdk" } } ] } + From f7376ee3827e9212c8e2fda6c9bc516ce6817fbf Mon Sep 17 00:00:00 2001 From: grossmj Date: Thu, 11 Jul 2019 16:58:35 +0200 Subject: [PATCH 44/46] Release v2.2.0b4 --- CHANGELOG | 9 +++++++++ gns3server/crash_report.py | 2 +- gns3server/version.py | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 46785d7a..d1599706 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,14 @@ # Change Log +## 2.2.0b4 11/07/2019 + +* Requires a project to be opened to start/stop/suspend all nodes. Fixes #1609 +* Fix issue when starting GNS3 VM for Hyper-V +* Set defaults for custom cloud nodes. +* Fix issue when trying to rename a Dynamips node that is already powered on. Fixes #2824 +* Remove deprecated Qemu parameter to run legacy ASA VMs. Fixes #2827 +* Add debug message when searching for an image. Ref https://github.com/GNS3/gns3-gui/issues/2828 + ## 2.2.0b3 15/06/2019 * Fix template migration issues from GUI to controller. Fixes https://github.com/GNS3/gns3-gui/issues/2803 diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py index f58b313d..65f5827c 100644 --- a/gns3server/crash_report.py +++ b/gns3server/crash_report.py @@ -58,7 +58,7 @@ class CrashReport: Report crash to a third party service """ - DSN = "https://52dee6fc5b2a4a61880328386919e2f4:c84e7bbd39ce43b7aec27349e49fedf0@sentry.io/38482" + DSN = "https://b3d56605ec7540fdb05795d2666fde28:608a6c71d16d42468f0fc1810d948c46@sentry.io/38482" if hasattr(sys, "frozen"): cacert = get_resource("cacert.pem") if cacert is not None and os.path.isfile(cacert): diff --git a/gns3server/version.py b/gns3server/version.py index 133b2bed..4706b688 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.2.0dev14" -__version_info__ = (2, 2, 0, 99) +__version__ = "2.2.0b4" +__version_info__ = (2, 2, 0, -99) # If it's a git checkout try to add the commit if "dev" in __version__: From 6626bf37a6bab697f7995b4af9bfb6536eda3403 Mon Sep 17 00:00:00 2001 From: grossmj Date: Thu, 11 Jul 2019 17:34:56 +0200 Subject: [PATCH 45/46] Development on 2.2.0dev15 --- gns3server/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/version.py b/gns3server/version.py index 4706b688..9787de6a 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,8 +23,8 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "2.2.0b4" -__version_info__ = (2, 2, 0, -99) +__version__ = "2.2.0dev15" +__version_info__ = (2, 2, 0, 99) # If it's a git checkout try to add the commit if "dev" in __version__: From 7c07d0b4bd48bea56dba110f0523c08b0b0cd562 Mon Sep 17 00:00:00 2001 From: grossmj Date: Fri, 12 Jul 2019 11:32:55 +0200 Subject: [PATCH 46/46] Add missing default values in Cloud schema. --- gns3server/schemas/cloud_template.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gns3server/schemas/cloud_template.py b/gns3server/schemas/cloud_template.py index 6e340ab2..b6840074 100644 --- a/gns3server/schemas/cloud_template.py +++ b/gns3server/schemas/cloud_template.py @@ -23,7 +23,8 @@ from .port import PORT_OBJECT_SCHEMA CLOUD_TEMPLATE_PROPERTIES = { "ports_mapping": { "type": "array", - "items": [PORT_OBJECT_SCHEMA] + "items": [PORT_OBJECT_SCHEMA], + "default": [] }, "remote_console_host": { "description": "Remote console host or IP", @@ -40,7 +41,8 @@ CLOUD_TEMPLATE_PROPERTIES = { }, "remote_console_type": { "description": "Console type", - "enum": ["telnet", "vnc", "spice", "http", "https", "none"] + "enum": ["telnet", "vnc", "spice", "http", "https", "none"], + "default": "none" }, "remote_console_http_path": { "description": "Path of the remote web interface",