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.

Files changed (67) hide show
  1. {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/METADATA +17 -17
  2. {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/RECORD +65 -64
  3. {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/WHEEL +1 -1
  4. gns3server/api/routes/compute/notifications.py +1 -5
  5. gns3server/api/routes/controller/controller.py +0 -5
  6. gns3server/api/routes/controller/projects.py +0 -4
  7. gns3server/appliances/asterfusion-vAsterNOS.gns3a +49 -0
  8. gns3server/appliances/bird.gns3a +1 -1
  9. gns3server/appliances/bird2.gns3a +14 -0
  10. gns3server/appliances/cisco-asav.gns3a +13 -0
  11. gns3server/appliances/cisco-c8000v.gns3a +13 -0
  12. gns3server/appliances/cisco-cat9k.gns3a +16 -3
  13. gns3server/appliances/cisco-csr1000v.gns3a +13 -0
  14. gns3server/appliances/cisco-iosv.gns3a +14 -0
  15. gns3server/appliances/cisco-iosxrv9k.gns3a +13 -0
  16. gns3server/appliances/cisco-iou-l2.gns3a +12 -0
  17. gns3server/appliances/cisco-iou-l3.gns3a +12 -0
  18. gns3server/appliances/cisco-nxosv9k.gns3a +70 -0
  19. gns3server/appliances/clavister-netsheild.gns3a +15 -2
  20. gns3server/appliances/clavister-netwall.gns3a +15 -2
  21. gns3server/appliances/debian.gns3a +7 -7
  22. gns3server/appliances/dell-ftos.gns3a +21 -4
  23. gns3server/appliances/exos.gns3a +13 -151
  24. gns3server/appliances/fedora-cloud.gns3a +12 -42
  25. gns3server/appliances/fortianalyzer.gns3a +42 -0
  26. gns3server/appliances/fortigate.gns3a +56 -0
  27. gns3server/appliances/fortimanager.gns3a +43 -1
  28. gns3server/appliances/freebsd.gns3a +17 -2
  29. gns3server/appliances/huawei-ne40e.gns3a +51 -2
  30. gns3server/appliances/mikrotik-chr.gns3a +9 -0
  31. gns3server/appliances/mikrotik-rb1100ahx4-dude-edition.gns3a +1 -1
  32. gns3server/appliances/mikrotik-rb450g.gns3a +1 -1
  33. gns3server/appliances/mikrotik-rb450gx4.gns3a +1 -1
  34. gns3server/appliances/open-media-vault.gns3a +16 -0
  35. gns3server/appliances/opnsense.gns3a +13 -0
  36. gns3server/appliances/ostinato.gns3a +13 -0
  37. gns3server/appliances/rhel.gns3a +17 -3
  38. gns3server/appliances/rockylinux.gns3a +30 -0
  39. gns3server/appliances/ubuntu-cloud.gns3a +5 -5
  40. gns3server/compute/docker/__init__.py +2 -2
  41. gns3server/compute/docker/docker_vm.py +12 -3
  42. gns3server/compute/dynamips/__init__.py +3 -0
  43. gns3server/compute/qemu/__init__.py +10 -3
  44. gns3server/compute/qemu/qemu_vm.py +7 -1
  45. gns3server/compute/vpcs/vpcs_vm.py +3 -0
  46. gns3server/controller/__init__.py +6 -6
  47. gns3server/controller/export_project.py +5 -0
  48. gns3server/controller/project.py +19 -5
  49. gns3server/crash_report.py +1 -1
  50. gns3server/db/models/templates.py +2 -2
  51. gns3server/db_migrations/README +1 -0
  52. gns3server/main.py +5 -1
  53. gns3server/schemas/compute/docker_nodes.py +1 -1
  54. gns3server/schemas/controller/templates/docker_templates.py +1 -1
  55. gns3server/server.py +3 -4
  56. gns3server/services/authentication.py +5 -5
  57. gns3server/static/web-ui/3rdpartylicenses.txt +23 -0
  58. gns3server/static/web-ui/index.html +1 -1
  59. gns3server/static/web-ui/main.8e8e3d55e78d84fc.js +1 -0
  60. gns3server/static/web-ui/runtime.24fa95b7061d7056.js +1 -0
  61. gns3server/utils/asyncio/telnet_server.py +17 -4
  62. gns3server/version.py +1 -1
  63. gns3server/static/web-ui/main.fa00b32e7c90ea1c.js +0 -1
  64. gns3server/static/web-ui/runtime.53e0b4d68251ad21.js +0 -1
  65. {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/LICENSE +0 -0
  66. {gns3_server-3.0.0b1.dist-info → gns3_server-3.0.0b2.dist-info}/entry_points.txt +0 -0
  67. {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
- # log.debug("New connection from {}".format(sock.getpeername()))
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 connection in self._connections.values():
290
- connection.writer.write(data)
291
- await connection.writer.drain()
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
@@ -22,7 +22,7 @@
22
22
  # or negative for a release candidate or beta (after the base version
23
23
  # number has been incremented)
24
24
 
25
- __version__ = "3.0.0b1"
25
+ __version__ = "3.0.0b2"
26
26
  __version_info__ = (3, 0, 0, -99)
27
27
 
28
28
  if "dev" in __version__: