diff --git a/.github/workflows/push-github.yml b/.github/workflows/push-github.yml index b79b8f339..ecf390ba3 100644 --- a/.github/workflows/push-github.yml +++ b/.github/workflows/push-github.yml @@ -19,7 +19,7 @@ jobs: # Get PDF doc - name: Get documentation if: inputs.VERSION != 'testing' - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 with: name: BunkerWeb_documentation_v${{ inputs.VERSION }}.pdf # Create tag diff --git a/.github/workflows/push-packagecloud.yml b/.github/workflows/push-packagecloud.yml index 2312599be..2de9c956b 100644 --- a/.github/workflows/push-packagecloud.yml +++ b/.github/workflows/push-packagecloud.yml @@ -48,12 +48,12 @@ jobs: - name: Install packagecloud run: gem install package_cloud # Download packages - - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 if: inputs.LINUX != 'el' && inputs.LINUX != 'el9' with: name: package-${{ inputs.LINUX }}-${{ inputs.PACKAGE_ARCH }} path: /tmp/${{ inputs.LINUX }} - - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 if: inputs.LINUX == 'el' || inputs.LINUX == 'el9' with: name: package-rh${{ inputs.LINUX }}-${{ inputs.PACKAGE_ARCH }} diff --git a/.github/workflows/staging-delete-infra.yml b/.github/workflows/staging-delete-infra.yml index 111edb6a9..3200f322b 100644 --- a/.github/workflows/staging-delete-infra.yml +++ b/.github/workflows/staging-delete-infra.yml @@ -23,7 +23,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install terraform uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 - - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 with: name: tf-${{ inputs.TYPE }} path: /tmp diff --git a/.github/workflows/staging-tests.yml b/.github/workflows/staging-tests.yml index 66a2329d3..b587ca6f1 100644 --- a/.github/workflows/staging-tests.yml +++ b/.github/workflows/staging-tests.yml @@ -43,7 +43,7 @@ jobs: - name: Install Terraform uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 if: inputs.TYPE == 'k8s' - - uses: actions/download-artifact@v4.1.8 + - uses: actions/download-artifact@v4.1.9 with: name: tf-k8s path: /tmp diff --git a/.github/workflows/test-core-linux.yml b/.github/workflows/test-core-linux.yml index 9afbb958e..be9e4c196 100644 --- a/.github/workflows/test-core-linux.yml +++ b/.github/workflows/test-core-linux.yml @@ -38,7 +38,7 @@ jobs: export DEBIAN_FRONTEND=noninteractive sudo -E apt install --no-install-recommends -y openssl git nodejs tar bzip2 wget curl grep libx11-xcb1 libappindicator3-1 libasound2t64 libdbus-glib-1-2 libxtst6 libxt6 php-fpm unzip firefox - name: Download geckodriver - uses: nick-fields/retry@c97818ca39074beaea45180dba704f92496a0082 # v3.0.1 + uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 with: max_attempts: 3 timeout_minutes: 20 diff --git a/.github/workflows/tests-ui-linux.yml b/.github/workflows/tests-ui-linux.yml index 9164e20a8..ef3acae8e 100644 --- a/.github/workflows/tests-ui-linux.yml +++ b/.github/workflows/tests-ui-linux.yml @@ -38,7 +38,7 @@ jobs: export DEBIAN_FRONTEND=noninteractive sudo -E apt install --no-install-recommends -y openssl git nodejs tar bzip2 wget curl grep libx11-xcb1 libappindicator3-1 libasound2t64 libdbus-glib-1-2 libxtst6 libxt6 php-fpm unzip firefox - name: Download geckodriver - uses: nick-fields/retry@c97818ca39074beaea45180dba704f92496a0082 # v3.0.1 + uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 with: max_attempts: 3 timeout_minutes: 20 diff --git a/src/common/db/alembic/mariadb_versions/b2c34a5c2c67_upgrade_to_version_1_6_1_rc2.py b/src/common/db/alembic/mariadb_versions/b2c34a5c2c67_upgrade_to_version_1_6_1_rc2.py new file mode 100644 index 000000000..c2f041f43 --- /dev/null +++ b/src/common/db/alembic/mariadb_versions/b2c34a5c2c67_upgrade_to_version_1_6_1_rc2.py @@ -0,0 +1,30 @@ +"""Upgrade to version 1.6.1-rc2 + +Revision ID: b2c34a5c2c67 +Revises: 65b45de7eba5 +Create Date: 2025-02-26 10:21:41.392451 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision: str = "b2c34a5c2c67" +down_revision: Union[str, None] = "65b45de7eba5" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.add_column("bw_metadata", sa.Column("reload_ui_plugins", sa.Boolean(), nullable=True)) + # Update the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc2' WHERE id = 1") + + +def downgrade() -> None: + op.drop_column("bw_metadata", "reload_ui_plugins") + # Revert the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc1' WHERE id = 1") diff --git a/src/common/db/alembic/mysql_versions/960458c3e944_upgrade_to_version_1_6_1_rc2.py b/src/common/db/alembic/mysql_versions/960458c3e944_upgrade_to_version_1_6_1_rc2.py new file mode 100644 index 000000000..68707f6fb --- /dev/null +++ b/src/common/db/alembic/mysql_versions/960458c3e944_upgrade_to_version_1_6_1_rc2.py @@ -0,0 +1,30 @@ +"""Upgrade to version 1.6.1-rc2 + +Revision ID: 960458c3e944 +Revises: 0600f2ed826f +Create Date: 2025-02-26 10:23:51.088128 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision: str = "960458c3e944" +down_revision: Union[str, None] = "0600f2ed826f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.add_column("bw_metadata", sa.Column("reload_ui_plugins", sa.Boolean(), nullable=True)) + # Update the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc2' WHERE id = 1") + + +def downgrade() -> None: + op.drop_column("bw_metadata", "reload_ui_plugins") + # Revert the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc1' WHERE id = 1") diff --git a/src/common/db/alembic/postgresql_versions/7a0181395802_upgrade_to_version_1_6_1_rc2.py b/src/common/db/alembic/postgresql_versions/7a0181395802_upgrade_to_version_1_6_1_rc2.py new file mode 100644 index 000000000..3876d1ee2 --- /dev/null +++ b/src/common/db/alembic/postgresql_versions/7a0181395802_upgrade_to_version_1_6_1_rc2.py @@ -0,0 +1,30 @@ +"""Upgrade to version 1.6.1-rc2 + +Revision ID: 7a0181395802 +Revises: 8c096ca1beb8 +Create Date: 2025-02-26 10:25:39.849523 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision: str = "7a0181395802" +down_revision: Union[str, None] = "8c096ca1beb8" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.add_column("bw_metadata", sa.Column("reload_ui_plugins", sa.Boolean(), nullable=True)) + # Update the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc2' WHERE id = 1") + + +def downgrade() -> None: + op.drop_column("bw_metadata", "reload_ui_plugins") + # Revert the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc1' WHERE id = 1") diff --git a/src/common/db/alembic/sqlite_versions/07f8fe23ccb5_upgrade_to_version_1_6_1_rc2.py b/src/common/db/alembic/sqlite_versions/07f8fe23ccb5_upgrade_to_version_1_6_1_rc2.py new file mode 100644 index 000000000..a629c30d2 --- /dev/null +++ b/src/common/db/alembic/sqlite_versions/07f8fe23ccb5_upgrade_to_version_1_6_1_rc2.py @@ -0,0 +1,31 @@ +"""Upgrade to version 1.6.1-rc2 + +Revision ID: 07f8fe23ccb5 +Revises: 864a1dbd2430 +Create Date: 2025-02-26 10:20:28.081873 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = "07f8fe23ccb5" +down_revision: Union[str, None] = "864a1dbd2430" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.add_column("bw_metadata", sa.Column("reload_ui_plugins", sa.Boolean(), nullable=True)) + # Update the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc2' WHERE id = 1") + + +def downgrade() -> None: + op.drop_column("bw_metadata", "reload_ui_plugins") + # Revert the version in bw_metadata + op.execute("UPDATE bw_metadata SET version = '1.6.1-rc1' WHERE id = 1") diff --git a/src/linux/Dockerfile-rhel b/src/linux/Dockerfile-rhel index a33081060..ebc20af67 100644 --- a/src/linux/Dockerfile-rhel +++ b/src/linux/Dockerfile-rhel @@ -1,4 +1,4 @@ -FROM redhat/ubi8:8.10@sha256:881aaf5fa0d1f85925a1b9668a1fc7f850a11ca30fd3e37ea194db4edff892a5 AS builder +FROM redhat/ubi8:8.10@sha256:fb25b47426c1c43ef583dec35c9e3feb304caf143949e8a7e42d45e2792e6c7b AS builder ENV OS=rhel ENV NGINX_VERSION=1.26.3 @@ -64,7 +64,7 @@ COPY src/scheduler scheduler COPY src/VERSION VERSION COPY src/ui ui -FROM redhat/ubi8:8.10@sha256:881aaf5fa0d1f85925a1b9668a1fc7f850a11ca30fd3e37ea194db4edff892a5 +FROM redhat/ubi8:8.10@sha256:fb25b47426c1c43ef583dec35c9e3feb304caf143949e8a7e42d45e2792e6c7b # Set default umask to prevent huge recursive chmod increasing the final image size RUN umask 027 diff --git a/src/ui/app/routes/pro.py b/src/ui/app/routes/pro.py index 74a8d8f35..84af7a1fb 100644 --- a/src/ui/app/routes/pro.py +++ b/src/ui/app/routes/pro.py @@ -75,9 +75,9 @@ def pro_key(): DATA.load_from_file() - def update_license_key(license_key: str): + def update_license_key(variables: dict): wait_applying() - manage_bunkerweb("global_config", {"PRO_LICENSE_KEY": license_key}, threaded=True) + manage_bunkerweb("global_config", variables, threaded=True) DATA.update( { @@ -88,7 +88,7 @@ def update_license_key(license_key: str): } ) flash("Checking license key.") - Thread(target=update_license_key, args=(license_key,)).start() + Thread(target=update_license_key, args=(variables,)).start() return redirect( url_for( "loading", diff --git a/src/ui/app/static/css/overrides.css b/src/ui/app/static/css/overrides.css index 40e7294b1..166d7663b 100644 --- a/src/ui/app/static/css/overrides.css +++ b/src/ui/app/static/css/overrides.css @@ -20,6 +20,11 @@ --bs-link-hover-color-rgb: 46, 172, 104; } +body { + font-family: var(--bs-body-font-family), "Segoe UI", Roboto, "Helvetica Neue", + Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + .offcanvas, .offcanvas-xxl, .offcanvas-xl,