mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 05:51:15 +02:00
New packaging relying only pyproject.toml
This commit is contained in:
1 parent
17f71f970e
commit
1cb433c5bc
13 files changed
+38
-82
No files matched your search
@@ -18,11 +18,15 @@
|
||||
Docker server module.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import asyncio
|
||||
import logging
|
||||
import aiohttp
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from gns3server.utils import parse_version
|
||||
from gns3server.utils.asyncio import locking
|
||||
from gns3server.compute.base_manager import BaseManager
|
||||
@@ -54,6 +58,25 @@ class Docker(BaseManager):
|
||||
self._session = None
|
||||
self._api_version = DOCKER_MINIMUM_API_VERSION
|
||||
|
||||
@staticmethod
|
||||
def install_busybox():
|
||||
|
||||
if not sys.platform.startswith("linux"):
|
||||
return
|
||||
dst_busybox = os.path.join(os.path.dirname(os.path.abspath(__file__)), "resources", "bin", "busybox")
|
||||
if os.path.isfile(dst_busybox):
|
||||
return
|
||||
for busybox_exec in ("busybox-static", "busybox.static", "busybox"):
|
||||
busybox_path = shutil.which(busybox_exec)
|
||||
if busybox_path:
|
||||
log.info(f"Installing busybox from '{busybox_path}'")
|
||||
try:
|
||||
shutil.copy2(busybox_path, dst_busybox, follow_symlinks=True)
|
||||
return
|
||||
except OSError as e:
|
||||
raise DockerError(f"Could not install busybox: {e}")
|
||||
raise DockerError("No busybox executable could be found")
|
||||
|
||||
async def _check_connection(self):
|
||||
|
||||
if not self._connected:
|
||||
|
||||
@@ -523,7 +523,7 @@ class DockerVM(BaseNode):
|
||||
|
||||
async def update(self):
|
||||
"""
|
||||
Destroy an recreate the container with the new settings
|
||||
Destroy and recreate the container with the new settings
|
||||
"""
|
||||
|
||||
# We need to save the console and state and restore it
|
||||
@@ -544,6 +544,9 @@ class DockerVM(BaseNode):
|
||||
Starts this Docker container.
|
||||
"""
|
||||
|
||||
# make sure busybox is installed
|
||||
self.manager.install_busybox()
|
||||
|
||||
try:
|
||||
state = await self._get_container_state()
|
||||
except DockerHttp404Error:
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
[Controller]
|
||||
|
||||
; Options for JWT tokens (user authentication)
|
||||
jwt_secret_key = efd08eccec3bd0a1be2e086670e5efa90969c68d07e072d7354a76cea5e33d4e
|
||||
jwt_algorithm = HS256
|
||||
jwt_access_token_expire_minutes = 1440
|
||||
|
||||
; Initial default super admin username
|
||||
; It cannot be changed once the controller has started once
|
||||
default_admin_username = admin
|
||||
|
||||
; Initial default super admin password
|
||||
; It cannot be changed once the controller has started once
|
||||
default_admin_password = admin
|
||||
|
||||
[Server]
|
||||
|
||||
; Server name, default is what is returned by socket.gethostname()
|
||||
name = GNS3_Server
|
||||
|
||||
; What protocol the server uses (http or https)
|
||||
protocol = http
|
||||
|
||||
; IP where the server listen for connections
|
||||
host = 0.0.0.0
|
||||
; HTTP port for controlling the servers
|
||||
port = 3080
|
||||
|
||||
; Secrets directory
|
||||
secrets_dir = /home/gns3/.config/GNS3/secrets
|
||||
|
||||
; Options to enable SSL encryption
|
||||
enable_ssl = False
|
||||
certfile = /home/gns3/.config/GNS3/ssl/server.cert
|
||||
certkey = /home/gns3/.config/GNS3/ssl/server.key
|
||||
|
||||
; Path where devices images are stored
|
||||
images_path = /home/gns3/GNS3/images
|
||||
|
||||
; Additional paths to look for images
|
||||
additional_images_paths = /opt/images;/mnt/disk1/images
|
||||
|
||||
; Path where user projects are stored
|
||||
projects_path = /home/gns3/GNS3/projects
|
||||
|
||||
; Path where user appliances are stored
|
||||
appliances_path = /home/gns3/GNS3/appliances
|
||||
|
||||
; Path where custom device symbols are stored
|
||||
symbols_path = /home/gns3/GNS3/symbols
|
||||
|
||||
; Path where custom configs are stored
|
||||
configs_path = /home/gns3/GNS3/configs
|
||||
|
||||
; Default symbol theme
|
||||
; Currently available themes are "Classic", Affinity-square-blue", "Affinity-square-red"
|
||||
; "Affinity-square-gray", "Affinity-circle-blue", "Affinity-circle-red" and "Affinity-circle-gray"
|
||||
default_symbol_theme = Affinity-square-blue
|
||||
|
||||
; Option to enable or disable raw images to be uploaded to the server
|
||||
allow_raw_images = True
|
||||
|
||||
; Option to automatically discover images in the images directory
|
||||
auto_discover_images = True
|
||||
|
||||
; Option to automatically send crash reports to the GNS3 team
|
||||
report_errors = True
|
||||
|
||||
; First console port of the range allocated to devices
|
||||
console_start_port_range = 5000
|
||||
; Last console port of the range allocated to devices
|
||||
console_end_port_range = 10000
|
||||
|
||||
; First VNC console port of the range allocated to devices.
|
||||
; The value MUST BE >= 5900 and <= 65535
|
||||
vnc_console_start_port_range = 5900
|
||||
; Last VNC console port of the range allocated to devices
|
||||
; The value MUST BE >= 5900 and <= 65535
|
||||
vnc_console_end_port_range = 10000
|
||||
|
||||
; First port of the range allocated for inter-device communication. Two ports are allocated per link.
|
||||
udp_start_port_range = 20000
|
||||
; Last port of the range allocated for inter-device communication. Two ports are allocated per link
|
||||
udp_end_port_range = 30000
|
||||
|
||||
; uBridge executable location, default: search in PATH
|
||||
;ubridge_path = ubridge
|
||||
|
||||
; Username for compute HTTP authentication.
|
||||
compute_username = gns3
|
||||
; Password for compute HTTP authentication.
|
||||
compute_password = gns3
|
||||
|
||||
; Only allow these interfaces to be used by GNS3, for the Cloud node for example (Linux/OSX only)
|
||||
; Do not forget to allow virbr0 in order for the NAT node to work
|
||||
allowed_interfaces = eth0,eth1,virbr0
|
||||
|
||||
; Specify the NAT interface to be used by the NAT node
|
||||
; Default is virbr0 on Linux (requires libvirt) and vmnet8 for other platforms (requires VMware)
|
||||
default_nat_interface = vmnet10
|
||||
|
||||
; Enable the built-in templates
|
||||
enable_builtin_templates = True
|
||||
|
||||
[VPCS]
|
||||
; VPCS executable location, default: search in PATH
|
||||
;vpcs_path = vpcs
|
||||
|
||||
[Dynamips]
|
||||
; Enable auxiliary console ports on IOS routers
|
||||
allocate_aux_console_ports = False
|
||||
mmap_support = True
|
||||
; Dynamips executable path, default: search in PATH
|
||||
;dynamips_path = dynamips
|
||||
sparse_memory_support = True
|
||||
ghost_ios_support = True
|
||||
|
||||
[IOU]
|
||||
; Path of your .iourc file. If not provided, the file is searched in $HOME/.iourc
|
||||
iourc_path = /home/gns3/.iourc
|
||||
; Validate if the iourc license file is correct. If you turn this off and your licence is invalid IOU will not start and no errors will be shown.
|
||||
license_check = True
|
||||
|
||||
[VirtualBox]
|
||||
; Path to the VBoxManage binary used to manage VirtualBox
|
||||
vboxmanage_path = vboxmanage
|
||||
|
||||
[VMware]
|
||||
; Path to the vmrun binary used to manage VMware
|
||||
vmrun_path = vmrun
|
||||
vmnet_start_range = 2
|
||||
vmnet_end_range = 255
|
||||
block_host_traffic = False
|
||||
|
||||
[Qemu]
|
||||
; Use Qemu monitor feature to communicate with Qemu VMs
|
||||
enable_monitor = True
|
||||
; IP used to listen for the monitor
|
||||
monitor_host = 127.0.0.1
|
||||
; !! Remember to add the gns3 user to the KVM group, otherwise you will not have read / write permissions to /dev/kvm !!
|
||||
; Enable hardware acceleration (all platforms)
|
||||
enable_hardware_acceleration = True
|
||||
; Require hardware acceleration in order to start VMs
|
||||
require_hardware_acceleration = False
|
||||
|
||||
[VMware]
|
||||
; First vmnet interface of the range that can be managed by the GNS3 server
|
||||
vmnet_start_range = 2
|
||||
; Last vmnet interface of the range that can be managed by the GNS3 server. It must be maximum 19 on Windows.
|
||||
vmnet_end_range = 255
|
||||
@@ -22,11 +22,6 @@ import asyncio
|
||||
import aiofiles
|
||||
import shutil
|
||||
|
||||
try:
|
||||
import importlib_resources
|
||||
except ImportError:
|
||||
from importlib import resources as importlib_resources
|
||||
|
||||
|
||||
from typing import Tuple, List
|
||||
from aiohttp.client_exceptions import ClientError
|
||||
|
||||
@@ -167,8 +167,9 @@ class Server:
|
||||
config.Server.allow_remote_console = args.allow
|
||||
config.Server.host = args.host
|
||||
config.Server.port = args.port
|
||||
config.Server.certfile = args.certfile
|
||||
config.Server.certkey = args.certkey
|
||||
#FIXME
|
||||
#config.Server.certfile = args.certfile
|
||||
#config.Server.certkey = args.certkey
|
||||
config.Server.enable_ssl = args.ssl
|
||||
|
||||
def _signal_handling(self):
|
||||
|
||||
Reference in new issue
Block a user