diff --git a/.github/workflows/add-new-issues-to-project.yml b/.github/workflows/add-new-issues-to-project.yml index 63932bb4..aa825255 100644 --- a/.github/workflows/add-new-issues-to-project.yml +++ b/.github/workflows/add-new-issues-to-project.yml @@ -10,7 +10,7 @@ jobs: name: Add issue to project runs-on: ubuntu-latest steps: - - uses: actions/add-to-project@v0.4.0 + - uses: actions/add-to-project@v1.0.1 with: project-url: https://github.com/orgs/GNS3/projects/3 github-token: ${{ secrets.ADD_NEW_ISSUES_TO_PROJECT }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 54e2f8e1..06ab2cc6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,58 +13,81 @@ name: "CodeQL" on: push: - branches: [ master ] + branches: [ "master" ] pull_request: - # The branches below must be a subset of the branches above - branches: [ master ] + branches: [ "master" ] schedule: - - cron: '44 1 * * 3' + - cron: '21 12 * * 4' jobs: analyze: - name: Analyze - runs-on: ubuntu-latest + name: Analyze (${{ matrix.language }}) + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners (GitHub.com only) + # Consider using larger runners or machines with greater resources for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories actions: read contents: read - security-events: write strategy: fail-fast: false matrix: - language: [ 'python' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://git.io/codeql-language-support - + include: + - language: python + build-mode: none + # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' + # Use `c-cpp` to analyze code written in C, C++ or both + # Use 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis, + # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning. + # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how + # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + # If the analyze step fails for one of the languages you are analyzing with + # "We were unable to automatically build your code", modify the matrix above + # to set the build mode to "manual" for that language. Then modify this step + # to build your code. # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/publish-api-documentation.yml b/.github/workflows/publish-api-documentation.yml index 68bd91cd..4df3f308 100644 --- a/.github/workflows/publish-api-documentation.yml +++ b/.github/workflows/publish-api-documentation.yml @@ -12,11 +12,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 ref: "gh-pages" - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v5 with: python-version: 3.8 - name: Merge changes from 3.0 branch diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 01c4fdda..4713c6da 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -20,9 +20,9 @@ jobs: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Display Python version diff --git a/CHANGELOG b/CHANGELOG index 1e75ab49..f3341cb5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,12 @@ # Change Log +## 2.2.49 06/08/2024 + +* Bundle web-ui v2.2.49 +* Forbid -nic and -nicdev in Qemu additional options. Fixes https://github.com/GNS3/gns3-server/issues/2397 +* Upgrade jsonschema and sentry-sdk packages +* Update IOU base configs to use "no ip domain lookup". Fixes #2404 + ## 2.2.48.1 12/07/2024 * Bundle web-ui v2.2.48.1 diff --git a/gns3server/appliances/juniper-junos-space.gns3a b/gns3server/appliances/juniper-junos-space.gns3a index c333c349..659d6a5e 100644 --- a/gns3server/appliances/juniper-junos-space.gns3a +++ b/gns3server/appliances/juniper-junos-space.gns3a @@ -12,18 +12,19 @@ "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "16 GB RAM is the bare minimum; you should use 32/64 GB in production deplyments.\nDefault credentials:\n- CLI: admin / abc123\n- WebUI: super / juniper123", + "usage": "16 GB RAM is the bare minimum; you should use 32/64 GB in production deployments.\nDefault credentials:\n- CLI: admin / abc123\n- WebUI: super / juniper123", "symbol": "juniper-vqfx.svg", "port_name_format": "em{0}", "qemu": { "adapter_type": "e1000", "adapters": 4, "ram": 16384, + "cpus": 4, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-smp 4 -nographic" + "options": "-nographic -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vmx-legacy.gns3a b/gns3server/appliances/juniper-vmx-legacy.gns3a index 1409c4c7..592c4a60 100644 --- a/gns3server/appliances/juniper-vmx-legacy.gns3a +++ b/gns3server/appliances/juniper-vmx-legacy.gns3a @@ -34,7 +34,7 @@ "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-nographic" + "options": "-nographic -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vmx-vcp.gns3a b/gns3server/appliances/juniper-vmx-vcp.gns3a index 089f4dce..d1d9493c 100644 --- a/gns3server/appliances/juniper-vmx-vcp.gns3a +++ b/gns3server/appliances/juniper-vmx-vcp.gns3a @@ -26,7 +26,7 @@ "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-nographic -enable-kvm" + "options": "-nographic -enable-kvm -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vmx-vfp.gns3a b/gns3server/appliances/juniper-vmx-vfp.gns3a index dba3ee1e..ff1145ef 100644 --- a/gns3server/appliances/juniper-vmx-vfp.gns3a +++ b/gns3server/appliances/juniper-vmx-vfp.gns3a @@ -20,11 +20,12 @@ "adapter_type": "virtio-net-pci", "adapters": 13, "ram": 4096, + "cpus": 4, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-nographic -enable-kvm -smp cpus=3" + "options": "-nographic -enable-kvm -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vqfx-pfe.gns3a b/gns3server/appliances/juniper-vqfx-pfe.gns3a index 23cacef5..7a4c4e21 100644 --- a/gns3server/appliances/juniper-vqfx-pfe.gns3a +++ b/gns3server/appliances/juniper-vqfx-pfe.gns3a @@ -23,7 +23,7 @@ "arch": "x86_64", "console_type": "vnc", "kvm": "require", - "options": "-nographic" + "options": "-nographic -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vqfx-re.gns3a b/gns3server/appliances/juniper-vqfx-re.gns3a index b47c34d5..855d2a11 100644 --- a/gns3server/appliances/juniper-vqfx-re.gns3a +++ b/gns3server/appliances/juniper-vqfx-re.gns3a @@ -19,11 +19,12 @@ "adapter_type": "virtio-net-pci", "adapters": 12, "ram": 1024, + "cpus": 2, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-nographic -smp 2" + "options": "-nographic -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vrr.gns3a b/gns3server/appliances/juniper-vrr.gns3a index 8c447a26..8ec4d506 100644 --- a/gns3server/appliances/juniper-vrr.gns3a +++ b/gns3server/appliances/juniper-vrr.gns3a @@ -25,7 +25,7 @@ "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-nographic -enable-kvm" + "options": "-nographic -enable-kvm -machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/juniper-vsrx.gns3a b/gns3server/appliances/juniper-vsrx.gns3a index bd13122d..347632b3 100644 --- a/gns3server/appliances/juniper-vsrx.gns3a +++ b/gns3server/appliances/juniper-vsrx.gns3a @@ -19,11 +19,12 @@ "adapter_type": "vmxnet3", "adapters": 6, "ram": 4096, + "cpus": 2, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "telnet", "kvm": "require", - "options": "-smp 2" + "options": "-machine q35,smbios-entry-point-type=32" }, "images": [ { diff --git a/gns3server/appliances/security-onion.gns3a b/gns3server/appliances/security-onion.gns3a index f4f6cf1a..4841de8f 100644 --- a/gns3server/appliances/security-onion.gns3a +++ b/gns3server/appliances/security-onion.gns3a @@ -13,18 +13,27 @@ "status": "stable", "maintainer": "Brent Stewart", "maintainer_email": "brent@stewart.tc", - "usage": "Your default account will have sudo priviledges. Squil and Squert username and password are configured in the Setup wizard. MySQL root is set to null. For more info see https://github.com/Security-Onion-Solutions/security-onion/wiki/Passwords.", + "usage": "Your default account will have sudo privileges. Squil and Squert username and password are configured in the Setup wizard. MySQL root is set to null. For more info see https://github.com/Security-Onion-Solutions/security-onion/wiki/Passwords.", "symbol": "securityonion-logo.png", "qemu": { "adapter_type": "e1000", "adapters": 2, - "ram": 3072, + "ram": 4096, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "vnc", - "kvm": "allow" + "kvm": "allow", + "options": "-cpu host" }, "images": [ + { + "filename": "securityonion-2.4.80-20240624.iso", + "version": "2.4.80-20240624", + "md5sum": "139f9762e926f9cb3c4a9528a3752c31", + "filesize": 12391022592, + "download_url": "https://github.com/Security-Onion-Solutions/securityonion/blob/2.4/main/DOWNLOAD_AND_VERIFY_ISO.md", + "direct_download_url": "https://download.securityonion.net/file/securityonion/securityonion-2.4.80-20240624.iso" + }, { "filename": "securityonion-16.04.7.1.iso", "version": "16.04.7.1", @@ -49,6 +58,14 @@ "download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/", "direct_download_url": "https://github.com/Security-Onion-Solutions/security-onion/releases/download/v14.04.5.4_20171031/securityonion-14.04.5.4.iso" }, + { + "filename": "empty100G.qcow2", + "version": "1.0", + "md5sum": "5d9fec18a980f13002028491259f158d", + "filesize": 198656, + "download_url": "https://github.com/riverbed/Riverbed-Community-Toolkit/raw/master/SteelHead/GNS3", + "direct_download_url": "https://github.com/riverbed/Riverbed-Community-Toolkit/raw/master/SteelHead/GNS3/empty100G.qcow2" + }, { "filename": "empty30G.qcow2", "version": "1.0", @@ -59,6 +76,13 @@ } ], "versions": [ + { + "name": "2.4.80-20240624", + "images": { + "hda_disk_image": "empty100G.qcow2", + "cdrom_image": "securityonion-2.4.80-20240624.iso" + } + }, { "name": "16.04.7.1", "images": { diff --git a/gns3server/appliances/ubuntu-docker.gns3a b/gns3server/appliances/ubuntu-docker.gns3a index 110fba40..9cde03e7 100644 --- a/gns3server/appliances/ubuntu-docker.gns3a +++ b/gns3server/appliances/ubuntu-docker.gns3a @@ -14,7 +14,7 @@ "symbol": "linux_guest.svg", "docker": { "adapters": 1, - "image": "gns3/ubuntu:focal", + "image": "gns3/ubuntu:noble", "console_type": "telnet" } } diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 19baa48a..35a1b89d 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -56,7 +56,7 @@ log = logging.getLogger(__name__) # forbidden additional options FORBIDDEN_OPTIONS = {"-blockdev", "-drive", "-hda", "-hdb", "-hdc", "-hdd", - "-fsdev", "-virtfs"} + "-fsdev", "-virtfs", "-nic", "-netdev"} FORBIDDEN_OPTIONS |= {"-" + opt for opt in FORBIDDEN_OPTIONS if opt.startswith("-") and not opt.startswith("--")} diff --git a/requirements.txt b/requirements.txt index 0eac0371..478e6106 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ uvicorn==0.29.0 fastapi==0.112.0 python-multipart==0.0.9 websockets==12.0 -aiohttp>=3.9.5,<3.10 +aiohttp>=3.10.3,<3.11 async-timeout==4.0.3 aiofiles>=24.1.0,<25.0 Jinja2>=3.1.4,<3.2 diff --git a/scripts/remote-install.sh b/scripts/remote-install.sh index 289ad335..6b4906b8 100644 --- a/scripts/remote-install.sh +++ b/scripts/remote-install.sh @@ -197,8 +197,18 @@ then # Force hostid for IOU dd if=/dev/zero bs=4 count=1 of=/etc/hostid - # Block iou call. The server is down - echo "127.0.0.254 xml.cisco.com" | tee --append /etc/hosts + # Block potential IOU phone home call (xml.cisco.com is not in use at this time) + log "Block IOU phone home call" + if [ "$UBUNTU_CODENAME" == "focal" ] + then + iptables -I OUTPUT -p udp --dport 53 -m string --hex-string "|03|xml|05|cisco|03|com" --algo bm -j DROP + echo iptables-persistent iptables-persistent/autosave_v4 boolean true | debconf-set-selections + echo iptables-persistent iptables-persistent/autosave_v6 boolean true | debconf-set-selections + apt-get install -y iptables-persistent + else + echo "127.0.0.254 xml.cisco.com" | tee --append /etc/hosts + fi + fi log "Add gns3 to the kvm group"