mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2026-10-30 01:12:07 +00:00
chore: merge development into main (#1398)
* build(deps): bump golang in /docker Bumps golang from 1.26-alpine3.24 to 1.27-alpine3.24. --- updated-dependencies: - dependency-name: golang dependency-version: 1.27-alpine3.24 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump python in /docker Bumps python from 3.14-alpine3.24 to 3.15-alpine3.24. --- updated-dependencies: - dependency-name: python dependency-version: 3.15-alpine3.23 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump sqlalchemy-utils from 0.42.1 to 0.43.0 in /src Bumps [sqlalchemy-utils](https://github.com/kvesteri/sqlalchemy-utils) from 0.42.1 to 0.43.0. - [Release notes](https://github.com/kvesteri/sqlalchemy-utils/releases) - [Changelog](https://github.com/kvesteri/sqlalchemy-utils/blob/master/CHANGES.rst) - [Commits](https://github.com/kvesteri/sqlalchemy-utils/compare/0.42.1...0.43.0) --- updated-dependencies: - dependency-name: sqlalchemy-utils dependency-version: 0.43.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump bootstrap-icons in /src/static/client Bumps [bootstrap-icons](https://github.com/twbs/icons) from 1.13.1 to 1.13.2. - [Release notes](https://github.com/twbs/icons/releases) - [Commits](https://github.com/twbs/icons/compare/v1.13.1...v1.13.2) --- updated-dependencies: - dependency-name: bootstrap-icons dependency-version: 1.13.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump pinia from 3.0.4 to 4.1.0 in /src/static/client Bumps [pinia](https://github.com/vuejs/pinia) from 3.0.4 to 4.1.0. - [Release notes](https://github.com/vuejs/pinia/releases) - [Commits](https://github.com/vuejs/pinia/compare/v3.0.4...v4.1.0) --- updated-dependencies: - dependency-name: pinia dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump @vueuse/shared in /src/static/app Bumps [@vueuse/shared](https://github.com/vueuse/vueuse/tree/HEAD/packages/shared) from 14.4.0 to 15.0.0. - [Release notes](https://github.com/vueuse/vueuse/releases) - [Commits](https://github.com/vueuse/vueuse/commits/v15.0.0/packages/shared) --- updated-dependencies: - dependency-name: "@vueuse/shared" dependency-version: 15.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump dayjs from 1.11.19 to 1.11.23 in /src/static/app Bumps [dayjs](https://github.com/iamkun/dayjs) from 1.11.19 to 1.11.23. - [Release notes](https://github.com/iamkun/dayjs/releases) - [Changelog](https://github.com/iamkun/dayjs/blob/v1.11.23/CHANGELOG.md) - [Commits](https://github.com/iamkun/dayjs/compare/v1.11.19...v1.11.23) --- updated-dependencies: - dependency-name: dayjs dependency-version: 1.11.23 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump cidr-tools from 12.0.2 to 13.0.4 in /src/static/app Bumps [cidr-tools](https://github.com/silverwind/cidr-tools) from 12.0.2 to 13.0.4. - [Release notes](https://github.com/silverwind/cidr-tools/releases) - [Commits](https://github.com/silverwind/cidr-tools/compare/12.0.2...13.0.4) --- updated-dependencies: - dependency-name: cidr-tools dependency-version: 13.0.4 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump pymysql from 1.2.0 to 1.2.3 in /src Bumps [pymysql](https://github.com/PyMySQL/PyMySQL) from 1.2.0 to 1.2.3. - [Release notes](https://github.com/PyMySQL/PyMySQL/releases) - [Changelog](https://github.com/PyMySQL/PyMySQL/blob/main/CHANGELOG.md) - [Commits](https://github.com/PyMySQL/PyMySQL/compare/v1.2.0...v1.2.3) --- updated-dependencies: - dependency-name: pymysql dependency-version: 1.2.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump @vue/language-server in /src/static/app Bumps [@vue/language-server](https://github.com/vuejs/language-tools/tree/HEAD/packages/language-server) from 3.2.7 to 3.3.13. - [Release notes](https://github.com/vuejs/language-tools/releases) - [Changelog](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md) - [Commits](https://github.com/vuejs/language-tools/commits/v3.3.13/packages/language-server) --- updated-dependencies: - dependency-name: "@vue/language-server" dependency-version: 3.3.13 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump dayjs from 1.11.21 to 1.11.23 in /src/static/client Bumps [dayjs](https://github.com/iamkun/dayjs) from 1.11.21 to 1.11.23. - [Release notes](https://github.com/iamkun/dayjs/releases) - [Changelog](https://github.com/iamkun/dayjs/blob/v1.11.23/CHANGELOG.md) - [Commits](https://github.com/iamkun/dayjs/compare/v1.11.21...v1.11.23) --- updated-dependencies: - dependency-name: dayjs dependency-version: 1.11.23 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump @volar/language-server in /src/static/app Bumps [@volar/language-server](https://github.com/volarjs/volar.js/tree/HEAD/packages/language-server) from 2.4.28 to 2.4.30. - [Release notes](https://github.com/volarjs/volar.js/releases) - [Changelog](https://github.com/volarjs/volar.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/volarjs/volar.js/commits/v2.4.30/packages/language-server) --- updated-dependencies: - dependency-name: "@volar/language-server" dependency-version: 2.4.30 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump vue-router from 5.1.0 to 5.4.0 in /src/static/client Bumps [vue-router](https://github.com/vuejs/router) from 5.1.0 to 5.4.0. - [Release notes](https://github.com/vuejs/router/releases) - [Commits](https://github.com/vuejs/router/compare/v5.1.0...v5.4.0) --- updated-dependencies: - dependency-name: vue-router dependency-version: 5.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump axios from 1.18.0 to 1.20.0 in /src/static/client Bumps [axios](https://github.com/axios/axios) from 1.18.0 to 1.20.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.18.0...v1.20.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump ol from 10.9.0 to 10.11.0 in /src/static/app Bumps [ol](https://github.com/openlayers/openlayers) from 10.9.0 to 10.11.0. - [Release notes](https://github.com/openlayers/openlayers/releases) - [Commits](https://github.com/openlayers/openlayers/compare/v10.9.0...v10.11.0) --- updated-dependencies: - dependency-name: ol dependency-version: 10.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps-dev): bump vite from 8.0.16 to 8.3.5 in /src/static/app Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.16 to 8.3.5. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v8.3.5/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 8.3.5 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump uuid from 14.0.0 to 14.0.3 in /src/static/app Bumps [uuid](https://github.com/uuidjs/uuid) from 14.0.0 to 14.0.3. - [Release notes](https://github.com/uuidjs/uuid/releases) - [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md) - [Commits](https://github.com/uuidjs/uuid/compare/v14.0.0...v14.0.3) --- updated-dependencies: - dependency-name: uuid dependency-version: 14.0.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump pinia from 3.0.4 to 4.1.0 in /src/static/app Bumps [pinia](https://github.com/vuejs/pinia) from 3.0.4 to 4.1.0. - [Release notes](https://github.com/vuejs/pinia/releases) - [Commits](https://github.com/vuejs/pinia/compare/v3.0.4...v4.1.0) --- updated-dependencies: - dependency-name: pinia dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump vue-chartjs from 5.3.3 to 5.3.4 in /src/static/app Bumps [vue-chartjs](https://github.com/apertureless/vue-chartjs) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/apertureless/vue-chartjs/releases) - [Changelog](https://github.com/apertureless/vue-chartjs/blob/main/CHANGELOG.md) - [Commits](https://github.com/apertureless/vue-chartjs/compare/v5.3.3...v5.3.4) --- updated-dependencies: - dependency-name: vue-chartjs dependency-version: 5.3.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump bootstrap-icons in /src/static/app Bumps [bootstrap-icons](https://github.com/twbs/icons) from 1.13.1 to 1.13.2. - [Release notes](https://github.com/twbs/icons/releases) - [Commits](https://github.com/twbs/icons/compare/v1.13.1...v1.13.2) --- updated-dependencies: - dependency-name: bootstrap-icons dependency-version: 1.13.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump npm from 11.13.0 to 12.2.1 in /src/static/app Bumps [npm](https://github.com/npm/cli) from 11.13.0 to 12.2.1. - [Release notes](https://github.com/npm/cli/releases) - [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md) - [Commits](https://github.com/npm/cli/compare/v11.13.0...v12.2.1) --- updated-dependencies: - dependency-name: npm dependency-version: 12.2.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump electron-builder in /src/static/app Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 26.7.0 to 26.18.0. - [Release notes](https://github.com/electron-userland/electron-builder/releases) - [Changelog](https://github.com/electron-userland/electron-builder/blob/electron-builder@26.18.0/packages/electron-builder/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-builder/commits/electron-builder@26.18.0/packages/electron-builder) --- updated-dependencies: - dependency-name: electron-builder dependency-version: 26.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * chore: remove arm/v7 due to deprecation * chore: bump some frontend dependencies * chore: attempt to mitigate jose vuln * refactor: rework wgd.sh functions --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
parent
dded6a86df
commit
0018a9b1e2
+5
-5
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
# Pull the current golang-alpine image.
|
# 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.
|
# Install build-dependencies.
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
@@ -30,7 +30,7 @@ RUN go version && \
|
|||||||
# AWG TOOLS BUILDING STAGE
|
# AWG TOOLS BUILDING STAGE
|
||||||
# Base: Alpine
|
# Base: Alpine
|
||||||
#
|
#
|
||||||
FROM alpine:3.24 AS awg-tools
|
FROM alpine:3.24 AS awg-tools-builder
|
||||||
|
|
||||||
# Install needed dependencies.
|
# Install needed dependencies.
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
@@ -121,9 +121,9 @@ RUN apk add --no-cache \
|
|||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
# Copy only the final binaries from the AWG builder stages
|
# 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-go-builder /usr/bin/amneziawg-go /usr/bin/amneziawg-go
|
||||||
COPY --from=awg-tools /workspace/awg-tools/src/wg /usr/bin/awg
|
COPY --from=awg-tools-builder /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-tools-builder /workspace/awg-tools/src/wg-quick/linux.bash /usr/bin/awg-quick
|
||||||
|
|
||||||
# Environment variables
|
# Environment variables
|
||||||
ARG wg_net="10.0.0.1"
|
ARG wg_net="10.0.0.1"
|
||||||
|
|||||||
@@ -13,5 +13,5 @@ sqlalchemy_utils==0.43.0
|
|||||||
psycopg[binary]==3.3.6
|
psycopg[binary]==3.3.6
|
||||||
PyMySQL==1.2.3
|
PyMySQL==1.2.3
|
||||||
tzlocal==5.4.5
|
tzlocal==5.4.5
|
||||||
python-jose==3.5.0
|
python-jose[cryptography]==3.5.0
|
||||||
pydantic==2.14.1
|
pydantic==2.14.1
|
||||||
|
|||||||
Generated
+6
-6
@@ -2555,9 +2555,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/defu": {
|
"node_modules/defu": {
|
||||||
"version": "6.1.4",
|
"version": "6.1.7",
|
||||||
"resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
|
||||||
"integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
|
"integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/delayed-stream": {
|
"node_modules/delayed-stream": {
|
||||||
@@ -3013,9 +3013,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fflate": {
|
"node_modules/fflate": {
|
||||||
"version": "0.8.2",
|
"version": "0.8.3",
|
||||||
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz",
|
||||||
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
|
"integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/filelist": {
|
"node_modules/filelist": {
|
||||||
|
|||||||
Generated
+26
-26
@@ -1242,9 +1242,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/baseline-browser-mapping": {
|
"node_modules/baseline-browser-mapping": {
|
||||||
"version": "2.10.34",
|
"version": "2.11.33",
|
||||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz",
|
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.33.tgz",
|
||||||
"integrity": "sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==",
|
"integrity": "sha512-yiVKDX+qCMRKBE084lXvq9EcwFUhKZ2nU8TK1EQQuOgPNR/lmbGxXOeDdlGUqC2Zz11Cs9rk1d/8NfgBmlkt0w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -1299,9 +1299,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.28.2",
|
"version": "4.29.4",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.4.tgz",
|
||||||
"integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
|
"integrity": "sha512-2TcbbiwXEq+N0kD36tykpCfyyQigUXmuwNQbnPp4Xk4PX9JOqVIKjJlIDjpH7uY6tmRGoAd+apeT1p60T8wsdA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1319,11 +1319,11 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.10.12",
|
"baseline-browser-mapping": "^2.11.29",
|
||||||
"caniuse-lite": "^1.0.30001782",
|
"caniuse-lite": "^1.0.30001816",
|
||||||
"electron-to-chromium": "^1.5.328",
|
"electron-to-chromium": "^1.5.459",
|
||||||
"node-releases": "^2.0.36",
|
"node-releases": "^2.0.59",
|
||||||
"update-browserslist-db": "^1.2.3"
|
"update-browserslist-db": "^1.3.4"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
@@ -1371,9 +1371,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001793",
|
"version": "1.0.30001819",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001819.tgz",
|
||||||
"integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==",
|
"integrity": "sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1581,9 +1581,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.368",
|
"version": "1.5.464",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.464.tgz",
|
||||||
"integrity": "sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==",
|
"integrity": "sha512-nRa65aFge40viPAKxMKULIY8tcXKwKboJWNn4RoKwyWXJ6SP7BnrDGKUTzc64818jIciH0PK7LSF8QzZes19GA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
@@ -1713,9 +1713,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/follow-redirects": {
|
"node_modules/follow-redirects": {
|
||||||
"version": "1.16.0",
|
"version": "1.16.2",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.2.tgz",
|
||||||
"integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
|
"integrity": "sha512-/kVP2U8z596Ia0gwFrwyIeo74ta5aVmSeU1FfAUMAmcEP5EP7zydmag3SLiN64NaRKef3lxsq7i/g7ltJQDGow==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
@@ -2431,9 +2431,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.47",
|
"version": "2.0.60",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.60.tgz",
|
||||||
"integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==",
|
"integrity": "sha512-OmO8+GM1JUZqXET720VrJCwkjUCXmCMQm0Z3UDDRbfNLHS4NEAvY60j5jiFv0tkKw2PNNlqOLhahVmwJIOLDIQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2928,9 +2928,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.2.3",
|
"version": "1.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz",
|
||||||
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
"integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|||||||
+208
-102
@@ -5,12 +5,17 @@
|
|||||||
#trap "kill $TOP_PID"
|
#trap "kill $TOP_PID"
|
||||||
export TOP_PID=$$
|
export TOP_PID=$$
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Configuration
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
app_name="dashboard.py"
|
app_name="dashboard.py"
|
||||||
app_official_name="WGDashboard"
|
app_official_name="WGDashboard"
|
||||||
venv_python="./venv/bin/python3"
|
venv_python="./venv/bin/python3"
|
||||||
venv_gunicorn="./venv/bin/gunicorn"
|
venv_gunicorn="./venv/bin/gunicorn"
|
||||||
pythonExecutable="python3"
|
pythonExecutable="python3"
|
||||||
|
|
||||||
|
frontend_dirs=("./static/app" "./static/client")
|
||||||
|
|
||||||
heavy_checkmark=$(printf "\xE2\x9C\x85")
|
heavy_checkmark=$(printf "\xE2\x9C\x85")
|
||||||
heavy_crossmark=$(printf "\xE2\x9D\x8C")
|
heavy_crossmark=$(printf "\xE2\x9D\x8C")
|
||||||
install=$(printf "\xF0\x9F\x92\xBF")
|
install=$(printf "\xF0\x9F\x92\xBF")
|
||||||
@@ -30,6 +35,10 @@ fi
|
|||||||
dashes='---------------------------------------------------------------------------------'
|
dashes='---------------------------------------------------------------------------------'
|
||||||
equals='============================================================'
|
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 :)"
|
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(){
|
print_header(){
|
||||||
printf "=================================================================================\n"
|
printf "=================================================================================\n"
|
||||||
printf "+ <WGDashboard> by Donald Zou - https://github.com/donaldzou +\n"
|
printf "+ <WGDashboard> by Donald Zou - https://github.com/donaldzou +\n"
|
||||||
@@ -49,6 +58,19 @@ help () {
|
|||||||
printf "=================================================================================\n"
|
printf "=================================================================================\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logSection(){
|
||||||
|
{ printf "\n\n [%s] [%s] \n\n" "$1" "$(date)"; } >> ./log/install.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
_unsupportedOS(){
|
||||||
|
printf "[WGDashboard] %s Sorry, your OS is not supported. Currently the install script only support Debian-based, Red Hat-based OS. With experimental support for Alpine Linux.\n" "$heavy_crossmark"
|
||||||
|
printf "%s\n" "$helpMsg"
|
||||||
|
kill $TOP_PID
|
||||||
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Environment detection
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
_check_and_set_venv(){
|
_check_and_set_venv(){
|
||||||
VIRTUAL_ENV="./venv"
|
VIRTUAL_ENV="./venv"
|
||||||
if [ ! -d $VIRTUAL_ENV ]; then
|
if [ ! -d $VIRTUAL_ENV ]; then
|
||||||
@@ -72,15 +94,16 @@ _determineOS(){
|
|||||||
elif [ -f /etc/redhat-release ]; then
|
elif [ -f /etc/redhat-release ]; then
|
||||||
OS="redhat"
|
OS="redhat"
|
||||||
else
|
else
|
||||||
printf "[WGDashboard] %s Sorry, your OS is not supported. Currently the install script only support Debian-based, Red Hat-based OS. With experimental support for Alpine Linux.\n" "$heavy_crossmark"
|
_unsupportedOS
|
||||||
printf "%s\n" "$helpMsg"
|
|
||||||
kill $TOP_PID
|
|
||||||
fi
|
fi
|
||||||
printf "[WGDashboard] OS: %s\n" "$OS"
|
printf "[WGDashboard] OS: %s\n" "$OS"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Python
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
_installPython(){
|
_installPython(){
|
||||||
{ printf "\n\n [Installing Python] [%s] \n\n""$(date)"; } >> ./log/install.txt
|
_logSection "Installing Python"
|
||||||
printf "[WGDashboard] %s Installing Python\n" "$install"
|
printf "[WGDashboard] %s Installing Python\n" "$install"
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
ubuntu|debian|raspbian)
|
ubuntu|debian|raspbian)
|
||||||
@@ -112,7 +135,7 @@ _installPython(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
_installPythonVenv(){
|
_installPythonVenv(){
|
||||||
{ printf "\n\n [Installing Python Venv] [%s] \n\n""$(date)"; } >> ./log/install.txt
|
_logSection "Installing Python Venv"
|
||||||
printf "[WGDashboard] %s Installing Python Virtual Environment\n" "$install"
|
printf "[WGDashboard] %s Installing Python Virtual Environment\n" "$install"
|
||||||
if [ "$pythonExecutable" = "python3" ]; then
|
if [ "$pythonExecutable" = "python3" ]; then
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
@@ -133,9 +156,7 @@ _installPythonVenv(){
|
|||||||
{ echo "Python Virtual Environment is installed by default from version Python3.3"; printf "\n\n"; } &>> ./log/install.txt # https://wiki.archlinux.org/title/Python/Virtual_environment
|
{ echo "Python Virtual Environment is installed by default from version Python3.3"; printf "\n\n"; } &>> ./log/install.txt # https://wiki.archlinux.org/title/Python/Virtual_environment
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "[WGDashboard] %s Sorry, your OS is not supported. Currently the install script only support Debian-based, Red Hat-based OS. With experimental support for Alpine Linux.\n" "$heavy_crossmark"
|
_unsupportedOS
|
||||||
printf "%s\n" "$helpMsg"
|
|
||||||
kill $TOP_PID
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
@@ -156,7 +177,7 @@ _installPythonVenv(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
_installPythonPip(){
|
_installPythonPip(){
|
||||||
{ printf "\n\n [Installing Python Pip] [%s] \n\n""$(date)"; } >> ./log/install.txt
|
_logSection "Installing Python Pip"
|
||||||
|
|
||||||
if ! $pythonExecutable -m pip -h > /dev/null 2>&1
|
if ! $pythonExecutable -m pip -h > /dev/null 2>&1
|
||||||
then
|
then
|
||||||
@@ -183,9 +204,7 @@ _installPythonPip(){
|
|||||||
{ sudo pacman -Syu python-pip; printf "\n\n"; } &>> ./log/install.txt
|
{ sudo pacman -Syu python-pip; printf "\n\n"; } &>> ./log/install.txt
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "[WGDashboard] %s Sorry, your OS is not supported. Currently the install script only support Debian-based, Red Hat-based OS. With experimental support for Alpine Linux.\n" "$heavy_crossmark"
|
_unsupportedOS
|
||||||
printf "%s\n" "$helpMsg"
|
|
||||||
kill $TOP_PID
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
@@ -200,6 +219,82 @@ _installPythonPip(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_checkPythonVersion(){
|
||||||
|
version_pass=$($pythonExecutable -c 'import sys; print("1") if (sys.version_info.major == 3 and sys.version_info.minor >= 12) else print("0");')
|
||||||
|
version=$($pythonExecutable --version)
|
||||||
|
if [ $version_pass == "1" ]
|
||||||
|
then
|
||||||
|
printf "[WGDashboard] %s Found compatible version of Python. Will be using %s to install WGDashboard.\n" "$heavy_checkmark" "$($pythonExecutable --version)"
|
||||||
|
return;
|
||||||
|
elif python3.12 --version > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
printf "[WGDashboard] %s Found Python 3.12. Will be using [python3.12] to install WGDashboard.\n" "$heavy_checkmark"
|
||||||
|
pythonExecutable="python3.12"
|
||||||
|
else
|
||||||
|
printf "[WGDashboard] %s Could not find a compatible version of Python. Current Python is %s.\n" "$heavy_crossmark" "$version"
|
||||||
|
printf "[WGDashboard] WGDashboard required Python 3.12 or above. Halting install now.\n"
|
||||||
|
kill $TOP_PID
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_determinePypiMirror(){
|
||||||
|
printf "[WGDashboard] %s Pinging list of recommended Python Package Index mirror\n" "$install"
|
||||||
|
urls=(
|
||||||
|
"https://pypi.org/simple/"
|
||||||
|
"https://pypi.tuna.tsinghua.edu.cn/simple/"
|
||||||
|
"https://pypi.mirrors.ustc.edu.cn/simple/"
|
||||||
|
"https://mirrors.aliyun.com/pypi/simple/"
|
||||||
|
"https://pypi.douban.com/simple/"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ping each mirror's hostname once and extract the RTT
|
||||||
|
index=1
|
||||||
|
printf " ---------------------------------------------------------\n"
|
||||||
|
for url in "${urls[@]}"; do
|
||||||
|
hostname=$(echo "$url" | awk -F/ '{print $3}')
|
||||||
|
rtt=$(ping -c 1 -W 1 "$hostname" 2>/dev/null | grep 'time=' | awk -F'time=' '{print $2}' | awk '{print $1}')
|
||||||
|
# Handle cases where the hostname is not reachable
|
||||||
|
if [ -z "$rtt" ]; then
|
||||||
|
rtt="9999"
|
||||||
|
printf " [%i] [FAILED] %s\n" "$index" "$url"
|
||||||
|
else
|
||||||
|
rtt=${rtt//.*/}
|
||||||
|
printf " [%i] %sms %s\n" "$index" "$rtt" "$url"
|
||||||
|
fi
|
||||||
|
rtthost[$index]=$rtt
|
||||||
|
index=$((index+1))
|
||||||
|
done
|
||||||
|
printf " ---------------------------------------------------------\n"
|
||||||
|
for i in "${!rtthost[@]}"; do
|
||||||
|
[[ -z ${rtthost[i]} ]] && continue # Skip unset or empty values
|
||||||
|
if [[ -z $min_val || ${rtthost[i]} -lt $min_val ]]; then
|
||||||
|
min_val=${rtthost[i]}
|
||||||
|
min_idx=$i
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
min_idx=$((min_idx - 1))
|
||||||
|
|
||||||
|
printf " Which mirror you would like to use (Hit enter to use default)\n"
|
||||||
|
printf " Default is %s :" "${urls[$min_idx]}"
|
||||||
|
read -t ${msleep} -r choice
|
||||||
|
printf "\n"
|
||||||
|
|
||||||
|
if [[ -z "$choice" ]]; then
|
||||||
|
choice=$((min_idx + 1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$choice" =~ ^[0-9]+$ ]] && (( choice >= 1 && choice <= ${#urls[@]} )); then
|
||||||
|
selected_url="${urls[choice-1]}"
|
||||||
|
printf "[WGDashboard] %s Will download Python packages from %s\n" "$heavy_checkmark" "$selected_url"
|
||||||
|
else
|
||||||
|
selected_url="${urls[0]}"
|
||||||
|
printf "[WGDashboard] %s Will download Python packages from %s\n" "$heavy_checkmark" "${urls[0]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# WireGuard
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
_checkWireguard(){
|
_checkWireguard(){
|
||||||
if ! command -v wg > /dev/null 2>&1 || ! command -v wg-quick > /dev/null 2>&1
|
if ! command -v wg > /dev/null 2>&1 || ! command -v wg-quick > /dev/null 2>&1
|
||||||
then
|
then
|
||||||
@@ -243,81 +338,100 @@ _checkWireguard(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Frontend (Node.js) - Docker builds the frontend itself, so this is only for
|
||||||
|
# bare-metal installs.
|
||||||
_checkPythonVersion(){
|
#------------------------------------------------------------------------------
|
||||||
version_pass=$($pythonExecutable -c 'import sys; print("1") if (sys.version_info.major == 3 and sys.version_info.minor >= 12) else print("0");')
|
_installNode(){
|
||||||
version=$($pythonExecutable --version)
|
_logSection "Installing Node.js"
|
||||||
if [ $version_pass == "1" ]
|
printf "[WGDashboard] %s Installing Node.js and npm\n" "$install"
|
||||||
then
|
case "$OS" in
|
||||||
printf "[WGDashboard] %s Found compatible version of Python. Will be using %s to install WGDashboard.\n" "$heavy_checkmark" "$($pythonExecutable --version)"
|
ubuntu|debian|raspbian)
|
||||||
return;
|
{ sudo apt update ; sudo apt-get install -y nodejs npm; printf "\n\n"; } &>> ./log/install.txt
|
||||||
elif python3.12 --version > /dev/null 2>&1
|
;;
|
||||||
then
|
centos|fedora|redhat|rhel|almalinux|rocky)
|
||||||
printf "[WGDashboard] %s Found Python 3.12. Will be using [python3.12] to install WGDashboard.\n" "$heavy_checkmark"
|
if command -v dnf &> /dev/null; then
|
||||||
pythonExecutable="python3.12"
|
{ sudo dnf install -y nodejs npm; printf "\n\n"; } &>> ./log/install.txt
|
||||||
else
|
else
|
||||||
printf "[WGDashboard] %s Could not find a compatible version of Python. Current Python is %s.\n" "$heavy_crossmark" "$version"
|
{ sudo yum install -y nodejs npm; printf "\n\n"; } &>> ./log/install.txt
|
||||||
printf "[WGDashboard] WGDashboard required Python 3.12 or above. Halting install now.\n"
|
fi
|
||||||
|
;;
|
||||||
|
alpine)
|
||||||
|
{ sudo apk update; sudo apk add nodejs npm --no-cache; printf "\n\n"; } &>> ./log/install.txt
|
||||||
|
;;
|
||||||
|
arch)
|
||||||
|
{ sudo pacman -Syu nodejs npm; printf "\n\n"; } &>> ./log/install.txt
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_unsupportedOS
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Vite requires Node.js ^20.19.0 || >=22.12.0
|
||||||
|
_isNodeVersionSupported(){
|
||||||
|
local node_version major minor
|
||||||
|
node_version=$(node --version 2>/dev/null | sed 's/^v//')
|
||||||
|
major=${node_version%%.*}
|
||||||
|
minor=${node_version#*.}
|
||||||
|
minor=${minor%%.*}
|
||||||
|
[[ "$major" =~ ^[0-9]+$ && "$minor" =~ ^[0-9]+$ ]] || return 1
|
||||||
|
|
||||||
|
if (( major > 22 )); then return 0; fi
|
||||||
|
if (( major == 22 && minor >= 12 )); then return 0; fi
|
||||||
|
if (( major == 20 && minor >= 19 )); then return 0; fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
_checkNode(){
|
||||||
|
if ! command -v node > /dev/null 2>&1 || ! command -v npm > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
_installNode
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v node > /dev/null 2>&1 || ! command -v npm > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
printf "[WGDashboard] %s Node.js and npm are still not installed, halting script now.\n" "$heavy_crossmark"
|
||||||
|
printf "%s\n" "$helpMsg"
|
||||||
kill $TOP_PID
|
kill $TOP_PID
|
||||||
|
elif ! _isNodeVersionSupported
|
||||||
|
then
|
||||||
|
printf "[WGDashboard] %s Found Node.js %s, but the frontend requires Node.js 20.19+ or 22.12+. Halting install now.\n" "$heavy_crossmark" "$(node --version)"
|
||||||
|
printf "%s\n" "$helpMsg"
|
||||||
|
kill $TOP_PID
|
||||||
|
else
|
||||||
|
printf "[WGDashboard] %s Node.js %s and npm %s are installed\n" "$heavy_checkmark" "$(node --version)" "$(npm --version)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_determinePypiMirror(){
|
_compileFrontend(){
|
||||||
printf "[WGDashboard] %s Pinging list of recommended Python Package Index mirror\n" "$install"
|
_logSection "Compiling Frontend"
|
||||||
urls=(
|
_checkNode
|
||||||
"https://pypi.org/simple/"
|
|
||||||
"https://pypi.tuna.tsinghua.edu.cn/simple/"
|
|
||||||
"https://pypi.mirrors.ustc.edu.cn/simple/"
|
|
||||||
"https://mirrors.aliyun.com/pypi/simple/"
|
|
||||||
"https://pypi.douban.com/simple/"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Function to extract hostname and ping it
|
local dir
|
||||||
index=1
|
for dir in "${frontend_dirs[@]}"; do
|
||||||
printf " ---------------------------------------------------------\n"
|
printf "[WGDashboard] %s Compiling frontend in %s\n" "$install" "$dir"
|
||||||
for url in "${urls[@]}"; do
|
if ! ( cd "$dir" && npm ci && npm run build ) &>> ./log/install.txt
|
||||||
# Extract the hostname from the URL
|
then
|
||||||
hostname=$(echo "$url" | awk -F/ '{print $3}')
|
printf "[WGDashboard] %s Failed to compile frontend in %s, halting script now.\n" "$heavy_crossmark" "$dir"
|
||||||
# Ping the hostname once and extract the RTT
|
printf "%s\n" "$helpMsg"
|
||||||
rtt=$(ping -c 1 -W 1 "$hostname" 2>/dev/null | grep 'time=' | awk -F'time=' '{print $2}' | awk '{print $1}')
|
kill $TOP_PID
|
||||||
# Handle cases where the hostname is not reachable
|
return 1
|
||||||
if [ -z "$rtt" ]; then
|
|
||||||
rtt="9999"
|
|
||||||
printf " [%i] [FAILED] %s\n" "$index" "$url"
|
|
||||||
else
|
|
||||||
rtt=${rtt//.*/}
|
|
||||||
printf " [%i] %sms %s\n" "$index" "$rtt" "$url"
|
|
||||||
fi
|
|
||||||
rtthost[$index]=$rtt
|
|
||||||
index=$((index+1))
|
|
||||||
done
|
|
||||||
printf " ---------------------------------------------------------\n"
|
|
||||||
for i in "${!rtthost[@]}"; do
|
|
||||||
[[ -z ${rtthost[i]} ]] && continue # Skip unset or empty values
|
|
||||||
if [[ -z $min_val || ${rtthost[i]} -lt $min_val ]]; then
|
|
||||||
min_val=${rtthost[i]}
|
|
||||||
min_idx=$i
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
min_idx=$((min_idx - 1))
|
printf "[WGDashboard] %s Frontend is compiled\n" "$heavy_checkmark"
|
||||||
|
}
|
||||||
|
|
||||||
printf " Which mirror you would like to use (Hit enter to use default)\n"
|
#------------------------------------------------------------------------------
|
||||||
printf " Default is %s :" "${urls[$min_idx]}"
|
# Install
|
||||||
read -t ${msleep} -r choice
|
#------------------------------------------------------------------------------
|
||||||
printf "\n"
|
_ensureFolder(){
|
||||||
|
if [ ! -d "$1" ]
|
||||||
if [[ -z "$choice" ]]; then
|
then
|
||||||
choice=$((min_idx + 1))
|
mkdir "$1"
|
||||||
fi
|
printf "[WGDashboard] %s Created ./%s folder\n" "$heavy_checkmark" "$1"
|
||||||
|
|
||||||
if [[ "$choice" =~ ^[0-9]+$ ]] && (( choice >= 1 && choice <= ${#urls[@]} )); then
|
|
||||||
selected_url="${urls[choice-1]}"
|
|
||||||
printf "[WGDashboard] %s Will download Python packages from %s\n" "$heavy_checkmark" "$selected_url"
|
|
||||||
else
|
else
|
||||||
selected_url="${urls[0]}"
|
printf "[WGDashboard] %s Found existing ./%s folder\n" "$heavy_checkmark" "$1"
|
||||||
printf "[WGDashboard] %s Will download Python packages from %s\n" "$heavy_checkmark" "${urls[0]}"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,29 +439,9 @@ install_wgd(){
|
|||||||
printf "[WGDashboard] Starting to install WGDashboard\n"
|
printf "[WGDashboard] Starting to install WGDashboard\n"
|
||||||
_determineOS
|
_determineOS
|
||||||
|
|
||||||
if [ ! -d "log" ]
|
_ensureFolder "log"
|
||||||
then
|
_ensureFolder "download"
|
||||||
mkdir "log"
|
_ensureFolder "db"
|
||||||
printf "[WGDashboard] %s Created ./log folder\n" "$heavy_checkmark"
|
|
||||||
else
|
|
||||||
printf "[WGDashboard] %s Found existing ./log folder\n" "$heavy_checkmark"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "download" ]
|
|
||||||
then
|
|
||||||
mkdir "download"
|
|
||||||
printf "[WGDashboard] %s Created ./download folder\n" "$heavy_checkmark"
|
|
||||||
else
|
|
||||||
printf "[WGDashboard] %s Found existing ./download folder\n" "$heavy_checkmark"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "db" ]
|
|
||||||
then
|
|
||||||
mkdir "db"
|
|
||||||
printf "[WGDashboard] %s Created ./db folder\n" "$heavy_checkmark"
|
|
||||||
else
|
|
||||||
printf "[WGDashboard] %s Found existing ./db folder\n" "$heavy_checkmark"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! python3 --version > /dev/null 2>&1
|
if ! python3 --version > /dev/null 2>&1
|
||||||
then
|
then
|
||||||
@@ -362,6 +456,7 @@ install_wgd(){
|
|||||||
_installPythonVenv
|
_installPythonVenv
|
||||||
_installPythonPip
|
_installPythonPip
|
||||||
_checkWireguard
|
_checkWireguard
|
||||||
|
_compileFrontend
|
||||||
sudo chmod -R 755 /etc/wireguard/
|
sudo chmod -R 755 /etc/wireguard/
|
||||||
|
|
||||||
_check_and_set_venv
|
_check_and_set_venv
|
||||||
@@ -371,7 +466,6 @@ install_wgd(){
|
|||||||
printf "[WGDashboard] %s Installing latest Python dependencies\n" "$install"
|
printf "[WGDashboard] %s Installing latest Python dependencies\n" "$install"
|
||||||
{ date; python3 -m pip install -r requirements.txt -i "$selected_url"; printf "\n\n"; } >> ./log/install.txt #This all works on the default installation.
|
{ date; python3 -m pip install -r requirements.txt -i "$selected_url"; printf "\n\n"; } >> ./log/install.txt #This all works on the default installation.
|
||||||
|
|
||||||
|
|
||||||
if [ ! -f "ssl-tls.ini" ]
|
if [ ! -f "ssl-tls.ini" ]
|
||||||
then
|
then
|
||||||
printf "[SSL/TLS]\ncertificate_path = \nprivate_key_path = \n" >> ssl-tls.ini
|
printf "[SSL/TLS]\ncertificate_path = \nprivate_key_path = \n" >> ssl-tls.ini
|
||||||
@@ -379,10 +473,14 @@ install_wgd(){
|
|||||||
else
|
else
|
||||||
printf "[WGDashboard] %s Found existing ssl-tls.ini\n" "$heavy_checkmark"
|
printf "[WGDashboard] %s Found existing ssl-tls.ini\n" "$heavy_checkmark"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "[WGDashboard] %s WGDashboard installed successfully!\n" "$heavy_checkmark"
|
printf "[WGDashboard] %s WGDashboard installed successfully!\n" "$heavy_checkmark"
|
||||||
printf "[WGDashboard] Enter ./wgd.sh start to start the dashboard\n"
|
printf "[WGDashboard] Enter ./wgd.sh start to start the dashboard\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Status / SSL
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
check_wgd_status(){
|
check_wgd_status(){
|
||||||
if test -f "$PID_FILE"; then
|
if test -f "$PID_FILE"; then
|
||||||
if ps aux | grep -v grep | grep $(cat ./gunicorn.pid) > /dev/null; then
|
if ps aux | grep -v grep | grep $(cat ./gunicorn.pid) > /dev/null; then
|
||||||
@@ -407,6 +505,9 @@ certbot_renew_ssl () {
|
|||||||
certbot renew --work-dir $cb_work_dir --config-dir $cb_config_dir
|
certbot renew --work-dir $cb_work_dir --config-dir $cb_config_dir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Start / Stop
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
gunicorn_start () {
|
gunicorn_start () {
|
||||||
printf "[WGDashboard] Starting WGDashboard with Gunicorn in the background.\n"
|
printf "[WGDashboard] Starting WGDashboard with Gunicorn in the background.\n"
|
||||||
d=$(date '+%Y%m%d%H%M%S')
|
d=$(date '+%Y%m%d%H%M%S')
|
||||||
@@ -462,6 +563,9 @@ start_wgd_debug() {
|
|||||||
sudo "$venv_python" "$app_name"
|
sudo "$venv_python" "$app_name"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Update
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
update_wgd() {
|
update_wgd() {
|
||||||
_determineOS
|
_determineOS
|
||||||
if ! python3 --version > /dev/null 2>&1
|
if ! python3 --version > /dev/null 2>&1
|
||||||
@@ -505,7 +609,9 @@ update_wgd() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Entry point
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
print_header
|
print_header
|
||||||
if [ "$#" -lt 1 ]; then
|
if [ "$#" -lt 1 ]; then
|
||||||
help
|
help
|
||||||
|
|||||||
Reference in New Issue
Block a user