mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-06-28 01:06:58 +00:00
Compare commits
68 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1483ef83d9 | ||
|
dbed799e20 | ||
|
4602b68425 | ||
|
2d3eaedaa7 | ||
|
4d60b21a5f | ||
|
50ee8374ee | ||
|
65eb23e8ce | ||
|
5c76b18ddd | ||
|
fc6f5d2535 | ||
|
6a0348e9dc | ||
|
90e6409b1e | ||
|
96b28a8e9b | ||
|
a818e87e96 | ||
|
dc715758a6 | ||
|
87069329d8 | ||
|
8a380a4545 | ||
|
a5e18cb761 | ||
|
e9da3e7b6a | ||
|
289fa23728 | ||
|
c117ee61d5 | ||
|
7385932e52 | ||
|
cb90b69b3f | ||
|
8d0e31872a | ||
|
881925fd43 | ||
|
3a2f744f0a | ||
|
9dc9e668c5 | ||
|
39477c8de8 | ||
|
1b0bb95e81 | ||
|
cd5a4bec52 | ||
|
43070ab809 | ||
|
532fedbb62 | ||
|
585bf37783 | ||
|
cad364e407 | ||
|
45457c5b38 | ||
|
4e9142b5be | ||
|
207b365d40 | ||
|
1ec95a0d86 | ||
|
db4b9ccc7a | ||
|
a86d0c74d3 | ||
|
354f4e47df | ||
|
84167650b8 | ||
|
15c12a81f1 | ||
|
249ae584c3 | ||
|
b04f7b2d2c | ||
|
630ce459cb | ||
|
a7a30fb282 | ||
|
ab5abe9bcf | ||
|
7834fff541 | ||
|
ef8849e8a9 | ||
|
78bedf9ad6 | ||
|
6ec757ab66 | ||
|
7d71299c51 | ||
|
bea37aee7f | ||
|
5323687ea5 | ||
|
d1372a4c43 | ||
|
c9249a164a | ||
|
6f105f2626 | ||
|
e4c08896f4 | ||
|
e85a0df9b7 | ||
|
a5b7eabd97 | ||
|
f3688431a3 | ||
|
44e714352d | ||
|
60da68c994 | ||
|
11288fac20 | ||
|
fe9d373444 | ||
|
cce31f9b0b | ||
|
ca779ed5ad | ||
|
418c6bd88b |
1
.github/workflows/codeql-analyze.yaml
vendored
1
.github/workflows/codeql-analyze.yaml
vendored
@ -12,6 +12,7 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
|
56
.github/workflows/docker.yaml
vendored
56
.github/workflows/docker.yaml
vendored
@ -1,56 +0,0 @@
|
||||
name: Docker Scan and Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
schedule:
|
||||
- cron: "0 0 * * *" # Daily at midnight UTC
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
trigger-build:
|
||||
description: 'Trigger a manual build and push'
|
||||
default: 'true'
|
||||
|
||||
env:
|
||||
DOCKER_IMAGE: donaldzou/wgdashboard
|
||||
|
||||
jobs:
|
||||
docker_build_analyze:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build and export (multi-arch)
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: ./docker/Dockerfile
|
||||
push: true
|
||||
tags: ${{ env.DOCKER_IMAGE }}:latest
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7 #ARM v6 no longer support by go image.
|
||||
|
||||
- name: Docker Scout
|
||||
id: docker-scout
|
||||
uses: docker/scout-action@v1
|
||||
with:
|
||||
command: cves
|
||||
image: ${{ env.DOCKER_IMAGE }}:latest
|
||||
only-severities: critical,high,medium,low,unspecified
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
105
.github/workflows/docker.yml
vendored
Normal file
105
.github/workflows/docker.yml
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
name: Docker Build and Push
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
tags:
|
||||
- '*'
|
||||
release:
|
||||
types: [ published ]
|
||||
|
||||
env:
|
||||
DOCKERHUB_PREFIX: docker.io
|
||||
GITHUB_CONTAINER_PREFIX: ghcr.io
|
||||
DOCKER_IMAGE: donaldzou/wgdashboard
|
||||
|
||||
jobs:
|
||||
docker_build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.DOCKERHUB_PREFIX }}
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
||||
|
||||
- name: Log in to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.GITHUB_CONTAINER_PREFIX }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
with:
|
||||
platforms: |
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
- linux/arm/v7
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Docker meta by docs https://github.com/docker/metadata-action
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
${{ env.DOCKERHUB_PREFIX }}/${{ env.DOCKER_IMAGE }}
|
||||
${{ env.GITHUB_CONTAINER_PREFIX }}/${{ env.DOCKER_IMAGE }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
|
||||
- name: Build and export (multi-arch)
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: ./docker/Dockerfile
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
docker_scan:
|
||||
if: ${{ github.event_name != 'pull_request' }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: docker_build
|
||||
steps:
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.DOCKERHUB_PREFIX }}
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
||||
|
||||
- name: Docker Scout CVEs
|
||||
uses: docker/scout-action@v1
|
||||
with:
|
||||
command: cves
|
||||
image: ${{ env.GITHUB_CONTAINER_PREFIX }}/${{ env.DOCKER_IMAGE }}:main
|
||||
only-severities: critical,high
|
||||
only-fixed: true
|
||||
write-comment: true
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
exit-code: true
|
||||
|
||||
- name: Docker Scout Compare
|
||||
uses: docker/scout-action@v1
|
||||
with:
|
||||
command: compare
|
||||
# Set to Github for maximum compat
|
||||
image: ${{ env.GITHUB_CONTAINER_PREFIX }}/${{ env.DOCKER_IMAGE }}:main
|
||||
to: ${{ env.GITHUB_CONTAINER_PREFIX }}/${{ env.DOCKER_IMAGE }}:latest
|
||||
only-severities: critical,high
|
||||
ignore-unchanged: true
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
28
.github/workflows/qodana_code_quality.yml
vendored
28
.github/workflows/qodana_code_quality.yml
vendored
@ -1,28 +0,0 @@
|
||||
name: Qodana
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
push:
|
||||
branches: # Specify your branches here
|
||||
- main # The 'main' branch
|
||||
- v4.2-dev
|
||||
|
||||
jobs:
|
||||
qodana:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
checks: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
|
||||
fetch-depth: 0 # a full history is required for pull request analysis
|
||||
- name: 'Qodana Scan'
|
||||
uses: JetBrains/qodana-action@v2024.3
|
||||
with:
|
||||
pr-mode: false
|
||||
env:
|
||||
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_2090978292 }}
|
||||
QODANA_ENDPOINT: 'https://qodana.cloud'
|
26
.github/workflows/stale.yml
vendored
Normal file
26
.github/workflows/stale.yml
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
|
||||
#
|
||||
# You can adjust the behavior by modifying this file.
|
||||
# For more information, see:
|
||||
# https://github.com/actions/stale
|
||||
name: Mark stale issues and pull requests
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '00 08 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
steps:
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-issue-message: 'This issue has not been updated for 20 days'
|
||||
stale-pr-message: 'This pull request has not been updated for 20 days'
|
||||
stale-issue-label: 'stale'
|
||||
exempt-issue-labels: 'enhancement,ongoing'
|
||||
days-before-stale: 20
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,6 +18,7 @@ src/db/wgdashboard.db
|
||||
node_modules/**
|
||||
*/proxy.js
|
||||
src/static/app/proxy.js
|
||||
.secrets
|
||||
|
||||
# Logs
|
||||
logs
|
||||
|
74
README.md
74
README.md
@ -4,27 +4,28 @@
|
||||
> [!NOTE]
|
||||
> **Help Wanted 🎉**: Localizing WGDashboard to other languages! If you're willing to help, please visit https://github.com/donaldzou/WGDashboard/issues/397. Many thanks!
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
<p align="center">
|
||||
<img alt="WGDashboard" src="https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Logos/Logo-2-Rounded-512x512.png" width="128">
|
||||
</p>
|
||||
<h1 align="center">WGDashboard</h1>
|
||||
<h1 align="center">
|
||||
<a href="https://wgdashboard.dev">WGDashboard</a>
|
||||
</h1>
|
||||
<p align="center">
|
||||
<img src="https://forthebadge.com/images/badges/made-with-python.svg">
|
||||
<img src="https://forthebadge.com/images/badges/made-with-javascript.svg">
|
||||
<img src="https://forthebadge.com/images/badges/license-mit.svg">
|
||||
</p>
|
||||
<p align="center">
|
||||
<img src="https://forthebadge.com/images/badges/built-with-love.svg">
|
||||
<img src="https://img.shields.io/badge/Made_With-Python-blue?style=for-the-badge&logo=python&logoColor=ffffff">
|
||||
<img src="https://img.shields.io/badge/Made_With-Vue.js-42b883?style=for-the-badge&logo=vuedotjs&logoColor=ffffff">
|
||||
<img src="https://img.shields.io/badge/License-Apache_License_2.0-D22128?style=for-the-badge&logo=apache&logoColor=ffffff">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/donaldzou/wireguard-dashboard/releases/latest"><img src="https://img.shields.io/github/v/release/donaldzou/wireguard-dashboard"></a>
|
||||
<a href="https://wakatime.com/badge/github/donaldzou/WGDashboard"><img src="https://wakatime.com/badge/github/donaldzou/WGDashboard.svg" alt="wakatime"></a>
|
||||
<a href="https://hitscounter.dev"><img src="https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fdonaldzou%2FWGDashboard&label=Visitor&icon=github&color=%230a58ca"></a>
|
||||
<img src="https://img.shields.io/docker/pulls/donaldzou/wgdashboard?logo=docker&label=Docker%20Image%20Pulls&labelColor=ffffff">
|
||||
<a href="https://github.com/donaldzou/wireguard-dashboard/releases/latest"><img src="https://img.shields.io/github/v/release/donaldzou/wireguard-dashboard?style=for-the-badge"></a>
|
||||
<a href="https://wakatime.com/badge/github/donaldzou/WGDashboard"><img src="https://wakatime.com/badge/github/donaldzou/WGDashboard.svg?style=for-the-badge" alt="wakatime"></a>
|
||||
<a href="https://hitscounter.dev"><img src="https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fdonaldzou%2FWGDashboard&label=Visitor&icon=github&color=%230a58ca&style=for-the-badge"></a>
|
||||
<img src="https://img.shields.io/docker/pulls/donaldzou/wgdashboard?logo=docker&label=Docker%20Image%20Pulls&labelColor=ffffff&style=for-the-badge">
|
||||
</p>
|
||||
<p align="center"><b>This project is supported by</b></p>
|
||||
<p align="center">
|
||||
@ -37,43 +38,40 @@
|
||||
|
||||
<p align="center"><b><i>This project is not affiliate to the official WireGuard Project</i></b></p>
|
||||
|
||||
|
||||
<h3 align="center">Looking for help or want to chat about this project?</h4>
|
||||
<p align="center">
|
||||
Join our Discord Server for quick help, or you wanna chat about this project!
|
||||
You can reach out at
|
||||
</p>
|
||||
<p align="center">
|
||||
<a align="center" href="https://discord.gg/72TwzjeuWm"><img src="https://img.shields.io/discord/1276818723637956628?labelColor=ffffff&style=for-the-badge&logo=discord&label=Discord"></a>
|
||||
<a align="center" href="https://discord.gg/72TwzjeuWm" target="_blank"><img src="https://img.shields.io/discord/1276818723637956628?labelColor=ffffff&style=for-the-badge&logo=discord&label=Discord"></a>
|
||||
<a align="center" href="https://www.reddit.com/r/WGDashboard/" target="_blank"><img src="https://img.shields.io/badge/Reddit-r%2FWGDashboard-FF4500?style=for-the-badge&logo=reddit"></a>
|
||||
<a align="center" href="https://app.element.io/#/room/#wgd:matrix.org" target="_blank"><img src="https://img.shields.io/badge/Matrix_Chatroom-%23WGD-000000?style=for-the-badge&logo=matrix"></a>
|
||||
</p>
|
||||
<h3 align="center">Want to support this project?</h4>
|
||||
<p align="center">
|
||||
You can support via <br>
|
||||
</p>
|
||||
<p align="center">
|
||||
Alternatively, you can also reach out at our Matrix.org Chatroom :)
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://app.element.io/#/room/#wgd:matrix.org">Matrix.org Chatroom</a>
|
||||
<a align="center" href="https://github.com/sponsors/donaldzou" target="_blank"><img src="https://img.shields.io/badge/GitHub%20Sponsor-2e9a40?style=for-the-badge&logo=github"></a>
|
||||
<a align="center" href="https://buymeacoffee.com/donaldzou" target="_blank"><img src="https://img.shields.io/badge/Buy%20me%20a%20coffee-ffdd00?style=for-the-badge&logo=buymeacoffee&logoColor=000000"></a>
|
||||
<a align="center" href="https://patreon.com/c/DonaldDonnyZou/membership" target="_blank"><img src="https://img.shields.io/badge/Patreon-000000?style=for-the-badge&logo=patreon&logoColor=ffffff"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b>or, visit our merch store and support us by purchasing a merch for only $USD 17.00 (Including shipping worldwide & duties)</b>
|
||||
</p>
|
||||
<p align="center">
|
||||
<a align="center" href="https://merch.wgdashboard.dev" target="_blank"><img src="https://img.shields.io/badge/Merch%20from%20WGDashboard-926183?style=for-the-badge"></a>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
<h4 align="center">
|
||||
for more information, visit our
|
||||
</h4>
|
||||
<h1 align="center">
|
||||
<a href="https://wgdashboard.dev">Official Website</a>
|
||||
</h1>
|
||||
|
||||
# [Demo](https://wgd-demo.donaldzou.dev)
|
||||
If you would like to try out WGDashboard, feel free to access the link above. You won't be able to actually connect it with WireGuard since I blocked all Post/Pre script.
|
||||
|
||||
Username: `admin`
|
||||
|
||||
Password: `admin`
|
||||
|
||||
> **Please don't abuse server 🥺, and do not put any personal information on it.** If you can't access it, [please let me know here](https://github.com/donaldzou/WGDashboard/issues/695).
|
||||
|
||||
<hr>
|
||||
|
||||
# [Official Documentation](https://donaldzou.dev/WGDashboard-Documentations)
|
||||
|
||||
- [💡 Features](https://donaldzou.github.io/WGDashboard-Documentation/features.html)
|
||||
- [📝 Requirements](https://donaldzou.github.io/WGDashboard-Documentation/requirements.html)
|
||||
- [🛠 Install](https://donaldzou.github.io/WGDashboard-Documentation/install.html)
|
||||
- [🐬 Docker Solutions](https://github.com/donaldzou/WGDashboard/tree/main/docker)
|
||||
- [🪜 Usage](https://donaldzou.github.io/WGDashboard-Documentation/usage.html)
|
||||
- [📖 API Documentation](https://donaldzou.github.io/WGDashboard-Documentation/api-documentation.html)
|
||||
- [And much more...](https://donaldzou.github.io/WGDashboard-Documentation/)
|
||||
|
||||
# Screenshots
|
||||
|
||||
|
@ -25,7 +25,7 @@ from modules.PeerJob import PeerJob
|
||||
from modules.SystemStatus import SystemStatus
|
||||
SystemStatus = SystemStatus()
|
||||
|
||||
DASHBOARD_VERSION = 'v4.2.3'
|
||||
DASHBOARD_VERSION = 'v4.2.4'
|
||||
|
||||
CONFIGURATION_PATH = os.getenv('CONFIGURATION_PATH', '.')
|
||||
DB_PATH = os.path.join(CONFIGURATION_PATH, 'db')
|
||||
@ -180,6 +180,7 @@ class PeerJobs:
|
||||
|
||||
def runJob(self):
|
||||
needToDelete = []
|
||||
self.__getJobs()
|
||||
for job in self.Jobs:
|
||||
c = WireguardConfigurations.get(job.Configuration)
|
||||
if c is not None:
|
||||
@ -2050,7 +2051,7 @@ def auth_req():
|
||||
else:
|
||||
DashboardConfig.APIAccessed = False
|
||||
whiteList = [
|
||||
'/static/', 'validateAuthentication', 'authenticate', 'getDashboardConfiguration',
|
||||
'/static/', 'validateAuthentication', 'authenticate',
|
||||
'getDashboardTheme', 'getDashboardVersion', 'sharePeer/get', 'isTotpEnabled', 'locale',
|
||||
'/fileDownload'
|
||||
]
|
||||
@ -3114,16 +3115,19 @@ def peerInformationBackgroundThread():
|
||||
time.sleep(10)
|
||||
while True:
|
||||
with app.app_context():
|
||||
for c in WireguardConfigurations.values():
|
||||
if c.getStatus():
|
||||
try:
|
||||
c.getPeersTransfer()
|
||||
c.getPeersLatestHandshake()
|
||||
c.getPeersEndpoint()
|
||||
c.getPeersList()
|
||||
c.getRestrictedPeersList()
|
||||
except Exception as e:
|
||||
print(f"[WGDashboard] Background Thread #1 Error: {str(e)}", flush=True)
|
||||
try:
|
||||
curKeys = list(WireguardConfigurations.keys())
|
||||
for name in curKeys:
|
||||
if name in WireguardConfigurations.keys() and WireguardConfigurations.get(name) is not None:
|
||||
c = WireguardConfigurations.get(name)
|
||||
if c.getStatus():
|
||||
c.getPeersTransfer()
|
||||
c.getPeersLatestHandshake()
|
||||
c.getPeersEndpoint()
|
||||
c.getPeersList()
|
||||
c.getRestrictedPeersList()
|
||||
except Exception as e:
|
||||
print(f"[WGDashboard] Background Thread #1 Error: {str(e)}", flush=True)
|
||||
time.sleep(10)
|
||||
|
||||
def peerJobScheduleBackgroundThread():
|
||||
|
@ -1 +1 @@
|
||||
import{_ as r,c as i,d as o,w as e,k as l,a as t,j as _,i as a,l as d,S as u}from"./index-CTj5x065.js";const m={name:"configuration"},p={class:"mt-md-5 mt-3 text-body"};function f(k,x,h,w,$,v){const n=l("RouterView");return t(),i("div",p,[o(n,null,{default:e(({Component:s,route:c})=>[o(_,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(d(s),{key:c.path}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",f]]);export{B as default};
|
||||
import{_ as r,c as i,d as o,w as e,k as l,a as t,j as _,i as a,l as d,S as u}from"./index-DZliHkQD.js";const m={name:"configuration"},p={class:"mt-md-5 mt-3 text-body"};function f(k,x,h,w,$,v){const n=l("RouterView");return t(),i("div",p,[o(n,null,{default:e(({Component:s,route:c})=>[o(_,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(d(s),{key:c.path}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",f]]);export{B as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
import{P as Ws,Q as Vs,R as Ue,U as Hn,r as Wn,o as Vn,V as Nn,H as jn,X as Xe,Y as $n,Z as Ns}from"./index-CTj5x065.js";/*!
|
||||
import{P as Ws,Q as Vs,R as Ue,U as Hn,r as Wn,o as Vn,V as Nn,H as jn,X as Xe,Y as $n,Z as Ns}from"./index-DZliHkQD.js";/*!
|
||||
* @kurkle/color v0.3.2
|
||||
* https://github.com/kurkle/color#readme
|
||||
* (c) 2023 Jukka Kurkela
|
@ -1 +1 @@
|
||||
import{_ as e,G as t,a as o,c as a,t as c}from"./index-CTj5x065.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return t(this.t)}}};function n(r,p,l,_,i,x){return o(),a("span",null,c(this.getLocaleText),1)}const u=e(s,[["render",n]]);export{u as L};
|
||||
import{_ as e,G as t,a as o,c as a,t as c}from"./index-DZliHkQD.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return t(this.t)}}};function n(r,p,l,_,i,x){return o(),a("span",null,c(this.getLocaleText),1)}const u=e(s,[["render",n]]);export{u as L};
|
@ -1 +1 @@
|
||||
import{L as l}from"./localeText-B4ON0kK9.js";import{d as c}from"./dayjs.min-BoqtvfeE.js";import{_ as h,a as o,c as a,b as e,d as i,w as u,f as p,t as n,j as g,n as f,k as _}from"./index-CTj5x065.js";const x={name:"message",methods:{dayjs:c,hide(){this.ct(),this.message.show=!1},show(){this.timeout=setTimeout(()=>{this.message.show=!1},5e3)},ct(){clearTimeout(this.timeout)}},components:{LocaleText:l},props:{message:Object},mounted(){this.show()},data(){return{dismiss:!1,timeout:null}}},v=["id"],b={key:0,class:"d-flex"},w={class:"fw-bold d-block",style:{"text-transform":"uppercase"}},y={class:"ms-auto"},k={key:1},T={class:"card-body d-flex align-items-center gap-3"};function M(j,s,C,L,t,m){const d=_("LocaleText");return o(),a("div",{onMouseenter:s[1]||(s[1]=r=>{t.dismiss=!0,this.ct()}),onMouseleave:s[2]||(s[2]=r=>{t.dismiss=!1,this.show()}),class:"card shadow rounded-3 position-relative message ms-auto",id:this.message.id},[e("div",{class:f([{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"},"card-header pos"])},[i(g,{name:"zoom",mode:"out-in"},{default:u(()=>[t.dismiss?(o(),a("div",k,[e("small",{onClick:s[0]||(s[0]=r=>m.hide()),class:"d-block mx-auto w-100 text-center",style:{cursor:"pointer"}},[s[3]||(s[3]=e("i",{class:"bi bi-x-lg me-2"},null,-1)),i(d,{t:"Dismiss"})])])):(o(),a("div",b,[e("small",w,[i(d,{t:"FROM "}),p(" "+n(this.message.from),1)]),e("small",y,n(m.dayjs().format("hh:mm A")),1)]))]),_:1})],2),e("div",T,[e("div",null,n(this.message.content),1)])],40,v)}const z=h(x,[["render",M],["__scopeId","data-v-94c76b54"]]);export{z as M};
|
||||
import{L as l}from"./localeText-DG9SnJT8.js";import{d as c}from"./dayjs.min-PaIL06iQ.js";import{_ as h,a as o,c as a,b as e,d as i,w as u,f as p,t as n,j as g,n as f,k as _}from"./index-DZliHkQD.js";const x={name:"message",methods:{dayjs:c,hide(){this.ct(),this.message.show=!1},show(){this.timeout=setTimeout(()=>{this.message.show=!1},5e3)},ct(){clearTimeout(this.timeout)}},components:{LocaleText:l},props:{message:Object},mounted(){this.show()},data(){return{dismiss:!1,timeout:null}}},v=["id"],b={key:0,class:"d-flex"},w={class:"fw-bold d-block",style:{"text-transform":"uppercase"}},y={class:"ms-auto"},k={key:1},T={class:"card-body d-flex align-items-center gap-3"};function M(j,s,C,L,t,m){const d=_("LocaleText");return o(),a("div",{onMouseenter:s[1]||(s[1]=r=>{t.dismiss=!0,this.ct()}),onMouseleave:s[2]||(s[2]=r=>{t.dismiss=!1,this.show()}),class:"card shadow rounded-3 position-relative message ms-auto",id:this.message.id},[e("div",{class:f([{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"},"card-header pos"])},[i(g,{name:"zoom",mode:"out-in"},{default:u(()=>[t.dismiss?(o(),a("div",k,[e("small",{onClick:s[0]||(s[0]=r=>m.hide()),class:"d-block mx-auto w-100 text-center",style:{cursor:"pointer"}},[s[3]||(s[3]=e("i",{class:"bi bi-x-lg me-2"},null,-1)),i(d,{t:"Dismiss"})])])):(o(),a("div",b,[e("small",w,[i(d,{t:"FROM "}),p(" "+n(this.message.from),1)]),e("small",y,n(m.dayjs().format("hh:mm A")),1)]))]),_:1})],2),e("div",T,[e("div",null,n(this.message.content),1)])],40,v)}const z=h(x,[["render",M],["__scopeId","data-v-94c76b54"]]);export{z as M};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{_ as v,D as g,r as o,o as h,J as x,g as y,a as i,c as n,b as s,d as c,n as w,e as C,w as k,j as F}from"./index-CTj5x065.js";import{L as T}from"./localeText-B4ON0kK9.js";import"./browser-CjSdxGTc.js";const M={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},S={class:"container d-flex h-100 w-100"},D={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},P={class:"card rounded-3 shadow w-100"},j={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},B={class:"mb-0"},G={class:"card-body p-4 d-flex flex-column gap-3"},L={style:{height:"300px"},class:"d-flex"},N=["value"],V={key:0,class:"spinner-border m-auto",role:"status"},I={class:"d-flex"},W=["disabled"],$={key:0,class:"d-block"},q={key:1,class:"d-block",id:"check"},z={__name:"peerConfigurationFile",props:{selectedPeer:Object},emits:["close"],setup(u,{emit:p}){const m=p,f=u,r=g(),t=o(!1),l=o(""),a=o(!0);o({error:!1,message:void 0}),h(()=>{const d=x();y("/api/downloadPeer/"+d.params.id,{id:f.selectedPeer.id},e=>{e.status?(l.value=e.data.file,a.value=!1):this.dashboardStore.newMessage("Server",e.message,"danger")})});const b=async()=>{navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(l.value).then(()=>{t.value=!0,setTimeout(()=>{t.value=!1},3e3)}).catch(()=>{r.newMessage("WGDashboard","Failed to copy","danger")}):(document.querySelector("#peerConfigurationFile").select(),document.execCommand("copy")?(t.value=!0,setTimeout(()=>{t.value=!1},3e3)):r.newMessage("WGDashboard","Failed to copy","danger"))};return(d,e)=>(i(),n("div",M,[s("div",S,[s("div",D,[s("div",P,[s("div",j,[s("h4",B,[c(T,{t:"Peer Configuration File"})]),s("button",{type:"button",class:"btn-close ms-auto",onClick:e[0]||(e[0]=_=>m("close"))})]),s("div",G,[s("div",L,[s("textarea",{style:{height:"300px"},class:w(["form-control w-100 rounded-3 animate__fadeIn animate__faster animate__animated",{"d-none":a.value}]),id:"peerConfigurationFile",value:l.value},null,10,N),a.value?(i(),n("div",V,e[2]||(e[2]=[s("span",{class:"visually-hidden"},"Loading...",-1)]))):C("",!0)]),s("div",I,[s("button",{onClick:e[1]||(e[1]=_=>b()),disabled:t.value||a.value,class:"ms-auto btn bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 position-relative"},[c(F,{name:"slide-up",mode:"out-in"},{default:k(()=>[t.value?(i(),n("span",q,e[4]||(e[4]=[s("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(i(),n("span",$,e[3]||(e[3]=[s("i",{class:"bi bi-clipboard-fill"},null,-1)])))]),_:1})],8,W)])])])])])]))}},R=v(z,[["__scopeId","data-v-b0ea2d46"]]);export{R as default};
|
||||
import{_ as v,D as g,r as o,o as h,J as x,g as y,a as i,c as n,b as s,d as c,n as w,e as C,w as k,j as F}from"./index-DZliHkQD.js";import{L as T}from"./localeText-DG9SnJT8.js";import"./browser-CjSdxGTc.js";const M={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},S={class:"container d-flex h-100 w-100"},D={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},P={class:"card rounded-3 shadow w-100"},j={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},B={class:"mb-0"},G={class:"card-body p-4 d-flex flex-column gap-3"},L={style:{height:"300px"},class:"d-flex"},N=["value"],V={key:0,class:"spinner-border m-auto",role:"status"},I={class:"d-flex"},W=["disabled"],$={key:0,class:"d-block"},q={key:1,class:"d-block",id:"check"},z={__name:"peerConfigurationFile",props:{selectedPeer:Object},emits:["close"],setup(u,{emit:p}){const m=p,f=u,r=g(),t=o(!1),l=o(""),a=o(!0);o({error:!1,message:void 0}),h(()=>{const d=x();y("/api/downloadPeer/"+d.params.id,{id:f.selectedPeer.id},e=>{e.status?(l.value=e.data.file,a.value=!1):this.dashboardStore.newMessage("Server",e.message,"danger")})});const b=async()=>{navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(l.value).then(()=>{t.value=!0,setTimeout(()=>{t.value=!1},3e3)}).catch(()=>{r.newMessage("WGDashboard","Failed to copy","danger")}):(document.querySelector("#peerConfigurationFile").select(),document.execCommand("copy")?(t.value=!0,setTimeout(()=>{t.value=!1},3e3)):r.newMessage("WGDashboard","Failed to copy","danger"))};return(d,e)=>(i(),n("div",M,[s("div",S,[s("div",D,[s("div",P,[s("div",j,[s("h4",B,[c(T,{t:"Peer Configuration File"})]),s("button",{type:"button",class:"btn-close ms-auto",onClick:e[0]||(e[0]=_=>m("close"))})]),s("div",G,[s("div",L,[s("textarea",{style:{height:"300px"},class:w(["form-control w-100 rounded-3 animate__fadeIn animate__faster animate__animated",{"d-none":a.value}]),id:"peerConfigurationFile",value:l.value},null,10,N),a.value?(i(),n("div",V,e[2]||(e[2]=[s("span",{class:"visually-hidden"},"Loading...",-1)]))):C("",!0)]),s("div",I,[s("button",{onClick:e[1]||(e[1]=_=>b()),disabled:t.value||a.value,class:"ms-auto btn bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 position-relative"},[c(F,{name:"slide-up",mode:"out-in"},{default:k(()=>[t.value?(i(),n("span",q,e[4]||(e[4]=[s("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(i(),n("span",$,e[3]||(e[3]=[s("i",{class:"bi bi-clipboard-fill"},null,-1)])))]),_:1})],8,W)])])])])])]))}},R=v(z,[["__scopeId","data-v-b0ea2d46"]]);export{R as default};
|
@ -1 +1 @@
|
||||
import{S as p,a as b}from"./schedulePeerJob-CaPFdA59.js";import{_ as h,W as u,z as m,k as i,a as o,c as a,b as e,d as r,w as _,F as v,h as f,i as J,e as x,T as g}from"./index-CTj5x065.js";import{L as w}from"./localeText-B4ON0kK9.js";import"./vue-datepicker-BgItBmc-.js";import"./dayjs.min-BoqtvfeE.js";const P={name:"peerJobs",setup(){return{store:u()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:p,ScheduleDropdown:b},data(){return{}},methods:{deleteJob(d){this.selectedPeer.jobs=this.selectedPeer.jobs.filter(t=>t.JobID!==d.JobID)},addJob(){this.selectedPeer.jobs.unshift(JSON.parse(JSON.stringify({JobID:m().toString(),Configuration:this.selectedPeer.configuration.Name,Peer:this.selectedPeer.id,Field:this.store.PeerScheduleJobs.dropdowns.Field[0].value,Operator:this.store.PeerScheduleJobs.dropdowns.Operator[0].value,Value:"",CreationDate:"",ExpireDate:"",Action:this.store.PeerScheduleJobs.dropdowns.Action[0].value})))}}},S={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},y={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},C={class:"card rounded-3 shadow",style:{width:"700px"}},D={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},k={class:"mb-0 fw-normal"},j={class:"card-body px-4 pb-4 pt-2 position-relative"},T={class:"d-flex align-items-center mb-3"},N={class:"card shadow-sm",key:"none",style:{height:"153px"}},I={class:"card-body text-muted text-center d-flex"},L={class:"m-auto"};function O(d,t,B,F,V,A){const n=i("LocaleText"),l=i("SchedulePeerJob");return o(),a("div",S,[e("div",y,[e("div",$,[e("div",C,[e("div",D,[e("h4",k,[r(n,{t:"Schedule Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",j,[e("div",T,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow",onClick:t[1]||(t[1]=s=>this.addJob())},[t[3]||(t[3]=e("i",{class:"bi bi-plus-lg me-2"},null,-1)),r(n,{t:"Job"})])]),r(g,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:_(()=>[(o(!0),a(v,null,f(this.selectedPeer.jobs,(s,E)=>(o(),J(l,{onRefresh:t[2]||(t[2]=c=>this.$emit("refresh")),onDelete:c=>this.deleteJob(s),dropdowns:this.store.PeerScheduleJobs.dropdowns,key:s.JobID,pjob:s},null,8,["onDelete","dropdowns","pjob"]))),128)),this.selectedPeer.jobs.length===0?(o(),a("div",N,[e("div",I,[e("h6",L,[r(n,{t:"This peer does not have any job yet."})])])])):x("",!0)]),_:1})])])])])])}const q=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{q as default};
|
||||
import{S as p,a as b}from"./schedulePeerJob-Ci8HK7bA.js";import{_ as h,W as u,z as m,k as i,a as o,c as a,b as e,d as r,w as _,F as v,h as f,i as J,e as x,T as g}from"./index-DZliHkQD.js";import{L as w}from"./localeText-DG9SnJT8.js";import"./vue-datepicker-4ltJE5cT.js";import"./dayjs.min-PaIL06iQ.js";const P={name:"peerJobs",setup(){return{store:u()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:p,ScheduleDropdown:b},data(){return{}},methods:{deleteJob(d){this.selectedPeer.jobs=this.selectedPeer.jobs.filter(t=>t.JobID!==d.JobID)},addJob(){this.selectedPeer.jobs.unshift(JSON.parse(JSON.stringify({JobID:m().toString(),Configuration:this.selectedPeer.configuration.Name,Peer:this.selectedPeer.id,Field:this.store.PeerScheduleJobs.dropdowns.Field[0].value,Operator:this.store.PeerScheduleJobs.dropdowns.Operator[0].value,Value:"",CreationDate:"",ExpireDate:"",Action:this.store.PeerScheduleJobs.dropdowns.Action[0].value})))}}},S={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},y={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},C={class:"card rounded-3 shadow",style:{width:"700px"}},D={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},k={class:"mb-0 fw-normal"},j={class:"card-body px-4 pb-4 pt-2 position-relative"},T={class:"d-flex align-items-center mb-3"},N={class:"card shadow-sm",key:"none",style:{height:"153px"}},I={class:"card-body text-muted text-center d-flex"},L={class:"m-auto"};function O(d,t,B,F,V,A){const n=i("LocaleText"),l=i("SchedulePeerJob");return o(),a("div",S,[e("div",y,[e("div",$,[e("div",C,[e("div",D,[e("h4",k,[r(n,{t:"Schedule Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",j,[e("div",T,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow",onClick:t[1]||(t[1]=s=>this.addJob())},[t[3]||(t[3]=e("i",{class:"bi bi-plus-lg me-2"},null,-1)),r(n,{t:"Job"})])]),r(g,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:_(()=>[(o(!0),a(v,null,f(this.selectedPeer.jobs,(s,E)=>(o(),J(l,{onRefresh:t[2]||(t[2]=c=>this.$emit("refresh")),onDelete:c=>this.deleteJob(s),dropdowns:this.store.PeerScheduleJobs.dropdowns,key:s.JobID,pjob:s},null,8,["onDelete","dropdowns","pjob"]))),128)),this.selectedPeer.jobs.length===0?(o(),a("div",N,[e("div",I,[e("h6",L,[r(n,{t:"This peer does not have any job yet."})])])])):x("",!0)]),_:1})])])])])])}const q=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{q as default};
|
@ -1 +1 @@
|
||||
import{S as _}from"./schedulePeerJob-CaPFdA59.js";import{_ as g,W as v,k as c,a as t,c as r,b as e,d as l,F as p,h as b,t as m,e as f,i as y}from"./index-CTj5x065.js";import{L as x}from"./localeText-B4ON0kK9.js";import"./vue-datepicker-BgItBmc-.js";import"./dayjs.min-BoqtvfeE.js";const J={name:"peerJobsAllModal",setup(){return{store:v()}},components:{LocaleText:x,SchedulePeerJob:_},props:{configurationPeers:Array[Object]},computed:{getAllJobs(){return this.configurationPeers.filter(a=>a.jobs.length>0)}}},k={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},w={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},A={class:"card rounded-3 shadow",style:{width:"900px"}},L={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},S={class:"mb-0 fw-normal"},C={class:"card-body px-4 pb-4 pt-2"},P={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},j={class:"accordion-header"},M=["data-bs-target"],B={key:0},N={class:"text-muted"},D=["id"],T={class:"accordion-body"},V={key:1,class:"card shadow-sm",style:{height:"153px"}},F={class:"card-body text-muted text-center d-flex"},O={class:"m-auto"};function W(a,o,E,I,R,q){const n=c("LocaleText"),u=c("SchedulePeerJob");return t(),r("div",k,[e("div",w,[e("div",$,[e("div",A,[e("div",L,[e("h4",S,[l(n,{t:"All Active Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:o[0]||(o[0]=s=>this.$emit("close"))})]),e("div",C,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow mb-2",onClick:o[1]||(o[1]=s=>this.$emit("allLogs"))},[o[4]||(o[4]=e("i",{class:"bi bi-clock me-2"},null,-1)),l(n,{t:"Logs"})]),this.getAllJobs.length>0?(t(),r("div",P,[(t(!0),r(p,null,b(this.getAllJobs,(s,d)=>(t(),r("div",{class:"accordion-item",key:s.id},[e("h2",j,[e("button",{class:"accordion-button collapsed",type:"button","data-bs-toggle":"collapse","data-bs-target":"#collapse_"+d},[e("small",null,[e("strong",null,[s.name?(t(),r("span",B,m(s.name)+" • ",1)):f("",!0),e("samp",N,m(s.id),1)])])],8,M)]),e("div",{id:"collapse_"+d,class:"accordion-collapse collapse","data-bs-parent":"#peerJobsLogsModalAccordion"},[e("div",T,[(t(!0),r(p,null,b(s.jobs,i=>(t(),y(u,{onDelete:o[2]||(o[2]=h=>this.$emit("refresh")),onRefresh:o[3]||(o[3]=h=>this.$emit("refresh")),dropdowns:this.store.PeerScheduleJobs.dropdowns,viewOnly:!0,key:i.JobID,pjob:i},null,8,["dropdowns","pjob"]))),128))])],8,D)]))),128))])):(t(),r("div",V,[e("div",F,[e("span",O,[l(n,{t:"No active job at the moment."})])])]))])])])])])}const U=g(J,[["render",W]]);export{U as default};
|
||||
import{S as _}from"./schedulePeerJob-Ci8HK7bA.js";import{_ as g,W as v,k as c,a as t,c as r,b as e,d as l,F as p,h as b,t as m,e as f,i as y}from"./index-DZliHkQD.js";import{L as x}from"./localeText-DG9SnJT8.js";import"./vue-datepicker-4ltJE5cT.js";import"./dayjs.min-PaIL06iQ.js";const J={name:"peerJobsAllModal",setup(){return{store:v()}},components:{LocaleText:x,SchedulePeerJob:_},props:{configurationPeers:Array[Object]},computed:{getAllJobs(){return this.configurationPeers.filter(a=>a.jobs.length>0)}}},k={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},w={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},A={class:"card rounded-3 shadow",style:{width:"900px"}},L={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},S={class:"mb-0 fw-normal"},C={class:"card-body px-4 pb-4 pt-2"},P={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},j={class:"accordion-header"},M=["data-bs-target"],B={key:0},N={class:"text-muted"},D=["id"],T={class:"accordion-body"},V={key:1,class:"card shadow-sm",style:{height:"153px"}},F={class:"card-body text-muted text-center d-flex"},O={class:"m-auto"};function W(a,o,E,I,R,q){const n=c("LocaleText"),u=c("SchedulePeerJob");return t(),r("div",k,[e("div",w,[e("div",$,[e("div",A,[e("div",L,[e("h4",S,[l(n,{t:"All Active Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:o[0]||(o[0]=s=>this.$emit("close"))})]),e("div",C,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow mb-2",onClick:o[1]||(o[1]=s=>this.$emit("allLogs"))},[o[4]||(o[4]=e("i",{class:"bi bi-clock me-2"},null,-1)),l(n,{t:"Logs"})]),this.getAllJobs.length>0?(t(),r("div",P,[(t(!0),r(p,null,b(this.getAllJobs,(s,d)=>(t(),r("div",{class:"accordion-item",key:s.id},[e("h2",j,[e("button",{class:"accordion-button collapsed",type:"button","data-bs-toggle":"collapse","data-bs-target":"#collapse_"+d},[e("small",null,[e("strong",null,[s.name?(t(),r("span",B,m(s.name)+" • ",1)):f("",!0),e("samp",N,m(s.id),1)])])],8,M)]),e("div",{id:"collapse_"+d,class:"accordion-collapse collapse","data-bs-parent":"#peerJobsLogsModalAccordion"},[e("div",T,[(t(!0),r(p,null,b(s.jobs,i=>(t(),y(u,{onDelete:o[2]||(o[2]=h=>this.$emit("refresh")),onRefresh:o[3]||(o[3]=h=>this.$emit("refresh")),dropdowns:this.store.PeerScheduleJobs.dropdowns,viewOnly:!0,key:i.JobID,pjob:i},null,8,["dropdowns","pjob"]))),128))])],8,D)]))),128))])):(t(),r("div",V,[e("div",F,[e("span",O,[l(n,{t:"No active job at the moment."})])])]))])])])])])}const U=g(J,[["render",W]]);export{U as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/peerQRCode-B62rUhHV.css
vendored
Normal file
1
src/static/app/dist/assets/peerQRCode-B62rUhHV.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
@media screen and (max-width: 768px){#qrcode[data-v-7c287bf3]{width:100%!important;height:auto!important;aspect-ratio:1/1}}
|
@ -1 +0,0 @@
|
||||
@media screen and (max-width: 768px){#qrcode[data-v-5816a147]{width:100%!important;height:auto!important;aspect-ratio:1/1}}
|
@ -1 +0,0 @@
|
||||
import{b as i}from"./browser-CjSdxGTc.js";import{L as c}from"./localeText-B4ON0kK9.js";import{_ as l,D as p,g as _,k as m,a as n,c as r,b as e,d as u,n as h,e as f}from"./index-CTj5x065.js";const g={name:"peerQRCode",components:{LocaleText:c},props:{selectedPeer:Object},setup(){return{dashboardStore:p()}},data(){return{loading:!0}},mounted(){_("/api/downloadPeer/"+this.$route.params.id,{id:this.selectedPeer.id},o=>{if(this.loading=!1,o.status){let t="";if(this.selectedPeer.configuration.Protocol==="awg"){let a={containers:[{awg:{isThirdPartyConfig:!0,last_config:o.data.file,port:this.selectedPeer.configuration.ListenPort,transport_proto:"udp"},container:"amnezia-awg"}],defaultContainer:"amnezia-awg",description:this.selectedPeer.name,hostName:this.dashboardStore.Configuration.Peers.remote_endpoint};t=JSON.stringify(a)}else t=o.data.file;i.toCanvas(document.querySelector("#qrcode"),t,a=>{a&&console.error(a)})}else this.dashboardStore.newMessage("Server",o.message,"danger")})}},b={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},v={class:"container d-flex h-100 w-100"},C={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},w={class:"card rounded-3 shadow"},P={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},x={class:"mb-0"},S={class:"card-body p-4"},y={class:"d-flex"},L={key:0,class:"spinner-border m-auto",role:"status"};function k(o,t,a,N,s,$){const d=m("LocaleText");return n(),r("div",b,[e("div",v,[e("div",C,[e("div",w,[e("div",P,[e("h4",x,[u(d,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=Q=>this.$emit("close"))})]),e("div",S,[e("div",y,[e("canvas",{id:"qrcode",class:h(["rounded-3 shadow animate__animated animate__fadeIn animate__faster",{"d-none":s.loading}])},null,2),s.loading?(n(),r("div",L,t[1]||(t[1]=[e("span",{class:"visually-hidden"},"Loading...",-1)]))):f("",!0)])])])])])])}const q=l(g,[["render",k],["__scopeId","data-v-5816a147"]]);export{q as default};
|
1
src/static/app/dist/assets/peerQRCode-Dxvodnam.js
vendored
Normal file
1
src/static/app/dist/assets/peerQRCode-Dxvodnam.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{b as i}from"./browser-CjSdxGTc.js";import{L as c}from"./localeText-DG9SnJT8.js";import{_ as l,D as p,g as _,k as m,a as n,c as r,b as e,d as u,n as h,e as f}from"./index-DZliHkQD.js";const g={name:"peerQRCode",components:{LocaleText:c},props:{selectedPeer:Object},setup(){return{dashboardStore:p()}},data(){return{loading:!0}},mounted(){_("/api/downloadPeer/"+this.$route.params.id,{id:this.selectedPeer.id},o=>{if(this.loading=!1,o.status){let t="";if(this.selectedPeer.configuration.Protocol==="awg"){let a={containers:[{awg:{isThirdPartyConfig:!0,last_config:o.data.file,port:this.selectedPeer.configuration.ListenPort,transport_proto:"udp"},container:"amnezia-awg"}],defaultContainer:"amnezia-awg",description:this.selectedPeer.name,hostName:this.dashboardStore.Configuration.Peers.remote_endpoint};t=btoa(JSON.stringify(a))}else t=o.data.file;i.toCanvas(document.querySelector("#qrcode"),t,a=>{a&&console.error(a)})}else this.dashboardStore.newMessage("Server",o.message,"danger")})}},b={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},v={class:"container d-flex h-100 w-100"},C={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},w={class:"card rounded-3 shadow"},P={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},x={class:"mb-0"},S={class:"card-body p-4"},y={class:"d-flex"},L={key:0,class:"spinner-border m-auto",role:"status"};function k(o,t,a,N,s,$){const d=m("LocaleText");return n(),r("div",b,[e("div",v,[e("div",C,[e("div",w,[e("div",P,[e("h4",x,[u(d,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=Q=>this.$emit("close"))})]),e("div",S,[e("div",y,[e("canvas",{id:"qrcode",class:h(["rounded-3 shadow animate__animated animate__fadeIn animate__faster",{"d-none":s.loading}])},null,2),s.loading?(n(),r("div",L,t[1]||(t[1]=[e("span",{class:"visually-hidden"},"Loading...",-1)]))):f("",!0)])])])])])])}const q=l(g,[["render",k],["__scopeId","data-v-7c287bf3"]]);export{q as default};
|
@ -1 +1 @@
|
||||
import{_ as u,q as m,G as p,r as b,W as f,a2 as h,o as g,a as v,i as y,w as _,b as e,m as x,y as w,d as S,j as B}from"./index-CTj5x065.js";import{L as T}from"./localeText-B4ON0kK9.js";const C={class:"fixed-bottom w-100 bottom-0 z-2",style:{"z-index":"1"}},P={class:"container-fluid"},k={class:"row g-0"},L={class:"col-md-9 col-lg-10 d-flex justify-content-center py-2"},V={class:"rounded-3 p-2 border shadow searchPeersContainer bg-body-tertiary"},j={class:"d-flex gap-1 align-items-center px-2"},z=["placeholder"],D={__name:"peerSearchBar",emits:["close"],setup(G,{emit:n}){const l=m(()=>p("Search Peers..."));let t;const o=b(""),r=f(),i=()=>{t?(clearTimeout(t),t=setTimeout(()=>{r.searchString=o.value},300)):t=setTimeout(()=>{r.searchString=o.value},300)},d=n,c=h("searchBar");return g(()=>{c.value.focus()}),(M,s)=>(v(),y(B,{name:"slideUp",appear:"",type:"animation",style:{"animation-delay":"1s"}},{default:_(()=>[e("div",C,[e("div",P,[e("div",k,[s[5]||(s[5]=e("div",{class:"col-md-3 col-lg-2"},null,-1)),e("div",L,[e("div",V,[e("div",j,[s[4]||(s[4]=e("h6",{class:"mb-0 me-2"},[e("label",{for:"searchPeers"},[e("i",{class:"bi bi-search"})])],-1)),x(e("input",{ref:"searchBar",class:"flex-grow-1 form-control rounded-3 bg-secondary-subtle border-1 border-secondary-subtle",placeholder:l.value,id:"searchPeers",onKeyup:s[0]||(s[0]=a=>i()),"onUpdate:modelValue":s[1]||(s[1]=a=>o.value=a)},null,40,z),[[w,o.value]]),e("button",{onClick:s[2]||(s[2]=a=>d("close")),style:{"white-space":"nowrap"},class:"btn bg-secondary-subtle text-secondary-emphasis border-secondary-subtle rounded-3 d-flex align-items-center"},[e("span",null,[s[3]||(s[3]=e("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),S(T,{t:"Done"})])])])])])])])])]),_:1}))}},W=u(D,[["__scopeId","data-v-b741afe7"]]);export{W as default};
|
||||
import{_ as u,q as m,G as p,r as b,W as f,a2 as h,o as g,a as v,i as y,w as _,b as e,m as x,y as w,d as S,j as B}from"./index-DZliHkQD.js";import{L as T}from"./localeText-DG9SnJT8.js";const C={class:"fixed-bottom w-100 bottom-0 z-2",style:{"z-index":"1"}},P={class:"container-fluid"},k={class:"row g-0"},L={class:"col-md-9 col-lg-10 d-flex justify-content-center py-2"},V={class:"rounded-3 p-2 border shadow searchPeersContainer bg-body-tertiary"},j={class:"d-flex gap-1 align-items-center px-2"},z=["placeholder"],D={__name:"peerSearchBar",emits:["close"],setup(G,{emit:n}){const l=m(()=>p("Search Peers..."));let t;const o=b(""),r=f(),i=()=>{t?(clearTimeout(t),t=setTimeout(()=>{r.searchString=o.value},300)):t=setTimeout(()=>{r.searchString=o.value},300)},d=n,c=h("searchBar");return g(()=>{c.value.focus()}),(M,s)=>(v(),y(B,{name:"slideUp",appear:"",type:"animation",style:{"animation-delay":"1s"}},{default:_(()=>[e("div",C,[e("div",P,[e("div",k,[s[5]||(s[5]=e("div",{class:"col-md-3 col-lg-2"},null,-1)),e("div",L,[e("div",V,[e("div",j,[s[4]||(s[4]=e("h6",{class:"mb-0 me-2"},[e("label",{for:"searchPeers"},[e("i",{class:"bi bi-search"})])],-1)),x(e("input",{ref:"searchBar",class:"flex-grow-1 form-control rounded-3 bg-secondary-subtle border-1 border-secondary-subtle",placeholder:l.value,id:"searchPeers",onKeyup:s[0]||(s[0]=a=>i()),"onUpdate:modelValue":s[1]||(s[1]=a=>o.value=a)},null,40,z),[[w,o.value]]),e("button",{onClick:s[2]||(s[2]=a=>d("close")),style:{"white-space":"nowrap"},class:"btn bg-secondary-subtle text-secondary-emphasis border-secondary-subtle rounded-3 d-flex align-items-center"},[e("span",null,[s[3]||(s[3]=e("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),S(T,{t:"Done"})])])])])])])])])]),_:1}))}},W=u(D,[["__scopeId","data-v-b741afe7"]]);export{W as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{L as r}from"./localeText-B4ON0kK9.js";import{a as t,c as n,f as i,i as s,e as a}from"./index-CTj5x065.js";const d={key:0,class:"badge wireguardBg rounded-3 shadow"},c={key:1,class:"badge amneziawgBg rounded-3 shadow"},u={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(e){return(m,o)=>e.protocol==="wg"?(t(),n("span",d,[o[0]||(o[0]=i(" WireGuard ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):e.protocol==="awg"?(t(),n("span",c,[o[1]||(o[1]=i(" AmneziaWG ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):a("",!0)}};export{u as _};
|
||||
import{L as r}from"./localeText-DG9SnJT8.js";import{a as t,c as n,f as i,i as s,e as a}from"./index-DZliHkQD.js";const d={key:0,class:"badge wireguardBg rounded-3 shadow"},c={key:1,class:"badge amneziawgBg rounded-3 shadow"},u={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(e){return(m,o)=>e.protocol==="wg"?(t(),n("span",d,[o[0]||(o[0]=i(" WireGuard ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):e.protocol==="awg"?(t(),n("span",c,[o[1]||(o[1]=i(" AmneziaWG ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):a("",!0)}};export{u as _};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{_ as u,D as m,A as p,c as r,b as e,d as o,f as c,t as h,e as f,m as l,y as d,a as i,k as w}from"./index-CTj5x065.js";import{L as g}from"./localeText-B4ON0kK9.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:m()}},data(){return{setup:{username:"",newPassword:"",repeatNewPassword:"",enable_totp:!0},loading:!1,errorMessage:"",done:!1}},computed:{goodToSubmit(){return this.setup.username&&this.setup.newPassword.length>=8&&this.setup.repeatNewPassword.length>=8&&this.setup.newPassword===this.setup.repeatNewPassword}},methods:{submit(){this.loading=!0,p("/api/Welcome_Finish",this.setup,n=>{n.status?(this.done=!0,this.$router.push("/2FASetup")):(document.querySelectorAll("#createAccount input").forEach(s=>s.classList.add("is-invalid")),this.errorMessage=n.message,document.querySelector(".login-container-fluid").scrollTo({top:0,left:0,behavior:"smooth"})),this.loading=!1})}}},_=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},v={class:"dashboardLogo display-4"},y={class:"mb-5"},P={key:0,class:"alert alert-danger"},N={class:"d-flex flex-column gap-3"},k={id:"createAccount",class:"d-flex flex-column gap-2"},S={class:"form-group text-body"},T={for:"username",class:"mb-1 text-muted"},C={class:"form-group text-body"},L={for:"password",class:"mb-1 text-muted"},V={class:"form-group text-body"},A={for:"confirmPassword",class:"mb-1 text-muted"},$=["disabled"],q={key:0,class:"d-flex align-items-center w-100"},M={key:1,class:"d-flex align-items-center w-100"};function B(n,s,D,E,U,F){const t=w("LocaleText");return i(),r("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[e("div",x,[e("span",v,[o(t,{t:"Nice to meet you!"})]),e("p",y,[o(t,{t:"Please fill in the following fields to finish setup"}),s[4]||(s[4]=c(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):f("",!0),e("div",N,[e("form",k,[e("div",S,[e("label",T,[e("small",null,[o(t,{t:"Enter an username you like"})])]),l(e("input",{type:"text",autocomplete:"username","onUpdate:modelValue":s[0]||(s[0]=a=>this.setup.username=a),class:"form-control",id:"username",name:"username",required:""},null,512),[[d,this.setup.username]])]),e("div",C,[e("label",L,[e("small",null,[o(t,{t:"Enter a password"}),e("code",null,[o(t,{t:"(At least 8 characters and make sure is strong enough!)"})])])]),l(e("input",{type:"password",autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.setup.newPassword=a),class:"form-control",id:"password",name:"password",required:""},null,512),[[d,this.setup.newPassword]])]),e("div",V,[e("label",A,[e("small",null,[o(t,{t:"Confirm password"})])]),l(e("input",{type:"password",autocomplete:"confirm-new-password","onUpdate:modelValue":s[2]||(s[2]=a=>this.setup.repeatNewPassword=a),class:"form-control",id:"confirmPassword",name:"confirmPassword",required:""},null,512),[[d,this.setup.repeatNewPassword]])])]),e("button",{class:"btn btn-dark btn-lg mb-5 d-flex btn-brand shadow align-items-center",ref:"signInBtn",disabled:!this.goodToSubmit||this.loading||this.done,onClick:s[3]||(s[3]=a=>this.submit())},[!this.loading&&!this.done?(i(),r("span",q,[o(t,{t:"Next"}),s[5]||(s[5]=e("i",{class:"bi bi-chevron-right ms-auto"},null,-1))])):(i(),r("span",M,[o(t,{t:"Saving..."}),s[6]||(s[6]=e("span",{class:"spinner-border ms-auto spinner-border-sm",role:"status"},[e("span",{class:"visually-hidden"},"Loading...")],-1))]))],8,$)])])])],8,_)}const j=u(b,[["render",B]]);export{j as default};
|
||||
import{_ as u,D as m,A as p,c as r,b as e,d as o,f as c,t as h,e as f,m as l,y as d,a as i,k as w}from"./index-DZliHkQD.js";import{L as g}from"./localeText-DG9SnJT8.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:m()}},data(){return{setup:{username:"",newPassword:"",repeatNewPassword:"",enable_totp:!0},loading:!1,errorMessage:"",done:!1}},computed:{goodToSubmit(){return this.setup.username&&this.setup.newPassword.length>=8&&this.setup.repeatNewPassword.length>=8&&this.setup.newPassword===this.setup.repeatNewPassword}},methods:{submit(){this.loading=!0,p("/api/Welcome_Finish",this.setup,n=>{n.status?(this.done=!0,this.$router.push("/2FASetup")):(document.querySelectorAll("#createAccount input").forEach(s=>s.classList.add("is-invalid")),this.errorMessage=n.message,document.querySelector(".login-container-fluid").scrollTo({top:0,left:0,behavior:"smooth"})),this.loading=!1})}}},_=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},v={class:"dashboardLogo display-4"},y={class:"mb-5"},P={key:0,class:"alert alert-danger"},N={class:"d-flex flex-column gap-3"},k={id:"createAccount",class:"d-flex flex-column gap-2"},S={class:"form-group text-body"},T={for:"username",class:"mb-1 text-muted"},C={class:"form-group text-body"},L={for:"password",class:"mb-1 text-muted"},V={class:"form-group text-body"},A={for:"confirmPassword",class:"mb-1 text-muted"},$=["disabled"],q={key:0,class:"d-flex align-items-center w-100"},M={key:1,class:"d-flex align-items-center w-100"};function B(n,s,D,E,U,F){const t=w("LocaleText");return i(),r("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[e("div",x,[e("span",v,[o(t,{t:"Nice to meet you!"})]),e("p",y,[o(t,{t:"Please fill in the following fields to finish setup"}),s[4]||(s[4]=c(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):f("",!0),e("div",N,[e("form",k,[e("div",S,[e("label",T,[e("small",null,[o(t,{t:"Enter an username you like"})])]),l(e("input",{type:"text",autocomplete:"username","onUpdate:modelValue":s[0]||(s[0]=a=>this.setup.username=a),class:"form-control",id:"username",name:"username",required:""},null,512),[[d,this.setup.username]])]),e("div",C,[e("label",L,[e("small",null,[o(t,{t:"Enter a password"}),e("code",null,[o(t,{t:"(At least 8 characters and make sure is strong enough!)"})])])]),l(e("input",{type:"password",autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.setup.newPassword=a),class:"form-control",id:"password",name:"password",required:""},null,512),[[d,this.setup.newPassword]])]),e("div",V,[e("label",A,[e("small",null,[o(t,{t:"Confirm password"})])]),l(e("input",{type:"password",autocomplete:"confirm-new-password","onUpdate:modelValue":s[2]||(s[2]=a=>this.setup.repeatNewPassword=a),class:"form-control",id:"confirmPassword",name:"confirmPassword",required:""},null,512),[[d,this.setup.repeatNewPassword]])])]),e("button",{class:"btn btn-dark btn-lg mb-5 d-flex btn-brand shadow align-items-center",ref:"signInBtn",disabled:!this.goodToSubmit||this.loading||this.done,onClick:s[3]||(s[3]=a=>this.submit())},[!this.loading&&!this.done?(i(),r("span",q,[o(t,{t:"Next"}),s[5]||(s[5]=e("i",{class:"bi bi-chevron-right ms-auto"},null,-1))])):(i(),r("span",M,[o(t,{t:"Saving..."}),s[6]||(s[6]=e("span",{class:"spinner-border ms-auto spinner-border-sm",role:"status"},[e("span",{class:"visually-hidden"},"Loading...")],-1))]))],8,$)])])])],8,_)}const j=u(b,[["render",B]]);export{j as default};
|
@ -1 +1 @@
|
||||
import{_,r,D as p,g as u,c as m,b as t,d as c,J as h,a as f,k as b}from"./index-CTj5x065.js";import{b as v}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-B4ON0kK9.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=h(),e=r(!1),i=p(),n=r(""),s=r(void 0),l=r(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(s.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(s.value=d.data,l.value=new Blob([s.value.file],{type:"text/plain"})):s.value=void 0,e.value=!0}),{store:i,theme:n,peerConfiguration:s,blob:l}},mounted(){this.peerConfiguration&&v.toCanvas(document.querySelector("#qrcode"),this.peerConfiguration.file,o=>{o&&console.error(o)})},methods:{download(){const o=new Blob([this.peerConfiguration.file],{type:"text/plain"}),e=URL.createObjectURL(o),i=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=i,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},w=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},C={key:0,class:"text-center position-relative",style:{}},U={class:"position-absolute w-100 h-100 top-0 start-0 d-flex animate__animated animate__fadeInUp",style:{"animation-delay":"0.1s"}},I={class:"m-auto"},L={key:1,class:"d-flex align-items-center flex-column gap-3"},k={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},B={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},D={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},R=["download","href"];function q(o,e,i,n,s,l){const a=b("LocaleText");return f(),m("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.theme},[t("div",x,[this.peerConfiguration?(f(),m("div",L,[t("div",k,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),c(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",B,null,512),t("p",D,[c(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),c(a,{t:" file"})]),t("a",{download:this.peerConfiguration.fileName+".conf",href:l.getBlob,class:"btn btn-lg bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle animate__animated animate__fadeInUp shadow-sm",style:{"animation-delay":"0.25s"}},e[3]||(e[3]=[t("i",{class:"bi bi-download"},null,-1)]),8,R)])):(f(),m("div",C,[e[0]||(e[0]=t("div",{class:"animate__animated animate__fadeInUp"},[t("h1",{style:{"font-size":"20rem",filter:"blur(1rem)","animation-duration":"7s"},class:"animate__animated animate__flash animate__infinite"},[t("i",{class:"bi bi-file-binary"})])],-1)),t("div",U,[t("h3",I,[c(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,w)}const N=_(g,[["render",q],["__scopeId","data-v-1b44aacd"]]);export{N as default};
|
||||
import{_,r,D as p,g as u,c as m,b as t,d as c,J as h,a as f,k as b}from"./index-DZliHkQD.js";import{b as v}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-DG9SnJT8.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=h(),e=r(!1),i=p(),n=r(""),s=r(void 0),l=r(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(s.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(s.value=d.data,l.value=new Blob([s.value.file],{type:"text/plain"})):s.value=void 0,e.value=!0}),{store:i,theme:n,peerConfiguration:s,blob:l}},mounted(){this.peerConfiguration&&v.toCanvas(document.querySelector("#qrcode"),this.peerConfiguration.file,o=>{o&&console.error(o)})},methods:{download(){const o=new Blob([this.peerConfiguration.file],{type:"text/plain"}),e=URL.createObjectURL(o),i=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=i,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},w=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},C={key:0,class:"text-center position-relative",style:{}},U={class:"position-absolute w-100 h-100 top-0 start-0 d-flex animate__animated animate__fadeInUp",style:{"animation-delay":"0.1s"}},I={class:"m-auto"},L={key:1,class:"d-flex align-items-center flex-column gap-3"},k={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},B={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},D={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},R=["download","href"];function q(o,e,i,n,s,l){const a=b("LocaleText");return f(),m("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.theme},[t("div",x,[this.peerConfiguration?(f(),m("div",L,[t("div",k,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),c(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",B,null,512),t("p",D,[c(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),c(a,{t:" file"})]),t("a",{download:this.peerConfiguration.fileName+".conf",href:l.getBlob,class:"btn btn-lg bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle animate__animated animate__fadeInUp shadow-sm",style:{"animation-delay":"0.25s"}},e[3]||(e[3]=[t("i",{class:"bi bi-download"},null,-1)]),8,R)])):(f(),m("div",C,[e[0]||(e[0]=t("div",{class:"animate__animated animate__fadeInUp"},[t("h1",{style:{"font-size":"20rem",filter:"blur(1rem)","animation-duration":"7s"},class:"animate__animated animate__flash animate__infinite"},[t("i",{class:"bi bi-file-binary"})])],-1)),t("div",U,[t("h3",I,[c(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,w)}const N=_(g,[["render",q],["__scopeId","data-v-1b44aacd"]]);export{N as default};
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{_ as b,p as m,r as p,q as v,a as t,c as r,d as g,w as x,s as n,n as f,b as l,t as d,e as C,j as w}from"./index-CTj5x065.js";const y={class:"text-muted me-2"},_={class:"fw-bold"},k={__name:"cpuCore",props:{core_number:Number,percentage:Number,align:Boolean,square:Boolean},setup(e){m(c=>({"2ec4d3bc":o.value}));const u=e,s=p(!1),o=v(()=>u.square?"40px":"25px");return(c,a)=>(t(),r("div",{class:"flex-grow-1 square rounded-3 border position-relative p-2",onMouseenter:a[0]||(a[0]=i=>s.value=!0),onMouseleave:a[1]||(a[1]=i=>s.value=!1),style:n({"background-color":`rgb(13 110 253 / ${e.percentage*10}%)`})},[g(w,{name:"zoomReversed"},{default:x(()=>[s.value?(t(),r("div",{key:0,style:n([{"white-space":"nowrap"},{top:o.value}]),class:f(["floatingLabel z-3 border position-absolute d-block p-1 px-2 bg-body text-body rounded-3 border shadow d-flex",[e.align?"end-0":"start-0"]])},[l("small",y," Core #"+d(e.core_number+1),1),l("small",_,d(e.percentage)+"% ",1)],6)):C("",!0)]),_:1})],36))}},B=b(k,[["__scopeId","data-v-2ad535bb"]]);export{B as C};
|
||||
import{_ as b,p as m,r as p,q as v,a as t,c as r,d as g,w as x,s as n,n as f,b as l,t as d,e as C,j as w}from"./index-DZliHkQD.js";const y={class:"text-muted me-2"},_={class:"fw-bold"},k={__name:"cpuCore",props:{core_number:Number,percentage:Number,align:Boolean,square:Boolean},setup(e){m(c=>({"2ec4d3bc":o.value}));const u=e,s=p(!1),o=v(()=>u.square?"40px":"25px");return(c,a)=>(t(),r("div",{class:"flex-grow-1 square rounded-3 border position-relative p-2",onMouseenter:a[0]||(a[0]=i=>s.value=!0),onMouseleave:a[1]||(a[1]=i=>s.value=!1),style:n({"background-color":`rgb(13 110 253 / ${e.percentage*10}%)`})},[g(w,{name:"zoomReversed"},{default:x(()=>[s.value?(t(),r("div",{key:0,style:n([{"white-space":"nowrap"},{top:o.value}]),class:f(["floatingLabel z-3 border position-absolute d-block p-1 px-2 bg-body text-body rounded-3 border shadow d-flex",[e.align?"end-0":"start-0"]])},[l("small",y," Core #"+d(e.core_number+1),1),l("small",_,d(e.percentage)+"% ",1)],6)):C("",!0)]),_:1})],36))}},B=b(k,[["__scopeId","data-v-2ad535bb"]]);export{B as C};
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{_ as h,D as m,g as p,A as f,c as b,b as t,d as i,t as _,m as v,y as g,i as d,w as r,k as c,a as n}from"./index-CTj5x065.js";import{b as x}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-B4ON0kK9.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=m();let e="";return await p("/api/Welcome_GetTotpLink",{},a=>{a.status&&(e=a.data)}),{l:e,store:s}},mounted(){this.l&&x.toCanvas(document.getElementById("qrcode"),this.l,function(s){})},data(){return{totp:"",totpInvalidMessage:"",verified:!1}},methods:{validateTotp(){}},watch:{totp(s){const e=document.querySelector("#totp");e.classList.remove("is-invalid","is-valid"),s.length===6&&(console.log(s),/[0-9]{6}/.test(s)?f("/api/Welcome_VerifyTotpLink",{totp:s},a=>{a.status?(this.verified=!0,e.classList.add("is-valid"),this.$emit("verified")):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP does not match.")}):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP can only contain numbers"))}}},k=["data-bs-theme"],w={class:"m-auto text-body",style:{width:"500px"}},L={class:"d-flex flex-column"},M={class:"dashboardLogo display-4"},C={class:"mb-2"},P={class:"text-muted"},I={class:"p-3 bg-body-secondary rounded-3 border mb-3"},O={class:"text-muted mb-0"},B=["href"],$={style:{"line-break":"anywhere"}},A={for:"totp",class:"mb-2"},D={class:"text-muted"},S={class:"form-group mb-2"},q=["disabled"],E={class:"invalid-feedback"},F={class:"valid-feedback"},R={class:"d-flex gap-3 mt-5 flex-column"};function G(s,e,a,N,W,Q){const o=c("LocaleText"),l=c("RouterLink");return n(),b("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[t("div",w,[t("div",L,[t("div",null,[t("h1",M,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",C,[t("small",P,[i(o,{t:"1. Please scan the following QR Code to generate TOTP with your choice of authenticator"})])]),e[1]||(e[1]=t("canvas",{id:"qrcode",class:"rounded-3 mb-2"},null,-1)),t("div",I,[t("p",O,[t("small",null,[i(o,{t:"Or you can click the link below:"})])]),t("a",{href:this.l},[t("code",$,_(this.l),1)],8,B)]),t("label",A,[t("small",D,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",S,[v(t("input",{class:"form-control text-center totp",id:"totp",maxlength:"6",type:"text",inputmode:"numeric",autocomplete:"one-time-code","onUpdate:modelValue":e[0]||(e[0]=u=>this.totp=u),disabled:this.verified},null,8,q),[[g,this.totp]]),t("div",E,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",F,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",R,[this.verified?(n(),d(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:r(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1})):(n(),d(l,{key:0,to:"/",class:"btn bg-secondary-subtle text-secondary-emphasis rounded-3 flex-grow-1 btn-lg border-1 border-secondary-subtle shadow d-flex"},{default:r(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1}))])])])],8,k)}const z=h(T,[["render",G]]);export{z as default};
|
||||
import{_ as h,D as m,g as p,A as f,c as b,b as t,d as i,t as _,m as v,y as g,i as d,w as r,k as c,a as n}from"./index-DZliHkQD.js";import{b as x}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-DG9SnJT8.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=m();let e="";return await p("/api/Welcome_GetTotpLink",{},a=>{a.status&&(e=a.data)}),{l:e,store:s}},mounted(){this.l&&x.toCanvas(document.getElementById("qrcode"),this.l,function(s){})},data(){return{totp:"",totpInvalidMessage:"",verified:!1}},methods:{validateTotp(){}},watch:{totp(s){const e=document.querySelector("#totp");e.classList.remove("is-invalid","is-valid"),s.length===6&&(console.log(s),/[0-9]{6}/.test(s)?f("/api/Welcome_VerifyTotpLink",{totp:s},a=>{a.status?(this.verified=!0,e.classList.add("is-valid"),this.$emit("verified")):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP does not match.")}):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP can only contain numbers"))}}},k=["data-bs-theme"],w={class:"m-auto text-body",style:{width:"500px"}},L={class:"d-flex flex-column"},M={class:"dashboardLogo display-4"},C={class:"mb-2"},P={class:"text-muted"},I={class:"p-3 bg-body-secondary rounded-3 border mb-3"},O={class:"text-muted mb-0"},B=["href"],$={style:{"line-break":"anywhere"}},A={for:"totp",class:"mb-2"},D={class:"text-muted"},S={class:"form-group mb-2"},q=["disabled"],E={class:"invalid-feedback"},F={class:"valid-feedback"},R={class:"d-flex gap-3 mt-5 flex-column"};function G(s,e,a,N,W,Q){const o=c("LocaleText"),l=c("RouterLink");return n(),b("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[t("div",w,[t("div",L,[t("div",null,[t("h1",M,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",C,[t("small",P,[i(o,{t:"1. Please scan the following QR Code to generate TOTP with your choice of authenticator"})])]),e[1]||(e[1]=t("canvas",{id:"qrcode",class:"rounded-3 mb-2"},null,-1)),t("div",I,[t("p",O,[t("small",null,[i(o,{t:"Or you can click the link below:"})])]),t("a",{href:this.l},[t("code",$,_(this.l),1)],8,B)]),t("label",A,[t("small",D,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",S,[v(t("input",{class:"form-control text-center totp",id:"totp",maxlength:"6",type:"text",inputmode:"numeric",autocomplete:"one-time-code","onUpdate:modelValue":e[0]||(e[0]=u=>this.totp=u),disabled:this.verified},null,8,q),[[g,this.totp]]),t("div",E,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",F,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",R,[this.verified?(n(),d(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:r(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1})):(n(),d(l,{key:0,to:"/",class:"btn bg-secondary-subtle text-secondary-emphasis rounded-3 flex-grow-1 btn-lg border-1 border-secondary-subtle shadow d-flex"},{default:r(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1}))])])])],8,k)}const z=h(T,[["render",G]]);export{z as default};
|
@ -1 +1 @@
|
||||
import{_ as h,W as g,g as b,c as o,b as t,d as n,m as y,y as f,C as x,w as r,j as c,a as l,f as v,F as u,h as m,n as k,s as T,t as i,k as _}from"./index-CTj5x065.js";import{O as A}from"./osmap-MF-Nk1v9.js";import{L as w}from"./localeText-B4ON0kK9.js";const R={name:"traceroute",components:{LocaleText:w,OSMap:A},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:g()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,b("/api/traceroute/execute",{ipAddress:this.ipAddress},d=>{d.status?this.tracerouteResult=d.data:this.store.newMessage("Server",d.message,"danger"),this.tracing=!1}))}}},M={class:"mt-md-5 mt-3 text-body"},S={class:"container-md"},$={class:"mb-3 text-body"},C={class:"d-flex gap-2 mb-3 flex-column"},L={class:"flex-grow-1"},P={class:"mb-1 text-muted",for:"ipAddress"},O=["disabled"],V=["disabled"],B={key:0,class:"d-block"},I={key:1,class:"d-block"},N={class:"position-relative"},z={key:"pingPlaceholder"},D={key:1},E={key:"table",class:"w-100 mt-2"},F={class:"table table-sm rounded-3 w-100"},G={scope:"col"},H={scope:"col"},K={scope:"col"},W={scope:"col"},j={scope:"col"},U={scope:"col"},q={key:0},J={key:1};function Q(d,s,X,Y,Z,tt){const a=_("LocaleText"),p=_("OSMap");return l(),o("div",M,[t("div",S,[t("h3",$,[n(a,{t:"Traceroute"})]),t("div",C,[t("div",L,[t("label",P,[t("small",null,[n(a,{t:"Enter IP Address / Hostname"})])]),y(t("input",{disabled:this.tracing,id:"ipAddress",class:"form-control rounded-3","onUpdate:modelValue":s[0]||(s[0]=e=>this.ipAddress=e),onKeyup:s[1]||(s[1]=x(e=>this.execute(),["enter"])),type:"text"},null,40,O),[[f,this.ipAddress]])]),t("button",{class:"btn btn-primary rounded-3 position-relative flex-grow-1",disabled:this.tracing||!this.ipAddress,onClick:s[2]||(s[2]=e=>this.execute())},[n(c,{name:"slide"},{default:r(()=>[this.tracing?(l(),o("span",I,s[4]||(s[4]=[t("span",{class:"spinner-border spinner-border-sm","aria-hidden":"true"},null,-1),t("span",{class:"visually-hidden",role:"status"},"Loading...",-1)]))):(l(),o("span",B,s[3]||(s[3]=[t("i",{class:"bi bi-person-walking me-2"},null,-1),v("Trace! ")])))]),_:1})],8,V)]),t("div",N,[n(c,{name:"ping"},{default:r(()=>[this.tracerouteResult?(l(),o("div",D,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",E,[t("table",F,[t("thead",null,[t("tr",null,[t("th",G,[n(a,{t:"Hop"})]),t("th",H,[n(a,{t:"IP Address"})]),t("th",K,[n(a,{t:"Average RTT (ms)"})]),t("th",W,[n(a,{t:"Min RTT (ms)"})]),t("th",j,[n(a,{t:"Max RTT (ms)"})]),t("th",U,[n(a,{t:"Geolocation"})])])]),t("tbody",null,[(l(!0),o(u,null,m(this.tracerouteResult,(e,et)=>(l(),o("tr",null,[t("td",null,[t("small",null,i(e.hop),1)]),t("td",null,[t("small",null,[t("samp",null,i(e.ip),1)])]),t("td",null,[t("small",null,[t("samp",null,i(e.avg_rtt),1)])]),t("td",null,[t("small",null,[t("samp",null,i(e.min_rtt),1)])]),t("td",null,[t("small",null,[t("samp",null,i(e.max_rtt),1)])]),t("td",null,[e.geo.city&&e.geo.country?(l(),o("span",q,[t("small",null,i(e.geo.city)+", "+i(e.geo.country),1)])):(l(),o("span",J," - "))])]))),256))])])])])):(l(),o("div",z,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(l(),o(u,null,m(5,e=>t("div",{class:k(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:T({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const lt=h(R,[["render",Q],["__scopeId","data-v-3e75b4d4"]]);export{lt as default};
|
||||
import{_ as h,W as g,g as b,c as o,b as t,d as n,m as y,y as f,C as x,w as r,j as c,a as l,f as v,F as u,h as m,n as k,s as T,t as i,k as _}from"./index-DZliHkQD.js";import{O as A}from"./osmap-CmjRjQ0N.js";import{L as w}from"./localeText-DG9SnJT8.js";const R={name:"traceroute",components:{LocaleText:w,OSMap:A},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:g()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,b("/api/traceroute/execute",{ipAddress:this.ipAddress},d=>{d.status?this.tracerouteResult=d.data:this.store.newMessage("Server",d.message,"danger"),this.tracing=!1}))}}},M={class:"mt-md-5 mt-3 text-body"},S={class:"container-md"},$={class:"mb-3 text-body"},C={class:"d-flex gap-2 mb-3 flex-column"},L={class:"flex-grow-1"},P={class:"mb-1 text-muted",for:"ipAddress"},O=["disabled"],V=["disabled"],B={key:0,class:"d-block"},I={key:1,class:"d-block"},N={class:"position-relative"},z={key:"pingPlaceholder"},D={key:1},E={key:"table",class:"w-100 mt-2"},F={class:"table table-sm rounded-3 w-100"},G={scope:"col"},H={scope:"col"},K={scope:"col"},W={scope:"col"},j={scope:"col"},U={scope:"col"},q={key:0},J={key:1};function Q(d,s,X,Y,Z,tt){const a=_("LocaleText"),p=_("OSMap");return l(),o("div",M,[t("div",S,[t("h3",$,[n(a,{t:"Traceroute"})]),t("div",C,[t("div",L,[t("label",P,[t("small",null,[n(a,{t:"Enter IP Address / Hostname"})])]),y(t("input",{disabled:this.tracing,id:"ipAddress",class:"form-control rounded-3","onUpdate:modelValue":s[0]||(s[0]=e=>this.ipAddress=e),onKeyup:s[1]||(s[1]=x(e=>this.execute(),["enter"])),type:"text"},null,40,O),[[f,this.ipAddress]])]),t("button",{class:"btn btn-primary rounded-3 position-relative flex-grow-1",disabled:this.tracing||!this.ipAddress,onClick:s[2]||(s[2]=e=>this.execute())},[n(c,{name:"slide"},{default:r(()=>[this.tracing?(l(),o("span",I,s[4]||(s[4]=[t("span",{class:"spinner-border spinner-border-sm","aria-hidden":"true"},null,-1),t("span",{class:"visually-hidden",role:"status"},"Loading...",-1)]))):(l(),o("span",B,s[3]||(s[3]=[t("i",{class:"bi bi-person-walking me-2"},null,-1),v("Trace! ")])))]),_:1})],8,V)]),t("div",N,[n(c,{name:"ping"},{default:r(()=>[this.tracerouteResult?(l(),o("div",D,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",E,[t("table",F,[t("thead",null,[t("tr",null,[t("th",G,[n(a,{t:"Hop"})]),t("th",H,[n(a,{t:"IP Address"})]),t("th",K,[n(a,{t:"Average RTT (ms)"})]),t("th",W,[n(a,{t:"Min RTT (ms)"})]),t("th",j,[n(a,{t:"Max RTT (ms)"})]),t("th",U,[n(a,{t:"Geolocation"})])])]),t("tbody",null,[(l(!0),o(u,null,m(this.tracerouteResult,(e,et)=>(l(),o("tr",null,[t("td",null,[t("small",null,i(e.hop),1)]),t("td",null,[t("small",null,[t("samp",null,i(e.ip),1)])]),t("td",null,[t("small",null,[t("samp",null,i(e.avg_rtt),1)])]),t("td",null,[t("small",null,[t("samp",null,i(e.min_rtt),1)])]),t("td",null,[t("small",null,[t("samp",null,i(e.max_rtt),1)])]),t("td",null,[e.geo.city&&e.geo.country?(l(),o("span",q,[t("small",null,i(e.geo.city)+", "+i(e.geo.country),1)])):(l(),o("span",J," - "))])]))),256))])])])])):(l(),o("div",z,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(l(),o(u,null,m(5,e=>t("div",{class:k(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:T({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const lt=h(R,[["render",Q],["__scopeId","data-v-3e75b4d4"]]);export{lt as default};
|
File diff suppressed because one or more lines are too long
2
src/static/app/dist/index.html
vendored
2
src/static/app/dist/index.html
vendored
@ -10,7 +10,7 @@
|
||||
<link rel="icon" href="/static/app/dist/img/Logo-2-512x512.png">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>WGDashboard</title>
|
||||
<script type="module" crossorigin src="/static/app/dist/assets/index-CTj5x065.js"></script>
|
||||
<script type="module" crossorigin src="/static/app/dist/assets/index-DZliHkQD.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/app/dist/assets/index-DFl-XeJT.css">
|
||||
</head>
|
||||
<body>
|
||||
|
@ -42,7 +42,7 @@ export default {
|
||||
description: this.selectedPeer.name,
|
||||
hostName: this.dashboardStore.Configuration.Peers.remote_endpoint
|
||||
}
|
||||
data = JSON.stringify(awgQRCodeObject)
|
||||
data = btoa(JSON.stringify(awgQRCodeObject))
|
||||
}else{
|
||||
data = res.data.file
|
||||
}
|
||||
|
@ -64,6 +64,11 @@
|
||||
"lang_name": "German",
|
||||
"lang_name_localized": "Deutsch"
|
||||
},
|
||||
{
|
||||
"lang_id": "hu-hu",
|
||||
"lang_name": "Hungarian",
|
||||
"lang_name_localized": "Magyar"
|
||||
},
|
||||
{
|
||||
"lang_id": "it-it",
|
||||
"lang_name": "Italian",
|
||||
|
369
src/static/locale/hu-hu.json
Normal file
369
src/static/locale/hu-hu.json
Normal file
@ -0,0 +1,369 @@
|
||||
{
|
||||
"Welcome to": "Üdvözlünk a(z) ",
|
||||
"Username": "Felhasználónév",
|
||||
"Password": "Jelszó",
|
||||
"OTP from your authenticator": "Egyszer használatos kód (OTP) az autentikátorodból",
|
||||
"Sign In": "Bejelentkezés",
|
||||
"Signing In\\.\\.\\.": "Bejelentkezés folyamatban...",
|
||||
"Access Remote Server": "Távoli szerver elérése",
|
||||
"Server": "Szerver",
|
||||
"Click": "Kattintson",
|
||||
"Pinging...": "Pingelés...",
|
||||
"to add your server": "a szerver hozzáadásához",
|
||||
"Server List": "Szerverlista",
|
||||
"Sorry, your username or password is incorrect.": "Sajnáljuk, a felhasználónév vagy a jelszó hibás.",
|
||||
"Home": "Főoldal",
|
||||
"Settings": "Beállítások",
|
||||
"Tools": "Eszközök",
|
||||
"Sign Out": "Kijelentkezés",
|
||||
"Checking for update...": "Frissítések ellenőrzése...",
|
||||
"You're on the latest version": "Már a legfrissebb verziót használja",
|
||||
"WireGuard Configurations": "WireGuard konfigurációk",
|
||||
"You don't have any WireGuard configurations yet. Please check the configuration folder or change it in Settings. By default the folder is /etc/wireguard.": "Még nincsenek WireGuard konfigurációi. Kérjük, ellenőrizze a konfigurációs mappát, vagy módosítsa a beállításoknál. Alapértelmezés szerint a mappa a /etc/wireguard.",
|
||||
"Configuration": "Konfiguráció",
|
||||
"Configurations": "Konfigurációk",
|
||||
"Peers Default Settings": "Alapértelmezett társ beállítások",
|
||||
"Dashboard Theme": "Vezérlőpanel téma",
|
||||
"Light": "Világos",
|
||||
"Dark": "Sötét",
|
||||
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "Ez globálisan változik, és minden társ QR-kódjára és konfigurációs fájljára alkalmazva lesz.",
|
||||
"WireGuard Configurations Settings": "WireGuard konfiguráció beállításai",
|
||||
"Configurations Directory": "Konfigurációs könyvtár",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "Ne felejtse el eltávolítani a '/' karaktert az útvonal végéről. (pl. /etc/wireguard)",
|
||||
"WGDashboard Account Settings": "WGDashboard fiókbeállítások",
|
||||
"Current Password": "Jelenlegi jelszó",
|
||||
"New Password": "Új jelszó",
|
||||
"Repeat New Password": "Új jelszó ismétlése",
|
||||
"Update Password": "Jelszó frissítése",
|
||||
"Multi-Factor Authentication \\(MFA\\)": "Többfaktoros hitelesítés (MFA)",
|
||||
"Reset": "Visszaállítás",
|
||||
"Setup": "Beállítás",
|
||||
"API Keys": "API-kulcsok",
|
||||
"API Key": "API-kulcs",
|
||||
"Key": "Kulcs",
|
||||
"Enabled": "Engedélyezve",
|
||||
"Disabled": "Letiltva",
|
||||
"No WGDashboard API Key": "Nincs WGDashboard API-kulcs",
|
||||
"Expire At": "Lejár:",
|
||||
"Are you sure to delete this API key\\?": "Biztosan törölni szeretné ezt az API-kulcsot?",
|
||||
"Create API Key": "API-kulcs létrehozása",
|
||||
"When should this API Key expire\\?": "Mikor járjon le ez az API-kulcs?",
|
||||
"Never Expire": "Soha ne járjon le",
|
||||
"Don't think that's a good idea": "Szerintem ez nem jó ötlet",
|
||||
"Creating\\.\\.\\.": "Létrehozás...",
|
||||
"Create": "Létrehozás",
|
||||
"Status": "Állapot",
|
||||
"On": "Bekapcsolva",
|
||||
"Off": "Kikapcsolva",
|
||||
"Turning On\\.\\.\\.": "Bekapcsolás...",
|
||||
"Turning Off\\.\\.\\.": "Kikapcsolás...",
|
||||
"Address": "Cím",
|
||||
"Listen Port": "Port hallgatása",
|
||||
"Table": "Táblázat",
|
||||
"Public Key": "Nyilvános kulcs",
|
||||
"Connected Peers": "Csatlakozott társak",
|
||||
"Total Usage": "Teljes használat",
|
||||
"Total Received": "Összes fogadott",
|
||||
"Total Sent": "Összes elküldött",
|
||||
"Peers Data Usage": "Társak adatforgalma",
|
||||
"Real Time Received Data Usage": "Valós idejű fogadott forgalom",
|
||||
"Real Time Sent Data Usage": "Valós idejű elküldött forgalom",
|
||||
"Peer": "Társ",
|
||||
"Peers": "Társak",
|
||||
"Peer Settings": "Társ beállítások",
|
||||
"Download All": "Összes letöltése",
|
||||
"Search": "Keresés",
|
||||
"Search Peers\\.\\.\\.": "Társak keresése...",
|
||||
"Display": "Megjelenítés",
|
||||
"Sort By": "Rendezés",
|
||||
"Refresh Interval": "Frissítési időköz",
|
||||
"Name": "Név",
|
||||
"Allowed IPs": "Engedélyezett IP-k",
|
||||
"Restricted": "Korlátozott",
|
||||
"(.*) Seconds": "$1 másodperc",
|
||||
"(.*) Minutes": "$1 perc",
|
||||
"Configuration Settings": "Konfiguráció beállítások",
|
||||
"Peer Jobs": "Társ feladatok",
|
||||
"Active Jobs": "Aktív feladatok",
|
||||
"All Active Jobs": "Összes aktív feladat",
|
||||
"Logs": "Naplók",
|
||||
"Private Key": "Privát kulcs",
|
||||
"\\(Required for QR Code and Download\\)": "(Szükséges a QR-kódhoz és letöltéshez)",
|
||||
"\\(Required\\)": "(Szükséges)",
|
||||
"Endpoint Allowed IPs": "Végpont engedélyezett IP-k",
|
||||
"DNS": "DNS",
|
||||
"Optional Settings": "Opcionális beállítások",
|
||||
"Pre-Shared Key": "Előre megosztott kulcs",
|
||||
"MTU": "MTU",
|
||||
"Persistent Keepalive": "Folyamatos keepalive",
|
||||
"Reset Data Usage": "Adatforgalom visszaállítása",
|
||||
"Total": "Összesen",
|
||||
"Sent": "Elküldött",
|
||||
"Received": "Fogadott",
|
||||
"Revert": "Visszaállítás",
|
||||
"Save Peer": "Társ mentése",
|
||||
"QR Code": "QR-kód",
|
||||
"Schedule Jobs": "Feladatok ütemezése",
|
||||
"Job": "Feladat",
|
||||
"Job ID": "Feladat azonosító",
|
||||
"Unsaved Job": "Mentetlen feladat",
|
||||
"This peer does not have any job yet\\.": "Ennek a társnak még nincs feladata.",
|
||||
"if": "ha",
|
||||
"is": "van",
|
||||
"then": "akkor",
|
||||
"larger than": "nagyobb mint",
|
||||
"Date": "Dátum",
|
||||
"Restrict Peer": "Társ korlátozása",
|
||||
"Delete Peer": "Társ törlése",
|
||||
"Edit": "Szerkesztés",
|
||||
"Delete": "Törlés",
|
||||
"Deleting...": "Törlés...",
|
||||
"Cancel": "Mégse",
|
||||
"Save": "Mentés",
|
||||
"No active job at the moment\\.": "Jelenleg nincs aktív feladat.",
|
||||
"Jobs Logs": "Feladatnaplók",
|
||||
"Updated at": "Frissítve:",
|
||||
"Refresh": "Frissítés",
|
||||
"Filter": "Szűrés",
|
||||
"Success": "Sikeres",
|
||||
"Failed": "Sikertelen",
|
||||
"Log ID": "Napló azonosító",
|
||||
"Message": "Üzenet",
|
||||
"Share Peer": "Társ megosztása",
|
||||
"Currently the peer is not sharing": "A társ jelenleg nincs megosztva",
|
||||
"Sharing\\.\\.\\.": "Megosztás...",
|
||||
"Start Sharing": "Megosztás indítása",
|
||||
"Stop Sharing\\.\\.\\.": "Megosztás leállítása...",
|
||||
"Stop Sharing": "Megosztás leállítása",
|
||||
"Access Restricted": "Hozzáférés korlátozva",
|
||||
"Restrict Access": "Hozzáférés korlátozása",
|
||||
"Restricting\\.\\.\\.": "Korlátozás...",
|
||||
"Allow Access": "Hozzáférés engedélyezése",
|
||||
"Allowing Access\\.\\.\\.": "Engedélyezés...",
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "Letöltés és QR-kód nem érhető el, mert nincs beállított privát kulcs ehhez a társhoz",
|
||||
"Add Peers": "Társ hozzáadása",
|
||||
"Bulk Add": "Tömeges hozzáadás",
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "Társak tömeges hozzáadásakor minden társ neve automatikusan generálódik, és az engedélyezett IP a következő elérhető IP lesz.",
|
||||
"How many peers you want to add\\?": "Hány társat szeretne hozzáadni?",
|
||||
"You can add up to (.*) peers": "Legfeljebb $1 társat adhat hozzá",
|
||||
"Use your own Private and Public Key": "Használja saját privát és nyilvános kulcsát",
|
||||
"Enter IP Address/CIDR": "Adja meg az IP-címet/CIDR-t",
|
||||
"IP Address/CIDR": "IP-cím/CIDR",
|
||||
"or": "vagy",
|
||||
"Pick Available IP": "Elérhető IP kiválasztása",
|
||||
"No available IP containing": "Nincs elérhető IP, amely tartalmazza",
|
||||
"Add": "Hozzáadás",
|
||||
"Adding\\.\\.\\.": "Hozzáadás...",
|
||||
"Failed to check available update": "Nem sikerült ellenőrizni a frissítéseket",
|
||||
"Nice to meet you!": "Örülök, hogy megismerhetlek!",
|
||||
"Please fill in the following fields to finish setup": "Töltse ki az alábbi mezőket a beállítás befejezéséhez",
|
||||
"Create an account": "Fiók létrehozása",
|
||||
"Enter an username you like": "Adja meg a kívánt felhasználónevet",
|
||||
"Enter a password": "Adja meg a jelszót",
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(Legalább 8 karakter, és legyen elég erős!)",
|
||||
"Confirm password": "Jelszó megerősítése",
|
||||
"Next": "Tovább",
|
||||
"Saving\\.\\.\\.": "Mentés...",
|
||||
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. Kérjük, olvassa be az alábbi QR-kódot, hogy TOTP-t generáljon az Ön által választott autentikátorral",
|
||||
"Or you can click the link below:": "Vagy kattintson az alábbi hivatkozásra:",
|
||||
"2\\. Enter the TOTP generated by your authenticator to verify": "2. Adja meg az autentikátor által generált TOTP-t a megerősítéshez",
|
||||
"TOTP verified!": "TOTP sikeresen ellenőrizve!",
|
||||
"I don't need MFA": "Nincs szükségem MFA-ra",
|
||||
"Complete": "Befejezés",
|
||||
"(v[0-9.]{1,}) is now available for update!": "$1 frissíthető!",
|
||||
"Current Version:": "Jelenlegi verzió:",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "Hoppá... Ez a hivatkozás lejárt vagy érvénytelen.",
|
||||
"Scan QR Code with the WireGuard App to add peer": "Olvassa be a QR-kódot a WireGuard alkalmazással a társ hozzáadásához",
|
||||
"or click the button below to download the ": "vagy kattintson az alábbi gombra a letöltéshez: ",
|
||||
" file": " fájl",
|
||||
"FROM ": "FORRÁS: ",
|
||||
"(.*) is on": "$1 be van kapcsolva",
|
||||
"(.*) is off": "$1 ki van kapcsolva",
|
||||
"Allowed IPs is invalid": "Az engedélyezett IP-k érvénytelenek",
|
||||
"Peer created successfully": "A társ sikeresen létrejött",
|
||||
"Please fill in all required box": "Töltse ki az összes kötelező mezőt",
|
||||
"Please specify amount of peers you want to add": "Adja meg, hány társat szeretne hozzáadni",
|
||||
"No more available IP can assign": "Nincs több elérhető IP kiosztható",
|
||||
"The maximum number of peers can add is (.*)": "A hozzáadható társak maximális száma: $1",
|
||||
"Generating key pairs by bulk failed": "Nem sikerült tömegesen kulcspárokat generálni",
|
||||
"Failed to add peers in bulk": "Nem sikerült tömegesen hozzáadni a társakat",
|
||||
"This peer already exist": "Ez a társ már létezik",
|
||||
"This IP is not available: (.*)": "Ez az IP nem elérhető: $1",
|
||||
"Configuration does not exist": "A konfiguráció nem létezik",
|
||||
"Peer does not exist": "A társ nem létezik",
|
||||
"Please provide a valid configuration name": "Adjon meg érvényes konfigurációs nevet",
|
||||
"Peer saved": "A társ mentve",
|
||||
"Allowed IPs already taken by another peer": "Az engedélyezett IP-ket már egy másik társ foglalta le",
|
||||
"Endpoint Allowed IPs format is incorrect": "A végpont engedélyezett IP-k formátuma helytelen",
|
||||
"DNS format is incorrect": "A DNS formátum helytelen",
|
||||
"MTU format is not correct": "Az MTU formátuma helytelen",
|
||||
"Persistent Keepalive format is not correct": "A folyamatos keepalive formátuma helytelen",
|
||||
"Private key does not match with the public key": "A privát kulcs nem egyeztethető a nyilvános kulccsal",
|
||||
"Update peer failed when updating Pre-Shared Key": "A társ frissítése sikertelen volt az előre megosztott kulcs frissítésekor",
|
||||
"Update peer failed when updating Allowed IPs": "A társ frissítése sikertelen volt az engedélyezett IP-k frissítésekor",
|
||||
"Update peer failed when saving the configuration": "A társ frissítése sikertelen volt a konfiguráció mentésekor",
|
||||
"Peer data usage reset successfully": "A társ adatforgalma sikeresen visszaállítva",
|
||||
"Peer download started": "A társ letöltése elindult",
|
||||
"Please specify one or more peers": "Jelöljön ki egy vagy több társat",
|
||||
"Share link failed to create. Reason: (.*)": "Nem sikerült létrehozni a megosztási hivatkozást. Ok: $1",
|
||||
"Link expire date updated": "A hivatkozás lejárati dátuma frissítve",
|
||||
"Link expire date failed to update. Reason: (.*)": "A hivatkozás lejárati dátumának frissítése sikertelen. Ok: $1",
|
||||
"Peer job saved": "A társ feladata mentve",
|
||||
"Please specify job": "Adja meg a feladatot",
|
||||
"Please specify peer and configuration": "Jelölje ki a társat és a konfigurációt",
|
||||
"Peer job deleted": "A társ feladata törölve",
|
||||
"API Keys function is successfully enabled": "Az API-kulcs funkció sikeresen engedélyezve",
|
||||
"API Keys function is successfully disabled": "Az API-kulcs funkció sikeresen letiltva",
|
||||
"API Keys function is failed to enable": "Az API-kulcs funkció engedélyezése sikertelen",
|
||||
"API Keys function is failed to disable": "Az API-kulcs funkció letiltása sikertelen",
|
||||
"WGDashboard API Keys function is disabled": "A WGDashboard API-kulcs funkció letiltva",
|
||||
"WireGuard configuration path saved": "A WireGuard konfigurációs útvonal mentve",
|
||||
"API Key deleted": "API-kulcs törölve",
|
||||
"API Key created": "API-kulcs létrehozva",
|
||||
"Sign in session ended, please sign in again": "A bejelentkezés lejárt, kérjük jelentkezzen be újra",
|
||||
"Please specify an IP Address (v4/v6)": "Adjon meg egy IP-címet (v4/v6)",
|
||||
"Please provide ipAddress and count": "Adja meg az IP-címet és a darabszámot",
|
||||
"Please provide ipAddress": "Adja meg az IP-címet",
|
||||
"Dashboard Language": "Vezérlőpanel nyelv",
|
||||
"Dashboard language update failed": "A vezérlőpanel nyelvének frissítése sikertelen",
|
||||
"Peer Remote Endpoint": "Társ távoli végpontja",
|
||||
"New Configuration": "Új konfiguráció",
|
||||
"Configuration Name": "Konfiguráció neve",
|
||||
"Configuration name is invalid. Possible reasons:": "A konfiguráció neve érvénytelen. Lehetséges okok:",
|
||||
"Configuration name already exist\\.": "A konfiguráció neve már létezik.",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "A konfiguráció neve csak 15 kis- vagy nagybetűt, számokat, alulvonást, egyenlőségjelet, pluszjelet, pontot és kötőjelet tartalmazhat.",
|
||||
"Invalid Port": "Érvénytelen port",
|
||||
"Save Configuration": "Konfiguráció mentése",
|
||||
"IP Address/CIDR is invalid": "Az IP-cím/CIDR érvénytelen",
|
||||
"IP Address": "IP-cím",
|
||||
"Enter IP Address / Hostname": "Adja meg az IP-címet / hosztnevet",
|
||||
"IP Address / Hostname": "IP-cím / hosztnév",
|
||||
"Dashboard IP Address \\& Listen Port": "Vezérlőpanel IP-cím és hallgató port",
|
||||
"Count": "Darabszám",
|
||||
"Hop": "Ugrás",
|
||||
"Average RTT \\(ms\\)": "Átlagos RTT (ms)",
|
||||
"Min RTT \\(ms\\)": "Minimum RTT (ms)",
|
||||
"Max RTT \\(ms\\)": "Maximum RTT (ms)",
|
||||
"Geolocation": "Földrajzi hely",
|
||||
"Is Alive": "Élő?",
|
||||
"Average / Min / Max Round Trip Time": "Átlagos / min / max oda-vissza idő",
|
||||
"Sent / Received / Lost Package": "Elküldött / fogadott / elveszett csomag",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "A WGDashboard kézi újraindítása szükséges az IP-cím és a portváltoztatások alkalmazásához",
|
||||
"Restore Configuration": "Konfiguráció visszaállítása",
|
||||
"Step (.*)": "Lépés $1",
|
||||
"Select a backup you want to restore": "Válasszon egy visszaállítandó biztonsági másolatot",
|
||||
"Click to change a backup": "Kattintson a biztonsági mentés megváltoztatásához",
|
||||
"Selected Backup": "Kiválasztott mentés",
|
||||
"You don't have any configuration to restore": "Nincs visszaállítandó konfigurációja",
|
||||
"Help": "Súgó",
|
||||
"You can visit our: ": "Látogasson el ide:",
|
||||
"Official Documentation": "Hivatalos dokumentáció",
|
||||
"Discord Server": "Discord szerver",
|
||||
"Backup": "Biztonsági mentés",
|
||||
"([0-9].*) Backups\\?": "$1 mentés?",
|
||||
"Yes": "Igen",
|
||||
"No": "Nem",
|
||||
"Backup not selected": "Nincs kiválasztva mentés",
|
||||
"Confirm \\& edit restore information": "Visszaállítási információk megerősítése és szerkesztése",
|
||||
"(.*) Available IP Address": "$1 elérhető IP-cím",
|
||||
"Database File": "Adatbázis fájl",
|
||||
"Contain": "Tartalmaz",
|
||||
"Restricted Peers\\?": "Korlátozott társak?",
|
||||
"Restore": "Visszaállítás",
|
||||
"Restoring": "Visszaállítás folyamatban",
|
||||
"WGDashboard Settings": "WGDashboard beállítások",
|
||||
"Peers Settings": "Társ beállítások",
|
||||
"WireGuard Configuration Settings": "WireGuard konfiguráció beállítások",
|
||||
"Appearance": "Megjelenés",
|
||||
"Theme": "Téma",
|
||||
"Language": "Nyelv",
|
||||
"Account Settings": "Fiókbeállítások",
|
||||
"Peer Default Settings": "Társ alapértelmezett beállítások",
|
||||
"Toggle When Start Up": "Indításkor törlése",
|
||||
"Other Settings": "Egyéb beállítások",
|
||||
"Select Peers": "Társak kiválasztása",
|
||||
"Backup & Restore": "Mentés és visszaállítás",
|
||||
"Delete Configuration": "Konfiguráció törlése",
|
||||
"Create Backup": "Biztonsági mentés létrehozása",
|
||||
"No backup yet, click the button above to create backup\\.": "Még nincs mentés, kattintson a fenti gombra a mentés létrehozásához.",
|
||||
"Are you sure to delete this backup\\?": "Biztosan törölni szeretné ezt a mentést?",
|
||||
"Are you sure to restore this backup\\?": "Biztosan visszaállítja ezt a mentést?",
|
||||
"Backup Date": "Mentés dátuma",
|
||||
"File": "Fájl",
|
||||
"Are you sure to delete this configuration\\?": "Biztosan törölni szeretné ezt a konfigurációt?",
|
||||
"Once you deleted this configuration\\:": "Ha törli ezt a konfigurációt:",
|
||||
"All connected peers will get disconnected": "Minden kapcsolódott társ le lesz választva",
|
||||
"Both configuration file \\(.conf\\) and database table related to this configuration will get deleted": "A konfigurációhoz tartozó .conf fájl és adatbázis tábla is törlődik",
|
||||
"Checking backups...": "Mentések ellenőrzése...",
|
||||
"This configuration have ([0-9].*) backups": "Ennél a konfigurációnál $1 mentés van",
|
||||
"This configuration have no backup": "Ennél a konfigurációnál nincs mentés",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "Ha biztos, írja be a konfiguráció nevét alább, és kattintson a Törlésre",
|
||||
"Select All": "Összes kiválasztása",
|
||||
"Clear Selection": "Kiválasztás törlése",
|
||||
"([0-9].*) Peers\\?": "$1 társ?",
|
||||
"Download": "Letöltés",
|
||||
"Downloading": "Letöltés...",
|
||||
"Download Finished": "Letöltés befejezve",
|
||||
"Done": "Kész",
|
||||
"Are you sure to delete": "Biztosan törölni szeretné",
|
||||
"Are you sure to delete this peer\\?": "Biztosan törölni szeretné ezt a társat?",
|
||||
"Configuration deleted": "Konfiguráció törölve",
|
||||
"Configuration saved": "Konfiguráció mentve",
|
||||
"WGDashboard language update failed": "A WGDashboard nyelvének frissítése sikertelen",
|
||||
"Configuration restored": "Konfiguráció visszaállítva",
|
||||
"Allowed IP already taken by another peer": "Az engedélyezett IP-t már egy másik társ használja",
|
||||
"Failed to allow access of peer (.*)": "Nem sikerült engedélyezni a hozzáférést a társ számára: $1",
|
||||
"Failed to save configuration through WireGuard": "Nem sikerült menteni a konfigurációt WireGuardon keresztül",
|
||||
"Allow access successfully": "Hozzáférés sikeresen engedélyezve",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "Törölve $1 társ",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "Sikeresen törölve $1 társ. $2 társ törlése sikertelen",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "Korlátozva $1 társ",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "Sikeresen korlátozva $1 társ. $2 társ korlátozása sikertelen",
|
||||
"Display As": "Megjelenítés",
|
||||
"List": "Lista",
|
||||
"Grid": "Rács",
|
||||
"Protocol": "Protokoll",
|
||||
"Open File": "Fájl megnyitása",
|
||||
"Advanced Options": "Haladó beállítások",
|
||||
"Allowed IPs Validation": "Engedélyezett IP-k érvényesítése",
|
||||
"Update Name": "Név frissítése",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "A konfiguráció nevének frissítéséhez a WGDashboard a következő műveleteket hajtja végre:",
|
||||
"Duplicate current configuration's database table and \\..\\.conf file with the new name": "A jelenlegi konfiguráció adatbázis táblájának és .conf fájljának másolása az új névvel",
|
||||
"Delete current configuration's database table and \\..\\.conf file": "A jelenlegi konfiguráció adatbázis táblájának és .conf fájljának törlése",
|
||||
"Danger Zone": "Veszélyes zóna",
|
||||
"Configuration File": "Konfigurációs fájl",
|
||||
"Edit Raw Configuration File": "Nyers konfigurációs fájl szerkesztése",
|
||||
"Peer Configuration File": "Társ konfigurációs fájl",
|
||||
"Share with Email": "Megosztás e-mailben",
|
||||
"Email Account": "E-mail fiók",
|
||||
"Ready": "Kész",
|
||||
"Port": "Port",
|
||||
"Encryption": "Titkosítás",
|
||||
"No Encryption": "Nincs titkosítás",
|
||||
"Send From": "Feladó",
|
||||
"Send Test Email": "Teszt e-mail küldése",
|
||||
"Email Body Template": "E-mail törzs sablon",
|
||||
"Live Preview": "Élő előnézet",
|
||||
"Include configuration file as an attachment": "Konfigurációs fájl mellékletként csatolása",
|
||||
"Send": "Küldés",
|
||||
"Sending\\.\\.\\.": "Küldés...",
|
||||
"Email sent successfully!": "Az e-mail sikeresen elküldve!",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG társ beállítás",
|
||||
"System Status": "Rendszerállapot",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Memória",
|
||||
"Swap Memory": "Swap memória",
|
||||
"Processes": "Folyamatok",
|
||||
"CPU Usage": "CPU használat",
|
||||
"Memory Usage": "Memória használat",
|
||||
"Swap Memory Usage": "Swap memória használat",
|
||||
"Network": "Hálózat",
|
||||
"([0-9]{1,}) Interfaces": "$1 interfész",
|
||||
"Storage": "Tároló",
|
||||
"([0-9]{1,}) Partitions": "$1 partíció",
|
||||
"(.*) Used": "$1 használva",
|
||||
"Untitled Peer": "Névtelen társ",
|
||||
"Who are you sending to\\?": "Kinek küldi?",
|
||||
"What\\'s the subject\\?": "Mi a tárgy?",
|
||||
"What\\'s the body\\?": "Mi a szövegtörzs?"
|
||||
}
|
@ -296,7 +296,7 @@
|
||||
"Adding\\.\\.\\.": "Toevoegen...",
|
||||
"Configuration name already exist\\.": "Configuratienaam bestaat al.",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "De configuratienaam mag alleen uit 15 tekens bestaan, inclusief hoofd-/kleine letters, cijfers, onderstrepingsteken, gelijkteken, plusteken, punt en koppelteken.",
|
||||
"Dashboard IP Address \\& Listen Port": "",
|
||||
"Dashboard IP Address \\& Listen Port": "Dashboard IP-adres & Luisterpoort",
|
||||
"Confirm \\& edit restore information": "Bevestigen & herstelinformatie bewerken",
|
||||
"No backup yet, click the button above to create backup\\.": "Nog geen back-up, klik op de knop hierboven om een back-up te maken.",
|
||||
"Are you sure to delete this backup\\?": "Weet je zeker dat je deze back-up wilt verwijderen?",
|
||||
@ -308,62 +308,53 @@
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) succesvol verwijderd. Het verwijderen van $2 peer(s) is mislukt",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) beperkt",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) succesvol beperkt. Het beperken van $2 peer(s) is mislukt",
|
||||
"Table": "",
|
||||
"Search": "",
|
||||
"Hop": "",
|
||||
"Average RTT \\(ms\\)": "",
|
||||
"Min RTT \\(ms\\)": "",
|
||||
"Max RTT \\(ms\\)": "",
|
||||
"You can visit our: ": "",
|
||||
"Official Documentation": "",
|
||||
"Discord Server": "",
|
||||
"Are you sure to restore this backup\\?": "",
|
||||
"Download": "",
|
||||
"Display As": "",
|
||||
"List": "",
|
||||
"Grid": "",
|
||||
"Protocol": "",
|
||||
"Open File": "",
|
||||
"Advanced Options": "",
|
||||
"Allowed IPs Validation": "",
|
||||
"Update Name": "",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "",
|
||||
"Delete current configuration's database table and \\.conf file": "",
|
||||
"Danger Zone": "",
|
||||
"Configuration File": "",
|
||||
"Edit Raw Configuration File": "",
|
||||
"Peer Configuration File": "",
|
||||
"Share with Email": "",
|
||||
"Email Account": "",
|
||||
"Ready": "",
|
||||
"Port": "",
|
||||
"Encryption": "",
|
||||
"No Encryption": "",
|
||||
"Send From": "",
|
||||
"Send Test Email": "",
|
||||
"Email Body Template": "",
|
||||
"Live Preview": "",
|
||||
"Include configuration file as an attachment": "",
|
||||
"Send": "",
|
||||
"Sending\\.\\.\\.": "",
|
||||
"Email sent successfully!": "",
|
||||
"AmneziaWG Peer Setting": "",
|
||||
"System Status": "",
|
||||
"CPU": "",
|
||||
"Memory": "",
|
||||
"Swap Memory": "",
|
||||
"Processes": "",
|
||||
"CPU Usage": "",
|
||||
"Memory Usage": "",
|
||||
"Swap Memory Usage": "",
|
||||
"Network": "",
|
||||
"([0-9]{1,}) Interfaces": "",
|
||||
"Storage": "",
|
||||
"([0-9]{1,}) Partitions": "",
|
||||
"(.*) Used": "",
|
||||
"Untitled Peer": "",
|
||||
"Who are you sending to\\?": "",
|
||||
"What\\'s the subject\\?": "",
|
||||
"What\\'s the body\\?": ""
|
||||
"Search": "Zoeken",
|
||||
"Download": "Download",
|
||||
"Display As": "Weergeven Als",
|
||||
"List": "Lijst",
|
||||
"Grid": "Raster",
|
||||
"Protocol": "Protocol",
|
||||
"Open File": "Bestand Openen",
|
||||
"Advanced Options": "Geavanceerde Opties",
|
||||
"Allowed IPs Validation": "Allowed IPs validatie",
|
||||
"Update Name": "Naam Bijwerken",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "Om deze configuratie bij te werken zal WGDashboard de volgende bewerkingen uitvoeren:",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "Dupliceer de database-tabel en het .conf-bestand van de huidige configuratie met de nieuwe naam",
|
||||
"Delete current configuration's database table and \\.conf file": "Verwijder de database-tabel en het .conf-bestand van de huidige configuratie",
|
||||
"Danger Zone": "Gevarenzone",
|
||||
"Configuration File": "Configuratiebestand",
|
||||
"Edit Raw Configuration File": "Bewerk Ruwe Configuratiebestand",
|
||||
"Peer Configuration File": "Peer-configuratiebestand",
|
||||
"Share with Email": "Delen via E-mail",
|
||||
"Who are you sending to?": "Naar wie stuur je het?",
|
||||
"What's the subject?": "Wat is het onderwerp?",
|
||||
"What's the body?": "Wat is de inhoud?",
|
||||
"Email Account": "E-mailaccount",
|
||||
"Ready": "Klaar",
|
||||
"Port": "Poort",
|
||||
"Encryption": "Encryptie",
|
||||
"No Encryption": "Geen Encryptie",
|
||||
"Send From": "Verzenden vanaf",
|
||||
"Send Test Email": "Testmail verzenden",
|
||||
"Email Body Template": "E-mail Inhoud Template",
|
||||
"Live Preview": "Live voorbeeld",
|
||||
"Include configuration file as an attachment": "Configuratiebestand als bijlage toevoegen",
|
||||
"Send": "Verzenden",
|
||||
"Sending\\.\\.\\.": "Bezig Met Verzenden...",
|
||||
"Email sent successfully!": "E-mail succesvol verzonden",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG Peer-instellingen",
|
||||
"System Status": "Systeemstatus",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Geheugen",
|
||||
"Swap Memory": "Swap-geheugen",
|
||||
"Processes": "Processen",
|
||||
"CPU Usage": "CPU-verbruik",
|
||||
"Memory Usage": "Geheugenverbruik",
|
||||
"Swap Memory Usage": "Swap-geheugenverbruik",
|
||||
"Network": "Netwerk",
|
||||
"([0-9]{1,}) Interfaces": "([0-9]{1,}) Interfaces",
|
||||
"Storage": "Opslag",
|
||||
"([0-9]{1,}) Partitions": "([0-9]{1,}) Partities",
|
||||
"(.*) Used": "(.*) Gebruikt",
|
||||
"Untitled Peer": "Naamloze Peer"
|
||||
}
|
10
src/wgd.sh
10
src/wgd.sh
@ -83,7 +83,7 @@ _installPython(){
|
||||
{ printf "\n\n [Installing Python] [%s] \n\n""$(date)"; } >> ./log/install.txt
|
||||
printf "[WGDashboard] %s Installing Python\n" "$install"
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{ sudo apt update ; sudo apt-get install -y python3 net-tools; printf "\n\n"; } >> ./log/install.txt
|
||||
;;
|
||||
centos|fedora|redhat|rhel|almalinux|rocky)
|
||||
@ -116,7 +116,7 @@ _installPythonVenv(){
|
||||
printf "[WGDashboard] %s Installing Python Virtual Environment\n" "$install"
|
||||
if [ "$pythonExecutable" = "python3" ]; then
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{ sudo apt update ; sudo apt-get install -y python3-venv; printf "\n\n"; } &>> ./log/install.txt
|
||||
;;
|
||||
centos|fedora|redhat|rhel|almalinux|rocky)
|
||||
@ -140,7 +140,7 @@ _installPythonVenv(){
|
||||
esac
|
||||
else
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{ sudo apt-get update; sudo apt-get install ${pythonExecutable}-venv; } &>> ./log/install.txt
|
||||
;;
|
||||
esac
|
||||
@ -162,7 +162,7 @@ _installPythonPip(){
|
||||
then
|
||||
printf "[WGDashboard] %s Installing Python Package Manager (PIP)\n" "$install"
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
if [ "$pythonExecutable" = "python3" ]; then
|
||||
{ sudo apt update ; sudo apt-get install -y python3-pip; printf "\n\n"; } &>> ./log/install.txt
|
||||
else
|
||||
@ -205,7 +205,7 @@ _checkWireguard(){
|
||||
then
|
||||
printf "[WGDashboard] %s Installing WireGuard\n" "$install"
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{
|
||||
sudo apt update && sudo apt-get install -y wireguard;
|
||||
printf "\n[WGDashboard] WireGuard installed on %s.\n\n" "$OS";
|
||||
|
Loading…
x
Reference in New Issue
Block a user