diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index b44cc473c..54084ea3f 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -133,7 +133,7 @@ jobs: versionrpm: ${{ steps.getversionrpm.outputs.versionrpm }} steps: - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Get VERSION id: getversion run: echo "version=$(cat src/VERSION | tr -d '\n')" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f8470b5e0..12091b2cf 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: language: ["python", "javascript"] steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Set up Python 3.9 uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 if: matrix.language == 'python' @@ -35,12 +35,12 @@ jobs: python -m pip install --no-cache-dir --require-hashes -r src/common/db/requirements.txt echo "CODEQL_PYTHON=$(which python)" >> $GITHUB_ENV - name: Initialize CodeQL - uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/init@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: languages: ${{ matrix.language }} config-file: ./.github/codeql.yml setup-python-dependencies: false - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/analyze@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/container-build.yml b/.github/workflows/container-build.yml index 86055215a..3b97efc47 100644 --- a/.github/workflows/container-build.yml +++ b/.github/workflows/container-build.yml @@ -45,7 +45,7 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Replace VERSION if: inputs.RELEASE == 'testing' run: ./misc/update-version.sh testing @@ -63,22 +63,22 @@ jobs: SSH_IP: ${{ secrets.ARM_SSH_IP }} SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }} - name: Setup Buildx - uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 if: inputs.CACHE_SUFFIX != 'arm' - name: Setup Buildx (ARM) - uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 if: inputs.CACHE_SUFFIX == 'arm' with: endpoint: ssh://root@arm platforms: linux/arm64,linux/arm/v7,linux/arm/v6 - name: Login to Docker Hub - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Login to ghcr if: inputs.PUSH == true - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -92,7 +92,7 @@ jobs: # Build cached image - name: Build image if: inputs.CACHE == true - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . file: ${{ inputs.DOCKERFILE }} @@ -105,7 +105,7 @@ jobs: # Build non-cached image - name: Build image if: inputs.CACHE != true - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . file: ${{ inputs.DOCKERFILE }} diff --git a/.github/workflows/create-arm.yml b/.github/workflows/create-arm.yml index 9bb50ff84..9e138e61c 100644 --- a/.github/workflows/create-arm.yml +++ b/.github/workflows/create-arm.yml @@ -33,7 +33,7 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Get ARM availabilities id: availabilities uses: scaleway/action-scw@c718eca1fcb9fec1fb1433752d61599c6a0ad2e9 diff --git a/.github/workflows/dev-update-mmdb.yml b/.github/workflows/dev-update-mmdb.yml index 9e7341b03..e0ef40795 100644 --- a/.github/workflows/dev-update-mmdb.yml +++ b/.github/workflows/dev-update-mmdb.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: fetch-depth: 0 token: ${{ secrets.BUNKERBOT_TOKEN }} diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index ac0342806..32b554298 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -78,7 +78,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - id: set-matrix run: | tests=$(find ./tests/ui/ -name "*_page.py" -type f -printf "%f\n" | jq -c --raw-input --slurp 'split("\n")| .[0:-1]') @@ -111,7 +111,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - id: set-matrix run: | tests=$(find ./tests/core/ -maxdepth 1 -mindepth 1 -type d -printf "%f\n" | jq -c --raw-input --slurp 'split("\n")| .[0:-1]') @@ -149,12 +149,12 @@ jobs: packages: write steps: - name: Login to Docker Hub - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/doc-to-pdf.yml b/.github/workflows/doc-to-pdf.yml index 6da3076e9..acf4cc96b 100644 --- a/.github/workflows/doc-to-pdf.yml +++ b/.github/workflows/doc-to-pdf.yml @@ -13,7 +13,7 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Install Python uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 9ef4b67ec..decf6b4fa 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -37,7 +37,7 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Replace VERSION if: inputs.RELEASE == 'testing' || inputs.RELEASE == 'dev' || inputs.RELEASE == 'ui' run: ./misc/update-version.sh ${{ inputs.RELEASE }} @@ -72,21 +72,21 @@ jobs: SSH_IP: ${{ secrets.ARM_SSH_IP }} SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }} - name: Setup Buildx - uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 if: startsWith(env.ARCH, 'arm') == false - name: Setup Buildx (ARM) - uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 if: startsWith(env.ARCH, 'arm') == true with: endpoint: ssh://root@arm platforms: linux/arm64,linux/arm/v7,linux/arm/v6 - name: Login to Docker Hub - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -94,7 +94,7 @@ jobs: # Build testing package image - name: Build package image if: inputs.RELEASE == 'testing' || inputs.RELEASE == 'dev' || inputs.RELEASE == 'ui' - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . load: true @@ -106,7 +106,7 @@ jobs: # Build non-testing package image - name: Build package image if: inputs.RELEASE != 'testing' && inputs.RELEASE != 'dev' - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . load: true @@ -142,7 +142,7 @@ jobs: images: ghcr.io/bunkerity/${{ inputs.LINUX }}-tests:${{ inputs.RELEASE }} - name: Build test image if: inputs.TEST == true - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . file: tests/linux/Dockerfile-${{ inputs.LINUX }} diff --git a/.github/workflows/push-doc.yml b/.github/workflows/push-doc.yml index 319a11d3e..3f3e2dd0f 100644 --- a/.github/workflows/push-doc.yml +++ b/.github/workflows/push-doc.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: fetch-depth: 0 token: ${{ secrets.BUNKERBOT_TOKEN }} diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index bf46fbfbf..364729dc1 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -33,14 +33,14 @@ jobs: steps: # Prepare - name: Check out repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Login to Docker Hub - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -58,7 +58,7 @@ jobs: SSH_IP: ${{ secrets.ARM_SSH_IP }} SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }} - name: Setup Buildx (ARM) - uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 with: endpoint: ssh://root@arm platforms: linux/arm64,linux/arm/v7,linux/arm/v6 @@ -70,7 +70,7 @@ jobs: images: bunkerity/${{ inputs.IMAGE }} # Build and push - name: Build and push - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . file: ${{ inputs.DOCKERFILE }} diff --git a/.github/workflows/push-github.yml b/.github/workflows/push-github.yml index 3c5e2cb19..ad8088ed1 100644 --- a/.github/workflows/push-github.yml +++ b/.github/workflows/push-github.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: # Checkout - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 # Get PDF doc - name: Get documentation if: inputs.VERSION != 'testing' @@ -51,7 +51,7 @@ jobs: # Create release - name: Create release if: inputs.VERSION != 'testing' - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 + uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4 with: body: | Documentation : https://docs.bunkerweb.io/${{ inputs.VERSION }}/ @@ -75,7 +75,7 @@ jobs: # Create release - name: Create release if: inputs.VERSION == 'testing' - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 + uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4 with: body: | **The testing version of BunkerWeb should not be used in production, please use the latest stable version instead.** diff --git a/.github/workflows/push-packagecloud.yml b/.github/workflows/push-packagecloud.yml index 5ddc9f81a..4b2a718d4 100644 --- a/.github/workflows/push-packagecloud.yml +++ b/.github/workflows/push-packagecloud.yml @@ -40,7 +40,7 @@ jobs: steps: # Prepare - name: Check out repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Install ruby uses: ruby/setup-ruby@d4526a55538b775af234ba4af27118ed6f8f6677 # v1.172.0 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1413fa908..75da5963a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -141,7 +141,7 @@ jobs: versionrpm: ${{ steps.getversionrpm.outputs.versionrpm }} steps: - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Get VERSION id: getversion run: echo "version=$(cat src/VERSION | tr -d '\n')" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/rm-arm.yml b/.github/workflows/rm-arm.yml index cceb09a7a..2d0c61ce0 100644 --- a/.github/workflows/rm-arm.yml +++ b/.github/workflows/rm-arm.yml @@ -21,7 +21,7 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Delete ARM VM uses: scaleway/action-scw@c718eca1fcb9fec1fb1433752d61599c6a0ad2e9 with: diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index b80c0a64e..ecf5b8c35 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Checkout code" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: persist-credentials: false - name: "Run analysis" @@ -25,6 +25,6 @@ jobs: results_format: sarif publish_results: true - name: "Upload SARIF results to code scanning" - uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/upload-sarif@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: sarif_file: results.sarif diff --git a/.github/workflows/staging-create-infra.yml b/.github/workflows/staging-create-infra.yml index d78d168ca..de328cd66 100644 --- a/.github/workflows/staging-create-infra.yml +++ b/.github/workflows/staging-create-infra.yml @@ -21,7 +21,7 @@ jobs: run: ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N "" && ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub && echo -e "Host *\n StrictHostKeyChecking no" > ~/.ssh/ssh_config if: inputs.TYPE != 'k8s' - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Install terraform uses: hashicorp/setup-terraform@a1502cd9e758c50496cc9ac5308c4843bcd56d36 # v3.0.0 - name: Install kubectl diff --git a/.github/workflows/staging-delete-infra.yml b/.github/workflows/staging-delete-infra.yml index bb18e9d60..07949134f 100644 --- a/.github/workflows/staging-delete-infra.yml +++ b/.github/workflows/staging-delete-infra.yml @@ -20,7 +20,7 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Install terraform uses: hashicorp/setup-terraform@a1502cd9e758c50496cc9ac5308c4843bcd56d36 # v3.0.0 - uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 diff --git a/.github/workflows/staging-tests.yml b/.github/workflows/staging-tests.yml index 385841250..edb8ee3f2 100644 --- a/.github/workflows/staging-tests.yml +++ b/.github/workflows/staging-tests.yml @@ -25,9 +25,9 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index 2ba114648..fcff770c9 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -89,7 +89,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - id: set-matrix run: | tests=$(find ./tests/core/ -maxdepth 1 -mindepth 1 -type d -printf "%f\n" | jq -c --raw-input --slurp 'split("\n")| .[0:-1]') @@ -100,7 +100,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - id: set-matrix run: | tests=$(find ./tests/ui/ -name "*_page.py" -type f -printf "%f\n" | jq -c --raw-input --slurp 'split("\n")| .[0:-1]') @@ -197,12 +197,12 @@ jobs: packages: write steps: - name: Login to Docker Hub - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/test-core-linux.yml b/.github/workflows/test-core-linux.yml index 8f42a28a6..3cd29fe4a 100644 --- a/.github/workflows/test-core-linux.yml +++ b/.github/workflows/test-core-linux.yml @@ -16,11 +16,11 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Set up Python 3.12 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - name: Set up Python 3.9 uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: - python-version: "3.12" + python-version: "3.9" - name: Install Firefox manually and dependencies run: | sudo add-apt-repository ppa:mozillateam/ppa -y @@ -47,7 +47,7 @@ jobs: sudo chmod +x /usr/local/bin/geckodriver rm -f geckodriver.tar.gz - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/test-core.yml b/.github/workflows/test-core.yml index 3329d0197..9b01b87d6 100644 --- a/.github/workflows/test-core.yml +++ b/.github/workflows/test-core.yml @@ -16,9 +16,9 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/tests-ui-linux.yml b/.github/workflows/tests-ui-linux.yml index 1772d7d31..2d08116b5 100644 --- a/.github/workflows/tests-ui-linux.yml +++ b/.github/workflows/tests-ui-linux.yml @@ -16,11 +16,11 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Set up Python 3.12 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - name: Set up Python 3.9 uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: - python-version: "3.12" + python-version: "3.9" - name: Install Firefox manually and dependencies run: | sudo add-apt-repository ppa:mozillateam/ppa -y @@ -47,7 +47,7 @@ jobs: sudo chmod +x /usr/local/bin/geckodriver rm -f geckodriver.tar.gz - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/tests-ui.yml b/.github/workflows/tests-ui.yml index 6af6dbd68..d55320043 100644 --- a/.github/workflows/tests-ui.yml +++ b/.github/workflows/tests-ui.yml @@ -15,9 +15,9 @@ jobs: steps: # Prepare - name: Checkout source code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - name: Login to ghcr - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.gitleaksignore b/.gitleaksignore index 08813ecec..29a398d23 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -7,3 +7,4 @@ src/ui/templates/account.html:hashicorp-tf-password:417 src/ui/templates/account.html:hashicorp-tf-password:470 src/ui/templates/settings_plugins.html:hashicorp-tf-password:87 src/ui/templates/settings_plugins.html:hashicorp-tf-password:297 +src/ui/templates/settings_plugins.html:hashicorp-tf-password:106 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a2baae09..62e932f5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,17 +11,20 @@ - [BUGFIX] Database update with external plugins reupload - [LINUX] Add logrotate support for the logs - [UI] New : add bans management page in the web UI +- [UI] New : add blocked requests page in the web UI - [UI] New : some core plugins pages in the web UI - [UI] General : enhance the Content-Security-Policy header in the web UI - [UI] General : dark mode enhancement - [UI] General : add visual feedback when filtering is matching nothing -- [UI] Add blocked requests page in the web UI -- [UI] Global config / service page : remove tabs for select and enhance filtering (plugin name includes) +- [UI] General : blog news working and add dynamic banner news +- [UI] Global config page : Add multisite edit, add context filter +- [UI] Global config / Service page : remove tabs for select and enhance filtering (plugin name, multiple settings and context now includes) - [UI] Service page : add the possibility to clone a service in the web UI - [UI] Service page : add the possibility to set a service as draft in the web UI - [UI] Service page : add services filter when at least 4 services - [UI] Configs page : add path filtering related to config presence -- [UI] Pro license : add home card, show pro plugis on menu and plugins page, resume in account page, alert in case issue with license usage +- [UI] Pro license : add home card, show pro plugins on menu and plugins page, resume in account page, alert in case issue with license usage +- [UI] Log page : enhance UX - [FEATURE] Add setting REDIS_SSL_VERIFY to activate/disable the SSL certificate verification when using Redis - [FEATURE] Add Redis Sentinel fallback to master automatically if no slaves are available - [FEATURE] Add Redis Sentinel support for bwcli @@ -39,8 +42,11 @@ - [MISC] BunkerWeb will now load the default loading page even on 404 errors when generating the configuration - [MISC] Update database schema to support the new pro version and optimize it - [MISC] Refactor SSL/TLS logics to make it more consistent -- [MISC] Use ed5519 key instead of RSA for default/fallback certificates +- [MISC] Use ECDSA key instead of RSA for selfsigned/default/fallback certificates - [MISC] Refactor certbot-new job to optimize the certbot requests +- [MISC] Refactor jobs utils to make it more consistent +- [MISC] Review jobs and utils to make it more consistent and better in general +- [MISC] Change BunkerWeb base Docker image to nginx:1.24.0-alpine-slim - [DOCUMENTATION] Update web UI's setup wizard instructions in the documentation - [DOCUMENTATION] Update plugins documentation to reflect the new plugin system - [DOCUMENTATION] Update ModSecurity documentation to reflect the new changes in the Security Tuning section diff --git a/docs/assets/img/demo.gif b/docs/assets/img/demo.gif deleted file mode 100644 index 9c238a36a..000000000 Binary files a/docs/assets/img/demo.gif and /dev/null differ diff --git a/docs/assets/img/pro-icon.svg b/docs/assets/img/pro-icon.svg new file mode 100644 index 000000000..56ac61d0d --- /dev/null +++ b/docs/assets/img/pro-icon.svg @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/docs/json2md.py b/docs/json2md.py index cca38729a..fc799637a 100755 --- a/docs/json2md.py +++ b/docs/json2md.py @@ -5,6 +5,10 @@ from json import loads from glob import glob from pathlib import Path from pytablewriter import MarkdownTableWriter +import requests +import zipfile +import shutil +from contextlib import suppress def print_md_table(settings) -> MarkdownTableWriter: @@ -71,9 +75,10 @@ print("## Core settings\n", file=doc) core_settings = {} for core in glob("src/common/core/*/plugin.json"): with open(core, "r") as f: - core_plugin = loads(f.read()) - if len(core_plugin["settings"]) > 0: - core_settings[core_plugin["name"]] = core_plugin + with suppress(Exception): + core_plugin = loads(f.read()) + if len(core_plugin["settings"]) > 0: + core_settings[core_plugin["name"]] = core_plugin for name, data in dict(sorted(core_settings.items())).items(): print(f"### {data['name']}\n", file=doc) @@ -81,6 +86,63 @@ for name, data in dict(sorted(core_settings.items())).items(): print(f"{data['description']}\n", file=doc) print(print_md_table(data["settings"]), file=doc) + +def pro_title(head_num: str, title: str) -> str: + markdown_header = "##" if head_num == "2" else "###" + return f""" +{markdown_header} {title} + +
{{plugin.get('description')}}
Challenges
-- total failed -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
Error code
-Count
- - -Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
+{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +URL
- -- denied -
-IP
- -- denied -
-RDNS
- -- denied -
-ASN
- -- denied -
-User Agent
- -- denied -
-This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
CORS
- -- request blocked -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
Country
- -- request blocked -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
DNSBL
- -- request blocked -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
Code error
-Count
- - -Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +{{plugin.get('description')}}
GREYLIST
- -- request blocked -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
URL
-Count
- - -Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
+{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +DEFAULT SERVER DISABLED
- -- total -
-DISALLOWED METHODS
- -- count -
-This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
Keys
-- total number -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
Port
-Block count
- - -Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.
{{plugin.get('description')}}
WHITELIST
- -- request passed -
+Error during pre rendering
+{{ 'Active' if pre_render['data'][key].get('value') in ('up', 'yes', 'success', 'true') else 'Inactive' }}
{{pre_render['data'][key].get("title")}}
++ {{pre_render['data'][key].get("subtitle")}} +
+{{ val_key }}
+ {% endfor%} + + +{{ top_value }}
+ {% endfor %} +This plugin need to be activated to get metrics.
+This plugin need to be activated to access page.