diff --git a/docker/Dockerfile b/docker/Dockerfile index 2663e029..acdce9d3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ # # Pull the current golang-alpine image. -FROM golang:1.27-alpine3.24 AS awg-go +FROM golang:1.27-alpine3.24 AS awg-go-builder # Install build-dependencies. RUN apk add --no-cache \ @@ -30,7 +30,7 @@ RUN go version && \ # AWG TOOLS BUILDING STAGE # Base: Alpine # -FROM alpine:3.24 AS awg-tools +FROM alpine:3.24 AS awg-tools-builder # Install needed dependencies. RUN apk add --no-cache \ @@ -121,9 +121,9 @@ RUN apk add --no-cache \ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Copy only the final binaries from the AWG builder stages -COPY --from=awg-go /usr/bin/amneziawg-go /usr/bin/amneziawg-go -COPY --from=awg-tools /workspace/awg-tools/src/wg /usr/bin/awg -COPY --from=awg-tools /workspace/awg-tools/src/wg-quick/linux.bash /usr/bin/awg-quick +COPY --from=awg-go-builder /usr/bin/amneziawg-go /usr/bin/amneziawg-go +COPY --from=awg-tools-builder /workspace/awg-tools/src/wg /usr/bin/awg +COPY --from=awg-tools-builder /workspace/awg-tools/src/wg-quick/linux.bash /usr/bin/awg-quick # Environment variables ARG wg_net="10.0.0.1" diff --git a/src/requirements.txt b/src/requirements.txt index 0cbb43a1..4feeeb28 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -13,5 +13,5 @@ sqlalchemy_utils==0.43.0 psycopg[binary]==3.3.6 PyMySQL==1.2.3 tzlocal==5.4.5 -python-jose==3.5.0 +python-jose[cryptography]==3.5.0 pydantic==2.14.1 diff --git a/src/static/app/package-lock.json b/src/static/app/package-lock.json index e59f7326..acc88a46 100644 --- a/src/static/app/package-lock.json +++ b/src/static/app/package-lock.json @@ -2555,9 +2555,9 @@ } }, "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", "license": "MIT" }, "node_modules/delayed-stream": { @@ -3013,9 +3013,9 @@ } }, "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", "license": "MIT" }, "node_modules/filelist": { diff --git a/src/static/client/package-lock.json b/src/static/client/package-lock.json index 53e03454..d8548b16 100644 --- a/src/static/client/package-lock.json +++ b/src/static/client/package-lock.json @@ -1242,9 +1242,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.34", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz", - "integrity": "sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==", + "version": "2.11.33", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.33.tgz", + "integrity": "sha512-yiVKDX+qCMRKBE084lXvq9EcwFUhKZ2nU8TK1EQQuOgPNR/lmbGxXOeDdlGUqC2Zz11Cs9rk1d/8NfgBmlkt0w==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1299,9 +1299,9 @@ "license": "MIT" }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.29.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.4.tgz", + "integrity": "sha512-2TcbbiwXEq+N0kD36tykpCfyyQigUXmuwNQbnPp4Xk4PX9JOqVIKjJlIDjpH7uY6tmRGoAd+apeT1p60T8wsdA==", "dev": true, "funding": [ { @@ -1319,11 +1319,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.29", + "caniuse-lite": "^1.0.30001816", + "electron-to-chromium": "^1.5.459", + "node-releases": "^2.0.59", + "update-browserslist-db": "^1.3.4" }, "bin": { "browserslist": "cli.js" @@ -1371,9 +1371,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "version": "1.0.30001819", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001819.tgz", + "integrity": "sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg==", "dev": true, "funding": [ { @@ -1581,9 +1581,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.368", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz", - "integrity": "sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==", + "version": "1.5.464", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.464.tgz", + "integrity": "sha512-nRa65aFge40viPAKxMKULIY8tcXKwKboJWNn4RoKwyWXJ6SP7BnrDGKUTzc64818jIciH0PK7LSF8QzZes19GA==", "dev": true, "license": "ISC" }, @@ -1713,9 +1713,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.2.tgz", + "integrity": "sha512-/kVP2U8z596Ia0gwFrwyIeo74ta5aVmSeU1FfAUMAmcEP5EP7zydmag3SLiN64NaRKef3lxsq7i/g7ltJQDGow==", "funding": [ { "type": "individual", @@ -2431,9 +2431,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.47", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", - "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", + "version": "2.0.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.60.tgz", + "integrity": "sha512-OmO8+GM1JUZqXET720VrJCwkjUCXmCMQm0Z3UDDRbfNLHS4NEAvY60j5jiFv0tkKw2PNNlqOLhahVmwJIOLDIQ==", "dev": true, "license": "MIT", "engines": { @@ -2928,9 +2928,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", "dev": true, "funding": [ { diff --git a/src/wgd.sh b/src/wgd.sh index 9736d7cc..39f67ef8 100755 --- a/src/wgd.sh +++ b/src/wgd.sh @@ -5,12 +5,17 @@ #trap "kill $TOP_PID" export TOP_PID=$$ +#------------------------------------------------------------------------------ +# Configuration +#------------------------------------------------------------------------------ app_name="dashboard.py" app_official_name="WGDashboard" venv_python="./venv/bin/python3" venv_gunicorn="./venv/bin/gunicorn" pythonExecutable="python3" +frontend_dirs=("./static/app" "./static/client") + heavy_checkmark=$(printf "\xE2\x9C\x85") heavy_crossmark=$(printf "\xE2\x9D\x8C") install=$(printf "\xF0\x9F\x92\xBF") @@ -20,218 +25,308 @@ msleep=15 PID_FILE=./gunicorn.pid environment=$(if [[ $ENVIRONMENT ]]; then echo $ENVIRONMENT; else echo 'develop'; fi) if [[ $CONFIGURATION_PATH ]]; then - cb_work_dir=$CONFIGURATION_PATH/letsencrypt/work-dir - cb_config_dir=$CONFIGURATION_PATH/letsencrypt/config-dir + cb_work_dir=$CONFIGURATION_PATH/letsencrypt/work-dir + cb_config_dir=$CONFIGURATION_PATH/letsencrypt/config-dir else - cb_work_dir=/etc/letsencrypt - cb_config_dir=/var/lib/letsencrypt + cb_work_dir=/etc/letsencrypt + cb_config_dir=/var/lib/letsencrypt fi dashes='---------------------------------------------------------------------------------' equals='============================================================' helpMsg="[WGDashboard] Please check ./log/install.txt for more details. For further assistance, please open a ticket on https://github.com/WGDashboard/WGDashboard/issues/new/choose, I'm more than happy to help :)" + +#------------------------------------------------------------------------------ +# Output helpers +#------------------------------------------------------------------------------ print_header(){ - printf "=================================================================================\n" - printf "+ by Donald Zou - https://github.com/donaldzou +\n" - printf "=================================================================================\n" + printf "=================================================================================\n" + printf "+ by Donald Zou - https://github.com/donaldzou +\n" + printf "=================================================================================\n" } help () { - printf "| Usage: ./wgd.sh