gns3-server 3.0.0b1__py3-none-any.whl → 3.0.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gns3-server might be problematic. Click here for more details.
- {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/METADATA +17 -17
- {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/RECORD +65 -64
- {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/WHEEL +1 -1
- gns3server/api/routes/compute/notifications.py +1 -5
- gns3server/api/routes/controller/controller.py +0 -5
- gns3server/api/routes/controller/projects.py +0 -4
- gns3server/appliances/asterfusion-vAsterNOS.gns3a +49 -0
- gns3server/appliances/bird.gns3a +1 -1
- gns3server/appliances/bird2.gns3a +14 -0
- gns3server/appliances/cisco-asav.gns3a +13 -0
- gns3server/appliances/cisco-c8000v.gns3a +13 -0
- gns3server/appliances/cisco-cat9k.gns3a +16 -3
- gns3server/appliances/cisco-csr1000v.gns3a +13 -0
- gns3server/appliances/cisco-iosv.gns3a +14 -0
- gns3server/appliances/cisco-iosxrv9k.gns3a +13 -0
- gns3server/appliances/cisco-iou-l2.gns3a +12 -0
- gns3server/appliances/cisco-iou-l3.gns3a +12 -0
- gns3server/appliances/cisco-nxosv9k.gns3a +70 -0
- gns3server/appliances/clavister-netsheild.gns3a +15 -2
- gns3server/appliances/clavister-netwall.gns3a +15 -2
- gns3server/appliances/debian.gns3a +7 -7
- gns3server/appliances/dell-ftos.gns3a +21 -4
- gns3server/appliances/exos.gns3a +13 -151
- gns3server/appliances/fedora-cloud.gns3a +12 -42
- gns3server/appliances/fortianalyzer.gns3a +42 -0
- gns3server/appliances/fortigate.gns3a +56 -0
- gns3server/appliances/fortimanager.gns3a +43 -1
- gns3server/appliances/freebsd.gns3a +17 -2
- gns3server/appliances/huawei-ne40e.gns3a +51 -2
- gns3server/appliances/mikrotik-chr.gns3a +9 -0
- gns3server/appliances/mikrotik-rb1100ahx4-dude-edition.gns3a +1 -1
- gns3server/appliances/mikrotik-rb450g.gns3a +1 -1
- gns3server/appliances/mikrotik-rb450gx4.gns3a +1 -1
- gns3server/appliances/open-media-vault.gns3a +16 -0
- gns3server/appliances/opnsense.gns3a +13 -0
- gns3server/appliances/ostinato.gns3a +13 -0
- gns3server/appliances/rhel.gns3a +17 -3
- gns3server/appliances/rockylinux.gns3a +30 -0
- gns3server/appliances/ubuntu-cloud.gns3a +5 -5
- gns3server/compute/docker/__init__.py +2 -2
- gns3server/compute/docker/docker_vm.py +12 -3
- gns3server/compute/dynamips/__init__.py +3 -0
- gns3server/compute/qemu/__init__.py +10 -3
- gns3server/compute/qemu/qemu_vm.py +7 -1
- gns3server/compute/vpcs/vpcs_vm.py +3 -0
- gns3server/controller/__init__.py +6 -6
- gns3server/controller/export_project.py +5 -0
- gns3server/controller/project.py +19 -5
- gns3server/crash_report.py +1 -1
- gns3server/db/models/templates.py +2 -2
- gns3server/db_migrations/README +1 -0
- gns3server/main.py +5 -1
- gns3server/schemas/compute/docker_nodes.py +1 -1
- gns3server/schemas/controller/templates/docker_templates.py +1 -1
- gns3server/server.py +3 -4
- gns3server/services/authentication.py +5 -5
- gns3server/static/web-ui/3rdpartylicenses.txt +23 -0
- gns3server/static/web-ui/index.html +1 -1
- gns3server/static/web-ui/main.8e8e3d55e78d84fc.js +1 -0
- gns3server/static/web-ui/runtime.24fa95b7061d7056.js +1 -0
- gns3server/utils/asyncio/telnet_server.py +17 -4
- gns3server/version.py +1 -1
- gns3server/static/web-ui/main.fa00b32e7c90ea1c.js +0 -1
- gns3server/static/web-ui/runtime.53e0b4d68251ad21.js +0 -1
- {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/LICENSE +0 -0
- {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/entry_points.txt +0 -0
- {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(){"use strict";var e,v={},g={};function n(e){var u=g[e];if(void 0!==u)return u.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(u,t,o,a){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],o=e[i][1],a=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&a||r>=a)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,a<r&&(r=a));if(l){e.splice(i--,1);var s=o();void 0!==s&&(u=s)}}return u}a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[t,o,a]},n.n=function(e){var u=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(u,{a:u}),u},n.d=function(e,u){for(var t in u)n.o(u,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:u[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(u,t){return n.f[t](e,u),u},[]))},n.u=function(e){return e+".92c7ab880f2504d3.js"},n.miniCssF=function(e){},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},function(){var e={},u="gns3-web-ui:";n.l=function(t,o,a,i){if(e[t])e[t].push(o);else{var r,l;if(void 0!==a)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==u+a){r=c;break}}r||(l=!0,(r=document.createElement("script")).type="module",r.charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",u+a),r.src=n.tu(t)),e[t]=[o];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tt=function(){return void 0===e&&(e={createScriptURL:function(u){return u}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e}}(),n.tu=function(e){return n.tt().createScriptURL(e)},n.p="",function(){var e={666:0};n.f.j=function(o,a){var i=n.o(e,o)?e[o]:void 0;if(0!==i)if(i)a.push(i[2]);else if(666!=o){var r=new Promise(function(c,d){i=e[o]=[c,d]});a.push(i[2]=r);var l=n.p+n.u(o),f=new Error;n.l(l,function(c){if(n.o(e,o)&&(0!==(i=e[o])&&(e[o]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+o+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+o,o)}else e[o]=0},n.O.j=function(o){return 0===e[o]};var u=function(o,a){var f,s,i=a[0],r=a[1],l=a[2],c=0;if(i.some(function(p){return 0!==e[p]})){for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n)}for(o&&o(a);c<i.length;c++)s=i[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(u.bind(null,0)),t.push=u.bind(null,t.push.bind(t))}()}();
|
|
@@ -188,7 +188,12 @@ class AsyncioTelnetServer:
|
|
|
188
188
|
sock = network_writer.get_extra_info("socket")
|
|
189
189
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
|
190
190
|
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
|
191
|
-
#
|
|
191
|
+
# 60 sec keep alives, close tcp session after 4 missed
|
|
192
|
+
# Will keep a firewall from aging out telnet console.
|
|
193
|
+
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)
|
|
194
|
+
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 10)
|
|
195
|
+
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 4)
|
|
196
|
+
#log.debug("New connection from {}".format(sock.getpeername()))
|
|
192
197
|
|
|
193
198
|
# Keep track of connected clients
|
|
194
199
|
connection = self._connection_factory(network_reader, network_writer, self._window_size_changed_callback)
|
|
@@ -286,9 +291,17 @@ class AsyncioTelnetServer:
|
|
|
286
291
|
reader_read = await self._get_reader(network_reader)
|
|
287
292
|
|
|
288
293
|
# Replicate the output on all clients
|
|
289
|
-
for
|
|
290
|
-
|
|
291
|
-
|
|
294
|
+
for connection_key in list(self._connections.keys()):
|
|
295
|
+
client_info = connection_key.get_extra_info("socket").getpeername()
|
|
296
|
+
connection = self._connections[connection_key]
|
|
297
|
+
|
|
298
|
+
try:
|
|
299
|
+
connection.writer.write(data)
|
|
300
|
+
await asyncio.wait_for(connection.writer.drain(), timeout=10)
|
|
301
|
+
except:
|
|
302
|
+
log.debug(f"Timeout while sending data to client: {client_info}, closing and removing from connection table.")
|
|
303
|
+
connection.close()
|
|
304
|
+
del self._connections[connection_key]
|
|
292
305
|
|
|
293
306
|
async def _read(self, cmd, buffer, location, reader):
|
|
294
307
|
""" Reads next op from the buffer or reader"""
|
gns3server/version.py
CHANGED