Compare commits

...
41 Commits
Author SHA1 Message Date
grossmj 86772d9127 Release v2.2.0rc2 2019-08-10 12:04:19 -05:00
grossmj fc182e932a Fix typo with jsonschema version 3.2.0 -> 3.0.2 2019-08-10 11:55:47 -05:00
grossmj 27d447c926 Release v2.2.0rc1 2019-08-10 11:42:10 -05:00
grossmj df9f717d7c Sync appliance files 2019-08-10 11:35:32 -05:00
grossmj 703dca54ab Bump jsonschema to version 3.0.2 2019-08-10 11:31:08 -05:00
grossmj 39da0f3904 List Hyper-V VMs on non-english OSes. Fixes #1612 2019-07-30 15:01:17 -02:30
grossmj 6a7d47ce97 Merge branch '2.2' 2019-07-12 12:07:44 +02:00
grossmj 7c07d0b4bd Add missing default values in Cloud schema. 2019-07-12 11:32:55 +02:00
grossmj 6626bf37a6 Development on 2.2.0dev15 2019-07-11 17:34:56 +02:00
grossmj f7376ee382 Release v2.2.0b4 2019-07-11 16:58:35 +02:00
grossmj 3172985a21 Sync appliance files. 2019-07-11 16:55:13 +02:00
grossmj dcf94a5852 Requires a project to be opened to start/stop/suspend all nodes. Fixes #1609 2019-07-10 17:07:13 +02:00
grossmj cba39a3744 Fix issue when starting GNS3 VM for Hyper-V 2019-07-10 15:56:54 +02:00
grossmj 03c7744efd Set defaults for custom cloud nodes. 2019-07-10 15:51:06 +02:00
grossmj b0f74c2a5e Fix issue when trying to rename a Dynamips node that is already powered on. Fixes #2824 2019-07-10 15:40:11 +02:00
grossmj 63fb82a89d Remove deprecated Qemu parameter to run legacy ASA VMs. Fixes #2827 2019-07-10 11:33:04 +02:00
grossmj aad74dbcb9 Add debug message when searching for an image. Ref https://github.com/GNS3/gns3-gui/issues/2828 2019-07-10 11:16:50 +02:00
Jeremy Grossmann c5be58b016 Merge pull request #1607 from fcolista/patch-1
Update README.rst
2019-07-04 19:37:05 +02:00
ziajka 507090d69d Fix base href for web ui 2019-07-04 10:37:14 +02:00
Piotr Pekala ed27a46dee Release 2019.2.0-alpha.5 2019-07-04 00:20:54 -07:00
ziajka 8d02405e88 Fix redirection to web-ui bundled server 2019-07-04 08:59:33 +02:00
Francesco Colista a17034fc6d Update README.rst 2019-07-03 20:30:10 +02:00
Piotr Pekala 7adf5201f0 Release 2019.2.0-alpha.4 2019-07-03 06:08:46 -07:00
grossmj 0df3322b6c Development on 2.2.0dev14 2019-06-15 16:38:06 +02:00
grossmj 5a62277819 Merging 2.2 into master 2019-05-24 15:27:07 +07:00
Jeremy Grossmann a221678448 Merge pull request #1545 from steffann/patch-1
Add vMX 17.4 and 18.4
2019-03-09 17:48:46 +07:00
Sander Steffann 20886bdd51 Update juniper-vmx-vfp.gns3a 2019-03-08 23:50:55 +01:00
Sander Steffann 089148e451 Update juniper-vmx-vcp.gns3a 2019-03-08 23:39:59 +01:00
Jeremy Grossmann b858664985 Merge pull request #1444 from alfredmyers/patch-1
Fixed typos on README.rst
2018-11-05 21:23:30 +07:00
Alfred Myers 78fe929e0c Fixed typos on README.rst 2018-11-05 09:59:29 -02:00
grossmj 8e90d79399 Upgrade remote install script to use any ubuntu codename. Fixes #1393. 2018-08-28 17:41:06 +07:00
grossmj 78d0284247 Merge remote-tracking branch 'origin/master' 2018-08-28 17:27:18 +07:00
grossmj 57cb457b5d Use port 80 for key server. 2018-08-28 17:27:08 +07:00
Jeremy Grossmann 7a9625744c Merge pull request #1384 from BrentBaccala/pull-2
add appliance data for Cisco Nexus 9000v NX-OS 7.0(3)I7(3)
2018-08-11 12:55:19 +07:00
Brent Baccala 470133b096 add appliance data for Cisco Nexus 9000v NX-OS 7.0(3)I7(3) 2018-08-10 16:40:23 -04:00
Jeremy Grossmann a494f8257b Merge pull request #1368 from sbraz/typing
Require typing only for Python < 3.5
2018-07-13 11:34:30 +08:00
Louis Sautier 2a1b9e7232 Require typing only for Python < 3.5 2018-07-12 23:43:27 +02:00
Jeremy Grossmann 70cbc0260b Merge pull request #1347 from AlyssonOliveira/fix_requirements.txt_to_hold_prompt-toolkit_1.0.15
Hold prompt-toolkit==1.0.15 to fix https://github.com/GNS3/gns3-serve…
2018-06-06 18:57:02 +07:00
Alysson Oliveira c3c298cd63 Hold prompt-toolkit==1.0.15 to fix https://github.com/GNS3/gns3-server/issues/1346 2018-06-06 08:37:50 -03:00
Jeremy Grossmann a13c237495 Merge pull request #1316 from BrentBaccala/master
Update Cisco ASAv appliance to include version 9.9.1
2018-03-14 13:25:22 +07:00
Brent Baccala 54a93a5ccb update Cisco ASAv appliance to include version 9.9.1 2018-03-14 01:20:09 -04:00
23 changed files with 173 additions and 79 deletions

No files matched your search

+17
View File
@@ -1,5 +1,22 @@
# Change Log
## 2.2.0rc2 10/08/2019
* Bump jsonschema to version 3.0.2
* List Hyper-V VMs on non-english OSes. Fixes #1612
* Add missing default values in Cloud schema.
* Release 2019.2.0-alpha.5
* Fix redirection to web-ui bundled server
## 2.2.0b4 11/07/2019
* Requires a project to be opened to start/stop/suspend all nodes. Fixes #1609
* Fix issue when starting GNS3 VM for Hyper-V
* Set defaults for custom cloud nodes.
* Fix issue when trying to rename a Dynamips node that is already powered on. Fixes #2824
* Remove deprecated Qemu parameter to run legacy ASA VMs. Fixes #2827
* Add debug message when searching for an image. Ref https://github.com/GNS3/gns3-gui/issues/2828
## 2.2.0b3 15/06/2019
* Fix template migration issues from GUI to controller. Fixes https://github.com/GNS3/gns3-gui/issues/2803
+5 -5
View File
@@ -34,6 +34,7 @@ Linux
GNS3 is perhaps packaged for your distribution:
* Gentoo: https://packages.gentoo.org/package/net-misc/gns3-server
* Alpine: https://pkgs.alpinelinux.org/package/v3.10/community/x86_64/gns3-server
Linux (Debian based)
@@ -84,7 +85,7 @@ For development you can run the GNS3 server in a container
Run as daemon (Unix only)
**************************
You will found init sample script for various systems
You will find init sample scripts for various systems
inside the init directory.
Usefull options:
@@ -93,7 +94,7 @@ Usefull options:
* --log logfile: store output in a logfile
* --pid pidfile: store the pid of the running process in a file and prevent double execution
All the init script require the creation of a GNS3 user. You can change it to another user.
All init scripts require the creation of a GNS3 user. You can change it to another user.
.. code:: bash
@@ -164,9 +165,8 @@ Mac OS X
Please use our DMG package for a simple installation.
If you want to test the current git version or contribute to the project.
You can follow this instructions with virtualenwrapper: http://virtualenvwrapper.readthedocs.org/
If you want to test the current git version or contribute to the project,
you can follow these instructions with virtualenwrapper: http://virtualenvwrapper.readthedocs.org/
and homebrew: http://brew.sh/.
.. code:: bash
+14
View File
@@ -31,6 +31,13 @@
"download_url": "https://sourceforge.net/projects/gns-3/files",
"direct_download_url": "http://sourceforge.net/projects/gns-3/files/Qemu Appliances/IOSv_startup_config.img/download"
},
{
"filename": "vios-adventerprisek9-m.vmdk.SPA.157-3.M3",
"version": "15.7(3)M3",
"md5sum": "37c148ffa14a82f418a6e9c2b049fafe",
"filesize": 134021120,
"download_url": "https://virl.mediuscorp.com/my-account/"
},
{
"filename": "vios-adventerprisek9-m.vmdk.SPA.156-2.T",
"version": "15.6(2)T",
@@ -54,6 +61,13 @@
}
],
"versions": [
{
"name": "15.7(3)M3",
"images": {
"hda_disk_image": "vios-adventerprisek9-m.vmdk.SPA.157-3.M3",
"hdb_disk_image": "IOSv_startup_config.img"
}
},
{
"name": "15.6(2)T",
"images": {
+13 -13
View File
@@ -41,6 +41,13 @@
"md5sum": "92d3f9b13d750f7bfa804823fa545772",
"filesize": 383385600,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.1.1.4.qcow2"
},
{
"filename": "EXOS-VM_v22.7.1.2.qcow2",
"version": "22.7.1.2",
"md5sum": "a13e839b3fa05e8a5b0fb31f7e3dda86",
"filesize": 180420608,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.7.1.2.qcow2"
},
{
"filename": "EXOS-VM_v22.6.1.4.qcow2",
@@ -83,13 +90,6 @@
"md5sum": "77683060e75d81b776761f6829b15e9b",
"filesize": 179437568,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.1.1.5-disk1.qcow2"
},
{
"filename": "EXOS-VM_v21.1.1.4-disk1.qcow2",
"version": "21.1.1.4",
"md5sum": "654606809b6fd3bca400377483eb4a79",
"filesize": 117560832,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v21.1.1.4-disk1.qcow2"
}
],
@@ -109,6 +109,12 @@
}
},
{
"name": "22.7.1.2",
"images": {
"hda_disk_image": "EXOS-VM_v22.7.1.2.qcow2"
}
},
{
"name": "22.6.1.4",
"images": {
"hda_disk_image": "EXOS-VM_v22.6.1.4.qcow2"
@@ -143,12 +149,6 @@
"images": {
"hda_disk_image": "EXOS-VM_v22.1.1.5-disk1.qcow2"
}
},
{
"name": "21.1.1.4",
"images": {
"hda_disk_image": "EXOS-VM_v21.1.1.4-disk1.qcow2"
}
}
]
}
+36 -14
View File
@@ -10,31 +10,33 @@
"status": "stable",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"usage": "Default password is toor",
"usage": "Default password is toor\nEnable persistence by selecting boot option 'Live USB Persistence'",
"port_name_format": "eth{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 8,
"ram": 1024,
"arch": "x86_64",
"console_type": "vnc",
"boot_priority": "d",
"kvm": "require"
},
"images": [
{
"filename": "kali-linux-mate-2019.2-amd64.iso",
"version": "2019.2 (MATE)",
"md5sum": "fec8dd7009f932c51a74323df965a709",
"filesize": 3313217536,
"download_url": "https://www.kali.org/downloads/",
"direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-mate-2019.2-amd64.iso"
},
{
"filename": "kali-linux-2019.2-amd64.iso",
"version": "2019.2",
"md5sum": "0f89b6225d7ea9c18682f7cc541c1179",
"filesize": 3353227264,
"download_url": "https://www.kali.org/downloads/",
"direct_download_url": "http://cdimage.kali.org/kali-2019.1a/kali-linux-2019.2-amd64.iso"
"direct_download_url": "http://cdimage.kali.org/kali-2019.2/kali-linux-2019.2-amd64.iso"
},
{
"filename": "kali-linux-mate-2019.2-amd64.iso",
"version": "2019.2 (MATE)",
"md5sum": "fec8dd7009f932c51a74323df965a709",
"filesize": 3313217536,
"download_url": "https://www.kali.org/downloads/",
"direct_download_url": "http://cdimage.kali.org/kali-2019.2/kali-linux-mate-2019.2-amd64.iso"
},
{
"filename": "kali-linux-2019.1a-amd64.iso",
@@ -115,78 +117,98 @@
"filesize": 3320512512,
"download_url": "https://www.offensive-security.com/kali-linux-vmware-arm-image-download/",
"direct_download_url": "http://images.kali.org/Kali-Linux-2.0.0-vm-amd64.7z"
},
{
"filename": "kali-linux-persistence-1gb.qcow2",
"version": "1.0",
"md5sum": "14e9c92f3ba5a0bd1128c1ea26a129ea",
"filesize": 34734080,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/kali-linux-persistence-1gb.qcow2/download"
}
],
"versions": [
{
"name": "2019.2 (MATE)",
"name": "2019.2",
"images": {
"cdrom_image": "kali-linux-mate-2019.2-amd64.iso"
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2019.2-amd64.iso"
}
},
{
"name": "2019.2",
"name": "2019.2 (MATE)",
"images": {
"cdrom_image": "kali-linux-2019.2-amd64.iso"
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-mate-2019.2-amd64.iso"
}
},
{
"name": "2019.1a",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2019.1a-amd64.iso"
}
},
{
"name": "2018.4",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2018.4-amd64.iso"
}
},
{
"name": "2018.3a",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2018.3a-amd64.iso"
}
},
{
"name": "2018.1",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2018.1-amd64.iso"
}
},
{
"name": "2017.3",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2017.3-amd64.iso"
}
},
{
"name": "2017.2",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2017.2-amd64.iso"
}
},
{
"name": "2017.1",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2017.1-amd64.iso"
}
},
{
"name": "2016.2",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2016.2-amd64.iso"
}
},
{
"name": "2016.1",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2016.1-amd64.iso"
}
},
{
"name": "2.0",
"images": {
"hda_disk_image": "kali-linux-persistence-1gb.qcow2",
"cdrom_image": "kali-linux-2.0-amd64.iso"
}
}
+32 -18
View File
@@ -26,45 +26,59 @@
},
"images": [
{
"filename": "Ubuntu_17.04-VM-64bit.vmdk",
"version": "17.04",
"md5sum": "5c82d69c49ba08179e9a94901f67da1f",
"filesize": 4792123392,
"filename": "Ubuntu 19.04 (64bit).vmdk",
"version": "19.04",
"md5sum": "21535675c54507e9325bf8774a7bd73e",
"filesize": 5558435840,
"download_url": "http://www.osboxes.org/ubuntu/"
},
{
"filename": "Ubuntu_16.10_Yakkety-VM-64bit.vmdk",
"version": "16.10",
"md5sum": "c835f24dbb86f5f61c78d992ed38b6b1",
"filesize": 9133293568,
"filename": "Ubuntu 18.10 Cosmic (64Bit).vmdk",
"version": "18.10",
"md5sum": "7f72be569356baa20863cd354d2efa60",
"filesize": 6747389952,
"download_url": "http://www.osboxes.org/ubuntu/"
},
{
"filename": "Ubuntu_16.04.3-VM-64bit.vmdk",
"version": "16.04",
"md5sum": "45bccf63f2777e492f022dbf025f67d0",
"filesize": 4302110720,
"filename": "Ubuntu 18.04.2 (64bit).vmdk",
"version": "18.04.2",
"md5sum": "d57b732d90759e3b3a62594a83f8f196",
"filesize": 6003097600,
"download_url": "http://www.osboxes.org/ubuntu/"
},
{
"filename": "Ubuntu 16.04.6 (64bit).vmdk",
"version": "16.04.6",
"md5sum": "33b2964cef607c1c9fe748db8a2fa6ea",
"filesize": 4780982272,
"download_url": "http://www.osboxes.org/ubuntu/"
}
],
"versions": [
{
"name": "17.04",
"name": "19.04",
"images": {
"hda_disk_image": "Ubuntu_17.04-VM-64bit.vmdk"
"hda_disk_image": "Ubuntu 19.04 (64bit).vmdk"
}
},
{
"name": "16.10",
"name": "18.10",
"images": {
"hda_disk_image": "Ubuntu_16.10_Yakkety-VM-64bit.vmdk"
"hda_disk_image": "Ubuntu 18.10 Cosmic (64Bit).vmdk"
}
},
{
"name": "16.04",
"name": "18.04.2",
"images": {
"hda_disk_image": "Ubuntu_16.04.3-VM-64bit.vmdk"
"hda_disk_image": "Ubuntu 18.04.2 (64bit).vmdk"
}
},
{
"name": "16.04.6",
"images": {
"hda_disk_image": "Ubuntu 16.04.6 (64bit).vmdk"
}
}
]
}
+6 -2
View File
@@ -492,15 +492,17 @@ class BaseManager:
# Windows path should not be send to a unix server
if not sys.platform.startswith("win"):
if re.match(r"^[A-Z]:", path) is not None:
raise NodeError("{} is not allowed on this remote server. Please use only a filename in {}.".format(path, img_directory))
raise NodeError("{} is not allowed on this remote server. Please only use a file from '{}'".format(path, img_directory))
if not os.path.isabs(path):
for directory in valid_directory_prefices:
log.debug("Searching for image '{}' in '{}'".format(orig_path, directory))
path = self._recursive_search_file_in_directory(directory, orig_path)
if path:
return force_unix_path(path)
# Not found we try the default directory
log.debug("Searching for image '{}' in default directory".format(orig_path))
s = os.path.split(orig_path)
path = force_unix_path(os.path.join(img_directory, *s))
if os.path.exists(path):
@@ -509,6 +511,7 @@ class BaseManager:
# For local server we allow using absolute path outside image directory
if server_config.getboolean("local", False) is True:
log.debug("Searching for '{}'".format(orig_path))
path = force_unix_path(path)
if os.path.exists(path):
return path
@@ -517,11 +520,12 @@ class BaseManager:
# Check to see if path is an absolute path to a valid directory
path = force_unix_path(path)
for directory in valid_directory_prefices:
log.debug("Searching for image '{}' in '{}'".format(orig_path, directory))
if os.path.commonprefix([directory, path]) == directory:
if os.path.exists(path):
return path
raise ImageMissingError(orig_path)
raise NodeError("{} is not allowed on this remote server. Please use only a filename in {}.".format(path, img_directory))
raise NodeError("{} is not allowed on this remote server. Please only use a file from '{}'".format(path, img_directory))
def _recursive_search_file_in_directory(self, directory, searched_file):
"""
+2 -1
View File
@@ -1525,6 +1525,8 @@ class Router(BaseNode):
:param new_name: new name string
"""
await self._hypervisor.send('vm rename "{name}" "{new_name}"'.format(name=self._name, new_name=new_name))
# change the hostname in the startup-config
if os.path.isfile(self.startup_config_path):
try:
@@ -1547,7 +1549,6 @@ class Router(BaseNode):
except OSError as e:
raise DynamipsError("Could not amend the configuration {}: {}".format(self.private_config_path, e))
await self._hypervisor.send('vm rename "{name}" "{new_name}"'.format(name=self._name, new_name=new_name))
log.info('Router "{name}" [{id}]: renamed to "{new_name}"'.format(name=self._name, id=self._id, new_name=new_name))
self._name = new_name
@@ -182,8 +182,8 @@ class HyperVGNS3VM(BaseGNS3VM):
vms = []
try:
for vm in self._conn.Msvm_ComputerSystem():
if vm.Caption == "Virtual Machine":
for vm in self._conn.Msvm_VirtualSystemSettingData():
if vm.VirtualSystemType == "Microsoft:Hyper-V:System:Realized":
vms.append({"vmname": vm.ElementName})
except wmi.x_wmi as e:
raise GNS3VMError("Could not list Hyper-V VMs: {}".format(e))
@@ -248,7 +248,10 @@ class HyperVGNS3VM(BaseGNS3VM):
vnics = self._get_vm_resources(self._vm, 'Msvm_SyntheticEthernetPortSettingData')
while True:
for port in ports:
vnic = [v for v in vnics if port.Parent == v.path_()][0]
try:
vnic = [v for v in vnics if port.Parent == v.path_()][0]
except IndexError:
continue
config = vnic.associators(wmi_result_class='Msvm_GuestNetworkAdapterConfiguration')
ip_addresses = config[0].IPAddresses
for ip_address in ip_addresses:
+2 -1
View File
@@ -388,7 +388,6 @@ class Node:
# When updating properties used only on controller we don't need to call the compute
update_compute = False
old_json = self.__json__()
compute_properties = None
@@ -402,6 +401,8 @@ class Node:
if prop == "properties":
compute_properties = kwargs[prop]
else:
if prop == "name" and self.node_type == "dynamips" and self.status == "started":
raise aiohttp.web.HTTPConflict(text="Sorry, it is not possible rename of a Dynamips node that is already powered on")
setattr(self, prop, kwargs[prop])
if compute_properties and "custom_adapters" in compute_properties:
+4
View File
@@ -1032,6 +1032,7 @@ class Project:
except OSError as e:
raise aiohttp.web.HTTPInternalServerError(text="Could not write topology: {}".format(e))
@open_required
async def start_all(self):
"""
Start all nodes
@@ -1041,6 +1042,7 @@ class Project:
pool.append(node.start)
await pool.join()
@open_required
async def stop_all(self):
"""
Stop all nodes
@@ -1050,6 +1052,7 @@ class Project:
pool.append(node.stop)
await pool.join()
@open_required
async def suspend_all(self):
"""
Suspend all nodes
@@ -1059,6 +1062,7 @@ class Project:
pool.append(node.suspend)
await pool.join()
@open_required
async def duplicate_node(self, node, x, y, z):
"""
Duplicate a node
+1 -1
View File
@@ -58,7 +58,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://52dee6fc5b2a4a61880328386919e2f4:c84e7bbd39ce43b7aec27349e49fedf0@sentry.io/38482"
DSN = "https://0515b114884245ee8324d01d9ccc5e8e:505f352146314efd8f0e8af473a6ab3f@sentry.io/38482"
if hasattr(sys, "frozen"):
cacert = get_resource("cacert.pem")
if cacert is not None and os.path.isfile(cacert):
+10 -5
View File
@@ -23,27 +23,32 @@ from .port import PORT_OBJECT_SCHEMA
CLOUD_TEMPLATE_PROPERTIES = {
"ports_mapping": {
"type": "array",
"items": [PORT_OBJECT_SCHEMA]
"items": [PORT_OBJECT_SCHEMA],
"default": []
},
"remote_console_host": {
"description": "Remote console host or IP",
"type": ["string"],
"minLength": 1
"minLength": 1,
"default": "127.0.0.1"
},
"remote_console_port": {
"description": "Console TCP port",
"minimum": 1,
"maximum": 65535,
"type": "integer"
"type": "integer",
"default": 23
},
"remote_console_type": {
"description": "Console type",
"enum": ["telnet", "vnc", "spice", "http", "https", "none"]
"enum": ["telnet", "vnc", "spice", "http", "https", "none"],
"default": "none"
},
"remote_console_http_path": {
"description": "Path of the remote web interface",
"type": "string",
"minLength": 1
"minLength": 1,
"default": "/"
},
}
+16
View File
@@ -0,0 +1,16 @@
GNS3 WebUI is web implementation of user interface for GNS3 software.
Current version: 2019.2.0
What's New
- Help section added with information about third party components
- Showing progress when server starting
- Possibility to edit interface & node labels by using context menu
- Enhancements in moving elements on map
- Context menu extended with option to duplicate
- Main menu extended with option to lock all items on map
Bug Fixes
- Removing issues with positioning interface labels while adding link between nodes on map
- Context menu now is correctly placed
- Entered text in text & style editor is now validated
+3 -2
View File
@@ -5,6 +5,7 @@
<title>GNS3 Web UI</title>
<!-- It's important to have base here because of the script below //-->
<base href="/static/web-ui/">
<script>
var userAgent = navigator.userAgent.toLowerCase();
@@ -32,9 +33,9 @@
}
})();
</script>
<link rel="stylesheet" href="styles.7a07d35efbc0270fb065.css"></head>
<link rel="stylesheet" href="styles.cb254cd8da60d903b9c6.css"></head>
<!-- <body class="mat-app-background" oncontextmenu="return false;"> -->
<body class="mat-app-background" oncontextmenu="return false;">
<app-root></app-root>
<script type="text/javascript" src="runtime.26209474bfa8dc87a77c.js"></script><script type="text/javascript" src="polyfills.9cf8d114d9c6322da643.js"></script><script type="text/javascript" src="main.d7e59714b81de1a1004d.js"></script></body>
<script type="text/javascript" src="runtime.26209474bfa8dc87a77c.js"></script><script type="text/javascript" src="polyfills.9cf8d114d9c6322da643.js"></script><script type="text/javascript" src="main.24e56b8969fd8986411a.js"></script></body>
</html>
@@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+/L5":function(n,e,t){var l=t("t1UP").isCustomProperty,o=t("vd7W").TYPE,r=o.Identifier,i=o.Colon,a=o.ExclamationMark,u=o.Solidus,s=o.Asterisk,d=o.DollarSign,c=o.HyphenMinus,p=o.Semicolon,f=o.PlusSign,h=o.NumberSign;function m(n){return this.Raw(n,a,p,!1,!0)}function v(n){return this.Raw(n,a,p,!1,!1)}function g(){var n=this.scanner.currentToken,e=this.Value();return"Raw"!==e.type&&!1===this.scanner.eof&&this.scanner.tokenType!==p&&this.scanner.tokenType!==a&&!1===this.scanner.isBalanceEdge(n)&&this.scanner.error(),e}n.exports={name:"Declaration",structure:{important:[Boolean,String],property:String,value:["Value","Raw"]},parse:function(){var n,e=this.scanner.tokenStart,t=this.scanner.currentToken,o=(function(){var n=this.scanner.tokenStart,e=0;switch(this.scanner.tokenType){case s:case d:case f:case h:e=1;break;case u:e=this.scanner.lookupType(1)===u?2:1}return this.scanner.lookupType(e)===c&&e++,e&&this.scanner.skip(e),this.scanner.eat(r),this.scanner.substrToCursor(n)}).call(this),b=l(o),y=b?this.parseCustomProperty:this.parseValue,_=b?v:m,w=!1;return this.scanner.skipSC(),this.scanner.eat(i),b||this.scanner.skipSC(),n=y?this.parseWithFallback(g,_):_.call(this,this.scanner.currentToken),this.scanner.tokenType===a&&(w=function(n){n.eat(a),n.skipSC();var e=n.consume(r);return"important"===e||e}(this.scanner),this.scanner.skipSC()),!1===this.scanner.eof&&this.scanner.tokenType!==p&&!1===this.scanner.isBalanceEdge(t)&&this.scanner.error(),{type:"Declaration",loc:this.getLocation(e,this.scanner.tokenStart),important:w,property:o,value:n}},generate:function(n){this.chunk(n.property),this.chunk(":"),this.node(n.value),n.important&&this.chunk(!0===n.important?"!important":"!"+n.important)},walkContext:"declaration"}},"+Kd2":function(n,e,t){var l=t("vd7W").TYPE,o=l.Identifier,r=l.Comma,i=l.Semicolon,a=l.HyphenMinus,u=l.ExclamationMark;n.exports=function(){var n=this.createList();this.scanner.skipSC();var e=this.scanner.tokenStart;return this.scanner.eat(a),this.scanner.source.charCodeAt(this.scanner.tokenStart)!==a&&this.scanner.error("HyphenMinus is expected"),this.scanner.eat(o),n.push({type:"Identifier",loc:this.getLocation(e,this.scanner.tokenStart),name:this.scanner.substrToCursor(e)}),this.scanner.skipSC(),this.scanner.tokenType===r&&(n.push(this.Operator()),n.push(this.parseCustomProperty?this.Value(null):this.Raw(this.scanner.currentToken,u,i,!1,!1))),n}},"+gEr":function(n,e,t){"use strict";t.d(e,"a",function(){return i}),t.d(e,"b",function(){return a});var l=t("mrSG"),o=t("MGBS"),r=t("zotm"),i={leading:!0,trailing:!1};function a(n,e){return void 0===e&&(e=i),function(t){return t.lift(new u(n,e.leading,e.trailing))}}var u=function(){function n(n,e,t){this.durationSelector=n,this.leading=e,this.trailing=t}return n.prototype.call=function(n,e){return e.subscribe(new s(n,this.durationSelector,this.leading,this.trailing))},n}(),s=function(n){function e(e,t,l,o){var r=n.call(this,e)||this;return r.destination=e,r.durationSelector=t,r._leading=l,r._trailing=o,r._hasValue=!1,r}return l.__extends(e,n),e.prototype._next=function(n){this._hasValue=!0,this._sendValue=n,this._throttled||(this._leading?this.send():this.throttle(n))},e.prototype.send=function(){var n=this._sendValue;this._hasValue&&(this.destination.next(n),this.throttle(n)),this._hasValue=!1,this._sendValue=null},e.prototype.throttle=function(n){var e=this.tryDurationSelector(n);e&&this.add(this._throttled=Object(r.a)(this,e))},e.prototype.tryDurationSelector=function(n){try{return this.durationSelector(n)}catch(e){return this.destination.error(e),null}},e.prototype.throttlingDone=function(){var n=this._throttled,e=this._trailing;n&&n.unsubscribe(),this._throttled=null,e&&this.send()},e.prototype.notifyNext=function(n,e,t,l,o){this.throttlingDone()},e.prototype.notifyComplete=function(){this.throttlingDone()},e}(o.a)},"+ryv":function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var l=t("CcnG");e.HotkeyOptions=new l.InjectionToken("HotkeyOptions")},"+tJ4":function(n,e,t){"use strict";t.d(e,"a",function(){return l});var l=function(n){return function(e){for(var t=0,l=n.length;t<l&&!e.closed;t++)e.next(n[t]);e.complete()}}},"+umK":function(n,e,t){"use strict";function l(){}t.d(e,"a",function(){return l})},"/+5V":function(n,e){function t(n){function e(n){return null!==n&&("Type"===n.type||"Property"===n.type||"Keyword"===n.type)}var t=null;return null!==this.matched&&function l(o){if(Array.isArray(o.match)){for(var r=0;r<o.match.length;r++)if(l(o.match[r]))return e(o.syntax)&&t.unshift(o.syntax),!0}else if(o.node===n)return t=e(o.syntax)?[o.syntax]:[],!0;return!1}(this.matched),t}function l(n,e,l){var o=t.call(n,e);return null!==o&&o.some(l)}n.exports={getTrace:t,isType:function(n,e){return l(this,n,function(n){return"Type"===n.type&&n.name===e})},isProperty:function(n,e){return l(this,n,function(n){return"Property"===n.type&&n.name===e})},isKeyword:function(n){return l(this,nLine truncated
(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+/L5":function(n,e,t){var l=t("t1UP").isCustomProperty,o=t("vd7W").TYPE,r=o.Identifier,i=o.Colon,a=o.ExclamationMark,u=o.Solidus,s=o.Asterisk,d=o.DollarSign,c=o.HyphenMinus,p=o.Semicolon,f=o.PlusSign,h=o.NumberSign;function m(n){return this.Raw(n,a,p,!1,!0)}function v(n){return this.Raw(n,a,p,!1,!1)}function g(){var n=this.scanner.currentToken,e=this.Value();return"Raw"!==e.type&&!1===this.scanner.eof&&this.scanner.tokenType!==p&&this.scanner.tokenType!==a&&!1===this.scanner.isBalanceEdge(n)&&this.scanner.error(),e}n.exports={name:"Declaration",structure:{important:[Boolean,String],property:String,value:["Value","Raw"]},parse:function(){var n,e=this.scanner.tokenStart,t=this.scanner.currentToken,o=(function(){var n=this.scanner.tokenStart,e=0;switch(this.scanner.tokenType){case s:case d:case f:case h:e=1;break;case u:e=this.scanner.lookupType(1)===u?2:1}return this.scanner.lookupType(e)===c&&e++,e&&this.scanner.skip(e),this.scanner.eat(r),this.scanner.substrToCursor(n)}).call(this),b=l(o),y=b?this.parseCustomProperty:this.parseValue,_=b?v:m,w=!1;return this.scanner.skipSC(),this.scanner.eat(i),b||this.scanner.skipSC(),n=y?this.parseWithFallback(g,_):_.call(this,this.scanner.currentToken),this.scanner.tokenType===a&&(w=function(n){n.eat(a),n.skipSC();var e=n.consume(r);return"important"===e||e}(this.scanner),this.scanner.skipSC()),!1===this.scanner.eof&&this.scanner.tokenType!==p&&!1===this.scanner.isBalanceEdge(t)&&this.scanner.error(),{type:"Declaration",loc:this.getLocation(e,this.scanner.tokenStart),important:w,property:o,value:n}},generate:function(n){this.chunk(n.property),this.chunk(":"),this.node(n.value),n.important&&this.chunk(!0===n.important?"!important":"!"+n.important)},walkContext:"declaration"}},"+Kd2":function(n,e,t){var l=t("vd7W").TYPE,o=l.Identifier,r=l.Comma,i=l.Semicolon,a=l.HyphenMinus,u=l.ExclamationMark;n.exports=function(){var n=this.createList();this.scanner.skipSC();var e=this.scanner.tokenStart;return this.scanner.eat(a),this.scanner.source.charCodeAt(this.scanner.tokenStart)!==a&&this.scanner.error("HyphenMinus is expected"),this.scanner.eat(o),n.push({type:"Identifier",loc:this.getLocation(e,this.scanner.tokenStart),name:this.scanner.substrToCursor(e)}),this.scanner.skipSC(),this.scanner.tokenType===r&&(n.push(this.Operator()),n.push(this.parseCustomProperty?this.Value(null):this.Raw(this.scanner.currentToken,u,i,!1,!1))),n}},"+gEr":function(n,e,t){"use strict";t.d(e,"a",function(){return i}),t.d(e,"b",function(){return a});var l=t("mrSG"),o=t("MGBS"),r=t("zotm"),i={leading:!0,trailing:!1};function a(n,e){return void 0===e&&(e=i),function(t){return t.lift(new u(n,e.leading,e.trailing))}}var u=function(){function n(n,e,t){this.durationSelector=n,this.leading=e,this.trailing=t}return n.prototype.call=function(n,e){return e.subscribe(new s(n,this.durationSelector,this.leading,this.trailing))},n}(),s=function(n){function e(e,t,l,o){var r=n.call(this,e)||this;return r.destination=e,r.durationSelector=t,r._leading=l,r._trailing=o,r._hasValue=!1,r}return l.__extends(e,n),e.prototype._next=function(n){this._hasValue=!0,this._sendValue=n,this._throttled||(this._leading?this.send():this.throttle(n))},e.prototype.send=function(){var n=this._sendValue;this._hasValue&&(this.destination.next(n),this.throttle(n)),this._hasValue=!1,this._sendValue=null},e.prototype.throttle=function(n){var e=this.tryDurationSelector(n);e&&this.add(this._throttled=Object(r.a)(this,e))},e.prototype.tryDurationSelector=function(n){try{return this.durationSelector(n)}catch(e){return this.destination.error(e),null}},e.prototype.throttlingDone=function(){var n=this._throttled,e=this._trailing;n&&n.unsubscribe(),this._throttled=null,e&&this.send()},e.prototype.notifyNext=function(n,e,t,l,o){this.throttlingDone()},e.prototype.notifyComplete=function(){this.throttlingDone()},e}(o.a)},"+ryv":function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var l=t("CcnG");e.HotkeyOptions=new l.InjectionToken("HotkeyOptions")},"+tJ4":function(n,e,t){"use strict";t.d(e,"a",function(){return l});var l=function(n){return function(e){for(var t=0,l=n.length;t<l&&!e.closed;t++)e.next(n[t]);e.complete()}}},"+umK":function(n,e,t){"use strict";function l(){}t.d(e,"a",function(){return l})},"/+5V":function(n,e){function t(n){function e(n){return null!==n&&("Type"===n.type||"Property"===n.type||"Keyword"===n.type)}var t=null;return null!==this.matched&&function l(o){if(Array.isArray(o.match)){for(var r=0;r<o.match.length;r++)if(l(o.match[r]))return e(o.syntax)&&t.unshift(o.syntax),!0}else if(o.node===n)return t=e(o.syntax)?[o.syntax]:[],!0;return!1}(this.matched),t}function l(n,e,l){var o=t.call(n,e);return null!==o&&o.some(l)}n.exports={getTrace:t,isType:function(n,e){return l(this,n,function(n){return"Type"===n.type&&n.name===e})},isProperty:function(n,e){return l(this,n,function(n){return"Property"===n.type&&n.name===e})},isKeyword:function(n){return l(this,nLine truncated
+1 -1
View File
@@ -6,7 +6,7 @@
<ul>
<li><a href="https://gns3.com">Website</a></li>
<li><a href="http://docs.gns3.com">Documentation</a></li>
<li><a href="/static/web-ui/local">WebUI - local</a></li>
<li><a href="/static/web-ui/bundled">WebUI - bundled</a></li>
</ul>
<p>If you are looking for uploading the IOU. You can since 1.4 upload them directly from the client see: <a href="http://docs.gns3.com/1PKfYwR78QP_Z3jqxBQ1pdy6SsqM27qhvdCvSmIizRh4">this documentation</a>.</p>
{% endblock %}
+1 -1
View File
@@ -120,7 +120,7 @@ def default_images_directory(type):
def images_directories(type):
"""
Return all directory where we will look for images
Return all directories where we will look for images
by priority
:param type: Type of emulator
+1 -2
View File
@@ -23,9 +23,8 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "2.2.0b3"
__version__ = "2.2.0rc2"
__version_info__ = (2, 2, 0, -99)
# If it's a git checkout try to add the commit
if "dev" in __version__:
try:
+1 -1
View File
@@ -1,4 +1,4 @@
jsonschema==2.6.0 # pyup: ignore
jsonschema==3.0.2 # pyup: ignore
aiohttp==3.5.4
aiohttp-cors==0.7.0
aiofiles==0.4.0
Regular → Executable
View File
File mode changed.
+1 -8
View File
@@ -87,14 +87,7 @@ done
set -e
export DEBIAN_FRONTEND="noninteractive"
UBUNTU_VERSION=`lsb_release -r -s`
if [ "$UBUNTU_VERSION" == "14.04" ]
then
UBUNTU_CODENAME="trusty"
else
UBUNTU_CODENAME="xenial"
fi
UBUNTU_CODENAME=`lsb_release -c -s`
log "Add GNS3 repository"