gns3-gui 2.2.57__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.
Files changed (431) hide show
  1. gns3/__init__.py +1 -0
  2. gns3/__main__.py +20 -0
  3. gns3/appliance_manager.py +93 -0
  4. gns3/application.py +57 -0
  5. gns3/base_node.py +342 -0
  6. gns3/compute.py +247 -0
  7. gns3/compute_manager.py +265 -0
  8. gns3/compute_summary_view.py +159 -0
  9. gns3/console_cmd.py +299 -0
  10. gns3/console_view.py +298 -0
  11. gns3/controller.py +505 -0
  12. gns3/crash_report.py +163 -0
  13. gns3/dialogs/__init__.py +0 -0
  14. gns3/dialogs/about_dialog.py +37 -0
  15. gns3/dialogs/appliance_wizard.py +828 -0
  16. gns3/dialogs/capture_dialog.py +75 -0
  17. gns3/dialogs/configuration_dialog.py +69 -0
  18. gns3/dialogs/console_command_dialog.py +138 -0
  19. gns3/dialogs/custom_adapters_configuration_dialog.py +205 -0
  20. gns3/dialogs/doctor_dialog.py +226 -0
  21. gns3/dialogs/edit_compute_dialog.py +124 -0
  22. gns3/dialogs/edit_project_dialog.py +118 -0
  23. gns3/dialogs/exec_command_dialog.py +60 -0
  24. gns3/dialogs/export_debug_dialog.py +143 -0
  25. gns3/dialogs/file_editor_dialog.py +72 -0
  26. gns3/dialogs/filter_dialog.py +178 -0
  27. gns3/dialogs/idlepc_dialog.py +94 -0
  28. gns3/dialogs/new_template_wizard.py +288 -0
  29. gns3/dialogs/node_info_dialog.py +56 -0
  30. gns3/dialogs/node_properties_dialog.py +314 -0
  31. gns3/dialogs/notif_dialog.py +190 -0
  32. gns3/dialogs/preferences_dialog.py +239 -0
  33. gns3/dialogs/profile_select.py +112 -0
  34. gns3/dialogs/project_dialog.py +318 -0
  35. gns3/dialogs/project_export_wizard.py +144 -0
  36. gns3/dialogs/project_welcome_dialog.py +87 -0
  37. gns3/dialogs/setup_wizard.py +439 -0
  38. gns3/dialogs/snapshots_dialog.py +159 -0
  39. gns3/dialogs/style_editor_dialog.py +162 -0
  40. gns3/dialogs/style_editor_dialog_link.py +123 -0
  41. gns3/dialogs/symbol_selection_dialog.py +216 -0
  42. gns3/dialogs/text_editor_dialog.py +120 -0
  43. gns3/dialogs/vm_with_images_wizard.py +188 -0
  44. gns3/dialogs/vm_wizard.py +160 -0
  45. gns3/graphics_view.py +1726 -0
  46. gns3/http_client.py +862 -0
  47. gns3/image_manager.py +191 -0
  48. gns3/image_upload_manager.py +90 -0
  49. gns3/items/__init__.py +0 -0
  50. gns3/items/drawing_item.py +311 -0
  51. gns3/items/ellipse_item.py +68 -0
  52. gns3/items/ethernet_link_item.py +208 -0
  53. gns3/items/image_item.py +78 -0
  54. gns3/items/label_item.py +254 -0
  55. gns3/items/line_item.py +216 -0
  56. gns3/items/link_item.py +592 -0
  57. gns3/items/logo_item.py +136 -0
  58. gns3/items/node_item.py +607 -0
  59. gns3/items/rectangle_item.py +99 -0
  60. gns3/items/serial_link_item.py +185 -0
  61. gns3/items/shape_item.py +205 -0
  62. gns3/items/text_item.py +203 -0
  63. gns3/items/utils.py +31 -0
  64. gns3/link.py +483 -0
  65. gns3/local_config.py +521 -0
  66. gns3/local_server.py +616 -0
  67. gns3/local_server_config.py +163 -0
  68. gns3/logger.py +128 -0
  69. gns3/main.py +320 -0
  70. gns3/main_window.py +1509 -0
  71. gns3/modules/__init__.py +30 -0
  72. gns3/modules/builtin/__init__.py +157 -0
  73. gns3/modules/builtin/atm_switch.py +145 -0
  74. gns3/modules/builtin/cloud.py +176 -0
  75. gns3/modules/builtin/dialogs/__init__.py +0 -0
  76. gns3/modules/builtin/dialogs/cloud_wizard.py +54 -0
  77. gns3/modules/builtin/dialogs/ethernet_hub_wizard.py +62 -0
  78. gns3/modules/builtin/dialogs/ethernet_switch_wizard.py +65 -0
  79. gns3/modules/builtin/ethernet_hub.py +101 -0
  80. gns3/modules/builtin/ethernet_switch.py +124 -0
  81. gns3/modules/builtin/frame_relay_switch.py +121 -0
  82. gns3/modules/builtin/nat.py +90 -0
  83. gns3/modules/builtin/pages/__init__.py +0 -0
  84. gns3/modules/builtin/pages/atm_switch_configuration_page.py +199 -0
  85. gns3/modules/builtin/pages/builtin_preferences_page.py +84 -0
  86. gns3/modules/builtin/pages/cloud_configuration_page.py +563 -0
  87. gns3/modules/builtin/pages/cloud_preferences_page.py +223 -0
  88. gns3/modules/builtin/pages/ethernet_hub_configuration_page.py +151 -0
  89. gns3/modules/builtin/pages/ethernet_hub_preferences_page.py +219 -0
  90. gns3/modules/builtin/pages/ethernet_switch_configuration_page.py +277 -0
  91. gns3/modules/builtin/pages/ethernet_switch_preferences_page.py +224 -0
  92. gns3/modules/builtin/pages/frame_relay_switch_configuration_page.py +175 -0
  93. gns3/modules/builtin/settings.py +65 -0
  94. gns3/modules/builtin/ui/__init__.py +0 -0
  95. gns3/modules/builtin/ui/atm_switch_configuration_page.ui +303 -0
  96. gns3/modules/builtin/ui/atm_switch_configuration_page_ui.py +188 -0
  97. gns3/modules/builtin/ui/builtin_preferences_page.ui +102 -0
  98. gns3/modules/builtin/ui/builtin_preferences_page_ui.py +53 -0
  99. gns3/modules/builtin/ui/cloud_configuration_page.ui +564 -0
  100. gns3/modules/builtin/ui/cloud_configuration_page_ui.py +338 -0
  101. gns3/modules/builtin/ui/cloud_preferences_page.ui +153 -0
  102. gns3/modules/builtin/ui/cloud_preferences_page_ui.py +79 -0
  103. gns3/modules/builtin/ui/cloud_wizard.ui +117 -0
  104. gns3/modules/builtin/ui/cloud_wizard_ui.py +82 -0
  105. gns3/modules/builtin/ui/ethernet_hub_configuration_page.ui +132 -0
  106. gns3/modules/builtin/ui/ethernet_hub_configuration_page_ui.py +88 -0
  107. gns3/modules/builtin/ui/ethernet_hub_preferences_page.ui +153 -0
  108. gns3/modules/builtin/ui/ethernet_hub_preferences_page_ui.py +79 -0
  109. gns3/modules/builtin/ui/ethernet_hub_wizard.ui +143 -0
  110. gns3/modules/builtin/ui/ethernet_hub_wizard_ui.py +97 -0
  111. gns3/modules/builtin/ui/ethernet_switch_configuration_page.ui +329 -0
  112. gns3/modules/builtin/ui/ethernet_switch_configuration_page_ui.py +187 -0
  113. gns3/modules/builtin/ui/ethernet_switch_preferences_page.ui +150 -0
  114. gns3/modules/builtin/ui/ethernet_switch_preferences_page_ui.py +78 -0
  115. gns3/modules/builtin/ui/ethernet_switch_wizard.ui +143 -0
  116. gns3/modules/builtin/ui/ethernet_switch_wizard_ui.py +97 -0
  117. gns3/modules/builtin/ui/frame_relay_switch_configuration_page.ui +241 -0
  118. gns3/modules/builtin/ui/frame_relay_switch_configuration_page_ui.py +151 -0
  119. gns3/modules/builtin/utils/__init__.py +0 -0
  120. gns3/modules/builtin/utils/tree_widget_item.py +36 -0
  121. gns3/modules/docker/__init__.py +152 -0
  122. gns3/modules/docker/dialogs/__init__.py +0 -0
  123. gns3/modules/docker/dialogs/docker_vm_wizard.py +143 -0
  124. gns3/modules/docker/docker_vm.py +160 -0
  125. gns3/modules/docker/pages/__init__.py +0 -0
  126. gns3/modules/docker/pages/docker_preferences_page.py +73 -0
  127. gns3/modules/docker/pages/docker_vm_configuration_page.py +248 -0
  128. gns3/modules/docker/pages/docker_vm_preferences_page.py +252 -0
  129. gns3/modules/docker/settings.py +49 -0
  130. gns3/modules/docker/ui/__init__.py +0 -0
  131. gns3/modules/docker/ui/docker_preferences_page.ui +95 -0
  132. gns3/modules/docker/ui/docker_preferences_page_ui.py +47 -0
  133. gns3/modules/docker/ui/docker_vm_configuration_page.ui +383 -0
  134. gns3/modules/docker/ui/docker_vm_configuration_page_ui.py +233 -0
  135. gns3/modules/docker/ui/docker_vm_preferences_page.ui +163 -0
  136. gns3/modules/docker/ui/docker_vm_preferences_page_ui.py +84 -0
  137. gns3/modules/docker/ui/docker_vm_wizard.ui +366 -0
  138. gns3/modules/docker/ui/docker_vm_wizard_ui.py +235 -0
  139. gns3/modules/dynamips/__init__.py +245 -0
  140. gns3/modules/dynamips/adapters.py +73 -0
  141. gns3/modules/dynamips/dialogs/__init__.py +0 -0
  142. gns3/modules/dynamips/dialogs/ios_router_wizard.py +434 -0
  143. gns3/modules/dynamips/nodes/__init__.py +0 -0
  144. gns3/modules/dynamips/nodes/c1700.py +56 -0
  145. gns3/modules/dynamips/nodes/c2600.py +65 -0
  146. gns3/modules/dynamips/nodes/c2691.py +50 -0
  147. gns3/modules/dynamips/nodes/c3600.py +54 -0
  148. gns3/modules/dynamips/nodes/c3725.py +50 -0
  149. gns3/modules/dynamips/nodes/c3745.py +50 -0
  150. gns3/modules/dynamips/nodes/c7200.py +58 -0
  151. gns3/modules/dynamips/nodes/etherswitch_router.py +72 -0
  152. gns3/modules/dynamips/nodes/router.py +336 -0
  153. gns3/modules/dynamips/pages/__init__.py +0 -0
  154. gns3/modules/dynamips/pages/dynamips_preferences_page.py +158 -0
  155. gns3/modules/dynamips/pages/ios_router_configuration_page.py +663 -0
  156. gns3/modules/dynamips/pages/ios_router_preferences_page.py +484 -0
  157. gns3/modules/dynamips/settings.py +222 -0
  158. gns3/modules/dynamips/ui/__init__.py +0 -0
  159. gns3/modules/dynamips/ui/dynamips_preferences_page.ui +211 -0
  160. gns3/modules/dynamips/ui/dynamips_preferences_page_ui.py +108 -0
  161. gns3/modules/dynamips/ui/ios_router_configuration_page.ui +1051 -0
  162. gns3/modules/dynamips/ui/ios_router_configuration_page_ui.py +642 -0
  163. gns3/modules/dynamips/ui/ios_router_preferences_page.ui +166 -0
  164. gns3/modules/dynamips/ui/ios_router_preferences_page_ui.py +87 -0
  165. gns3/modules/dynamips/ui/ios_router_wizard.ui +495 -0
  166. gns3/modules/dynamips/ui/ios_router_wizard_ui.py +332 -0
  167. gns3/modules/dynamips/utils/__init__.py +0 -0
  168. gns3/modules/dynamips/utils/decompress_ios.py +102 -0
  169. gns3/modules/dynamips/utils/decompress_ios_worker.py +75 -0
  170. gns3/modules/dynamips/wics.py +23 -0
  171. gns3/modules/iou/__init__.py +142 -0
  172. gns3/modules/iou/dialogs/__init__.py +0 -0
  173. gns3/modules/iou/dialogs/iou_device_wizard.py +137 -0
  174. gns3/modules/iou/iou_device.py +161 -0
  175. gns3/modules/iou/pages/__init__.py +0 -0
  176. gns3/modules/iou/pages/iou_device_configuration_page.py +334 -0
  177. gns3/modules/iou/pages/iou_device_preferences_page.py +334 -0
  178. gns3/modules/iou/pages/iou_preferences_page.py +148 -0
  179. gns3/modules/iou/settings.py +48 -0
  180. gns3/modules/iou/ui/__init__.py +0 -0
  181. gns3/modules/iou/ui/iou_device_configuration_page.ui +418 -0
  182. gns3/modules/iou/ui/iou_device_configuration_page_ui.py +250 -0
  183. gns3/modules/iou/ui/iou_device_preferences_page.ui +160 -0
  184. gns3/modules/iou/ui/iou_device_preferences_page_ui.py +83 -0
  185. gns3/modules/iou/ui/iou_device_wizard.ui +220 -0
  186. gns3/modules/iou/ui/iou_device_wizard_ui.py +138 -0
  187. gns3/modules/iou/ui/iou_preferences_page.ui +113 -0
  188. gns3/modules/iou/ui/iou_preferences_page_ui.py +56 -0
  189. gns3/modules/module.py +173 -0
  190. gns3/modules/module_error.py +37 -0
  191. gns3/modules/qemu/__init__.py +202 -0
  192. gns3/modules/qemu/dialogs/__init__.py +0 -0
  193. gns3/modules/qemu/dialogs/qemu_image_wizard.py +231 -0
  194. gns3/modules/qemu/dialogs/qemu_vm_wizard.py +197 -0
  195. gns3/modules/qemu/pages/__init__.py +0 -0
  196. gns3/modules/qemu/pages/qemu_preferences_page.py +86 -0
  197. gns3/modules/qemu/pages/qemu_vm_configuration_page.py +700 -0
  198. gns3/modules/qemu/pages/qemu_vm_preferences_page.py +313 -0
  199. gns3/modules/qemu/qemu_vm.py +204 -0
  200. gns3/modules/qemu/settings.py +74 -0
  201. gns3/modules/qemu/ui/__init__.py +0 -0
  202. gns3/modules/qemu/ui/qemu_image_wizard.ui +793 -0
  203. gns3/modules/qemu/ui/qemu_image_wizard_ui.py +397 -0
  204. gns3/modules/qemu/ui/qemu_preferences_page.ui +109 -0
  205. gns3/modules/qemu/ui/qemu_preferences_page_ui.py +55 -0
  206. gns3/modules/qemu/ui/qemu_vm_configuration_page.ui +959 -0
  207. gns3/modules/qemu/ui/qemu_vm_configuration_page_ui.py +570 -0
  208. gns3/modules/qemu/ui/qemu_vm_preferences_page.ui +160 -0
  209. gns3/modules/qemu/ui/qemu_vm_preferences_page_ui.py +83 -0
  210. gns3/modules/qemu/ui/qemu_vm_wizard.ui +433 -0
  211. gns3/modules/qemu/ui/qemu_vm_wizard_ui.py +257 -0
  212. gns3/modules/traceng/__init__.py +140 -0
  213. gns3/modules/traceng/dialogs/__init__.py +0 -0
  214. gns3/modules/traceng/dialogs/traceng_node_wizard.py +85 -0
  215. gns3/modules/traceng/pages/__init__.py +0 -0
  216. gns3/modules/traceng/pages/traceng_node_configuration_page.py +155 -0
  217. gns3/modules/traceng/pages/traceng_node_preferences_page.py +213 -0
  218. gns3/modules/traceng/pages/traceng_preferences_page.py +126 -0
  219. gns3/modules/traceng/settings.py +37 -0
  220. gns3/modules/traceng/traceng_node.py +140 -0
  221. gns3/modules/traceng/ui/__init__.py +0 -0
  222. gns3/modules/traceng/ui/traceng_node_configuration_page.ui +119 -0
  223. gns3/modules/traceng/ui/traceng_node_configuration_page_ui.py +87 -0
  224. gns3/modules/traceng/ui/traceng_node_preferences_page.ui +157 -0
  225. gns3/modules/traceng/ui/traceng_node_preferences_page_ui.py +83 -0
  226. gns3/modules/traceng/ui/traceng_node_wizard.ui +140 -0
  227. gns3/modules/traceng/ui/traceng_node_wizard_ui.py +93 -0
  228. gns3/modules/traceng/ui/traceng_preferences_page.ui +126 -0
  229. gns3/modules/traceng/ui/traceng_preferences_page_ui.py +67 -0
  230. gns3/modules/virtualbox/__init__.py +185 -0
  231. gns3/modules/virtualbox/dialogs/__init__.py +0 -0
  232. gns3/modules/virtualbox/dialogs/virtualbox_vm_wizard.py +101 -0
  233. gns3/modules/virtualbox/pages/__init__.py +0 -0
  234. gns3/modules/virtualbox/pages/virtualbox_preferences_page.py +127 -0
  235. gns3/modules/virtualbox/pages/virtualbox_vm_configuration_page.py +274 -0
  236. gns3/modules/virtualbox/pages/virtualbox_vm_preferences_page.py +226 -0
  237. gns3/modules/virtualbox/settings.py +50 -0
  238. gns3/modules/virtualbox/ui/__init__.py +0 -0
  239. gns3/modules/virtualbox/ui/virtualbox_preferences_page.ui +135 -0
  240. gns3/modules/virtualbox/ui/virtualbox_preferences_page_ui.py +67 -0
  241. gns3/modules/virtualbox/ui/virtualbox_vm_configuration_page.ui +333 -0
  242. gns3/modules/virtualbox/ui/virtualbox_vm_configuration_page_ui.py +208 -0
  243. gns3/modules/virtualbox/ui/virtualbox_vm_preferences_page.ui +150 -0
  244. gns3/modules/virtualbox/ui/virtualbox_vm_preferences_page_ui.py +78 -0
  245. gns3/modules/virtualbox/ui/virtualbox_vm_wizard.ui +127 -0
  246. gns3/modules/virtualbox/ui/virtualbox_vm_wizard_ui.py +88 -0
  247. gns3/modules/virtualbox/virtualbox_vm.py +144 -0
  248. gns3/modules/vmware/__init__.py +301 -0
  249. gns3/modules/vmware/dialogs/__init__.py +0 -0
  250. gns3/modules/vmware/dialogs/vmware_vm_wizard.py +103 -0
  251. gns3/modules/vmware/pages/__init__.py +0 -0
  252. gns3/modules/vmware/pages/vmware_preferences_page.py +176 -0
  253. gns3/modules/vmware/pages/vmware_vm_configuration_page.py +272 -0
  254. gns3/modules/vmware/pages/vmware_vm_preferences_page.py +234 -0
  255. gns3/modules/vmware/settings.py +58 -0
  256. gns3/modules/vmware/ui/__init__.py +0 -0
  257. gns3/modules/vmware/ui/vmware_preferences_page.ui +244 -0
  258. gns3/modules/vmware/ui/vmware_preferences_page_ui.py +123 -0
  259. gns3/modules/vmware/ui/vmware_vm_configuration_page.ui +296 -0
  260. gns3/modules/vmware/ui/vmware_vm_configuration_page_ui.py +183 -0
  261. gns3/modules/vmware/ui/vmware_vm_preferences_page.ui +150 -0
  262. gns3/modules/vmware/ui/vmware_vm_preferences_page_ui.py +78 -0
  263. gns3/modules/vmware/ui/vmware_vm_wizard.ui +127 -0
  264. gns3/modules/vmware/ui/vmware_vm_wizard_ui.py +88 -0
  265. gns3/modules/vmware/vmware_vm.py +176 -0
  266. gns3/modules/vpcs/__init__.py +160 -0
  267. gns3/modules/vpcs/dialogs/__init__.py +0 -0
  268. gns3/modules/vpcs/dialogs/vpcs_node_wizard.py +56 -0
  269. gns3/modules/vpcs/pages/__init__.py +0 -0
  270. gns3/modules/vpcs/pages/vpcs_node_configuration_page.py +185 -0
  271. gns3/modules/vpcs/pages/vpcs_node_preferences_page.py +216 -0
  272. gns3/modules/vpcs/pages/vpcs_preferences_page.py +126 -0
  273. gns3/modules/vpcs/settings.py +37 -0
  274. gns3/modules/vpcs/ui/__init__.py +0 -0
  275. gns3/modules/vpcs/ui/vpcs_node_configuration_page.ui +151 -0
  276. gns3/modules/vpcs/ui/vpcs_node_configuration_page_ui.py +100 -0
  277. gns3/modules/vpcs/ui/vpcs_node_preferences_page.ui +150 -0
  278. gns3/modules/vpcs/ui/vpcs_node_preferences_page_ui.py +78 -0
  279. gns3/modules/vpcs/ui/vpcs_node_wizard.ui +117 -0
  280. gns3/modules/vpcs/ui/vpcs_node_wizard_ui.py +82 -0
  281. gns3/modules/vpcs/ui/vpcs_preferences_page.ui +135 -0
  282. gns3/modules/vpcs/ui/vpcs_preferences_page_ui.py +67 -0
  283. gns3/modules/vpcs/vpcs_node.py +122 -0
  284. gns3/network_client.py +43 -0
  285. gns3/node.py +926 -0
  286. gns3/nodes_dock_widget.py +38 -0
  287. gns3/nodes_view.py +235 -0
  288. gns3/packet_capture.py +284 -0
  289. gns3/pages/__init__.py +0 -0
  290. gns3/pages/general_preferences_page.py +438 -0
  291. gns3/pages/gns3_vm_preferences_page.py +204 -0
  292. gns3/pages/packet_capture_preferences_page.py +102 -0
  293. gns3/pages/server_preferences_page.py +303 -0
  294. gns3/ports/__init__.py +0 -0
  295. gns3/ports/ethernet_port.py +31 -0
  296. gns3/ports/port.py +355 -0
  297. gns3/ports/port_name_factory.py +61 -0
  298. gns3/ports/serial_port.py +31 -0
  299. gns3/progress.py +267 -0
  300. gns3/project.py +734 -0
  301. gns3/pycutext.py +429 -0
  302. gns3/qt/__init__.py +275 -0
  303. gns3/qt/qimage_svg_renderer.py +139 -0
  304. gns3/registry/__init__.py +0 -0
  305. gns3/registry/appliance.py +257 -0
  306. gns3/registry/appliance_to_template.py +299 -0
  307. gns3/registry/config.py +95 -0
  308. gns3/registry/image.py +154 -0
  309. gns3/registry/registry.py +112 -0
  310. gns3/schemas/appliance.json +511 -0
  311. gns3/schemas/appliance_v8.json +908 -0
  312. gns3/settings.py +379 -0
  313. gns3/spice_console.py +80 -0
  314. gns3/static/.keep +0 -0
  315. gns3/status_bar.py +92 -0
  316. gns3/style.py +271 -0
  317. gns3/symbol.py +42 -0
  318. gns3/telnet_console.py +182 -0
  319. gns3/template.py +143 -0
  320. gns3/template_manager.py +249 -0
  321. gns3/topology.py +594 -0
  322. gns3/topology_summary_view.py +436 -0
  323. gns3/ui/__init__.py +0 -0
  324. gns3/ui/about_dialog.ui +4438 -0
  325. gns3/ui/about_dialog_ui.py +4333 -0
  326. gns3/ui/appliance_wizard.ui +368 -0
  327. gns3/ui/appliance_wizard_ui.py +209 -0
  328. gns3/ui/capture_dialog.ui +124 -0
  329. gns3/ui/capture_dialog_ui.py +74 -0
  330. gns3/ui/configuration_dialog.ui +112 -0
  331. gns3/ui/configuration_dialog_ui.py +68 -0
  332. gns3/ui/console_command_dialog.ui +137 -0
  333. gns3/ui/console_command_dialog_ui.py +71 -0
  334. gns3/ui/custom_adapters_configuration_dialog.ui +83 -0
  335. gns3/ui/custom_adapters_configuration_dialog_ui.py +37 -0
  336. gns3/ui/doctor_dialog.ui +98 -0
  337. gns3/ui/doctor_dialog_ui.py +59 -0
  338. gns3/ui/edit_compute_dialog.ui +230 -0
  339. gns3/ui/edit_compute_dialog_ui.py +118 -0
  340. gns3/ui/edit_project_dialog.ui +228 -0
  341. gns3/ui/edit_project_dialog_ui.py +119 -0
  342. gns3/ui/exec_command_dialog.ui +72 -0
  343. gns3/ui/exec_command_dialog_ui.py +35 -0
  344. gns3/ui/export_debug_dialog.ui +119 -0
  345. gns3/ui/export_debug_dialog_ui.py +62 -0
  346. gns3/ui/export_project_wizard.ui +134 -0
  347. gns3/ui/export_project_wizard_ui.py +90 -0
  348. gns3/ui/file_editor_dialog.ui +119 -0
  349. gns3/ui/file_editor_dialog_ui.py +57 -0
  350. gns3/ui/filter_dialog.ui +142 -0
  351. gns3/ui/filter_dialog_ui.py +70 -0
  352. gns3/ui/general_preferences_page.ui +1129 -0
  353. gns3/ui/general_preferences_page_ui.py +600 -0
  354. gns3/ui/gns3_vm_preferences_page.ui +274 -0
  355. gns3/ui/gns3_vm_preferences_page_ui.py +152 -0
  356. gns3/ui/idlepc_dialog.ui +72 -0
  357. gns3/ui/idlepc_dialog_ui.py +39 -0
  358. gns3/ui/main_window.ui +1396 -0
  359. gns3/ui/main_window_ui.py +741 -0
  360. gns3/ui/new_template_wizard.ui +104 -0
  361. gns3/ui/new_template_wizard_ui.py +64 -0
  362. gns3/ui/node_info_dialog.ui +103 -0
  363. gns3/ui/node_info_dialog_ui.py +62 -0
  364. gns3/ui/node_properties_dialog.ui +168 -0
  365. gns3/ui/node_properties_dialog_ui.py +86 -0
  366. gns3/ui/packet_capture_preferences_page.ui +138 -0
  367. gns3/ui/packet_capture_preferences_page_ui.py +84 -0
  368. gns3/ui/preferences_dialog.ui +161 -0
  369. gns3/ui/preferences_dialog_ui.py +90 -0
  370. gns3/ui/profile_select_dialog.ui +187 -0
  371. gns3/ui/profile_select_dialog_ui.py +88 -0
  372. gns3/ui/project_dialog.ui +359 -0
  373. gns3/ui/project_dialog_ui.py +165 -0
  374. gns3/ui/project_welcome_dialog.ui +99 -0
  375. gns3/ui/project_welcome_dialog_ui.py +59 -0
  376. gns3/ui/resources_rc.py +145039 -0
  377. gns3/ui/server_preferences_page.ui +613 -0
  378. gns3/ui/server_preferences_page_ui.py +318 -0
  379. gns3/ui/setup_wizard.ui +474 -0
  380. gns3/ui/setup_wizard_ui.py +273 -0
  381. gns3/ui/snapshots_dialog.ui +97 -0
  382. gns3/ui/snapshots_dialog_ui.py +49 -0
  383. gns3/ui/style_editor_dialog.ui +239 -0
  384. gns3/ui/style_editor_dialog_ui.py +120 -0
  385. gns3/ui/symbol_selection_dialog.ui +191 -0
  386. gns3/ui/symbol_selection_dialog_ui.py +91 -0
  387. gns3/ui/text_editor_dialog.ui +183 -0
  388. gns3/ui/text_editor_dialog_ui.py +89 -0
  389. gns3/update_manager.py +256 -0
  390. gns3/utils/__init__.py +123 -0
  391. gns3/utils/authorize_ubridge.py +38 -0
  392. gns3/utils/bring_to_front.py +94 -0
  393. gns3/utils/export_project_worker.py +73 -0
  394. gns3/utils/file_copy_worker.py +70 -0
  395. gns3/utils/get_icon.py +37 -0
  396. gns3/utils/get_resource.py +49 -0
  397. gns3/utils/import_project_worker.py +68 -0
  398. gns3/utils/interfaces.py +151 -0
  399. gns3/utils/macos_ubridge_setuid.py +64 -0
  400. gns3/utils/normalize_filename.py +37 -0
  401. gns3/utils/process_files_worker.py +151 -0
  402. gns3/utils/progress_dialog.py +195 -0
  403. gns3/utils/run_in_terminal.py +48 -0
  404. gns3/utils/server_select.py +70 -0
  405. gns3/utils/sudo.py +105 -0
  406. gns3/utils/wait_for_command_worker.py +85 -0
  407. gns3/utils/wait_for_connection_worker.py +95 -0
  408. gns3/utils/wait_for_lambda_worker.py +76 -0
  409. gns3/utils/wait_for_runas_worker.py +91 -0
  410. gns3/version.py +37 -0
  411. gns3/vnc_console.py +77 -0
  412. gns3_gui-2.2.57.data/data/share/applications/gns3.desktop +11 -0
  413. gns3_gui-2.2.57.data/data/share/icons/hicolor/16x16/apps/gns3.png +0 -0
  414. gns3_gui-2.2.57.data/data/share/icons/hicolor/32x32/apps/gns3.png +0 -0
  415. gns3_gui-2.2.57.data/data/share/icons/hicolor/48x48/apps/gns3.png +0 -0
  416. gns3_gui-2.2.57.data/data/share/icons/hicolor/48x48/mimetypes/application-x-gns3.png +0 -0
  417. gns3_gui-2.2.57.data/data/share/icons/hicolor/48x48/mimetypes/application-x-gns3appliance.png +0 -0
  418. gns3_gui-2.2.57.data/data/share/icons/hicolor/48x48/mimetypes/application-x-gns3project.png +0 -0
  419. gns3_gui-2.2.57.data/data/share/icons/hicolor/scalable/apps/gns3.svg +85 -0
  420. gns3_gui-2.2.57.data/data/share/icons/hicolor/scalable/mimetypes/application-x-gns3.svg +85 -0
  421. gns3_gui-2.2.57.data/data/share/icons/hicolor/scalable/mimetypes/application-x-gns3appliance.svg +328 -0
  422. gns3_gui-2.2.57.data/data/share/icons/hicolor/scalable/mimetypes/application-x-gns3project.svg +95 -0
  423. gns3_gui-2.2.57.data/data/share/mime/packages/gns3-gui.xml +28 -0
  424. gns3_gui-2.2.57.dist-info/METADATA +114 -0
  425. gns3_gui-2.2.57.dist-info/RECORD +431 -0
  426. gns3_gui-2.2.57.dist-info/WHEEL +5 -0
  427. gns3_gui-2.2.57.dist-info/entry_points.txt +2 -0
  428. gns3_gui-2.2.57.dist-info/licenses/AUTHORS +2 -0
  429. gns3_gui-2.2.57.dist-info/licenses/COPYING +504 -0
  430. gns3_gui-2.2.57.dist-info/licenses/LICENSE +674 -0
  431. gns3_gui-2.2.57.dist-info/top_level.txt +1 -0
gns3/__init__.py ADDED
@@ -0,0 +1 @@
1
+ from .version import __version__
gns3/__main__.py ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Copyright (C) 2015 GNS3 Technologies Inc.
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ from .main import main
19
+
20
+ main()
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Copyright (C) 2016 GNS3 Technologies Inc.
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ from .qt import QtCore
19
+ from .controller import Controller
20
+ from .local_config import LocalConfig
21
+ from .settings import GENERAL_SETTINGS
22
+
23
+
24
+ import logging
25
+ log = logging.getLogger(__name__)
26
+
27
+
28
+ class ApplianceManager(QtCore.QObject):
29
+ """
30
+ Manager for appliances.
31
+ """
32
+
33
+ appliances_changed_signal = QtCore.Signal()
34
+
35
+ def __init__(self):
36
+
37
+ super().__init__()
38
+ self._appliances = []
39
+ self._controller = Controller.instance()
40
+ self._controller.connected_signal.connect(self.refresh)
41
+ self._controller.disconnected_signal.connect(self._controllerDisconnectedSlot)
42
+
43
+ def refresh(self, update=False):
44
+ """
45
+ Gets the appliances from the controller.
46
+ """
47
+
48
+ if self._controller.connected():
49
+ settings = LocalConfig.instance().loadSectionSettings("MainWindow", GENERAL_SETTINGS)
50
+ symbol_theme = settings["symbol_theme"]
51
+ if update is True:
52
+ self._controller.get("/appliances?update=yes&symbol_theme={}".format(symbol_theme), self._listAppliancesCallback, progressText="Downloading appliances from online registry...")
53
+ else:
54
+ self._controller.get("/appliances?symbol_theme={}".format(symbol_theme), self._listAppliancesCallback)
55
+
56
+ def _controllerDisconnectedSlot(self):
57
+ """
58
+ Called when the controller has been disconnected.
59
+ """
60
+
61
+ self._appliances = []
62
+ self.appliances_changed_signal.emit()
63
+
64
+ def appliances(self):
65
+ """
66
+ Returns the appliances.
67
+
68
+ :returns: array of appliances
69
+ """
70
+
71
+ return self._appliances
72
+
73
+ def _listAppliancesCallback(self, result, error=False, **kwargs):
74
+ """
75
+ Callback to get the appliances.
76
+ """
77
+
78
+ if error is True:
79
+ log.error("Error while getting appliances list: {}".format(result.get("message", "unknown")))
80
+ return
81
+ self._appliances = result
82
+ self.appliances_changed_signal.emit()
83
+
84
+ @staticmethod
85
+ def instance():
86
+ """
87
+ Singleton to return only on instance of ApplianceManager.
88
+ :returns: instance of ApplianceManager
89
+ """
90
+
91
+ if not hasattr(ApplianceManager, '_instance') or ApplianceManager._instance is None:
92
+ ApplianceManager._instance = ApplianceManager()
93
+ return ApplianceManager._instance
gns3/application.py ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Copyright (C) 2015 GNS3 Technologies Inc.
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+
19
+ import sys
20
+
21
+ from .qt import QtWidgets, QtGui, QtCore
22
+ from gns3.utils import parse_version
23
+ from .version import __version__
24
+
25
+ import logging
26
+ log = logging.getLogger(__name__)
27
+
28
+
29
+ class Application(QtWidgets.QApplication):
30
+ file_open_signal = QtCore.Signal(str)
31
+
32
+ def __init__(self, argv):
33
+
34
+ self.setStyle(QtWidgets.QStyleFactory.create("Fusion"))
35
+ super().__init__(argv)
36
+
37
+ # this is tell Wayland what is the name of the desktop file (gns3.desktop)
38
+ self.setDesktopFileName("gns3")
39
+
40
+ # this info is necessary for QSettings
41
+ self.setOrganizationName("GNS3")
42
+ self.setOrganizationDomain("gns3.net")
43
+ self.setApplicationName("GNS3")
44
+ self.setApplicationVersion(__version__)
45
+
46
+ # File path if we have received the path to
47
+ # a file on system via an OSX event
48
+ self.open_file_at_startup = None
49
+
50
+ def event(self, event):
51
+ # When you double click on a file, you receive an event
52
+ # and not the file as command line parameter
53
+ if sys.platform.startswith("darwin"):
54
+ if isinstance(event, QtGui.QFileOpenEvent):
55
+ self.open_file_at_startup = str(event.file())
56
+ self.file_open_signal.emit(str(event.file()))
57
+ return super().event(event)
gns3/base_node.py ADDED
@@ -0,0 +1,342 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2014 GNS3 Technologies Inc.
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ """
19
+ Base class for node classes.
20
+ """
21
+
22
+ from .qt import QtCore
23
+ from .ports.port import Port
24
+
25
+ import logging
26
+ log = logging.getLogger(__name__)
27
+
28
+
29
+ class BaseNode(QtCore.QObject):
30
+ """
31
+ BaseNode implementation.
32
+
33
+ :param module: Module instance
34
+ :param server: client connection to a server
35
+ :param project: Project instance
36
+ """
37
+
38
+ # signals used to let the GUI know about some events.
39
+ created_signal = QtCore.Signal(int)
40
+ started_signal = QtCore.Signal()
41
+ stopped_signal = QtCore.Signal()
42
+ suspended_signal = QtCore.Signal()
43
+ updated_signal = QtCore.Signal()
44
+ loaded_signal = QtCore.Signal()
45
+ deleted_signal = QtCore.Signal()
46
+ error_signal = QtCore.Signal(int, str)
47
+ server_error_signal = QtCore.Signal(int, str)
48
+
49
+ _instance_count = 1
50
+
51
+ # node statuses
52
+ stopped = 0
53
+ started = 1
54
+ suspended = 2
55
+
56
+ # node categories
57
+ routers = "router"
58
+ switches = "switch"
59
+ end_devices = "guest"
60
+ security_devices = "firewall"
61
+
62
+ def __init__(self, module, compute, project):
63
+
64
+ super().__init__()
65
+
66
+ # create an unique ID
67
+ self._id = BaseNode._instance_count
68
+ BaseNode._instance_count += 1
69
+
70
+ self._module = module
71
+ self._compute = compute
72
+ assert project is not None
73
+ self._project = project
74
+ self._initialized = False
75
+ self._loading = False
76
+ self._status = BaseNode.stopped
77
+ self._ports = []
78
+ self._links = set()
79
+
80
+ def links(self):
81
+ """
82
+ Links connected to this node
83
+ """
84
+
85
+ return self._links
86
+
87
+ def addLink(self, link):
88
+ """
89
+ Add a link connected to this node
90
+
91
+ :param link: link object
92
+ """
93
+
94
+ self._links.add(link)
95
+
96
+ def deleteLink(self, link):
97
+ """
98
+ Delete a link connected to this node
99
+
100
+ :param link: link object
101
+ """
102
+
103
+ try:
104
+ self._links.remove(link)
105
+ except KeyError:
106
+ pass
107
+
108
+ def state(self):
109
+ """
110
+ Returns a human readable status of this node.
111
+
112
+ :returns: string
113
+ """
114
+
115
+ status = self.status()
116
+ if status == self.started:
117
+ return "started"
118
+ elif status == self.stopped:
119
+ return "stopped"
120
+ elif status == self.suspended:
121
+ return "suspended"
122
+ return "unknown"
123
+
124
+ @classmethod
125
+ def reset(cls):
126
+ """
127
+ Reset the instance count.
128
+ """
129
+
130
+ cls._instance_count = 1
131
+
132
+ def module(self):
133
+ """
134
+ Returns this node module.
135
+
136
+ :returns: Module instance
137
+ """
138
+
139
+ return self._module
140
+
141
+ def compute(self):
142
+ """
143
+ Returns this node compute.
144
+
145
+ :returns: Compute instance
146
+ """
147
+ return self._compute
148
+
149
+ def project(self):
150
+ """
151
+ Returns this node project.
152
+
153
+ :returns: Project instance
154
+ """
155
+
156
+ return self._project
157
+
158
+ def id(self):
159
+ """
160
+ Returns this node identifier.
161
+
162
+ :returns: node identifier (integer)
163
+ """
164
+
165
+ return self._id
166
+
167
+ def setId(self, new_id):
168
+ """
169
+ Sets an identifier for this node.
170
+
171
+ :param new_id: node identifier (integer)
172
+ """
173
+
174
+ self._id = new_id
175
+
176
+ # update the instance count to avoid conflicts
177
+ if new_id >= BaseNode._instance_count:
178
+ BaseNode._instance_count = new_id + 1
179
+
180
+ def status(self):
181
+ """
182
+ Returns the status of this node.
183
+ 0 = stopped, 1 = started, 2 = suspended.
184
+
185
+ :returns: node status (integer)
186
+ """
187
+
188
+ return self._status
189
+
190
+ def setStatus(self, status):
191
+ """
192
+ Sets a status for this node.
193
+ 0 = stopped, 1 = started, 2 = suspended.
194
+
195
+ :param status: node status (integer)
196
+ """
197
+
198
+ if status == self._status:
199
+ return
200
+ self._status = status
201
+ if status == self.started:
202
+ for port in self._ports:
203
+ # set ports as started
204
+ port.setStatus(Port.started)
205
+ self.started_signal.emit()
206
+ elif status == self.stopped:
207
+ for port in self._ports:
208
+ # set ports as stopped
209
+ port.setStatus(Port.stopped)
210
+ self.stopped_signal.emit()
211
+ elif status == self.suspended:
212
+ for port in self._ports:
213
+ # set ports as suspended
214
+ port.setStatus(Port.suspended)
215
+ self.suspended_signal.emit()
216
+
217
+ def initialized(self):
218
+ """
219
+ Returns if the node has been initialized
220
+
221
+ :returns: boolean
222
+ """
223
+
224
+ return self._initialized
225
+
226
+ def setInitialized(self, initialized):
227
+ """
228
+ Sets if the node has been initialized
229
+
230
+ :param initialized: boolean
231
+ """
232
+
233
+ self._initialized = initialized
234
+
235
+ def update(self, new_settings):
236
+ """
237
+ Updates the settings for this node.
238
+ Must be overloaded.
239
+
240
+ :param new_settings: settings dictionary
241
+ """
242
+
243
+ raise NotImplementedError()
244
+
245
+ def ports(self):
246
+ """
247
+ Returns all the ports for this node.
248
+
249
+ :returns: list of Port instances
250
+ """
251
+
252
+ return self._ports
253
+
254
+ def controllerHttpPost(self, path, callback, body={}, context={}, **kwargs):
255
+ """
256
+ POST on current server / project
257
+
258
+ :param path: Remote path
259
+ :param callback: callback method to call when the server replies
260
+ :param body: params to send (dictionary)
261
+ :param context: Pass a context to the response callback
262
+ """
263
+
264
+ self._project.post(path, callback, body=body, context=context, **kwargs)
265
+
266
+ def controllerHttpPut(self, path, callback, body={}, context={}, **kwargs):
267
+ """
268
+ PUT on current server / project
269
+
270
+ :param path: Remote path
271
+ :param callback: callback method to call when the server replies
272
+ :param body: params to send (dictionary)
273
+ :param context: Pass a context to the response callback
274
+ """
275
+
276
+ self._project.put(path, callback, body=body, context=context, **kwargs)
277
+
278
+ def controllerHttpGet(self, path, callback, context={}, **kwargs):
279
+ """
280
+ Get on current server / project
281
+
282
+ :param path: Remote path
283
+ :param callback: callback method to call when the server replies
284
+ :param body: params to send (dictionary)
285
+ :param context: Pass a context to the response callback
286
+ """
287
+
288
+ self._project.get(path, callback, context=context, **kwargs)
289
+
290
+ def controllerHttpDelete(self, path, callback, context={}, **kwargs):
291
+ """
292
+ Delete on current server / project
293
+
294
+ :param path: Remote path
295
+ :param callback: callback method to call when the server replies
296
+ :param context: Pass a context to the response callback
297
+ """
298
+
299
+ self._project.delete(path, callback, context=context, **kwargs)
300
+
301
+ @staticmethod
302
+ def defaultCategories():
303
+ """
304
+ Returns the default categories.
305
+
306
+ :returns: dict
307
+ """
308
+
309
+ categories = {"Routers": BaseNode.routers,
310
+ "Switches": BaseNode.switches,
311
+ "End devices": BaseNode.end_devices,
312
+ "Security devices": BaseNode.security_devices}
313
+
314
+ return categories
315
+
316
+ @staticmethod
317
+ def defaultSymbol():
318
+ """
319
+ Returns the default symbol path for this node.
320
+ Must be overloaded.
321
+
322
+ :returns: symbol path (or resource).
323
+ """
324
+
325
+ raise NotImplementedError()
326
+
327
+ @staticmethod
328
+ def categories(self):
329
+ """
330
+ Returns the node categories the node is part of (used by the device panel).
331
+
332
+ :returns: list of node category (integer)
333
+ """
334
+
335
+ raise NotImplementedError()
336
+
337
+ def __str__(self):
338
+ """
339
+ Must be overloaded.
340
+ """
341
+
342
+ raise NotImplementedError()