Merge branch 'master' into 3.0

# Conflicts:
#	dev-requirements.txt
#	gns3server/controller/__init__.py
#	gns3server/controller/appliance_manager.py
#	gns3server/controller/compute.py
#	gns3server/controller/topology.py
#	gns3server/handlers/api/compute/ethernet_switch_handler.py
#	gns3server/handlers/api/controller/link_handler.py
#	gns3server/handlers/api/controller/symbol_handler.py
#	gns3server/version.py
#	requirements.txt
#	tests/controller/test_export_project.py
#	tests/handlers/api/compute/test_qemu.py
#	tests/web/test_response.py
#	win-requirements.txt
This commit is contained in:
grossmj 2021-04-10 12:46:40 +09:30
commit 802959f9ab
41 changed files with 697 additions and 74 deletions

View File

@ -1,5 +1,21 @@
# Change Log
## 2.2.20 09/04/2021
* Release Web UI version 2.2.20
* Fix packet capture with HTTPS remote server. Fixes #1882
* Sync appliance files and remove old ones after sync with online repo. Fixes #1876
* Upgrade dependencies
* Fix export for missing files
* Fix issue when trying to export temporary Dynamips files.
## 2.2.19 05/03/2021
* Launch projects marked for auto open after SIGHUP is received
* Release Web UI 2.2.19
* Fix console type error when creating Ethernet switch node. Fixes #1873
* Upgrade Jinja to version 2.11.3. Fixes #1865
## 2.2.18 16/02/2021
* SIGHUP: remove projects with an empty project directory.

View File

@ -23,12 +23,20 @@
"hdb_disk_interface": "ide",
"hdc_disk_interface": "ide",
"arch": "x86_64",
"console_type": "vnc",
"console_type": "telnet",
"kvm": "require",
"options": "-nographic",
"process_priority": "normal"
},
"images": [
{
"filename": "arubaoscx-disk-image-genericx86-p4-20201110192651.vmdk",
"version": "10.06.0001",
"md5sum": "f8b45bc52f6bad79b5ff563e0c1ea73b",
"filesize": 380304896,
"download_url": "https://asp.arubanetworks.com/"
},
{
"filename": "arubaoscx-disk-image-genericx86-p4-20200311173823.vmdk",
"version": "10.04.1000",
@ -45,6 +53,12 @@
}
],
"versions": [
{
"name": "10.06.0001",
"images": {
"hda_disk_image": "arubaoscx-disk-image-genericx86-p4-20201110192651.vmdk"
}
},
{
"name": "10.04.1000",
"images": {

View File

@ -0,0 +1,59 @@
{
"name": "Aruba VGW",
"category": "firewall",
"description": "Aruba Virtual Gateways allow customers to bring their public cloud infrastructure to the SD-WAN fabric and facilitate connectivity between branches and the public cloud.",
"vendor_name": "HPE Aruba",
"vendor_url": "arubanetworks.com",
"documentation_url": "https://asp.arubanetworks.com/downloads;products=Aruba%20SD-WAN",
"product_url": "https://www.arubanetworks.com/products/networking/gateways-and-controllers/",
"product_name": "Aruba SD-WAN Virtual Gateway",
"registry_version": 4,
"status": "stable",
"availability": "service-contract",
"maintainer": "Aruba",
"maintainer_email": "mitchell.pompe@hpe.com",
"usage": "The device must receive an user-data.iso image, which can be mounted to the CD/DVD-ROM and retrieved from Aruba Central. https://help.central.arubanetworks.com/latest/documentation/online_help/content/gateways/vgw/vgw_man-esxi-gen-ud.htm . By default the VGW can be used with VNC, but once provisioned the command '#serial console redirect enable' will enable telnet usage for GNS3.",
"symbol": ":/symbols/classic/gateway.svg",
"first_port_name": "mgmt",
"port_name_format": "GE0/0/{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 4,
"ram": 4096,
"cpus": 3,
"hda_disk_interface": "ide",
"hdb_disk_interface": "ide",
"hdc_disk_interface": "ide",
"arch": "x86_64",
"console_type": "vnc",
"kernel_command_line": "",
"kvm": "require",
"options": "-smp cores=3,threads=1,sockets=1 -cpu host",
"process_priority": "normal"
},
"images": [
{
"filename": "ArubaOS_VGW_8.6.0.4-2.2.0.0_76905-disk1.vmdk",
"version": "8.6.0.4-2.2.0.0",
"md5sum": "24d3fdcbec01c1faa2d4e68659024b40",
"filesize": 226974208,
"download_url": "https://asp.arubanetworks.com/downloads"
},
{
"filename": "ArubaOS_VGW_8.6.0.4-2.2.0.0_76905-disk2.vmdk",
"version": "8.6.0.4-2.2.0.0",
"md5sum": "354edd27dc320c739919f55766737d06",
"filesize": 4203008,
"download_url": "https://asp.arubanetworks.com/downloads"
}
],
"versions": [
{
"name": "8.6.0.4-2.2.0.0",
"images": {
"hda_disk_image": "ArubaOS_VGW_8.6.0.4-2.2.0.0_76905-disk1.vmdk",
"hdb_disk_image": "ArubaOS_VGW_8.6.0.4-2.2.0.0_76905-disk2.vmdk"
}
}
]
}

View File

@ -0,0 +1,44 @@
{
"name": "HuaWei AR1000v",
"category": "router",
"description": "Huawei AR1000V Virtual Router (Virtual CPE, vCPE) is an NFV product based on the industry-leading Huawei VRP platform. The product has rich business capabilities, integrating routing, switching, security, VPN, QoS and other functions, with software and hardware decoupling, Features such as easy business deployment and intelligent operation and maintenance can be applied to scenarios such as enterprise interconnection (SD-WAN) corporate headquarters (Hub point), POP point access, and cloud access.",
"vendor_name": "HuaWei",
"vendor_url": "https://www.huawei.com",
"product_name": "HuaWei AR1000v",
"product_url": "https://support.huawei.com/enterprise/en/routers/ar1000v-pid-21768212",
"registry_version": 5,
"status": "experimental",
"availability": "service-contract",
"maintainer": "none",
"maintainer_email": "none",
"usage": "Default user is super, default password is super.",
"port_name_format": "GigabitEthernet0/0/{0}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 6,
"ram": 4096,
"cpus": 1,
"arch": "x86_64",
"console_type": "telnet",
"boot_priority": "cd",
"kvm": "require",
"options": "-machine type=pc,accel=kvm -vga std -usbdevice tablet -cpu host"
},
"images": [
{
"filename": "ar1k-V300R019C00SPC300.qcow2",
"version": "V300R019C00SPC300",
"md5sum": "5263e1d8964643a22c87f59ff14a5bdc",
"filesize": 534904832,
"download_url": "https://support.huawei.com/enterprise/en/routers/ar1000v-pid-21768212/software"
}
],
"versions": [
{
"name": "V300R019C00SPC300",
"images": {
"hda_disk_image": "ar1k-V300R019C00SPC300.qcow2"
}
}
]
}

View File

@ -0,0 +1,42 @@
{
"name": "HuaWei CE12800",
"category": "multilayer_switch",
"description": "CE12800 series switches are high-performance core switches designed for data center networks and high-end campus networks. The switches provide stable, reliable, secure, and high-performance Layer 2/Layer 3 switching services, to help build an elastic, virtualized, agile, and high-quality network.",
"vendor_name": "HuaWei",
"vendor_url": "https://www.huawei.com",
"product_name": "HuaWei CE12800",
"registry_version": 5,
"status": "experimental",
"availability": "service-contract",
"maintainer": "none",
"maintainer_email": "none",
"port_name_format": "GE1/0/{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 12,
"ram": 2048,
"cpus": 2,
"hda_disk_interface": "ide",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "require",
"options": "-machine type=pc-1.0,accel=kvm -serial mon:stdio -nographic -nodefaults -rtc base=utc -cpu host"
},
"images": [
{
"filename": "ce12800-V200R005C10SPC607B607.qcow2",
"version": "V200R005C10SPC607B607",
"md5sum": "a6f2b358b299e2b5f0da2820ef315368",
"filesize": 707002368,
"download_url": "https://support.huawei.com/enterprise/en/switches/cloudengine-12800-pid-7542409/software"
}
],
"versions": [
{
"images": {
"hda_disk_image": "ce12800-V200R005C10SPC607B607.qcow2"
},
"name": "V200R005C10SPC607B607"
}
]
}

View File

@ -0,0 +1,44 @@
{
"name": "HuaWei NE40E",
"category": "router",
"description": "Based on a 2T platform, the NetEngine 40E-X series provides the industry\u2019s highest capacity 2T routing line cards. Combining performance with low power consumption, innovative Internet Protocol (IP) hard pipe technology, and quick evolution capabilities, NetEngine 40E-X routers meet the low latency and high reliability requirements of business-critical services as well as mature Wide Area Network (WAN) Software-Defined Networking (SDN) solutions. They can serve as core nodes on enterprise WANs, access nodes on large-scale enterprise networks, interconnection and aggregation nodes on campus networks, and edge nodes on large-scale Internet Data Center (IDC) networks.",
"vendor_name": "HuaWei",
"vendor_url": "https://www.huawei.com",
"product_name": "HuaWei NE40E",
"product_url": "https://e.huawei.com/en/products/enterprise-networking/routers/ne/ne40e",
"registry_version": 5,
"status": "experimental",
"availability": "service-contract",
"maintainer": "none",
"maintainer_email": "none",
"first_port_name": "eth0",
"port_name_format": "Ethernet1/0/{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 12,
"ram": 2048,
"cpus": 2,
"hda_disk_interface": "ide",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "require",
"options": "-machine type=pc-1.0,accel=kvm -serial mon:stdio -nographic -nodefaults -rtc base=utc -cpu host"
},
"images": [
{
"filename": "ne40e-V800R011C00SPC607B607.qcow2",
"version": "V800R011C00SPC607B607",
"md5sum": "2ac9c477e22a17860b76b3dc1d5aa119",
"filesize": 496959488,
"download_url": "https://support.huawei.com/enterprise/en/routers/ne40e-pid-15837/software"
}
],
"versions": [
{
"images": {
"hda_disk_image": "ne40e-V800R011C00SPC607B607.qcow2"
},
"name": "V800R011C00SPC607B607"
}
]
}

View File

@ -0,0 +1,49 @@
{
"name": "HuaWei USG6000v",
"category": "firewall",
"description": "Huawei USG6000V is a virtual service gateway based on Network Functions Virtualization (NFV). It features high virtual resource usage and provides virtualized gateway services, such as vFW, vIPsec, vLB, vIPS, vAV, and vURL Remote Query.\nHuawei USG6000V is compatible with most mainstream virtual platforms. It provides standard APIs, together with the OpenStack cloud platform, SDN Controller, and MANO to achieve intelligent solutions for cloud security. This gateway meets flexible service customization requirements for frequent security service changes, elastic and on-demand resource allocation, visualized network management, and rapid rollout.",
"vendor_name": "HuaWei",
"vendor_url": "https://www.huawei.com",
"product_name": "HuaWei USG6000v",
"product_url": "https://e.huawei.com/en/products/enterprise-networking/security/firewall-gateway/usg6000v",
"registry_version": 5,
"status": "experimental",
"availability": "service-contract",
"maintainer": "none",
"maintainer_email": "none",
"usage": "Default password is admin. Default username and password for web is admin/Admin@123.",
"first_port_name": "GigabitEthernet0/0/0",
"port_name_format": "GigabitEthernet1/0/{0}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 6,
"ram": 4096,
"cpus": 2,
"hda_disk_interface": "ide",
"hdb_disk_interface": "ide",
"hdc_disk_interface": "ide",
"hdd_disk_interface": "ide",
"arch": "x86_64",
"console_type": "telnet",
"boot_priority": "dc",
"kvm": "require",
"options": "-machine type=pc,accel=kvm -vga std -usbdevice tablet"
},
"images": [
{
"filename": "usg6kv-v2-V500R001C10.qcow2",
"version": "V500R001C10",
"md5sum": "07f87aaa4f4d8b9a713d90eb32f89111",
"filesize": 737476608,
"download_url": "https://support.huawei.com/enterprise/en/security/usg6000v-pid-21431620/software"
}
],
"versions": [
{
"name": "V500R001C10",
"images": {
"hda_disk_image": "usg6kv-v2-V500R001C10.qcow2"
}
}
]
}

View File

@ -0,0 +1,46 @@
{
"name": "ipxe",
"category": "guest",
"description": "boot guest from network via iPXE",
"vendor_name": "Linux",
"vendor_url": "http://gns3.com/",
"documentation_url": "http://ipxe.org",
"product_name": "iPXE netboot",
"product_url": "http://ipxe.org/",
"registry_version": 3,
"status": "stable",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"usage": "x86_64 guest booted from network via iPXE. If you need latest ipxe version - download, attach and boot iso from http://boot.ipxe.org/ipxe.iso. Don't forget to adjust memory according guest requirements. If guest is linux, you can add serial console options to kernel arguments.",
"symbol": "linux_guest.svg",
"port_name_format": "eth{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 1,
"ram": 1024,
"hda_disk_interface": "ide",
"arch": "x86_64",
"console_type": "telnet",
"boot_priority": "n",
"kvm": "allow",
"options": "-nographic"
},
"images": [
{
"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"
}
],
"versions": [
{
"name": "1.0",
"images": {
"hda_disk_image": "empty8G.qcow2"
}
}
]
}

View File

@ -0,0 +1,55 @@
{
"name": "OpenMediaVault",
"category": "guest",
"description": "openmediavault is the next generation network attached storage (NAS) solution based on Debian Linux. It contains services like SSH, (S)FTP, SMB/CIFS, DAAP media server, RSync, BitTorrent client and many more.",
"vendor_name": "Volker Theile",
"vendor_url": "https://www.openmediavault.org/",
"documentation_url": "hhttps://docs.openmediavault.org",
"product_name": "OpenMediaVault",
"product_url": "https://www.openmediavault.org/",
"registry_version": 3,
"status": "stable",
"maintainer": "Savio D'souza",
"maintainer_email": "savio2002@yahoo.in",
"usage": "Install OS to first Disk, poweroff, eject iso.\nAdd empty30G.qcow2 to Secondary master and slave this way you will get 3 hard disks for storage.\nDefault WUI credentials are admin:openmediavault.",
"port_name_format": "eth{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 1,
"ram": 2048,
"hda_disk_interface": "ide",
"hdb_disk_interface": "ide",
"arch": "x86_64",
"console_type": "vnc",
"boot_priority": "dc",
"kvm": "require"
},
"images": [
{
"filename": "openmediavault_5.5.11-amd64.iso",
"version": "5.5.11",
"md5sum": "76baad8e13dd49bee9b4b4a6936b7296",
"filesize": 608174080,
"download_url": "https://www.openmediavault.org/download.html",
"direct_download_url": "https://sourceforge.net/projects/openmediavault/files/latest/download"
},
{
"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": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty30G.qcow2/download"
}
],
"versions": [
{
"name": "5.5.11",
"images": {
"hda_disk_image": "empty30G.qcow2",
"hdb_disk_image": "empty30G.qcow2",
"cdrom_image": "openmediavault_5.5.11-amd64.iso"
}
}
]
}

View File

@ -0,0 +1,81 @@
{
"name": "Puppy Linux",
"category": "guest",
"description": "Puppy Linux is a unique family of Linux distributions meant for the home-user computers. It was originally created by Barry Kauler in 2003.",
"vendor_name": "Puppy Linux",
"vendor_url": "http://puppylinux.com/",
"documentation_url": "http://wikka.puppylinux.com/HomePage",
"product_name": "Puppy Linux",
"registry_version": 3,
"status": "stable",
"maintainer": "Savio D'souza",
"maintainer_email": "savio2002@yahoo.in",
"usage": "No Password by default\nRun installer & install to local disk\nEject the ISO and reboot.",
"port_name_format": "eth{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 1,
"ram": 256,
"arch": "x86_64",
"console_type": "vnc",
"boot_priority": "cd",
"kvm": "require"
},
"images": [
{
"filename": "fossapup64-9.5.iso",
"version": "9.5",
"md5sum": "6a45e7a305b7d3172ebd9eab5ca460e4",
"filesize": 428867584,
"download_url": "http://puppylinux.com/index.html",
"direct_download_url": "http://distro.ibiblio.org/puppylinux/puppy-fossa/fossapup64-9.5.iso"
},
{
"filename": "bionicpup64-8.0-uefi.iso",
"version": "8.0",
"md5sum": "e31ddba0e6006021c157cb5a5b65ad5f",
"filesize": 371195904,
"download_url": "http://puppylinux.com/index.html",
"direct_download_url": "http://distro.ibiblio.org/puppylinux/puppy-bionic/bionicpup64/bionicpup64-8.0-uefi.iso"
},
{
"filename": "xenialpup64-7.5-uefi.iso",
"version": "7.5",
"md5sum": "4502bb9693bd72fb5dcfb86a2ce8255d",
"filesize": 346030080,
"download_url": "http://puppylinux.com/index.html",
"direct_download_url": "http://distro.ibiblio.org/puppylinux/puppy-xenial/64/xenialpup64-7.5-uefi.iso"
},
{
"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"
}
],
"versions": [
{
"name": "9.5",
"images": {
"hda_disk_image": "empty8G.qcow2",
"cdrom_image": "fossapup64-9.5.iso"
}
},
{
"name": "8.0",
"images": {
"hda_disk_image": "empty8G.qcow2",
"cdrom_image": "bionicpup64-8.0-uefi.iso"
}
},
{
"name": "7.5",
"images": {
"hda_disk_image": "empty8G.qcow2",
"cdrom_image": "xenialpup64-7.5-uefi.iso"
}
}
]
}

View File

@ -6,7 +6,7 @@
"vendor_url": "https://www.raspberrypi.org",
"product_name": "Raspberry Pi Desktop",
"product_url": "https://www.raspberrypi.org/downloads/raspberry-pi-desktop/",
"registry_version": 3,
"registry_version": 4,
"status": "stable",
"availability": "free",
"maintainer": "Brent Stewart",

View File

@ -0,0 +1,80 @@
{
"name": "RHEL",
"category": "guest",
"description": "Red Hat Enterprise Linux Server provides core operating system functions and capabilities for application infrastructure.",
"vendor_name": "Red Hat",
"vendor_url": "https://redhat.com",
"documentation_url": "https://access.redhat.com/solutions/641193",
"product_name": "Red Hat Enterprise Linux KVM Guest Image",
"product_url": "https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux",
"registry_version": 5,
"status": "stable",
"availability": "service-contract",
"maintainer": "Neyder Achahuanco",
"maintainer_email": "neyder@neyder.net",
"usage": "You should download Red Hat Enterprise Linux KVM Guest Image from https://access.redhat.com/downloads/content/479/ver=/rhel---8/8.3/x86_64/product-software attach/customize cloud-init.iso and start.\nusername: cloud-user\npassword: redhat",
"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": "rhel-8.3-x86_64-kvm.qcow2",
"version": "8.3",
"md5sum": "dd554c059e0910379fff88f677f4a4b3",
"filesize": 1316683776,
"download_url": "https://access.redhat.com/downloads/content/479/ver=/rhel---8/8.3/x86_64/product-software"
},
{
"filename": "rhel-server-7.9-x86_64-kvm.qcow2",
"version": "7.9",
"md5sum": "8d6669b3e2bb8df15b9b4280936cf950",
"filesize": 827777024,
"download_url": "https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software"
},
{
"filename": "rhel-server-6.10-update-11-x86_64-kvm.qcow2",
"version": "6.10",
"md5sum": "6d672026d3a0eae794a677a18287f9c0",
"filesize": 341442560,
"download_url": "https://access.redhat.com/downloads/content/69/ver=/rhel---6/6.10/x86_64/product-software"
},
{
"filename": "rhel-cloud-init.iso",
"version": "1.0",
"md5sum": "421745b0d13615ecd48696f98d8b6352",
"filesize": 374784,
"download_url": "https://gitlab.com/neyder/rhel-cloud-init/raw/master/rhel-cloud-init.iso"
}
],
"versions": [
{
"images": {
"hda_disk_image": "rhel-8.3-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
},
"name": "8.3"
},
{
"images": {
"hda_disk_image": "rhel-server-7.9-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
},
"name": "7.9"
},
{
"images": {
"hda_disk_image": "rhel-server-6.10-update-11-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
},
"name": "6.10"
}
]
}

View File

@ -0,0 +1,20 @@
{
"name": "StoneWork",
"category": "router",
"description": "StoneWork is VPP and Ligato based routing platform",
"vendor_name": "Pantheon.tech StoneWork router",
"vendor_url": "https://pantheon.tech/",
"documentation_url": "https://pantheon.tech/documentation-stonework-gns3/",
"product_name": "StoneWork",
"registry_version": 4,
"status": "experimental",
"availability": "free",
"maintainer": "Julius Milan",
"maintainer_email": "julius.milan@pantheon.tech",
"docker": {
"adapters": 5,
"image": "ghcr.io/pantheontech/stonework",
"start_command": "/root/stonework-gns3-startup.sh",
"environment": "INITIAL_LOGLVL=debug,\nMICROSERVICE_LABEL=stonework,\nETCD_CONFIG=,\nCNF_MGMT_SUBNET=127.0.0.1/8"
}
}

View File

@ -25,6 +25,20 @@
"options": "-vga virtio"
},
"images": [
{
"filename": "Ubuntu 20.10 (64bit).vmdk",
"version": "20.10",
"md5sum": "d7fb9d7b5f6e55349204d493d00507d2",
"filesize": 7512915968,
"download_url": "http://www.osboxes.org/ubuntu/"
},
{
"filename": "Ubuntu 20.04.2 (64bit).vmdk",
"version": "20.04.2",
"md5sum": "e995e5768c1dbee94bc02072d841bb50",
"filesize": 7625179136,
"download_url": "http://www.osboxes.org/ubuntu/"
},
{
"filename": "Ubuntu 20.04 (64bit).vmdk",
"version": "20.04",
@ -62,6 +76,18 @@
}
],
"versions": [
{
"name": "20.10",
"images": {
"hda_disk_image": "Ubuntu 20.10 (64bit).vmdk"
}
},
{
"name": "20.04.2",
"images": {
"hda_disk_image": "Ubuntu 20.04.2 (64bit).vmdk"
}
},
{
"name": "20.04",
"images": {

View File

@ -0,0 +1,51 @@
{
"name": "Windows",
"category": "guest",
"description": "Microsoft Windows XP is a graphical operating system developed, marketed, and sold by Microsoft.\n\nMicrosoft has released time limited VMs for testing Internet Explorer.",
"vendor_name": "Microsoft",
"vendor_url": "http://www.microsoft.com",
"product_name": "Windows XP",
"registry_version": 3,
"status": "experimental",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"qemu": {
"adapter_type": "pcnet",
"adapters": 2,
"ram": 512,
"arch": "i386",
"console_type": "vnc",
"kvm": "require",
"options": "-vga std -soundhw es1370 -usbdevice tablet"
},
"images": [
{
"filename": "IE8 - WinXP-disk1.vmdk",
"version": "XP+IE8",
"md5sum": "9cf6a0d5af11bdad26a59731f6494666",
"filesize": 1241311744,
"download_url": "https://ia802808.us.archive.org/22/items/ie8.winxp.vmware/IE8-WinXP-VMWare.zip"
},
{
"filename": "IE6 - WinXP-disk1.vmdk",
"version": "XP+IE6",
"md5sum": "f7fc1948749f0a62c3cccf0775d74f05",
"filesize": 1063498240,
"download_url": "https://ia802903.us.archive.org/25/items/ie6.winxp.vmware/IE6%20-%20WinXP-VMWare.zip"
}
],
"versions": [
{
"name": "XP+IE8",
"images": {
"hda_disk_image": "IE8 - WinXP-disk1.vmdk"
}
},
{
"name": "XP+IE6",
"images": {
"hda_disk_image": "IE6 - WinXP-disk1.vmdk"
}
}
]
}

View File

@ -79,7 +79,7 @@ class EthernetSwitch(Device):
:param hypervisor: Dynamips hypervisor instance
"""
def __init__(self, name, node_id, project, manager, console=None, console_type="none", ports=None, hypervisor=None):
def __init__(self, name, node_id, project, manager, console=None, console_type=None, ports=None, hypervisor=None):
super().__init__(name, node_id, project, manager, hypervisor)
self._nios = {}
@ -90,6 +90,9 @@ class EthernetSwitch(Device):
self._console = console
self._console_type = console_type
if self._console_type is None:
self._console_type = "none"
if self._console is not None:
self._console = self._manager.port_manager.reserve_tcp_port(self._console, self._project)
else:
@ -116,6 +119,7 @@ class EthernetSwitch(Device):
"project_id": self.project.id,
"ports_mapping": self._ports,
"status": "started"}
return ethernet_switch_info
@property

View File

@ -16,6 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import shutil
import json
import uuid
import asyncio
@ -181,6 +182,7 @@ class ApplianceManager:
Controller.instance().save()
json_data = await response.json()
appliances_dir = get_resource('appliances')
downloaded_appliance_files = []
for appliance in json_data:
if appliance["type"] == "file":
appliance_name = appliance["name"]
@ -201,6 +203,21 @@ class ApplianceManager:
f.write(appliance_data)
except OSError as e:
raise ControllerError("Could not write appliance file '{}': {}".format(path, e))
downloaded_appliance_files.append(appliance_name)
# delete old appliance files
for filename in os.listdir(appliances_dir):
file_path = os.path.join(appliances_dir, filename)
if filename in downloaded_appliance_files:
continue
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
log.info("Deleting old appliance file {}".format(file_path))
os.unlink(file_path)
except OSError as e:
log.warning("Could not delete old appliance file '{}': {}".format(file_path, e))
continue
except ValueError as e:
raise ControllerError("Could not read appliances information from GitHub: {}".format(e))

View File

@ -67,22 +67,26 @@ async def export_project(zstream, project, temporary_dir, include_images=False,
# Export the local files
for root, dirs, files in os.walk(project._path, topdown=True, followlinks=False):
files = [f for f in files if _is_exportable(os.path.join(root, f), include_snapshots)]
for file in files:
path = os.path.join(root, file)
# check if we can export the file
try:
open(path).close()
except OSError as e:
msg = "Could not export file {}: {}".format(path, e)
log.warning(msg)
project.emit_notification("log.warning", {"message": msg})
continue
# ignore the .gns3 file
if file.endswith(".gns3"):
continue
_patch_mtime(path)
zstream.write(path, os.path.relpath(path, project._path))
try:
files = [f for f in files if _is_exportable(os.path.join(root, f), include_snapshots)]
for file in files:
path = os.path.join(root, file)
# check if we can export the file
try:
open(path).close()
except OSError as e:
msg = "Could not export file {}: {}".format(path, e)
log.warning(msg)
project.emit_notification("log.warning", {"message": msg})
continue
# ignore the .gns3 file
if file.endswith(".gns3"):
continue
_patch_mtime(path)
zstream.write(path, os.path.relpath(path, project._path))
except FileNotFoundError as e:
log.warning("Cannot export local file: {}".format(e))
continue
# Export files from remote computes
for compute in project.computes:
@ -92,8 +96,9 @@ async def export_project(zstream, project, temporary_dir, include_images=False,
if _is_exportable(compute_file["path"], include_snapshots):
log.debug("Downloading file '{}' from compute '{}'".format(compute_file["path"], compute.id))
response = await compute.download_file(project, compute_file["path"])
#if response.status != 200:
# raise aiohttp.web.HTTPConflict(text="Cannot export file from compute '{}'. Compute returned status code {}.".format(compute.id, response.status))
if response.status != 200:
log.warning("Cannot export file from compute '{}'. Compute returned status code {}.".format(compute.id, response.status))
continue
(fd, temp_path) = tempfile.mkstemp(dir=temporary_dir)
async with aiofiles.open(fd, 'wb') as f:
while True:

View File

@ -58,7 +58,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://741e8d41a14c49be8c511c4c73bbbb78:55b37fa1ed5c4c11bc736ed4ac590945@o19455.ingest.sentry.io/38482"
DSN = "https://d8001b95f4f244fe82ea720c9d4f0c09:690d4fe9fe3b4aa9aab004bc9e76cb8a@o19455.ingest.sentry.io/38482"
_instance = None
def __init__(self):

View File

@ -498,7 +498,7 @@ SOFTWARE.
core-js
MIT
Copyright (c) 2014-2020 Denis Pushkarev
Copyright (c) 2014-2021 Denis Pushkarev
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -519,30 +519,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
css-loader
MIT
Copyright JS Foundation and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
css-to-style
MIT
The MIT License (MIT)
@ -3094,7 +3070,7 @@ zone.js
MIT
The MIT License
Copyright (c) 2010-2020 Google LLC. http://angular.io/license
Copyright (c) 2010-2020 Google LLC. https://angular.io/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,6 @@
GNS3 WebUI is web implementation of user interface for GNS3 software.
Current version: 2.2.18
Current version: 2.2.19
Current version: 2020.4.0-beta.1

View File

@ -33,7 +33,7 @@
}
})();
</script>
<link rel="stylesheet" href="styles.2067bd0f504703e2aa7c.css"><link rel="stylesheet" href="theme-default-dark.1f2e91a1c127fc1f87b5.css"><link rel="stylesheet" href="theme-default.69f8588c10246d5cabef.css"></head>
<link rel="stylesheet" href="styles.9eb8c986af611de926ea.css"></head>
<!-- <body class="mat-app-background" oncontextmenu="return false;"> -->
<body class="mat-app-background" oncontextmenu="return false;">
<app-root></app-root>
@ -48,5 +48,5 @@
gtag('config', 'G-5D6FZL9923');
</script>
<script src="runtime.7425f237727658da0a30.js" defer></script><script src="polyfills-es5.b186ac526f152db6b6ba.js" nomodule defer></script><script src="polyfills.4fe1bb939733274d40c5.js" defer></script><script src="main.247c9bb34f8d82bc75ef.js" defer></script></body>
<script src="runtime.7425f237727658da0a30.js" defer></script><script src="polyfills-es5.c354ceb948246ee3c02e.js" nomodule defer></script><script src="polyfills.c1fadfb88d7fb5b7f9ac.js" defer></script><script src="main.a3d9cbf7065d44d2dc40.js" defer></script></body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -92,7 +92,7 @@ def get_size(data, default_width=0, default_height=0):
# End of https://github.com/shibukawa/imagesize_py
# handle SVG
elif size >= 10 and data.startswith(b'<?xml'):
elif size >= 10 and (data.startswith(b'<?xml') or data.startswith(b'<svg')):
filetype = "svg"
fhandle = io.BytesIO(data)
tree = ElementTree()

View File

@ -23,7 +23,7 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "3.0.0dev1"
__version__ = "3.0.0dev2"
__version_info__ = (3, 0, 0, 99)
if "dev" in __version__:

View File

@ -2,7 +2,7 @@ uvicorn==0.13.4
fastapi==0.63.0
websockets==8.1
python-multipart==0.0.5
aiohttp==3.7.4
aiohttp==3.7.4.post0
aiofiles==0.6.0
Jinja2==2.11.3
sentry-sdk==1.0.0

View File

View File

View File

@ -1,4 +1,4 @@
-r requirements.txt
pywin32==228
pywin32==300
wmi==1.5.1