diff --git a/CHANGELOG b/CHANGELOG
index 7da94525..bfaecf60 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,16 @@
# Change Log
+## 3.0.0a5 27/10/2023
+
+* Bundle web-ui v3.0.0a5
+* Fix L2IOU "failed code signing checks" when IOU base file name is >= 63 characters
+* Python 3.12 support
+* Add igb Qemu adapter
+* Change "ip cef" to "no ip cef" in IOU default configs. Fixes #2298
+* Drop support for Python 3.7 and upgrade dependencies
+* Fix compute authentication for websocket endpoints
+* Add Qemu IGB network device
+
## 3.0.0a4 18/10/2023
* Bundle web-ui v3.0.0a4
diff --git a/README.md b/README.md
index f4761960..99c168bd 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
[![Snyk scanning](https://snyk.io/test/github/GNS3/gns3-server/badge.svg)](https://snyk.io/test/github/GNS3/gns3-server)
The GNS3 server manages emulators and other virtualization software such as Dynamips, Qemu/KVM, Docker, VPCS, VirtualBox and VMware Workstation.
-Clients like the [GNS3 GUI](https://github.com/GNS3/gns3-gui/) and the [GNS3 Web UI](https://github.com/GNS3/gns3-web-ui>) control the server using a HTTP REST API.
+Clients like the [GNS3 GUI](https://github.com/GNS3/gns3-gui/) and the [GNS3 Web UI](https://github.com/GNS3/gns3-web-ui/) control the server using a HTTP REST API.
## Installation
diff --git a/gns3server/api/routes/controller/links.py b/gns3server/api/routes/controller/links.py
index 618ea198..7264a941 100644
--- a/gns3server/api/routes/controller/links.py
+++ b/gns3server/api/routes/controller/links.py
@@ -267,11 +267,13 @@ async def stream_pcap(request: Request, link: Link = Depends(dep_link)) -> Strea
async def compute_pcap_stream():
try:
+ ssl_context = Controller.instance().ssl_context()
async with HTTPClient.request(
request.method,
pcap_streaming_url,
user=compute.user,
password=compute.password,
+ ssl_context=ssl_context,
timeout=None,
data=body
) as response:
diff --git a/gns3server/api/routes/controller/nodes.py b/gns3server/api/routes/controller/nodes.py
index 13e84450..f9cac15b 100644
--- a/gns3server/api/routes/controller/nodes.py
+++ b/gns3server/api/routes/controller/nodes.py
@@ -541,7 +541,7 @@ async def ws_console(
pass
ws_console_compute_url = (
- f"ws://{compute_host}:{compute.port}/v3/compute/projects/"
+ f"{websocket.url.scheme}://{compute_host}:{compute.port}/v3/compute/projects/"
f"{node.project.id}/{node.node_type}/nodes/{node.id}/console/ws"
)
@@ -575,7 +575,8 @@ async def ws_console(
auth = aiohttp.BasicAuth(user, password.get_secret_value(), "utf-8")
else:
auth = aiohttp.BasicAuth(user, "")
- async with HTTPClient.get_client().ws_connect(ws_console_compute_url, auth=auth) as ws:
+ ssl_context = Controller.instance().ssl_context()
+ async with HTTPClient.get_client().ws_connect(ws_console_compute_url, auth=auth, ssl_context=ssl_context) as ws:
asyncio.ensure_future(ws_receive(ws))
async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT:
diff --git a/gns3server/appliances/fortianalyzer.gns3a b/gns3server/appliances/fortianalyzer.gns3a
index 58486e57..fb0aed44 100644
--- a/gns3server/appliances/fortianalyzer.gns3a
+++ b/gns3server/appliances/fortianalyzer.gns3a
@@ -11,15 +11,16 @@
"product_url": "https://www.fortinet.com/products-services/products/management-reporting/fortianalyzer.html",
"registry_version": 4,
"status": "stable",
- "maintainer": "GNS3 Team",
- "maintainer_email": "developers@gns3.net",
- "usage": "Default username is admin, no password is set.\n\n- Versions 7.0 and higher require:\n--RAM: 8192 MB\n--CPU:4",
+ "maintainer": "Ean Towne",
+ "maintainer_email": "ean.fortinet@gmail.com",
+ "usage": "Default username is admin, no password is set.\n\n- Versions lower than 7.0.x can reduce CPU/RAM",
"symbol": "fortinet.svg",
"port_name_format": "Port{port1}",
"qemu": {
"adapter_type": "e1000",
"adapters": 4,
- "ram": 4096,
+ "ram": 16384,
+ "cpus": 4,
"hda_disk_interface": "virtio",
"hdb_disk_interface": "virtio",
"arch": "x86_64",
@@ -28,6 +29,20 @@
"kvm": "allow"
},
"images": [
+ {
+ "filename": "FAZ_VM64_KVM-v7.4.1-build2308-FORTINET.out.kvm.qcow2",
+ "version": "7.4.1",
+ "md5sum": "f30caac36854c2a0cc1e35c4ab5f310d",
+ "filesize": 435310592,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
+ {
+ "filename": "FAZ_VM64_KVM-v7.2.4-build1460-FORTINET.out.kvm.qcow2",
+ "version": "7.2.4",
+ "md5sum": "d53bd5c61cc3f5e387557dfcfe9bc530",
+ "filesize": 363327488,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FAZ_VM64_KVM-v7.2.2-build1334-FORTINET.out.kvm.qcow2",
"version": "7.2.2",
@@ -42,6 +57,13 @@
"filesize": 340631552,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
+ {
+ "filename": "FAZ_VM64_KVM-v7.0.9-build0489-FORTINET.out.kvm.qcow2",
+ "version": "7.0.9",
+ "md5sum": "3f69c9bc4fa7776476edf0ce9728ebd7",
+ "filesize": 347889664,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FAZ_VM64_KVM-v7.0.6-build0372-FORTINET.out.kvm.qcow2",
"version": "7.0.6",
@@ -56,6 +78,13 @@
"filesize": 334184448,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
+ {
+ "filename": "FAZ_VM64_KVM-v6.4.12-build2610-FORTINET.out.kvm.qcow2",
+ "version": "6.4.12",
+ "md5sum": "b9e164c2d4e778348a6a7107d375abf3",
+ "filesize": 300691456,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FAZ_VM64_KVM-v6-build2288-FORTINET.out.kvm.qcow2",
"version": "6.4.5",
@@ -206,6 +235,20 @@
}
],
"versions": [
+ {
+ "name": "7.4.1",
+ "images": {
+ "hda_disk_image": "FAZ_VM64_KVM-v7.4.1-build2308-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
+ {
+ "name": "7.2.4",
+ "images": {
+ "hda_disk_image": "FAZ_VM64_KVM-v7.2.4-build1460-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "7.2.2",
"images": {
@@ -220,6 +263,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
+ {
+ "name": "7.0.9",
+ "images": {
+ "hda_disk_image": "FAZ_VM64_KVM-v7.0.9-build0489-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "7.0.6",
"images": {
@@ -234,6 +284,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
+ {
+ "name": "6.4.12",
+ "images": {
+ "hda_disk_image": "FAZ_VM64_KVM-v6.4.12-build2610-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "6.4.5",
"images": {
diff --git a/gns3server/appliances/fortigate.gns3a b/gns3server/appliances/fortigate.gns3a
index 9f85fd5e..f3efb72c 100644
--- a/gns3server/appliances/fortigate.gns3a
+++ b/gns3server/appliances/fortigate.gns3a
@@ -11,15 +11,15 @@
"product_url": "http://www.fortinet.com/products/fortigate/virtual-appliances.html",
"registry_version": 4,
"status": "stable",
- "maintainer": "GNS3 Team",
- "maintainer_email": "developers@gns3.net",
+ "maintainer": "Ean Towne",
+ "maintainer_email": "ean.fortinet@gmail.com",
"usage": "Default username is admin, no password is set.\n\n- FortiGate version 7.0.0 and above require 2GB RAM.\n\n- FortiGate versions higher than 7.2.0 trial license is VERY restrictive, not recommended for use.",
"symbol": "fortinet.svg",
"port_name_format": "Port{port1}",
"qemu": {
"adapter_type": "e1000",
"adapters": 10,
- "ram": 1024,
+ "ram": 2048,
"hda_disk_interface": "virtio",
"hdb_disk_interface": "virtio",
"arch": "x86_64",
@@ -28,6 +28,20 @@
"kvm": "allow"
},
"images": [
+ {
+ "filename": "FGT_VM64_KVM-v7.4.1.F-build2463-FORTINET.out.kvm.qcow2",
+ "version": "7.4.1",
+ "md5sum": "362a2f3d4ca842aaabd87191d4446584",
+ "filesize": 116064256,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
+ {
+ "filename": "FGT_VM64_KVM-v7.2.6.F-build1575-FORTINET.out.kvm.qcow2",
+ "version": "7.2.6",
+ "md5sum": "b5ef3c844abb4947f98b88ae0048660b",
+ "filesize": 103022592,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FGT_VM64_KVM-v7.2.4.F-build1396-FORTINET.out.kvm.qcow2",
"version": "7.2.4",
@@ -49,6 +63,13 @@
"filesize": 86704128,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
+ {
+ "filename": "FGT_VM64_KVM-v7.0.12.M-build0523-FORTINET.out.kvm.qcow2",
+ "version": "7.0.12",
+ "md5sum": "7cd2452dde489c80f48c40a7f8a48c8e",
+ "filesize": 88997888,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FGT_VM64_KVM-v7.0.10.M-build0450-FORTINET.out.kvm.qcow2",
"version": "7.0.10",
@@ -63,6 +84,13 @@
"filesize": 77135872,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
+ {
+ "filename": "FGT_VM64_KVM-v6.4.14.M-build2093-FORTINET.out.kvm.qcow2",
+ "version": "6.4.14",
+ "md5sum": "5758340f9d3e1a03139176ab46e63e8d",
+ "filesize": 81461248,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FGT_VM64_KVM-v6.4.12.M-build2060-FORTINET.out.kvm.qcow2",
"version": "6.4.12",
@@ -304,6 +332,20 @@
}
],
"versions": [
+ {
+ "name": "7.4.1",
+ "images": {
+ "hda_disk_image": "FGT_VM64_KVM-v7.4.1.F-build2463-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
+ {
+ "name": "7.2.6",
+ "images": {
+ "hda_disk_image": "FGT_VM64_KVM-v7.2.6.F-build1575-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "7.2.4",
"images": {
@@ -325,6 +367,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
+ {
+ "name": "7.0.12",
+ "images": {
+ "hda_disk_image": "FGT_VM64_KVM-v7.0.12.M-build0523-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "7.0.10",
"images": {
@@ -339,6 +388,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
+ {
+ "name": "6.4.14",
+ "images": {
+ "hda_disk_image": "FGT_VM64_KVM-v6.4.14.M-build2093-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "6.4.12",
"images": {
diff --git a/gns3server/appliances/fortimanager.gns3a b/gns3server/appliances/fortimanager.gns3a
index 636bb14d..cc35e900 100644
--- a/gns3server/appliances/fortimanager.gns3a
+++ b/gns3server/appliances/fortimanager.gns3a
@@ -11,15 +11,16 @@
"product_url": "http://www.fortinet.com/products/fortimanager/virtual-security-management.html",
"registry_version": 4,
"status": "stable",
- "maintainer": "GNS3 Team",
- "maintainer_email": "developers@gns3.net",
- "usage": "Default username is admin, no password is set.\n\n- Versions 7.0 and higher require:\n--RAM: 8192 MB\n--CPU:4",
+ "maintainer": "Ean Towne",
+ "maintainer_email": "ean.fortinet@gmail.com",
+ "usage": "Default username is admin, no password is set.\n\n- Versions lower than 7.0.x require less CPU/RAM",
"symbol": "fortinet.svg",
"port_name_format": "Port{port1}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 4,
- "ram": 2048,
+ "ram": 8192,
+ "cpus": 4,
"hda_disk_interface": "virtio",
"hdb_disk_interface": "virtio",
"arch": "x86_64",
@@ -28,6 +29,20 @@
"kvm": "allow"
},
"images": [
+ {
+ "filename": "FMG_VM64_KVM-v7.4.1-build2308-FORTINET.out.kvm.qcow2",
+ "version": "7.4.1",
+ "md5sum": "e542cc8f2d8f46e9c32b783bf31bef39",
+ "filesize": 309387264,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
+ {
+ "filename": "FMG_VM64_KVM-v7.2.4-build1460-FORTINET.out.kvm.qcow2",
+ "version": "7.2.4",
+ "md5sum": "98fa9830d9ecb5911a703d03b80026b6",
+ "filesize": 261992448,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FMG_VM64_KVM-v7.2.2-build1334-FORTINET.out.kvm.qcow2",
"version": "7.2.2",
@@ -42,6 +57,13 @@
"filesize": 242814976,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
+ {
+ "filename": "FMG_VM64_KVM-v7.0.9-build0489-FORTINET.out.kvm.qcow2",
+ "version": "7.0.9",
+ "md5sum": "dbeb6a79b6e421000573dbbbdb50b8b5",
+ "filesize": 247955456,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FMG_VM64_KVM-v7.0.6-build0372-FORTINET.out.kvm.qcow2",
"version": "7.0.6",
@@ -56,6 +78,13 @@
"filesize": 237535232,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
+ {
+ "filename": "FMG_VM64_KVM-v6.4.12-build2610-FORTINET.out.kvm.qcow2",
+ "version": "6.4.12",
+ "md5sum": "36c0dc531d921e5f1e1e09b030f7c813",
+ "filesize": 219455488,
+ "download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
+ },
{
"filename": "FMG_VM64_KVM-v6-build2288-FORTINET.out.kvm.qcow2",
"version": "6.4.5",
@@ -206,6 +235,20 @@
}
],
"versions": [
+ {
+ "name": "7.4.1",
+ "images": {
+ "hda_disk_image": "FMG_VM64_KVM-v7.4.1-build2308-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
+ {
+ "name": "7.2.4",
+ "images": {
+ "hda_disk_image": "FMG_VM64_KVM-v7.2.4-build1460-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "7.2.2",
"images": {
@@ -220,6 +263,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
+ {
+ "name": "7.0.9",
+ "images": {
+ "hda_disk_image": "FMG_VM64_KVM-v7.0.9-build0489-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "7.0.6",
"images": {
@@ -234,6 +284,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
+ {
+ "name": "6.4.12",
+ "images": {
+ "hda_disk_image": "FMG_VM64_KVM-v6.4.12-build2610-FORTINET.out.kvm.qcow2",
+ "hdb_disk_image": "empty30G.qcow2"
+ }
+ },
{
"name": "6.4.5",
"images": {
diff --git a/gns3server/compute/iou/iou_vm.py b/gns3server/compute/iou/iou_vm.py
index 50e132c1..f3f572db 100644
--- a/gns3server/compute/iou/iou_vm.py
+++ b/gns3server/compute/iou/iou_vm.py
@@ -587,7 +587,12 @@ class IOUVM(BaseNode):
# create a symbolic link to the image to avoid IOU error "failed code signing checks"
# on newer images, see https://github.com/GNS3/gns3-server/issues/1484
try:
- symlink = os.path.join(self.working_dir, os.path.basename(self.path))
+ iou_image_path = os.path.basename(self.path)
+ if len(iou_image_path) > 63:
+ # IOU file basename length must be <= 63 chars
+ iou_file_name, iou_file_ext = os.path.splitext(iou_image_path)
+ iou_image_path = iou_file_name[:63 - len(iou_file_ext)] + iou_file_ext
+ symlink = os.path.join(self.working_dir, iou_image_path)
if os.path.islink(symlink):
os.unlink(symlink)
os.symlink(self.path, symlink)
diff --git a/gns3server/config_samples/gns3_server.conf b/gns3server/config_samples/gns3_server.conf
index fe15c335..07214fff 100644
--- a/gns3server/config_samples/gns3_server.conf
+++ b/gns3server/config_samples/gns3_server.conf
@@ -102,6 +102,9 @@ default_nat_interface = vmnet10
; Enable the built-in templates
enable_builtin_templates = True
+; check if hardware virtualization is used by other emulators (KVM, VMware or VirtualBox)
+hardware_virtualization_check = True
+
[VPCS]
; VPCS executable location, default: search in PATH
;vpcs_path = vpcs
@@ -126,10 +129,13 @@ license_check = True
vboxmanage_path = vboxmanage
[VMware]
-; Path to the vmrun binary used to manage VMware
+; Path to vmrun binary used to manage VMware
vmrun_path = vmrun
+; First vmnet interface of the range that can be managed by the GNS3 server
vmnet_start_range = 2
+; Last vmnet interface of the range that can be managed by the GNS3 server. It must be maximum 19 on Windows.
vmnet_end_range = 255
+; block network traffic originating from the host OS
block_host_traffic = False
[Qemu]
@@ -142,9 +148,3 @@ monitor_host = 127.0.0.1
enable_hardware_acceleration = True
; Require hardware acceleration in order to start VMs
require_hardware_acceleration = False
-
-[VMware]
-; First vmnet interface of the range that can be managed by the GNS3 server
-vmnet_start_range = 2
-; Last vmnet interface of the range that can be managed by the GNS3 server. It must be maximum 19 on Windows.
-vmnet_end_range = 255
diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py
index 3ccd6cc1..7b2c7c15 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://c6696321127aaa1b5bfd332536eb3676@o19455.ingest.sentry.io/38482"
+ DSN = "https://803d7abaf0e865096421affb70ee9368@o19455.ingest.sentry.io/38482"
_instance = None
def __init__(self):
diff --git a/gns3server/static/web-ui/index.html b/gns3server/static/web-ui/index.html
index 8cfd0ee7..eb373481 100644
--- a/gns3server/static/web-ui/index.html
+++ b/gns3server/static/web-ui/index.html
@@ -46,6 +46,6 @@
gtag('config', 'G-5D6FZL9923');
-
+