mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-28 11:18:11 +00:00
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:
commit
802959f9ab
16
CHANGELOG
16
CHANGELOG
@ -1,5 +1,21 @@
|
|||||||
# Change Log
|
# 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
|
## 2.2.18 16/02/2021
|
||||||
|
|
||||||
* SIGHUP: remove projects with an empty project directory.
|
* SIGHUP: remove projects with an empty project directory.
|
||||||
|
@ -23,12 +23,20 @@
|
|||||||
"hdb_disk_interface": "ide",
|
"hdb_disk_interface": "ide",
|
||||||
"hdc_disk_interface": "ide",
|
"hdc_disk_interface": "ide",
|
||||||
"arch": "x86_64",
|
"arch": "x86_64",
|
||||||
"console_type": "vnc",
|
"console_type": "telnet",
|
||||||
"kvm": "require",
|
"kvm": "require",
|
||||||
"options": "-nographic",
|
"options": "-nographic",
|
||||||
"process_priority": "normal"
|
"process_priority": "normal"
|
||||||
},
|
},
|
||||||
"images": [
|
"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",
|
"filename": "arubaoscx-disk-image-genericx86-p4-20200311173823.vmdk",
|
||||||
"version": "10.04.1000",
|
"version": "10.04.1000",
|
||||||
@ -45,6 +53,12 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "10.06.0001",
|
||||||
|
"images": {
|
||||||
|
"hda_disk_image": "arubaoscx-disk-image-genericx86-p4-20201110192651.vmdk"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "10.04.1000",
|
"name": "10.04.1000",
|
||||||
"images": {
|
"images": {
|
||||||
|
59
gns3server/appliances/aruba-vgw.gns3a
Normal file
59
gns3server/appliances/aruba-vgw.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
44
gns3server/appliances/huawei-ar1kv.gns3a
Normal file
44
gns3server/appliances/huawei-ar1kv.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
42
gns3server/appliances/huawei-ce12800.gns3a
Normal file
42
gns3server/appliances/huawei-ce12800.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
44
gns3server/appliances/huawei-ne40e.gns3a
Normal file
44
gns3server/appliances/huawei-ne40e.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
49
gns3server/appliances/huawei-usg6kv.gns3a
Normal file
49
gns3server/appliances/huawei-usg6kv.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
46
gns3server/appliances/ipxe.gns3a
Normal file
46
gns3server/appliances/ipxe.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
55
gns3server/appliances/open-media-vault.gns3a
Normal file
55
gns3server/appliances/open-media-vault.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
81
gns3server/appliances/puppy-linux.gns3a
Normal file
81
gns3server/appliances/puppy-linux.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"vendor_url": "https://www.raspberrypi.org",
|
"vendor_url": "https://www.raspberrypi.org",
|
||||||
"product_name": "Raspberry Pi Desktop",
|
"product_name": "Raspberry Pi Desktop",
|
||||||
"product_url": "https://www.raspberrypi.org/downloads/raspberry-pi-desktop/",
|
"product_url": "https://www.raspberrypi.org/downloads/raspberry-pi-desktop/",
|
||||||
"registry_version": 3,
|
"registry_version": 4,
|
||||||
"status": "stable",
|
"status": "stable",
|
||||||
"availability": "free",
|
"availability": "free",
|
||||||
"maintainer": "Brent Stewart",
|
"maintainer": "Brent Stewart",
|
80
gns3server/appliances/rhel.gns3a
Normal file
80
gns3server/appliances/rhel.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
20
gns3server/appliances/stonework.gns3a
Normal file
20
gns3server/appliances/stonework.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
@ -25,6 +25,20 @@
|
|||||||
"options": "-vga virtio"
|
"options": "-vga virtio"
|
||||||
},
|
},
|
||||||
"images": [
|
"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",
|
"filename": "Ubuntu 20.04 (64bit).vmdk",
|
||||||
"version": "20.04",
|
"version": "20.04",
|
||||||
@ -62,6 +76,18 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"versions": [
|
"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",
|
"name": "20.04",
|
||||||
"images": {
|
"images": {
|
||||||
|
51
gns3server/appliances/windows-xp+ie.gns3a
Normal file
51
gns3server/appliances/windows-xp+ie.gns3a
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -79,7 +79,7 @@ class EthernetSwitch(Device):
|
|||||||
:param hypervisor: Dynamips hypervisor instance
|
: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)
|
super().__init__(name, node_id, project, manager, hypervisor)
|
||||||
self._nios = {}
|
self._nios = {}
|
||||||
@ -90,6 +90,9 @@ class EthernetSwitch(Device):
|
|||||||
self._console = console
|
self._console = console
|
||||||
self._console_type = console_type
|
self._console_type = console_type
|
||||||
|
|
||||||
|
if self._console_type is None:
|
||||||
|
self._console_type = "none"
|
||||||
|
|
||||||
if self._console is not None:
|
if self._console is not None:
|
||||||
self._console = self._manager.port_manager.reserve_tcp_port(self._console, self._project)
|
self._console = self._manager.port_manager.reserve_tcp_port(self._console, self._project)
|
||||||
else:
|
else:
|
||||||
@ -116,6 +119,7 @@ class EthernetSwitch(Device):
|
|||||||
"project_id": self.project.id,
|
"project_id": self.project.id,
|
||||||
"ports_mapping": self._ports,
|
"ports_mapping": self._ports,
|
||||||
"status": "started"}
|
"status": "started"}
|
||||||
|
|
||||||
return ethernet_switch_info
|
return ethernet_switch_info
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
import json
|
import json
|
||||||
import uuid
|
import uuid
|
||||||
import asyncio
|
import asyncio
|
||||||
@ -181,6 +182,7 @@ class ApplianceManager:
|
|||||||
Controller.instance().save()
|
Controller.instance().save()
|
||||||
json_data = await response.json()
|
json_data = await response.json()
|
||||||
appliances_dir = get_resource('appliances')
|
appliances_dir = get_resource('appliances')
|
||||||
|
downloaded_appliance_files = []
|
||||||
for appliance in json_data:
|
for appliance in json_data:
|
||||||
if appliance["type"] == "file":
|
if appliance["type"] == "file":
|
||||||
appliance_name = appliance["name"]
|
appliance_name = appliance["name"]
|
||||||
@ -201,6 +203,21 @@ class ApplianceManager:
|
|||||||
f.write(appliance_data)
|
f.write(appliance_data)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
raise ControllerError("Could not write appliance file '{}': {}".format(path, 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:
|
except ValueError as e:
|
||||||
raise ControllerError("Could not read appliances information from GitHub: {}".format(e))
|
raise ControllerError("Could not read appliances information from GitHub: {}".format(e))
|
||||||
|
|
||||||
|
@ -67,22 +67,26 @@ async def export_project(zstream, project, temporary_dir, include_images=False,
|
|||||||
|
|
||||||
# Export the local files
|
# Export the local files
|
||||||
for root, dirs, files in os.walk(project._path, topdown=True, followlinks=False):
|
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)]
|
try:
|
||||||
for file in files:
|
files = [f for f in files if _is_exportable(os.path.join(root, f), include_snapshots)]
|
||||||
path = os.path.join(root, file)
|
for file in files:
|
||||||
# check if we can export the file
|
path = os.path.join(root, file)
|
||||||
try:
|
# check if we can export the file
|
||||||
open(path).close()
|
try:
|
||||||
except OSError as e:
|
open(path).close()
|
||||||
msg = "Could not export file {}: {}".format(path, e)
|
except OSError as e:
|
||||||
log.warning(msg)
|
msg = "Could not export file {}: {}".format(path, e)
|
||||||
project.emit_notification("log.warning", {"message": msg})
|
log.warning(msg)
|
||||||
continue
|
project.emit_notification("log.warning", {"message": msg})
|
||||||
# ignore the .gns3 file
|
continue
|
||||||
if file.endswith(".gns3"):
|
# ignore the .gns3 file
|
||||||
continue
|
if file.endswith(".gns3"):
|
||||||
_patch_mtime(path)
|
continue
|
||||||
zstream.write(path, os.path.relpath(path, project._path))
|
_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
|
# Export files from remote computes
|
||||||
for compute in project.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):
|
if _is_exportable(compute_file["path"], include_snapshots):
|
||||||
log.debug("Downloading file '{}' from compute '{}'".format(compute_file["path"], compute.id))
|
log.debug("Downloading file '{}' from compute '{}'".format(compute_file["path"], compute.id))
|
||||||
response = await compute.download_file(project, compute_file["path"])
|
response = await compute.download_file(project, compute_file["path"])
|
||||||
#if response.status != 200:
|
if response.status != 200:
|
||||||
# raise aiohttp.web.HTTPConflict(text="Cannot export file from compute '{}'. Compute returned status code {}.".format(compute.id, response.status))
|
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)
|
(fd, temp_path) = tempfile.mkstemp(dir=temporary_dir)
|
||||||
async with aiofiles.open(fd, 'wb') as f:
|
async with aiofiles.open(fd, 'wb') as f:
|
||||||
while True:
|
while True:
|
||||||
|
@ -58,7 +58,7 @@ class CrashReport:
|
|||||||
Report crash to a third party service
|
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
|
_instance = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
0
gns3server/handlers/api/controller/link_handler.py
Normal file
0
gns3server/handlers/api/controller/link_handler.py
Normal file
@ -498,7 +498,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
core-js
|
core-js
|
||||||
MIT
|
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
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
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.
|
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
|
css-to-style
|
||||||
MIT
|
MIT
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
@ -3094,7 +3070,7 @@ zone.js
|
|||||||
MIT
|
MIT
|
||||||
The MIT License
|
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
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
GNS3 WebUI is web implementation of user interface for GNS3 software.
|
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
|
Current version: 2020.4.0-beta.1
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
</script>
|
</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;"> -->
|
||||||
<body class="mat-app-background" oncontextmenu="return false;">
|
<body class="mat-app-background" oncontextmenu="return false;">
|
||||||
<app-root></app-root>
|
<app-root></app-root>
|
||||||
@ -48,5 +48,5 @@
|
|||||||
|
|
||||||
gtag('config', 'G-5D6FZL9923');
|
gtag('config', 'G-5D6FZL9923');
|
||||||
</script>
|
</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>
|
</html>
|
||||||
|
File diff suppressed because one or more lines are too long
1
gns3server/static/web-ui/main.a3d9cbf7065d44d2dc40.js
Normal file
1
gns3server/static/web-ui/main.a3d9cbf7065d44d2dc40.js
Normal file
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
10
gns3server/static/web-ui/styles.9eb8c986af611de926ea.css
Normal file
10
gns3server/static/web-ui/styles.9eb8c986af611de926ea.css
Normal file
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
@ -92,7 +92,7 @@ def get_size(data, default_width=0, default_height=0):
|
|||||||
# End of https://github.com/shibukawa/imagesize_py
|
# End of https://github.com/shibukawa/imagesize_py
|
||||||
|
|
||||||
# handle SVG
|
# 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"
|
filetype = "svg"
|
||||||
fhandle = io.BytesIO(data)
|
fhandle = io.BytesIO(data)
|
||||||
tree = ElementTree()
|
tree = ElementTree()
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
# or negative for a release candidate or beta (after the base version
|
# or negative for a release candidate or beta (after the base version
|
||||||
# number has been incremented)
|
# number has been incremented)
|
||||||
|
|
||||||
__version__ = "3.0.0dev1"
|
__version__ = "3.0.0dev2"
|
||||||
__version_info__ = (3, 0, 0, 99)
|
__version_info__ = (3, 0, 0, 99)
|
||||||
|
|
||||||
if "dev" in __version__:
|
if "dev" in __version__:
|
||||||
|
@ -2,7 +2,7 @@ uvicorn==0.13.4
|
|||||||
fastapi==0.63.0
|
fastapi==0.63.0
|
||||||
websockets==8.1
|
websockets==8.1
|
||||||
python-multipart==0.0.5
|
python-multipart==0.0.5
|
||||||
aiohttp==3.7.4
|
aiohttp==3.7.4.post0
|
||||||
aiofiles==0.6.0
|
aiofiles==0.6.0
|
||||||
Jinja2==2.11.3
|
Jinja2==2.11.3
|
||||||
sentry-sdk==1.0.0
|
sentry-sdk==1.0.0
|
||||||
|
0
tests/handlers/api/compute/test_qemu.py
Normal file
0
tests/handlers/api/compute/test_qemu.py
Normal file
0
tests/web/test_response.py
Normal file
0
tests/web/test_response.py
Normal file
@ -1,4 +1,4 @@
|
|||||||
-r requirements.txt
|
-r requirements.txt
|
||||||
|
|
||||||
pywin32==228
|
pywin32==300
|
||||||
wmi==1.5.1
|
wmi==1.5.1
|
||||||
|
Loading…
Reference in New Issue
Block a user