mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-07-20 20:16:57 +00:00
Compare commits
71 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
43fd2fff2b | ||
|
b37c64f5a5 | ||
|
8abadd1070 | ||
|
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
|
||||
|
76
README.md
76
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
|
||||
|
||||
@ -86,4 +84,4 @@ Password: `admin`
|
||||
<img src="https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/configuration.png" alt=""/>
|
||||
<img src="https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/add-peers.png" alt="" />
|
||||
<img src="https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/ping.png" alt=""/>
|
||||
<img src="https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/traceroute.png" alt=""/>
|
||||
<img src="https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/traceroute.png" alt=""/>
|
||||
|
@ -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",
|
||||
@ -84,6 +89,11 @@
|
||||
"lang_name": "Polish",
|
||||
"lang_name_localized": "Polski"
|
||||
},
|
||||
{
|
||||
"lang_id": "pt-br",
|
||||
"lang_name": "Portuguese (Brazil)",
|
||||
"lang_name_localized": "Português (Brasil)"
|
||||
},
|
||||
{
|
||||
"lang_id": "ru",
|
||||
"lang_name": "Russian",
|
||||
|
@ -307,63 +307,63 @@
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "Bei der Massenerstellung wird der Name jedes Peers automatisch generiert, und die erlaubte IP wird der nächsten verfügbaren IP zugewiesen.",
|
||||
"How many peers you want to add\\?": "Wie viele Peers möchtest du hinzufügen?",
|
||||
"Adding\\.\\.\\.": "Füge hinzu...",
|
||||
"Dashboard IP Address \\& Listen Port": "",
|
||||
"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": "",
|
||||
"Dashboard IP Address \\& Listen Port": "Dashboard IP-Adresse & Empfangsport",
|
||||
"Table": "Tabelle",
|
||||
"Search": "Suchen",
|
||||
"Hop": "Hop",
|
||||
"Average RTT \\(ms\\)": "Durchschnittliche RTT ($1ms)",
|
||||
"Min RTT \\(ms\\)": "Min RTT ($1ms)",
|
||||
"Max RTT \\(ms\\)": "Max RTT ($1ms)",
|
||||
"You can visit our: ": "Besuche unsere:",
|
||||
"Official Documentation": "Offizielle Dokumentation",
|
||||
"Discord Server": "Discord Server",
|
||||
"Are you sure to restore this backup\\?": "Bist du sicher, dass du dieses Backup wiederherstellen möchtest?",
|
||||
"Download": "Herunterladen",
|
||||
"Display As": "Anzeigen als",
|
||||
"List": "Liste",
|
||||
"Grid": "Netz",
|
||||
"Protocol": "Protokoll",
|
||||
"Open File": "Datei öffnen",
|
||||
"Advanced Options": "Erweiterte Optionen",
|
||||
"Allowed IPs Validation": "Erlaubte IP\\'s Validierung",
|
||||
"Update Name": "Name ändern",
|
||||
"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": "",
|
||||
"Danger Zone": "Gefahrenzone",
|
||||
"Configuration File": "Konfigurationsdatei",
|
||||
"Edit Raw Configuration File": "Bearbeiten der Konfigurationsdatei",
|
||||
"Peer Configuration File": "Peer Konfigurationsdatei",
|
||||
"Share with Email": "Per E-Mail teilen",
|
||||
"Email Account": "E-Mail Konto",
|
||||
"Ready": "Bereit",
|
||||
"Port": "Port",
|
||||
"Encryption": "Verschlüsselung",
|
||||
"No Encryption": "Keine Verschlüsselung",
|
||||
"Send From": "Gesendet von",
|
||||
"Send Test Email": "Sende Test E-Mail",
|
||||
"Email Body Template": "E-Mail Textvorlage",
|
||||
"Live Preview": "Vorschau",
|
||||
"Include configuration file as an attachment": "Konfigurationsdatei als Anhang beifügen",
|
||||
"Send": "Senden",
|
||||
"Sending\\.\\.\\.": "Senden\\.\\.\\.",
|
||||
"Email sent successfully!": "E-Mail erfolgreich gesendet!",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG Peer-Einstellungen",
|
||||
"System Status": "System Status",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Arbeitsspeicher",
|
||||
"Swap Memory": "",
|
||||
"Processes": "",
|
||||
"CPU Usage": "",
|
||||
"Memory Usage": "",
|
||||
"Swap Memory Usage": "",
|
||||
"Network": "",
|
||||
"([0-9]{1,}) Interfaces": "",
|
||||
"Storage": "",
|
||||
"([0-9]{1,}) Partitions": "",
|
||||
"(.*) Used": "",
|
||||
"Untitled Peer": "",
|
||||
"Processes": "Prozesse",
|
||||
"CPU Usage": "Auslastung",
|
||||
"Memory Usage": "Auslastung",
|
||||
"Swap Memory Usage": "Auslastung",
|
||||
"Network": "Netzwerk",
|
||||
"([0-9]{1,}) Interfaces": "$1 Interfaces",
|
||||
"Storage": "Speicher",
|
||||
"([0-9]{1,}) Partitions": "$1 Partionen",
|
||||
"(.*) Used": "genutzt",
|
||||
"Untitled Peer": "Unbenannter Peer",
|
||||
"Who are you sending to\\?": "",
|
||||
"What\\'s the subject\\?": "",
|
||||
"What\\'s the body\\?": ""
|
||||
}
|
||||
"What\\'s the subject\\?": "Betreff",
|
||||
"What\\'s the body\\?": "Inhalt"
|
||||
}
|
||||
|
@ -305,8 +305,8 @@
|
||||
"Failed to allow access of peer (.*)": "Fallo de habilitar acceso del peer $1",
|
||||
"Failed to save configuration through WireGuard": "Fallo de salvar configuración a través de WireGuard",
|
||||
"Allow access successfully": "Acceso permitido con éxito",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "Eliminados $1 peer(s)",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "Eliminados $1 peer(s) con éxito. Fallo al eliminar $2 peer(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "Restringidos $1 peer(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "Restringidos $1 peer(s) con éxito. Fallo al restringir $2 peer(s)"
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) eliminado(s)",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) eliminado(s) con éxito. Fallo al eliminar $2 peer(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) restringido(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) restringido(s) con éxito. Fallo al restringir $2 peer(s)"
|
||||
}
|
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"
|
||||
}
|
369
src/static/locale/pt-br.json
Normal file
369
src/static/locale/pt-br.json
Normal file
@ -0,0 +1,369 @@
|
||||
{
|
||||
"Welcome to": "Bem vindo ao",
|
||||
"Username": "Usuário",
|
||||
"Password": "Senha",
|
||||
"OTP from your authenticator": "Senha de uso único do seu autenticador",
|
||||
"Sign In": "Entrar",
|
||||
"Signing In\\.\\.\\.": "Entrando...",
|
||||
"Access Remote Server": "Acessar Servidor Remoto",
|
||||
"Server": "Servidor",
|
||||
"Click": "Clique",
|
||||
"Pinging...": "Ping em andamento...",
|
||||
"to add your server": "para adicionar seu servidor",
|
||||
"Server List": "Lista de Servidores",
|
||||
"Sorry, your username or password is incorrect.": "Desculpe, seu usuário ou senha está incorreto.",
|
||||
"Home": "Página principal",
|
||||
"Settings": "Definições",
|
||||
"Tools": "Ferramentas",
|
||||
"Sign Out": "Sair",
|
||||
"Checking for update...": "Verificando atualizações...",
|
||||
"You're on the latest version": "Você está na versão mais recente",
|
||||
"WireGuard Configurations": "Cofigurações do WireGuard",
|
||||
"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.": "Você ainda não tem nenhuma configuração do WireGuard. Verifique a pasta de configurações ou altere-a nas Definições. Por padrão, a pasta é /etc/wireguard.",
|
||||
"Configuration": "Configuração",
|
||||
"Configurations": "Configurações",
|
||||
"Peers Default Settings": "Definições Padrão dos Peers",
|
||||
"Dashboard Theme": "Tema do Painel",
|
||||
"Light": "Claro",
|
||||
"Dark": "Escuro",
|
||||
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "Estes itens serão alterados globalmente, e serão aplicados a todos os QR codes e arquivos de configuração dos peers.",
|
||||
"WireGuard Configurations Settings": "Definições de Configurações do WireGuard",
|
||||
"Configurations Directory": "Diretório de Configurações",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "Certifique-se de remover / no final do caminho. Exemplo: /etc/wireguard",
|
||||
"WGDashboard Account Settings": "Definições da Conta do WGDashboard",
|
||||
"Current Password": "Senha Atual",
|
||||
"New Password": "Nova Senha",
|
||||
"Repeat New Password": "Repetir Nova Senha",
|
||||
"Update Password": "Atualizar Senha",
|
||||
"Multi-Factor Authentication \\(MFA\\)": "Autenticação em duas etapas (MFA)",
|
||||
"Reset": "Redefinir",
|
||||
"Setup": "Definir",
|
||||
"API Keys": "Chaves de API",
|
||||
"API Key": "Chave de API",
|
||||
"Key": "Chave",
|
||||
"Enabled": "Habilitado",
|
||||
"Disabled": "Desabilitado",
|
||||
"No WGDashboard API Key": "Nenhuma Chave de API do WGDashboard",
|
||||
"Expire At": "Expira Em",
|
||||
"Are you sure to delete this API key\\?": "Tem certeza que deseja remover esta chave de API?",
|
||||
"Create API Key": "Criar Chave de API",
|
||||
"When should this API Key expire\\?": "Quando esta Chave de API deve expirar?",
|
||||
"Never Expire": "Nunca Expira",
|
||||
"Don't think that's a good idea": "Não acho que seja uma boa ideia",
|
||||
"Creating\\.\\.\\.": "Criando...",
|
||||
"Create": "Criar",
|
||||
"Status": "Status",
|
||||
"On": "Ligado",
|
||||
"Off": "Desligado",
|
||||
"Turning On\\.\\.\\.": "Ligando...",
|
||||
"Turning Off\\.\\.\\.": "Desligando...",
|
||||
"Address": "Endereço",
|
||||
"Listen Port": "Porta",
|
||||
"Table": "Tabela",
|
||||
"Public Key": "Chave Pública",
|
||||
"Connected Peers": "Peers Conectados",
|
||||
"Total Usage": "Uso Total",
|
||||
"Total Received": "Total Recebido",
|
||||
"Total Sent": "Total Enviado",
|
||||
"Peers Data Usage": "Uso de Dados dos Peers",
|
||||
"Real Time Received Data Usage": "Uso de Dados Recebidos em Tempo Real",
|
||||
"Real Time Sent Data Usage": "Uso de Dados Enviados em Tempo Real",
|
||||
"Peer": "Peer",
|
||||
"Peers": "Peers",
|
||||
"Peer Settings": "Definições do Peer",
|
||||
"Download All": "Baixar Todos",
|
||||
"Search": "Buscar",
|
||||
"Search Peers\\.\\.\\.": "Buscando em Peers...",
|
||||
"Display": "Mostrar",
|
||||
"Sort By": "Ordenar Por",
|
||||
"Refresh Interval": "Intervalo de Atualização",
|
||||
"Name": "Nome",
|
||||
"Allowed IPs": "IPs Permitidos",
|
||||
"Restricted": "Restrito",
|
||||
"(.*) Seconds": "$1 Segundos",
|
||||
"(.*) Minutes": "$1 Minutos",
|
||||
"Configuration Settings": "Definição de Configuração",
|
||||
"Peer Jobs": "Jobs do Peer",
|
||||
"Active Jobs": "Jobs Ativos",
|
||||
"All Active Jobs": "Todos os Jobs Ativos",
|
||||
"Logs": "Logs",
|
||||
"Private Key": "Chave Privada",
|
||||
"\\(Required for QR Code and Download\\)": "(Obrigatório para QR Code e Download)",
|
||||
"\\(Required\\)": "(Obrigatório)",
|
||||
"Endpoint Allowed IPs": "Endeços IP Permitidos do Endpoint",
|
||||
"DNS": "DNS",
|
||||
"Optional Settings": "Definições Opcionais",
|
||||
"Pre-Shared Key": "Chave Pré-Compartilhada",
|
||||
"MTU": "MTU",
|
||||
"Persistent Keepalive": "Keepalive Persistente",
|
||||
"Reset Data Usage": "Redefinir Uso de Dados",
|
||||
"Total": "Total",
|
||||
"Sent": "Enviado",
|
||||
"Received": "Recebido",
|
||||
"Revert": "Reverter",
|
||||
"Save Peer": "Salvar Peer",
|
||||
"QR Code": "QR Code",
|
||||
"Schedule Jobs": "Agendar Jobs",
|
||||
"Job": "Job",
|
||||
"Job ID": "ID do Job",
|
||||
"Unsaved Job": "Job não salvo",
|
||||
"This peer does not have any job yet\\.": "Este peer ainda não tem nenhum job.",
|
||||
"if": "se",
|
||||
"is": "é",
|
||||
"then": "então",
|
||||
"larger than": "maior que",
|
||||
"Date": "Data",
|
||||
"Restrict Peer": "Peer Restrito",
|
||||
"Delete Peer": "Remover Peer",
|
||||
"Edit": "Editar",
|
||||
"Delete": "Remover",
|
||||
"Deleting...": "Removendo...",
|
||||
"Cancel": "Cancelar",
|
||||
"Save": "Salvar",
|
||||
"No active job at the moment\\.": "Nenhum job ativo no momento.",
|
||||
"Jobs Logs": "Logs de Jobs",
|
||||
"Updated at": "Atualizado em",
|
||||
"Refresh": "Atualizar",
|
||||
"Filter": "Filtrar",
|
||||
"Success": "Sucesso",
|
||||
"Failed": "Falhou",
|
||||
"Log ID": "ID do Log",
|
||||
"Message": "Mensagem",
|
||||
"Share Peer": "Compartilhar Peer",
|
||||
"Currently the peer is not sharing": "No momento o peer não está compartilhando",
|
||||
"Sharing\\.\\.\\.": "Compartilhando...",
|
||||
"Start Sharing": "Iniciar Compartilhamento",
|
||||
"Stop Sharing\\.\\.\\.": "Parar Compartilhamento...",
|
||||
"Stop Sharing": "Parar Compartilhamento",
|
||||
"Access Restricted": "Acesso Restrito",
|
||||
"Restrict Access": "Restringir Acesso",
|
||||
"Restricting\\.\\.\\.": "Restringindo...",
|
||||
"Allow Access": "Permitir Acesso",
|
||||
"Allowing Access\\.\\.\\.": "Permitindo Acesso...",
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "Download & QR Code não estão disponíveis devido à ausência de chave privada definida para este peer",
|
||||
"Add Peers": "Adicionar Peers",
|
||||
"Bulk Add": "Adicionar Vários",
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "Ao gerar vários Peers, o nome de cada peer será gerado automaticamente, e o IP será atribuído ao próximo IP disponível.",
|
||||
"How many peers you want to add\\?": "Quantos peers você quer adicionar?",
|
||||
"You can add up to (.*) peers": "Você pode adicionar até $1 peers",
|
||||
"Use your own Private and Public Key": "Use sua própria Chave Privada e Pública",
|
||||
"Enter IP Address/CIDR": "Digite Endereço IP/CIDR",
|
||||
"IP Address/CIDR": "Endereço IP/CIDR",
|
||||
"or": "ou",
|
||||
"Pick Available IP": "Selecione um IP Disponível",
|
||||
"No available IP containing": "Nenhum IP disponível contendo",
|
||||
"Add": "Adicionar",
|
||||
"Adding\\.\\.\\.": "Adcionando...",
|
||||
"Failed to check available update": "Erro ao verificar atualização disponível",
|
||||
"Nice to meet you!": "Bom te conhecer!",
|
||||
"Please fill in the following fields to finish setup": "Preencha os seguintes campos para finalizar a configuração",
|
||||
"Create an account": "Crie uma conta",
|
||||
"Enter an username you like": "Digite um nome de usuário",
|
||||
"Enter a password": "Digite uma senha",
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(Pelo menos 8 caracteres e certifique-se de que seja forte o suficiente!)",
|
||||
"Confirm password": "Confirme a senha",
|
||||
"Next": "Próximo",
|
||||
"Saving\\.\\.\\.": "Salvando...",
|
||||
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. Escaneie o seguinte QR Code para gerar um código de uso único com um autenticador de sua escolha",
|
||||
"Or you can click the link below:": "Ou clique no link abaixo:",
|
||||
"2\\. Enter the TOTP generated by your authenticator to verify": "2. Digite o código de uso único gerado pelo seu autenticador para verificar",
|
||||
"TOTP verified!": "Código de uso único verificado!",
|
||||
"I don't need MFA": "Não preciso de autenticação em duas etapas (MFA)",
|
||||
"Complete": "Completar",
|
||||
"(v[0-9.]{1,}) is now available for update!": "$1 está disponível para atualização!",
|
||||
"Current Version:": "Versão Atual:",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "Ops... Este link é inválido ou expirou.",
|
||||
"Scan QR Code with the WireGuard App to add peer": "Escaneie o QR Code com o App WireGuard para adicionar o peer",
|
||||
"or click the button below to download the ": "ou clique no botão abaixo para baixar o ",
|
||||
" file": " arquivo",
|
||||
"FROM ": "DE ",
|
||||
"(.*) is on": "$1 está ligado",
|
||||
"(.*) is off": "$1 está desligado",
|
||||
"Allowed IPs is invalid": "IPs Permitidos inválido",
|
||||
"Peer created successfully": "Peer criado com sucesso",
|
||||
"Please fill in all required box": "Preencha todas as caixas obrigatórias",
|
||||
"Please specify amount of peers you want to add": "Especifique a quantidade de peers que você deseja adicionar",
|
||||
"No more available IP can assign": "Não há mais IPs disponíveis para atribuir",
|
||||
"The maximum number of peers can add is (.*)": "O número máximo de peers que podem ser adicionados é $1",
|
||||
"Generating key pairs by bulk failed": "Gerar vários pares de chaves falhou",
|
||||
"Failed to add peers in bulk": "Erro ao adicionar múltiplos peers",
|
||||
"This peer already exist": "Este peer já existe",
|
||||
"This IP is not available: (.*)": "Este IP não está disponível: $1",
|
||||
"Configuration does not exist": "Configuração não existe",
|
||||
"Peer does not exist": "Peer não existe",
|
||||
"Please provide a valid configuration name": "Informe um nome de configuração válido",
|
||||
"Peer saved": "Peer salvo",
|
||||
"Allowed IPs already taken by another peer": "IPs Permitidos já estão sendo usados por outro peer",
|
||||
"Endpoint Allowed IPs format is incorrect": "Formato dos IPs Permitidos do Endpoint está incorreta",
|
||||
"DNS format is incorrect": "Formato do DNS está incorreto",
|
||||
"MTU format is not correct": "Formato do MTU está incorreto",
|
||||
"Persistent Keepalive format is not correct": "Formato do Keepalive Persistente está incorreto",
|
||||
"Private key does not match with the public key": "Chave privada não corresponde com a chave pública",
|
||||
"Update peer failed when updating Pre-Shared Key": "Atualização do peer falhou ao atualizar a Chave Pré-Compartilhada",
|
||||
"Update peer failed when updating Allowed IPs": "Atualização do peer falhou ao atualizar os IPs Permitidos",
|
||||
"Update peer failed when saving the configuration": "Atualização do peer falhou ao salvar a configuração",
|
||||
"Peer data usage reset successfully": "Uso de dados do peer redefinido com sucesso",
|
||||
"Peer download started": "Download do peer iniciado",
|
||||
"Please specify one or more peers": "Especifique um ou mais peers",
|
||||
"Share link failed to create. Reason: (.*)": "Erro ao criar link de compartilhamento. Motivo: $1",
|
||||
"Link expire date updated": "Data de expiração do link atualizada",
|
||||
"Link expire date failed to update. Reason: (.*)": "Erro ao atualizar a data de expiração do link. Motivo: $1",
|
||||
"Peer job saved": "Job do peer salvo",
|
||||
"Please specify job": "Especifique o job",
|
||||
"Please specify peer and configuration": "Especifique o peer e a configuração",
|
||||
"Peer job deleted": "Job do peer removido",
|
||||
"API Keys function is successfully enabled": "Recurso de Chaves API está habilitado",
|
||||
"API Keys function is successfully disabled": "Recurso de Chaves API está desabilitado",
|
||||
"API Keys function is failed to enable": "Falha ao habilitar recurso de Chaves API",
|
||||
"API Keys function is failed to disable": "Falha ao desabilitar recurso de Chaves API",
|
||||
"WGDashboard API Keys function is disabled": "Recurso de Chaves de API do WGDashboard está desabilitada",
|
||||
"WireGuard configuration path saved": "Caminho do arquivo de configuração WireGuard salvo",
|
||||
"API Key deleted": "Chave de API removida",
|
||||
"API Key created": "Chave de API criada",
|
||||
"Sign in session ended, please sign in again": "Sessão encerrada. Por favor, entre novamente",
|
||||
"Please specify an IP Address (v4/v6)": "Especifique um endereço IP (v4/v6)",
|
||||
"Please provide ipAddress and count": "Especifique endereço IP e quantidade",
|
||||
"Please provide ipAddress": "Especifique endereço IP",
|
||||
"Dashboard Language": "Idioma do Painel",
|
||||
"Dashboard language update failed": "Atualização do idioma do painel falhou",
|
||||
"Peer Remote Endpoint": "Endpoint Remoto do Peer",
|
||||
"New Configuration": "Nova Configuração",
|
||||
"Configuration Name": "Nome de Configuração",
|
||||
"Configuration name is invalid. Possible reasons:": "Nome de configuração é inválido. Possíveis razões:",
|
||||
"Configuration name already exist\\.": "Nome de configuração já existe\\.",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "Nome de configuração pode conter apenas 15 caracteres alfanuméricos, sublinhado, igual, mais, ponto e hífen.",
|
||||
"Invalid Port": "Porta Inválida",
|
||||
"Save Configuration": "Salvar Configuração",
|
||||
"IP Address/CIDR is invalid": "Endereço IP/CIDR inválido",
|
||||
"IP Address": "Endereço IP",
|
||||
"Enter IP Address / Hostname": "Digite Endereço IP / Nome do Host",
|
||||
"IP Address / Hostname": "Endereço IP / Nome do Host",
|
||||
"Dashboard IP Address \\& Listen Port": "Endereço IP do Painel e Porta",
|
||||
"Count": "Quantidade",
|
||||
"Hop": "Salto",
|
||||
"Average RTT \\(ms\\)": "RTT médio (ms)",
|
||||
"Min RTT \\(ms\\)": "RTT mínimo (ms)",
|
||||
"Max RTT \\(ms\\)": "RTT máximo (ms)",
|
||||
"Geolocation": "Geolocalização",
|
||||
"Is Alive": "Está Ativo",
|
||||
"Average / Min / Max Round Trip Time": "Média / Mínimo / Máximo do Tempo de Ida e Volta (Round Trip)",
|
||||
"Sent / Received / Lost Package": "Enviado / Recebido / Pacotes Perdidos",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "É necessário reiniciar o WGDashboard para aplicar as mudanças de Endereço IP e Porta",
|
||||
"Restore Configuration": "Restaurar Configuração",
|
||||
"Step (.*)": "Passo (.*)",
|
||||
"Select a backup you want to restore": "Selecione o backup que deseja restaurar",
|
||||
"Click to change a backup": "Clique para alterar um backup",
|
||||
"Selected Backup": "Backup Selecionado",
|
||||
"You don't have any configuration to restore": "Você não tem configurações para restaurar",
|
||||
"Help": "Ajuda",
|
||||
"You can visit our: ": "Você pode visitar nosso: ",
|
||||
"Official Documentation": "Documentação Oficial",
|
||||
"Discord Server": "Servidor do Discord",
|
||||
"Backup": "Backup",
|
||||
"([0-9].*) Backups?": "([0-9].*) Backups?",
|
||||
"Yes": "Sim",
|
||||
"No": "Não",
|
||||
"Backup not selected": "Backup não selecionado",
|
||||
"Confirm \\& edit restore information": "Confirmar \\& editar informações de restauração",
|
||||
"(.*) Available IP Address": "$1 endereço IP disponível",
|
||||
"Database File": "Arquivo de Banco de Dados",
|
||||
"Contain": "Contém",
|
||||
"Restricted Peers?": "Peers Restritos?",
|
||||
"Restore": "Restaurar",
|
||||
"Restoring": "Restaurando",
|
||||
"WGDashboard Settings": "Configurações do WGDashboard",
|
||||
"Peers Settings": "Configurações dos Peers",
|
||||
"WireGuard Configuration Settings": "Definições de Configuração WireGuard",
|
||||
"Appearance": "Aparência",
|
||||
"Theme": "Tema",
|
||||
"Language": "Idioma",
|
||||
"Account Settings": "Definições de Conta",
|
||||
"Peer Default Settings": "Definições Padrão do Peer",
|
||||
"Toggle When Start Up": "Ativar Quanto Iniciar",
|
||||
"Other Settings": "Outras Definições",
|
||||
"Select Peers": "Selecione Peers",
|
||||
"Backup & Restore": "Backup e Restauração",
|
||||
"Delete Configuration": "Remover Configuração",
|
||||
"Create Backup": "Criar Backup",
|
||||
"No backup yet, click the button above to create backup\\.": "Nenhum backup, clique no botão acima para criar um backup.",
|
||||
"Are you sure to delete this backup\\?": "Tem certeza de que deseja remover este backup?",
|
||||
"Are you sure to restore this backup\\?": "Tem certeza de que deseja restaurar este backup?",
|
||||
"Backup Date": "Data do Backup",
|
||||
"File": "Arquivo",
|
||||
"Are you sure to delete this configuration\\?": "Tem certeza de que deseja remover esta configuração?",
|
||||
"Once you deleted this configuration\\:": "Uma vez que remover esta configuração:",
|
||||
"All connected peers will get disconnected": "Todos peers conectados serão desconectados",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "Ambos tabela do banco de dados e arquivo de configuração (.conf) desta configuração serão removidos",
|
||||
"Checking backups...": "Verificando backups...",
|
||||
"This configuration have ([0-9].*) backups": "Esta configuração tem $1 backups",
|
||||
"This configuration have no backup": "Esta configuração não tem backups",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "Se você tem certeza, confirme o nome da configuração abaixo e clique em Remover",
|
||||
"Select All": "Selecionar Todos",
|
||||
"Clear Selection": "Limpar Seleção",
|
||||
"([0-9].*) Peers?": "$1 Peers?",
|
||||
"Download": "Baixar",
|
||||
"Downloading": "Baixando",
|
||||
"Download Finished": "Download Concluído",
|
||||
"Done": "Pronto",
|
||||
"Are you sure to delete": "Tem certeza de que deseja remover",
|
||||
"Are you sure to delete this peer\\?": "Tem certeza de que deseja remover este peer?",
|
||||
"Configuration deleted": "Configuração removida",
|
||||
"Configuration saved": "Configuração salva",
|
||||
"WGDashboard language update failed": "Falha ao atualizar idioma do WGDashboard",
|
||||
"Configuration restored": "Configuração restaurada",
|
||||
"Allowed IP already taken by another peer": "Endereço IP já está em uso por outro peer",
|
||||
"Failed to allow access of peer (.*)": "Falha ao permitir acesso ao peer $1",
|
||||
"Failed to save configuration through WireGuard": "Falha ao salvar configuração pelo WGDashboard",
|
||||
"Allow access successfully": "Acesso permitido com sucesso",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) removido(s)",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) removido(s) com sucesso. Falha ao remover $2 peer(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) restringido(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) restringido(s) com sucesso. Falha ao restringir $2 peer(s)",
|
||||
"Display As": "Mostrar Como",
|
||||
"List": "Lista",
|
||||
"Grid": "Grid",
|
||||
"Protocol": "Protocolo",
|
||||
"Open File": "Abrir Arquivo",
|
||||
"Advanced Options": "Opções Avançadas",
|
||||
"Allowed IPs Validation": "Validação de IPs Permitidos",
|
||||
"Update Name": "Atualizar Nome",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "Para atualizar este nome de configuração, o WGDashboard vaoi executar as seguintes operações:",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "Duplicar tabela do banco de dados e arquivo .conf da configuração atual com novo nome",
|
||||
"Delete current configuration's database table and \\.conf file": "Remover tabela do banco de dados e arquivo .conf da configuração atual",
|
||||
"Danger Zone": "Zona de Perigo",
|
||||
"Configuration File": "Arquivo de Configuração",
|
||||
"Edit Raw Configuration File": "Editar Conteúdo do Arquivo de Configuração",
|
||||
"Peer Configuration File": "Arquivo de Configuração do Peer",
|
||||
"Share with Email": "Compartilhar com Email",
|
||||
"Email Account": "Conta de Email",
|
||||
"Ready": "Pronto",
|
||||
"Port": "Porta",
|
||||
"Encryption": "Criptografia",
|
||||
"No Encryption": "Sem Criptografia",
|
||||
"Send From": "Enviar de",
|
||||
"Send Test Email": "Enviar Email de Teste",
|
||||
"Email Body Template": "Modelo de Corpo de Email",
|
||||
"Live Preview": "Prévia ao vivo",
|
||||
"Include configuration file as an attachment": "Incluir arquivo de configuração como anexo",
|
||||
"Send": "Enviar",
|
||||
"Sending\\.\\.\\.": "Enviando...",
|
||||
"Email sent successfully!": "Email enviado com sucesso!",
|
||||
"AmneziaWG Peer Setting": "Definições de Peer do AmneziaWG",
|
||||
"System Status": "Status do Sistema",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Memória",
|
||||
"Swap Memory": "Memória Swap",
|
||||
"Processes": "Processos",
|
||||
"CPU Usage": "Uso de CPU",
|
||||
"Memory Usage": "Uso de Memória",
|
||||
"Swap Memory Usage": "Uso de Memória Swap",
|
||||
"Network": "Rede",
|
||||
"([0-9]{1,}) Interfaces": "$1 Interfaces",
|
||||
"Storage": "Armazenamento",
|
||||
"([0-9]{1,}) Partitions": "$1 Repartições",
|
||||
"(.*) Used": "$1 Usado",
|
||||
"Untitled Peer": "Peer Sem Nome",
|
||||
"Who are you sending to\\?": "Para quem você está enviando?",
|
||||
"What\\'s the subject\\?": "Qual o título?",
|
||||
"What\\'s the body\\?": "Qual a mensagem?"
|
||||
}
|
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