mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-06-27 16:56:57 +00:00
Merge branch 'main' into sqlalchemy
This commit is contained in:
commit
5d8203f99c
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'
|
24
.github/workflows/stale.yml
vendored
Normal file
24
.github/workflows/stale.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
# 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:
|
||||
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 update for 20 days'
|
||||
stale-pr-message: 'Stale pull request message'
|
||||
stale-issue-label: 'stale'
|
||||
days-before-stale: 30
|
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
|
||||
|
68
README.md
68
README.md
@ -4,20 +4,21 @@
|
||||
> [!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">
|
||||
@ -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=""/>
|
||||
|
@ -28,9 +28,9 @@ from modules.DashboardConfig import DashboardConfig
|
||||
from modules.WireguardConfiguration import WireguardConfiguration
|
||||
from modules.AmneziaWireguardConfiguration import AmneziaWireguardConfiguration
|
||||
|
||||
|
||||
SystemStatus = SystemStatus()
|
||||
|
||||
|
||||
CONFIGURATION_PATH = os.getenv('CONFIGURATION_PATH', '.')
|
||||
app = Flask("WGDashboard", template_folder=os.path.abspath("./static/app/dist"))
|
||||
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 5206928
|
||||
@ -107,7 +107,7 @@ def auth_req():
|
||||
else:
|
||||
DashboardConfig.APIAccessed = False
|
||||
whiteList = [
|
||||
'/static/', 'validateAuthentication', 'authenticate', 'getDashboardConfiguration',
|
||||
'/static/', 'validateAuthentication', 'authenticate',
|
||||
'getDashboardTheme', 'getDashboardVersion', 'sharePeer/get', 'isTotpEnabled', 'locale',
|
||||
'/fileDownload'
|
||||
]
|
||||
@ -1190,13 +1190,19 @@ def peerInformationBackgroundThread():
|
||||
time.sleep(10)
|
||||
while True:
|
||||
with app.app_context():
|
||||
for c in WireguardConfigurations.values():
|
||||
if c.getStatus():
|
||||
c.getPeersTransfer()
|
||||
c.getPeersLatestHandshake()
|
||||
c.getPeersEndpoint()
|
||||
c.getPeersList()
|
||||
c.getRestrictedPeersList()
|
||||
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-DAYCBooh.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-DAYCBooh.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-DAYCBooh.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-BL2XSmCp.js";import{d as c}from"./dayjs.min-BoMblaEq.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-DAYCBooh.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-DAYCBooh.js";import{L as T}from"./localeText-BL2XSmCp.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-CYe1Q_PZ.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-DAYCBooh.js";import{L as w}from"./localeText-BL2XSmCp.js";import"./vue-datepicker-DgRfNJkj.js";import"./dayjs.min-BoMblaEq.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-CYe1Q_PZ.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-DAYCBooh.js";import{L as x}from"./localeText-BL2XSmCp.js";import"./vue-datepicker-DgRfNJkj.js";import"./dayjs.min-BoMblaEq.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-ed518d45]{width:100%!important;height:auto!important;aspect-ratio:1/1}}
|
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 +0,0 @@
|
||||
import{b as n}from"./browser-CjSdxGTc.js";import{L as c}from"./localeText-BL2XSmCp.js";import{_ as l,D as p,g as m,k as _,a as r,c as d,b as e,d as u,n as h,e as f}from"./index-DAYCBooh.js";const g={name:"peerQRCode",components:{LocaleText:c},props:{selectedPeer:Object},setup(){return{dashboardStore:p()}},data(){return{loading:!0}},mounted(){m("/api/downloadPeer/"+this.$route.params.id,{id:this.selectedPeer.id},o=>{if(this.loading=!1,o.status)if(this.selectedPeer.configuration.Protocol==="awg"){let t={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};n.toCanvas(document.querySelector("#qrcode"),btoa(JSON.stringify(t)),s=>{s&&console.error(s)})}else n.toCanvas(document.querySelector("#qrcode"),o.data.file,t=>{t&&console.error(t)});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"},S={class:"mb-0"},x={class:"card-body p-4"},y={class:"d-flex"},L={key:0,class:"spinner-border m-auto",role:"status"};function k(o,t,s,q,a,N){const i=_("LocaleText");return r(),d("div",b,[e("div",v,[e("div",C,[e("div",w,[e("div",P,[e("h4",S,[u(i,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=$=>this.$emit("close"))})]),e("div",x,[e("div",y,[e("canvas",{id:"qrcode",class:h(["rounded-3 shadow animate__animated animate__fadeIn animate__faster",{"d-none":a.loading}])},null,2),a.loading?(r(),d("div",L,t[1]||(t[1]=[e("span",{class:"visually-hidden"},"Loading...",-1)]))):f("",!0)])])])])])])}const j=l(g,[["render",k],["__scopeId","data-v-ed518d45"]]);export{j 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-DAYCBooh.js";import{L as T}from"./localeText-BL2XSmCp.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-BL2XSmCp.js";import{a as t,c as n,f as i,i as s,e as a}from"./index-DAYCBooh.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-DAYCBooh.js";import{L as g}from"./localeText-BL2XSmCp.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-DAYCBooh.js";import{b as v}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-BL2XSmCp.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-DAYCBooh.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-DAYCBooh.js";import{b as x}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-BL2XSmCp.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-DAYCBooh.js";import{O as A}from"./osmap-B5p_6XVW.js";import{L as w}from"./localeText-BL2XSmCp.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-DAYCBooh.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>
|
||||
|
@ -36,7 +36,7 @@ const resetForm = () => {
|
||||
dataChanged.value = false;
|
||||
Object.assign(data, JSON.parse(JSON.stringify(props.configurationInfo)))
|
||||
}
|
||||
const emit = defineEmits(["changed", "close", "refresh"])
|
||||
const emit = defineEmits(["changed", "close", "refresh", "dataChanged"])
|
||||
const saveForm = () => {
|
||||
saving.value = true
|
||||
fetchPost("/api/updateWireguardConfiguration", data, (res) => {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -1,4 +1,9 @@
|
||||
[
|
||||
{
|
||||
"lang_id": "id",
|
||||
"lang_name": "Bahasa Indonesia",
|
||||
"lang_name_localized": "Bahasa Indonesia"
|
||||
},
|
||||
{
|
||||
"lang_id": "zh-cn",
|
||||
"lang_name": "Chinese (Simplified)",
|
||||
@ -59,6 +64,11 @@
|
||||
"lang_name": "German",
|
||||
"lang_name_localized": "Deutsch"
|
||||
},
|
||||
{
|
||||
"lang_id": "hu-hu",
|
||||
"lang_name": "Hungarian",
|
||||
"lang_name_localized": "Magyar"
|
||||
},
|
||||
{
|
||||
"lang_id": "it-it",
|
||||
"lang_name": "Italian",
|
||||
|
369
src/static/locale/hu-hu.json
Normal file
369
src/static/locale/hu-hu.json
Normal file
@ -0,0 +1,369 @@
|
||||
{
|
||||
"Welcome to": "Üdvözlünk a(z) ",
|
||||
"Username": "Felhasználónév",
|
||||
"Password": "Jelszó",
|
||||
"OTP from your authenticator": "Egyszer használatos kód (OTP) az autentikátorodból",
|
||||
"Sign In": "Bejelentkezés",
|
||||
"Signing In\\.\\.\\.": "Bejelentkezés folyamatban...",
|
||||
"Access Remote Server": "Távoli szerver elérése",
|
||||
"Server": "Szerver",
|
||||
"Click": "Kattintson",
|
||||
"Pinging...": "Pingelés...",
|
||||
"to add your server": "a szerver hozzáadásához",
|
||||
"Server List": "Szerverlista",
|
||||
"Sorry, your username or password is incorrect.": "Sajnáljuk, a felhasználónév vagy a jelszó hibás.",
|
||||
"Home": "Főoldal",
|
||||
"Settings": "Beállítások",
|
||||
"Tools": "Eszközök",
|
||||
"Sign Out": "Kijelentkezés",
|
||||
"Checking for update...": "Frissítések ellenőrzése...",
|
||||
"You're on the latest version": "Már a legfrissebb verziót használja",
|
||||
"WireGuard Configurations": "WireGuard konfigurációk",
|
||||
"You don't have any WireGuard configurations yet. Please check the configuration folder or change it in Settings. By default the folder is /etc/wireguard.": "Még nincsenek WireGuard konfigurációi. Kérjük, ellenőrizze a konfigurációs mappát, vagy módosítsa a beállításoknál. Alapértelmezés szerint a mappa a /etc/wireguard.",
|
||||
"Configuration": "Konfiguráció",
|
||||
"Configurations": "Konfigurációk",
|
||||
"Peers Default Settings": "Alapértelmezett társ beállítások",
|
||||
"Dashboard Theme": "Vezérlőpanel téma",
|
||||
"Light": "Világos",
|
||||
"Dark": "Sötét",
|
||||
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "Ez globálisan változik, és minden társ QR-kódjára és konfigurációs fájljára alkalmazva lesz.",
|
||||
"WireGuard Configurations Settings": "WireGuard konfiguráció beállításai",
|
||||
"Configurations Directory": "Konfigurációs könyvtár",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "Ne felejtse el eltávolítani a '/' karaktert az útvonal végéről. (pl. /etc/wireguard)",
|
||||
"WGDashboard Account Settings": "WGDashboard fiókbeállítások",
|
||||
"Current Password": "Jelenlegi jelszó",
|
||||
"New Password": "Új jelszó",
|
||||
"Repeat New Password": "Új jelszó ismétlése",
|
||||
"Update Password": "Jelszó frissítése",
|
||||
"Multi-Factor Authentication \\(MFA\\)": "Többfaktoros hitelesítés (MFA)",
|
||||
"Reset": "Visszaállítás",
|
||||
"Setup": "Beállítás",
|
||||
"API Keys": "API-kulcsok",
|
||||
"API Key": "API-kulcs",
|
||||
"Key": "Kulcs",
|
||||
"Enabled": "Engedélyezve",
|
||||
"Disabled": "Letiltva",
|
||||
"No WGDashboard API Key": "Nincs WGDashboard API-kulcs",
|
||||
"Expire At": "Lejár:",
|
||||
"Are you sure to delete this API key\\?": "Biztosan törölni szeretné ezt az API-kulcsot?",
|
||||
"Create API Key": "API-kulcs létrehozása",
|
||||
"When should this API Key expire\\?": "Mikor járjon le ez az API-kulcs?",
|
||||
"Never Expire": "Soha ne járjon le",
|
||||
"Don't think that's a good idea": "Szerintem ez nem jó ötlet",
|
||||
"Creating\\.\\.\\.": "Létrehozás...",
|
||||
"Create": "Létrehozás",
|
||||
"Status": "Állapot",
|
||||
"On": "Bekapcsolva",
|
||||
"Off": "Kikapcsolva",
|
||||
"Turning On\\.\\.\\.": "Bekapcsolás...",
|
||||
"Turning Off\\.\\.\\.": "Kikapcsolás...",
|
||||
"Address": "Cím",
|
||||
"Listen Port": "Port hallgatása",
|
||||
"Table": "Táblázat",
|
||||
"Public Key": "Nyilvános kulcs",
|
||||
"Connected Peers": "Csatlakozott társak",
|
||||
"Total Usage": "Teljes használat",
|
||||
"Total Received": "Összes fogadott",
|
||||
"Total Sent": "Összes elküldött",
|
||||
"Peers Data Usage": "Társak adatforgalma",
|
||||
"Real Time Received Data Usage": "Valós idejű fogadott forgalom",
|
||||
"Real Time Sent Data Usage": "Valós idejű elküldött forgalom",
|
||||
"Peer": "Társ",
|
||||
"Peers": "Társak",
|
||||
"Peer Settings": "Társ beállítások",
|
||||
"Download All": "Összes letöltése",
|
||||
"Search": "Keresés",
|
||||
"Search Peers\\.\\.\\.": "Társak keresése...",
|
||||
"Display": "Megjelenítés",
|
||||
"Sort By": "Rendezés",
|
||||
"Refresh Interval": "Frissítési időköz",
|
||||
"Name": "Név",
|
||||
"Allowed IPs": "Engedélyezett IP-k",
|
||||
"Restricted": "Korlátozott",
|
||||
"(.*) Seconds": "$1 másodperc",
|
||||
"(.*) Minutes": "$1 perc",
|
||||
"Configuration Settings": "Konfiguráció beállítások",
|
||||
"Peer Jobs": "Társ feladatok",
|
||||
"Active Jobs": "Aktív feladatok",
|
||||
"All Active Jobs": "Összes aktív feladat",
|
||||
"Logs": "Naplók",
|
||||
"Private Key": "Privát kulcs",
|
||||
"\\(Required for QR Code and Download\\)": "(Szükséges a QR-kódhoz és letöltéshez)",
|
||||
"\\(Required\\)": "(Szükséges)",
|
||||
"Endpoint Allowed IPs": "Végpont engedélyezett IP-k",
|
||||
"DNS": "DNS",
|
||||
"Optional Settings": "Opcionális beállítások",
|
||||
"Pre-Shared Key": "Előre megosztott kulcs",
|
||||
"MTU": "MTU",
|
||||
"Persistent Keepalive": "Folyamatos keepalive",
|
||||
"Reset Data Usage": "Adatforgalom visszaállítása",
|
||||
"Total": "Összesen",
|
||||
"Sent": "Elküldött",
|
||||
"Received": "Fogadott",
|
||||
"Revert": "Visszaállítás",
|
||||
"Save Peer": "Társ mentése",
|
||||
"QR Code": "QR-kód",
|
||||
"Schedule Jobs": "Feladatok ütemezése",
|
||||
"Job": "Feladat",
|
||||
"Job ID": "Feladat azonosító",
|
||||
"Unsaved Job": "Mentetlen feladat",
|
||||
"This peer does not have any job yet\\.": "Ennek a társnak még nincs feladata.",
|
||||
"if": "ha",
|
||||
"is": "van",
|
||||
"then": "akkor",
|
||||
"larger than": "nagyobb mint",
|
||||
"Date": "Dátum",
|
||||
"Restrict Peer": "Társ korlátozása",
|
||||
"Delete Peer": "Társ törlése",
|
||||
"Edit": "Szerkesztés",
|
||||
"Delete": "Törlés",
|
||||
"Deleting...": "Törlés...",
|
||||
"Cancel": "Mégse",
|
||||
"Save": "Mentés",
|
||||
"No active job at the moment\\.": "Jelenleg nincs aktív feladat.",
|
||||
"Jobs Logs": "Feladatnaplók",
|
||||
"Updated at": "Frissítve:",
|
||||
"Refresh": "Frissítés",
|
||||
"Filter": "Szűrés",
|
||||
"Success": "Sikeres",
|
||||
"Failed": "Sikertelen",
|
||||
"Log ID": "Napló azonosító",
|
||||
"Message": "Üzenet",
|
||||
"Share Peer": "Társ megosztása",
|
||||
"Currently the peer is not sharing": "A társ jelenleg nincs megosztva",
|
||||
"Sharing\\.\\.\\.": "Megosztás...",
|
||||
"Start Sharing": "Megosztás indítása",
|
||||
"Stop Sharing\\.\\.\\.": "Megosztás leállítása...",
|
||||
"Stop Sharing": "Megosztás leállítása",
|
||||
"Access Restricted": "Hozzáférés korlátozva",
|
||||
"Restrict Access": "Hozzáférés korlátozása",
|
||||
"Restricting\\.\\.\\.": "Korlátozás...",
|
||||
"Allow Access": "Hozzáférés engedélyezése",
|
||||
"Allowing Access\\.\\.\\.": "Engedélyezés...",
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "Letöltés és QR-kód nem érhető el, mert nincs beállított privát kulcs ehhez a társhoz",
|
||||
"Add Peers": "Társ hozzáadása",
|
||||
"Bulk Add": "Tömeges hozzáadás",
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "Társak tömeges hozzáadásakor minden társ neve automatikusan generálódik, és az engedélyezett IP a következő elérhető IP lesz.",
|
||||
"How many peers you want to add\\?": "Hány társat szeretne hozzáadni?",
|
||||
"You can add up to (.*) peers": "Legfeljebb $1 társat adhat hozzá",
|
||||
"Use your own Private and Public Key": "Használja saját privát és nyilvános kulcsát",
|
||||
"Enter IP Address/CIDR": "Adja meg az IP-címet/CIDR-t",
|
||||
"IP Address/CIDR": "IP-cím/CIDR",
|
||||
"or": "vagy",
|
||||
"Pick Available IP": "Elérhető IP kiválasztása",
|
||||
"No available IP containing": "Nincs elérhető IP, amely tartalmazza",
|
||||
"Add": "Hozzáadás",
|
||||
"Adding\\.\\.\\.": "Hozzáadás...",
|
||||
"Failed to check available update": "Nem sikerült ellenőrizni a frissítéseket",
|
||||
"Nice to meet you!": "Örülök, hogy megismerhetlek!",
|
||||
"Please fill in the following fields to finish setup": "Töltse ki az alábbi mezőket a beállítás befejezéséhez",
|
||||
"Create an account": "Fiók létrehozása",
|
||||
"Enter an username you like": "Adja meg a kívánt felhasználónevet",
|
||||
"Enter a password": "Adja meg a jelszót",
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(Legalább 8 karakter, és legyen elég erős!)",
|
||||
"Confirm password": "Jelszó megerősítése",
|
||||
"Next": "Tovább",
|
||||
"Saving\\.\\.\\.": "Mentés...",
|
||||
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. Kérjük, olvassa be az alábbi QR-kódot, hogy TOTP-t generáljon az Ön által választott autentikátorral",
|
||||
"Or you can click the link below:": "Vagy kattintson az alábbi hivatkozásra:",
|
||||
"2\\. Enter the TOTP generated by your authenticator to verify": "2. Adja meg az autentikátor által generált TOTP-t a megerősítéshez",
|
||||
"TOTP verified!": "TOTP sikeresen ellenőrizve!",
|
||||
"I don't need MFA": "Nincs szükségem MFA-ra",
|
||||
"Complete": "Befejezés",
|
||||
"(v[0-9.]{1,}) is now available for update!": "$1 frissíthető!",
|
||||
"Current Version:": "Jelenlegi verzió:",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "Hoppá... Ez a hivatkozás lejárt vagy érvénytelen.",
|
||||
"Scan QR Code with the WireGuard App to add peer": "Olvassa be a QR-kódot a WireGuard alkalmazással a társ hozzáadásához",
|
||||
"or click the button below to download the ": "vagy kattintson az alábbi gombra a letöltéshez: ",
|
||||
" file": " fájl",
|
||||
"FROM ": "FORRÁS: ",
|
||||
"(.*) is on": "$1 be van kapcsolva",
|
||||
"(.*) is off": "$1 ki van kapcsolva",
|
||||
"Allowed IPs is invalid": "Az engedélyezett IP-k érvénytelenek",
|
||||
"Peer created successfully": "A társ sikeresen létrejött",
|
||||
"Please fill in all required box": "Töltse ki az összes kötelező mezőt",
|
||||
"Please specify amount of peers you want to add": "Adja meg, hány társat szeretne hozzáadni",
|
||||
"No more available IP can assign": "Nincs több elérhető IP kiosztható",
|
||||
"The maximum number of peers can add is (.*)": "A hozzáadható társak maximális száma: $1",
|
||||
"Generating key pairs by bulk failed": "Nem sikerült tömegesen kulcspárokat generálni",
|
||||
"Failed to add peers in bulk": "Nem sikerült tömegesen hozzáadni a társakat",
|
||||
"This peer already exist": "Ez a társ már létezik",
|
||||
"This IP is not available: (.*)": "Ez az IP nem elérhető: $1",
|
||||
"Configuration does not exist": "A konfiguráció nem létezik",
|
||||
"Peer does not exist": "A társ nem létezik",
|
||||
"Please provide a valid configuration name": "Adjon meg érvényes konfigurációs nevet",
|
||||
"Peer saved": "A társ mentve",
|
||||
"Allowed IPs already taken by another peer": "Az engedélyezett IP-ket már egy másik társ foglalta le",
|
||||
"Endpoint Allowed IPs format is incorrect": "A végpont engedélyezett IP-k formátuma helytelen",
|
||||
"DNS format is incorrect": "A DNS formátum helytelen",
|
||||
"MTU format is not correct": "Az MTU formátuma helytelen",
|
||||
"Persistent Keepalive format is not correct": "A folyamatos keepalive formátuma helytelen",
|
||||
"Private key does not match with the public key": "A privát kulcs nem egyeztethető a nyilvános kulccsal",
|
||||
"Update peer failed when updating Pre-Shared Key": "A társ frissítése sikertelen volt az előre megosztott kulcs frissítésekor",
|
||||
"Update peer failed when updating Allowed IPs": "A társ frissítése sikertelen volt az engedélyezett IP-k frissítésekor",
|
||||
"Update peer failed when saving the configuration": "A társ frissítése sikertelen volt a konfiguráció mentésekor",
|
||||
"Peer data usage reset successfully": "A társ adatforgalma sikeresen visszaállítva",
|
||||
"Peer download started": "A társ letöltése elindult",
|
||||
"Please specify one or more peers": "Jelöljön ki egy vagy több társat",
|
||||
"Share link failed to create. Reason: (.*)": "Nem sikerült létrehozni a megosztási hivatkozást. Ok: $1",
|
||||
"Link expire date updated": "A hivatkozás lejárati dátuma frissítve",
|
||||
"Link expire date failed to update. Reason: (.*)": "A hivatkozás lejárati dátumának frissítése sikertelen. Ok: $1",
|
||||
"Peer job saved": "A társ feladata mentve",
|
||||
"Please specify job": "Adja meg a feladatot",
|
||||
"Please specify peer and configuration": "Jelölje ki a társat és a konfigurációt",
|
||||
"Peer job deleted": "A társ feladata törölve",
|
||||
"API Keys function is successfully enabled": "Az API-kulcs funkció sikeresen engedélyezve",
|
||||
"API Keys function is successfully disabled": "Az API-kulcs funkció sikeresen letiltva",
|
||||
"API Keys function is failed to enable": "Az API-kulcs funkció engedélyezése sikertelen",
|
||||
"API Keys function is failed to disable": "Az API-kulcs funkció letiltása sikertelen",
|
||||
"WGDashboard API Keys function is disabled": "A WGDashboard API-kulcs funkció letiltva",
|
||||
"WireGuard configuration path saved": "A WireGuard konfigurációs útvonal mentve",
|
||||
"API Key deleted": "API-kulcs törölve",
|
||||
"API Key created": "API-kulcs létrehozva",
|
||||
"Sign in session ended, please sign in again": "A bejelentkezés lejárt, kérjük jelentkezzen be újra",
|
||||
"Please specify an IP Address (v4/v6)": "Adjon meg egy IP-címet (v4/v6)",
|
||||
"Please provide ipAddress and count": "Adja meg az IP-címet és a darabszámot",
|
||||
"Please provide ipAddress": "Adja meg az IP-címet",
|
||||
"Dashboard Language": "Vezérlőpanel nyelv",
|
||||
"Dashboard language update failed": "A vezérlőpanel nyelvének frissítése sikertelen",
|
||||
"Peer Remote Endpoint": "Társ távoli végpontja",
|
||||
"New Configuration": "Új konfiguráció",
|
||||
"Configuration Name": "Konfiguráció neve",
|
||||
"Configuration name is invalid. Possible reasons:": "A konfiguráció neve érvénytelen. Lehetséges okok:",
|
||||
"Configuration name already exist\\.": "A konfiguráció neve már létezik.",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "A konfiguráció neve csak 15 kis- vagy nagybetűt, számokat, alulvonást, egyenlőségjelet, pluszjelet, pontot és kötőjelet tartalmazhat.",
|
||||
"Invalid Port": "Érvénytelen port",
|
||||
"Save Configuration": "Konfiguráció mentése",
|
||||
"IP Address/CIDR is invalid": "Az IP-cím/CIDR érvénytelen",
|
||||
"IP Address": "IP-cím",
|
||||
"Enter IP Address / Hostname": "Adja meg az IP-címet / hosztnevet",
|
||||
"IP Address / Hostname": "IP-cím / hosztnév",
|
||||
"Dashboard IP Address \\& Listen Port": "Vezérlőpanel IP-cím és hallgató port",
|
||||
"Count": "Darabszám",
|
||||
"Hop": "Ugrás",
|
||||
"Average RTT \\(ms\\)": "Átlagos RTT (ms)",
|
||||
"Min RTT \\(ms\\)": "Minimum RTT (ms)",
|
||||
"Max RTT \\(ms\\)": "Maximum RTT (ms)",
|
||||
"Geolocation": "Földrajzi hely",
|
||||
"Is Alive": "Élő?",
|
||||
"Average / Min / Max Round Trip Time": "Átlagos / min / max oda-vissza idő",
|
||||
"Sent / Received / Lost Package": "Elküldött / fogadott / elveszett csomag",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "A WGDashboard kézi újraindítása szükséges az IP-cím és a portváltoztatások alkalmazásához",
|
||||
"Restore Configuration": "Konfiguráció visszaállítása",
|
||||
"Step (.*)": "Lépés $1",
|
||||
"Select a backup you want to restore": "Válasszon egy visszaállítandó biztonsági másolatot",
|
||||
"Click to change a backup": "Kattintson a biztonsági mentés megváltoztatásához",
|
||||
"Selected Backup": "Kiválasztott mentés",
|
||||
"You don't have any configuration to restore": "Nincs visszaállítandó konfigurációja",
|
||||
"Help": "Súgó",
|
||||
"You can visit our: ": "Látogasson el ide:",
|
||||
"Official Documentation": "Hivatalos dokumentáció",
|
||||
"Discord Server": "Discord szerver",
|
||||
"Backup": "Biztonsági mentés",
|
||||
"([0-9].*) Backups\\?": "$1 mentés?",
|
||||
"Yes": "Igen",
|
||||
"No": "Nem",
|
||||
"Backup not selected": "Nincs kiválasztva mentés",
|
||||
"Confirm \\& edit restore information": "Visszaállítási információk megerősítése és szerkesztése",
|
||||
"(.*) Available IP Address": "$1 elérhető IP-cím",
|
||||
"Database File": "Adatbázis fájl",
|
||||
"Contain": "Tartalmaz",
|
||||
"Restricted Peers\\?": "Korlátozott társak?",
|
||||
"Restore": "Visszaállítás",
|
||||
"Restoring": "Visszaállítás folyamatban",
|
||||
"WGDashboard Settings": "WGDashboard beállítások",
|
||||
"Peers Settings": "Társ beállítások",
|
||||
"WireGuard Configuration Settings": "WireGuard konfiguráció beállítások",
|
||||
"Appearance": "Megjelenés",
|
||||
"Theme": "Téma",
|
||||
"Language": "Nyelv",
|
||||
"Account Settings": "Fiókbeállítások",
|
||||
"Peer Default Settings": "Társ alapértelmezett beállítások",
|
||||
"Toggle When Start Up": "Indításkor törlése",
|
||||
"Other Settings": "Egyéb beállítások",
|
||||
"Select Peers": "Társak kiválasztása",
|
||||
"Backup & Restore": "Mentés és visszaállítás",
|
||||
"Delete Configuration": "Konfiguráció törlése",
|
||||
"Create Backup": "Biztonsági mentés létrehozása",
|
||||
"No backup yet, click the button above to create backup\\.": "Még nincs mentés, kattintson a fenti gombra a mentés létrehozásához.",
|
||||
"Are you sure to delete this backup\\?": "Biztosan törölni szeretné ezt a mentést?",
|
||||
"Are you sure to restore this backup\\?": "Biztosan visszaállítja ezt a mentést?",
|
||||
"Backup Date": "Mentés dátuma",
|
||||
"File": "Fájl",
|
||||
"Are you sure to delete this configuration\\?": "Biztosan törölni szeretné ezt a konfigurációt?",
|
||||
"Once you deleted this configuration\\:": "Ha törli ezt a konfigurációt:",
|
||||
"All connected peers will get disconnected": "Minden kapcsolódott társ le lesz választva",
|
||||
"Both configuration file \\(.conf\\) and database table related to this configuration will get deleted": "A konfigurációhoz tartozó .conf fájl és adatbázis tábla is törlődik",
|
||||
"Checking backups...": "Mentések ellenőrzése...",
|
||||
"This configuration have ([0-9].*) backups": "Ennél a konfigurációnál $1 mentés van",
|
||||
"This configuration have no backup": "Ennél a konfigurációnál nincs mentés",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "Ha biztos, írja be a konfiguráció nevét alább, és kattintson a Törlésre",
|
||||
"Select All": "Összes kiválasztása",
|
||||
"Clear Selection": "Kiválasztás törlése",
|
||||
"([0-9].*) Peers\\?": "$1 társ?",
|
||||
"Download": "Letöltés",
|
||||
"Downloading": "Letöltés...",
|
||||
"Download Finished": "Letöltés befejezve",
|
||||
"Done": "Kész",
|
||||
"Are you sure to delete": "Biztosan törölni szeretné",
|
||||
"Are you sure to delete this peer\\?": "Biztosan törölni szeretné ezt a társat?",
|
||||
"Configuration deleted": "Konfiguráció törölve",
|
||||
"Configuration saved": "Konfiguráció mentve",
|
||||
"WGDashboard language update failed": "A WGDashboard nyelvének frissítése sikertelen",
|
||||
"Configuration restored": "Konfiguráció visszaállítva",
|
||||
"Allowed IP already taken by another peer": "Az engedélyezett IP-t már egy másik társ használja",
|
||||
"Failed to allow access of peer (.*)": "Nem sikerült engedélyezni a hozzáférést a társ számára: $1",
|
||||
"Failed to save configuration through WireGuard": "Nem sikerült menteni a konfigurációt WireGuardon keresztül",
|
||||
"Allow access successfully": "Hozzáférés sikeresen engedélyezve",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "Törölve $1 társ",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "Sikeresen törölve $1 társ. $2 társ törlése sikertelen",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "Korlátozva $1 társ",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "Sikeresen korlátozva $1 társ. $2 társ korlátozása sikertelen",
|
||||
"Display As": "Megjelenítés",
|
||||
"List": "Lista",
|
||||
"Grid": "Rács",
|
||||
"Protocol": "Protokoll",
|
||||
"Open File": "Fájl megnyitása",
|
||||
"Advanced Options": "Haladó beállítások",
|
||||
"Allowed IPs Validation": "Engedélyezett IP-k érvényesítése",
|
||||
"Update Name": "Név frissítése",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "A konfiguráció nevének frissítéséhez a WGDashboard a következő műveleteket hajtja végre:",
|
||||
"Duplicate current configuration's database table and \\..\\.conf file with the new name": "A jelenlegi konfiguráció adatbázis táblájának és .conf fájljának másolása az új névvel",
|
||||
"Delete current configuration's database table and \\..\\.conf file": "A jelenlegi konfiguráció adatbázis táblájának és .conf fájljának törlése",
|
||||
"Danger Zone": "Veszélyes zóna",
|
||||
"Configuration File": "Konfigurációs fájl",
|
||||
"Edit Raw Configuration File": "Nyers konfigurációs fájl szerkesztése",
|
||||
"Peer Configuration File": "Társ konfigurációs fájl",
|
||||
"Share with Email": "Megosztás e-mailben",
|
||||
"Email Account": "E-mail fiók",
|
||||
"Ready": "Kész",
|
||||
"Port": "Port",
|
||||
"Encryption": "Titkosítás",
|
||||
"No Encryption": "Nincs titkosítás",
|
||||
"Send From": "Feladó",
|
||||
"Send Test Email": "Teszt e-mail küldése",
|
||||
"Email Body Template": "E-mail törzs sablon",
|
||||
"Live Preview": "Élő előnézet",
|
||||
"Include configuration file as an attachment": "Konfigurációs fájl mellékletként csatolása",
|
||||
"Send": "Küldés",
|
||||
"Sending\\.\\.\\.": "Küldés...",
|
||||
"Email sent successfully!": "Az e-mail sikeresen elküldve!",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG társ beállítás",
|
||||
"System Status": "Rendszerállapot",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Memória",
|
||||
"Swap Memory": "Swap memória",
|
||||
"Processes": "Folyamatok",
|
||||
"CPU Usage": "CPU használat",
|
||||
"Memory Usage": "Memória használat",
|
||||
"Swap Memory Usage": "Swap memória használat",
|
||||
"Network": "Hálózat",
|
||||
"([0-9]{1,}) Interfaces": "$1 interfész",
|
||||
"Storage": "Tároló",
|
||||
"([0-9]{1,}) Partitions": "$1 partíció",
|
||||
"(.*) Used": "$1 használva",
|
||||
"Untitled Peer": "Névtelen társ",
|
||||
"Who are you sending to\\?": "Kinek küldi?",
|
||||
"What\\'s the subject\\?": "Mi a tárgy?",
|
||||
"What\\'s the body\\?": "Mi a szövegtörzs?"
|
||||
}
|
361
src/static/locale/id.json
Normal file
361
src/static/locale/id.json
Normal file
@ -0,0 +1,361 @@
|
||||
{
|
||||
"Welcome to": "Selamat Datang di",
|
||||
"Username": "Nama Pengguna",
|
||||
"Password": "Kata Sandi",
|
||||
"OTP from your authenticator": "OTP dari autentikator Anda",
|
||||
"Sign In": "Masuk",
|
||||
"Signing In\\.\\.\\.": "Masuk...",
|
||||
"Access Remote Server": "Akses Server Remot",
|
||||
"Server": "server",
|
||||
"Click": "Klik",
|
||||
"Pinging...": "Pinging...",
|
||||
"to add your server": "untuk menambahkan server Anda",
|
||||
"Server List": "Daftar Server",
|
||||
"Sorry, your username or password is incorrect.": "Maaf, nama pengguna atau kata sandi Anda salah",
|
||||
"Home": "Beranda",
|
||||
"Settings": "Pengaturan",
|
||||
"Tools": "Peralatan",
|
||||
"Sign Out": "Keluar",
|
||||
"Checking for update...": "Memeriksa Pembaruan...",
|
||||
"You're on the latest version": "Anda berada pada versi paling baru",
|
||||
"WireGuard Configurations": "Konfigurasi 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.": "Anda belum memiliki konfigurasi WireGuard. Mohon periksa folder konfigurasi atau ubah di Pengaturan. Secara bawaan folder nya adalah /etc/wireguard.",
|
||||
"Configuration": "Konfigurasi",
|
||||
"Configurations": "Konfigurasi",
|
||||
"Peers Default Settings": "Pengaturan Bawaan Peers",
|
||||
"Dashboard Theme": "Tema Dasbor",
|
||||
"Light": "Terang",
|
||||
"Dark": "Gelap",
|
||||
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "Perubahan ini akan di ubah secara global, dan akan berlaku ke semua kode QR peer dan file konfigurasi.",
|
||||
"WireGuard Configurations Settings": "Pengaturan Konfigurasi WireGuard",
|
||||
"Configurations Directory": "Direktori Konfigurasi",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "Jangan lupa untuk menghapus / di akhir path Anda. Contoh /etc/wireguard",
|
||||
"WGDashboard Account Settings": "Pengaturan Akun WGDashboard",
|
||||
"Current Password": "Kata Sandi Saat Ini",
|
||||
"New Password": "Kata Sandi Baru",
|
||||
"Repeat New Password": "Ulangi Kata Sandi Baru",
|
||||
"Update Password": "Perbarui Kata Sandi",
|
||||
"Multi-Factor Authentication \\(MFA\\)": "Autentikasi Multi-Faktor (MFA)",
|
||||
"Reset": "Atur Ulang",
|
||||
"Setup": "Pengaturan",
|
||||
"API Keys": "Kunci API",
|
||||
"API Key": "Kunci API",
|
||||
"Key": "Kunci",
|
||||
"Enabled": "Diaktifkan",
|
||||
"Disabled": "Dimatikan",
|
||||
"No WGDashboard API Key": "Tidak Ada Kunci API WGDashboard",
|
||||
"Expire At": "Kedaluwarsa pada",
|
||||
"Are you sure to delete this API key\\?": "Apa Anda yakin ingin menghapus kunci API berikut?",
|
||||
"Create API Key": "Buat Kunci API",
|
||||
"When should this API Key expire\\?": "Kapan kunci API berikut kedaluwarsa?",
|
||||
"Never Expire": "Tidak Pernah Kedaluwarsa",
|
||||
"Don't think that's a good idea": "Sepertinya itu bukan ide yang bagus",
|
||||
"Creating\\.\\.\\.": "Membuat...",
|
||||
"Create": "Buat",
|
||||
"Status": "Keadaan",
|
||||
"On": "Aktif",
|
||||
"Off": "Mati",
|
||||
"Turning On\\.\\.\\.": "Mengaktifkan...",
|
||||
"Turning Off\\.\\.\\.": "Mematikan...",
|
||||
"Address": "Alamat",
|
||||
"Listen Port": "Mendengarkan Port",
|
||||
"Public Key": "Kunci Publik",
|
||||
"Connected Peers": "Peers Terhubung",
|
||||
"Total Usage": "Penggunaan Total",
|
||||
"Total Received": "Total Diterima",
|
||||
"Total Sent": "Total Dikirim",
|
||||
"Peers Data Usage": "Penggunaan Data Peers",
|
||||
"Real Time Received Data Usage": "Waktu Nyata Menerima Penggunaan Data",
|
||||
"Real Time Sent Data Usage": "Waktu Nyata Mengirim Penggunaan Data",
|
||||
"Peer": "Peer",
|
||||
"Peers": "Peers",
|
||||
"Peer Settings": "Pengaturan Peer",
|
||||
"Download All": "Unduh Semua",
|
||||
"Search": "Cari",
|
||||
"Search Peers\\.\\.\\.": "Cari Peer...",
|
||||
"Display": "Tampilan",
|
||||
"Sort By": "Urutkan",
|
||||
"Refresh Interval": "Memperbarui Interval",
|
||||
"Name": "Nama",
|
||||
"Allowed IPs": "Allowed IPs",
|
||||
"Restricted": "Terbatas",
|
||||
"(.*) Seconds": "$1 Detik",
|
||||
"(.*) Minutes": "$1 Menit",
|
||||
"Configuration Settings": "Pengaturan Konfigurasi",
|
||||
"Peer Jobs": "Pekerjaan Peer",
|
||||
"Active Jobs": "Pekerjaan Aktif",
|
||||
"All Active Jobs": "Semua Pekerjaan Aktif",
|
||||
"Logs": "Log",
|
||||
"Private Key": "Kunci Pribadi",
|
||||
"\\(Required for QR Code and Download\\)": "(Diperlukan untuk Kode QR dan Unduh)",
|
||||
"\\(Required\\)": "Diperlukan",
|
||||
"Endpoint Allowed IPs": "Endpoint IP Allowed IPs",
|
||||
"DNS": "DNS",
|
||||
"Optional Settings": "Pengaturan Opsional",
|
||||
"Pre-Shared Key": "Kunci Pra-Berbagi",
|
||||
"MTU": "MTU",
|
||||
"Persistent Keepalive": "Persistent Keepalive",
|
||||
"Reset Data Usage": "Atur Ulang Penggunaan Data",
|
||||
"Total": "Total",
|
||||
"Sent": "Dikirim",
|
||||
"Received": "Diterima",
|
||||
"Revert": "Kembalikan",
|
||||
"Save Peer": "Simpan Peer",
|
||||
"QR Code": "Kode QR",
|
||||
"Schedule Jobs": "Jadwalkan Pekerjaan",
|
||||
"Job": "Pekerjaan",
|
||||
"Job ID": "ID Pekerjaan",
|
||||
"Unsaved Job": "Pekerjaan yang belum Tersimpan",
|
||||
"This peer does not have any job yet\\.": "Peer ini belum memiliki pekerjaan",
|
||||
"if": "jika",
|
||||
"is": "adalah",
|
||||
"then": "maka",
|
||||
"larger than": "lebih besar dari",
|
||||
"Date": "Tanggal",
|
||||
"Restrict Peer": "Batasi Peer",
|
||||
"Delete Peer": "Hapus Peer",
|
||||
"Edit": "Ubah",
|
||||
"Delete": "Hapus",
|
||||
"Deleting...": "Menghapus...",
|
||||
"Cancel": "Batal",
|
||||
"Save": "Simpan",
|
||||
"No active job at the moment\\.": "Tidak ada pekerjaan aktif untuk saat ini.",
|
||||
"Jobs Logs": "Log Pekerjaan",
|
||||
"Updated at": "Diperbarui pada",
|
||||
"Refresh": "Perbarui",
|
||||
"Filter": "Penyaring",
|
||||
"Success": "Sukses",
|
||||
"Failed": "Gagal",
|
||||
"Log ID": "ID Log",
|
||||
"Message": "Pesan",
|
||||
"Share Peer": "Membagikan Peer",
|
||||
"Currently the peer is not sharing": "Saat ini peer tidak berbagi",
|
||||
"Sharing\\.\\.\\.": "Membagikan...",
|
||||
"Start Sharing": "Mulai Membagikan",
|
||||
"Stop Sharing\\.\\.\\.": "Berhenti Membagikan...",
|
||||
"Stop Sharing": "Berhenti Membagikan",
|
||||
"Access Restricted": "Akses Terbatas",
|
||||
"Restrict Access": "Batasi Akses",
|
||||
"Restricting\\.\\.\\.": "Membatasi...",
|
||||
"Allow Access": "Izinkan Akses",
|
||||
"Allowing Access\\.\\.\\.": "Mengizinkan Akses...",
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "Unduh & Kode QR tidak tersedia karena kunci pribadi tidak di atur untuk peer ini",
|
||||
"Add Peers": "Tambah Peers",
|
||||
"Bulk Add": "Tambah Massal",
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "Dengan menambahkan peers secara massal, setiap nama peer akan dibuat secara otomatis, dan Allowed IP akan ditetapkan ke IP berikutnya yang tersedia.",
|
||||
"How many peers you want to add\\?": "Berapa banyak peers yang ingin Anda tambah?",
|
||||
"You can add up to (.*) peers": "Anda dapat menambahkan sebanyak $1 peers",
|
||||
"Use your own Private and Public Key": "Gunakan kunci pribadi dan kunci publik milik Anda",
|
||||
"Enter IP Address/CIDR": "Masukkan Alamat IP/CIDR",
|
||||
"IP Address/CIDR": "Alamat IP/CIDR",
|
||||
"or": "atau",
|
||||
"Pick Available IP": "Pilih IP yang Tersedia",
|
||||
"No available IP containing": "Tidak ada IP yang Tersedia yang memiliki",
|
||||
"Add": "Tambah",
|
||||
"Adding\\.\\.\\.": "Menambahkan...",
|
||||
"Failed to check available update": "Gagal untuk memeriksa pembaruan yang tersedia",
|
||||
"Nice to meet you!": "Senang bertemu dengan Anda!",
|
||||
"Please fill in the following fields to finish setup": "Silakan isi kolom berikut untuk menyelesaikan pengaturan",
|
||||
"Create an account": "Buat akun baru",
|
||||
"Enter an username you like": "Masukkan nama pengguna yang Anda sukai",
|
||||
"Enter a password": "Masukkan kata sandi",
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(Setidaknya 8 karakter dan pastikan cukup kuat!)",
|
||||
"Confirm password": "Konfirmasi kata sandi",
|
||||
"Next": "Lanjut",
|
||||
"Saving\\.\\.\\.": "Menyimpan...",
|
||||
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. Silakan pindai Kode QR berikut untuk menghasilkan TOTP dengan pilihan autentikator Anda",
|
||||
"Or you can click the link below:": "Atau Anda bisa klik tautan di bawah",
|
||||
"2\\. Enter the TOTP generated by your authenticator to verify": "2. Masukkan TOTP yang dihasilkan oleh autentikator anda untuk verifikasi",
|
||||
"TOTP verified!": "TOTP terverifikasi!",
|
||||
"I don't need MFA": "Saya tidak membutuhkan MFA",
|
||||
"Complete": "Selesai",
|
||||
"(v[0-9.]{1,}) is now available for update!": "v$1 telah tersedia untuk pembaruan!",
|
||||
"Current Version:": "Versi Saat Ini:",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "Oh tidak... Tautan ini sudah kedaluwarsa atau salah.",
|
||||
"Scan QR Code with the WireGuard App to add peer": "Pindai Kode QR menggunakan Aplikasi WireGuard untuk menambahkan peer",
|
||||
"or click the button below to download the ": "atau klik tomboh di bawah untuk mengunduh",
|
||||
" file": " file",
|
||||
"FROM ": "DARI",
|
||||
"(.*) is on": "$1 aktif",
|
||||
"(.*) is off": "$1 mati",
|
||||
"Allowed IPs is invalid": "Allowed IPs salah",
|
||||
"Peer created successfully": "Peer berhasil terbuat",
|
||||
"Please fill in all required box": "Silakan isi semua kolom diperlukan",
|
||||
"Please specify amount of peers you want to add": "Silakan tentukan jumlah peers yang ingin Anda tambahkan",
|
||||
"No more available IP can assign": "Tidak ada lagi IP yang tersedia yang dapat ditetapkan",
|
||||
"The maximum number of peers can add is (.*)": "Jumlah maksimal peers yang dapat ditambahkan adalah $1",
|
||||
"Generating key pairs by bulk failed": "Gagal menghasilkan pasangan kunci secara massal",
|
||||
"Failed to add peers in bulk": "Gagal untuk menambahkan peers secara massal",
|
||||
"This peer already exist": "Peer ini sudah ada",
|
||||
"This IP is not available: (.*)": "IP ini sudah tidak tersedia: $1",
|
||||
"Configuration does not exist": "Konfigurasi tidak ada",
|
||||
"Peer does not exist": "Peer tidak ada",
|
||||
"Please provide a valid configuration name": "Harap berikan nama konfigurasi yang benar",
|
||||
"Peer saved": "Peer tersimpan",
|
||||
"Allowed IPs already taken by another peer": "Allowed IPs sudah diambil oleh peer lain",
|
||||
"Endpoint Allowed IPs format is incorrect": "Bentuk Endpoint Allowed IPs tidak tepat",
|
||||
"DNS format is incorrect": "Bentuk DNS tidak tepat",
|
||||
"MTU format is not correct": "Bentuk MTU tidak tepat",
|
||||
"Persistent Keepalive format is not correct": "Bentuk Persistent Keepalive tidak tepat",
|
||||
"Private key does not match with the public key": "Kunci pribadi tidak cocok dengan kunci publik",
|
||||
"Update peer failed when updating Pre-Shared Key": "Pembaruan peer gagal saat memperbarui Kunci Pra-Berbagi",
|
||||
"Update peer failed when updating Allowed IPs": "Pembaruan peer gagal saat memperbarui Allowed IPs",
|
||||
"Update peer failed when saving the configuration": "Pembaruan peer gagal saat menyimpan konfigurasi",
|
||||
"Peer data usage reset successfully": "Penggunaan data peer berhasi di atur ulang",
|
||||
"Peer download started": "Unduh peer dimulai",
|
||||
"Please specify one or more peers": "Silakan tentukan satu atau lebih peer",
|
||||
"Share link failed to create. Reason: (.*)": "Tautan berbagi gagal dibuat. Alasan: $1",
|
||||
"Link expire date updated": "Tanggal kedaluwarsa tautan diperbarui",
|
||||
"Link expire date failed to update. Reason: (.*)": "Tanggal kedaluwarsa tautan gagal diperbarui. Alasan: $1",
|
||||
"Peer job saved": "Pekerjaan peer tersimpan",
|
||||
"Please specify job": "Silakan tentukan pekerjaan",
|
||||
"Please specify peer and configuration": "Silakan tentukan peer dan konfigurasi",
|
||||
"Peer job deleted": "Pekerjaan peer terhapus",
|
||||
"API Keys function is successfully enabled": "Fungsi Kunci API berhasil diaktifkan",
|
||||
"API Keys function is successfully disabled": "Fungsi Kunci API berhasil dimatikan",
|
||||
"API Keys function is failed to enable": "Fungsi Kunci API gagal diaktifkan",
|
||||
"API Keys function is failed to disable": "Fungsi Kunci API gagal dimatikan",
|
||||
"WGDashboard API Keys function is disabled": "Fungsi Kunci API WGDashboard dimatikan",
|
||||
"WireGuard configuration path saved": "path konfigurasi WireGuard tersimpan",
|
||||
"API Key deleted": "Kunci API terhapus",
|
||||
"API Key created": "Kunci API terbuat",
|
||||
"Sign in session ended, please sign in again": "Sesi masuk berakhir, silakan masuk kembali",
|
||||
"Please specify an IP Address (v4/v6)": "Silakan tentukan alamat IP (v4/v6)",
|
||||
"Please provide ipAddress and count": "Harap berikan Alamat IP dan count",
|
||||
"Please provide ipAddress": "Harap berikan Alamat IP",
|
||||
"Dashboard Language": "Bahasa Dasbor",
|
||||
"Dashboard language update failed": "Pembaruan bahasa dasbor gagal",
|
||||
"Peer Remote Endpoint": "Endpoint Remot Peer",
|
||||
"New Configuration": "Konfigurasi Baru",
|
||||
"Configuration Name": "Nama Konfigurasi",
|
||||
"Configuration name is invalid. Possible reasons:": "Nama konfigurasi salah. Kemungkinan alasan:",
|
||||
"Configuration name already exist\\.": "Nama konfigurasi sudah ada.",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "Nama konfigurasi hanya bisa memiliki 15 huruf kecil/ huruf besar alfabet, angka, underscore, simbol sama dengan, simbol tambah, titik dan tanda penghubung.",
|
||||
"Invalid Port": "Port Salah",
|
||||
"Save Configuration": "Simpan Konfigurasi",
|
||||
"IP Address/CIDR is invalid": "Alamat IP/CIDR salah",
|
||||
"IP Address": "Alamat IP",
|
||||
"Enter IP Address / Hostname": "Masukkan Alamat IP / Nama Host",
|
||||
"IP Address / Hostname": "Alamat IP / Nama Host",
|
||||
"Dashboard IP Address \\& Listen Port": "Alamat IP & Mendengarkan Port Dasbor",
|
||||
"Count": "Count",
|
||||
"Geolocation": "Lokasi Geografis",
|
||||
"Is Alive": "Masih Hidup",
|
||||
"Average / Min / Max Round Trip Time": "Rata - rata / Min / Maks Round Trip Time",
|
||||
"Sent / Received / Lost Package": "Terkirim / Diterima / Paket Hilang",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "Memulai ulang WGDashboard dibutuhkan untuk menerapkan perubahan pada Alamat IP dan Mendengarkan Port",
|
||||
"Restore Configuration": "Pulihkan Konfigurasi",
|
||||
"Step (.*)": "Step $1",
|
||||
"Select a backup you want to restore": "Pilih cadangan yang ingin dipulihkan",
|
||||
"Click to change a backup": "Klik untuk mengganti cadangan",
|
||||
"Selected Backup": "Cadangan yang dipilih",
|
||||
"You don't have any configuration to restore": "Anda tidak memiliki konfigurasi untuk dipulihkan",
|
||||
"Help": "Tolong",
|
||||
"Backup": "Cadangan",
|
||||
"([0-9].*) Backups?": "$1 Cadangan?",
|
||||
"Yes": "Ya",
|
||||
"No": "Tidak",
|
||||
"Backup not selected": "Cadangan belum dipilih",
|
||||
"Confirm \\& edit restore information": "Konfirmasi & ubah informasi pemulihan",
|
||||
"(.*) Available IP Address": "$1 Alamat IP Tersedia",
|
||||
"Database File": "File Basis Data",
|
||||
"Contain": "Memiliki",
|
||||
"Restricted Peers?": "Peers Terbatas?",
|
||||
"Restore": "Pemulihan",
|
||||
"Restoring": "Memulihkan",
|
||||
"WGDashboard Settings": "Pengaturan WGDashboard",
|
||||
"Peers Settings": "Pengaturan Peers",
|
||||
"WireGuard Configuration Settings": "Pengaturan Konfigurasi WireGuard",
|
||||
"Appearance": "Penampilan",
|
||||
"Theme": "Tema",
|
||||
"Language": "Bahasa",
|
||||
"Account Settings": "Pengaturan Akun",
|
||||
"Peer Default Settings": "Pengaturan Bawaan Peer",
|
||||
"Toggle When Start Up": "Beralih Kapan Memulai",
|
||||
"Other Settings": "Pengaturan Lainnya",
|
||||
"Select Peers": "Pilih Peers",
|
||||
"Backup & Restore": "Cadangan & Pemulihan",
|
||||
"Delete Configuration": "Hapus Konfigurasi",
|
||||
"Create Backup": "Buat Cadangan",
|
||||
"No backup yet, click the button above to create backup\\.": "Belum ada cadangan, klik tombol di atas untuk membuat cadangan.",
|
||||
"Are you sure to delete this backup\\?": "Apakah Anda yakin untuk menghaus cadangan ini?",
|
||||
"Are you sure to restore this backup?\\": "Apakah Anda yakin untuk memulihkan cadangan ini?",
|
||||
"Backup Date": "Tanggal Cadangan",
|
||||
"File": "File",
|
||||
"Are you sure to delete this configuration\\?": "Apakah Anda yakin untuk menghapus konfigurasi ini?",
|
||||
"Once you deleted this configuration\\:": "Setelah Anda menghapus konfigurasi ini:",
|
||||
"All connected peers will get disconnected": "Semua peers yang terhubung akan terputus",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "File Konfigurasi (.conf) dan tabel basis data yang terkait dengan konfigurasi ini akan terhapus",
|
||||
"Checking backups...": "Memeriksa cadangan...",
|
||||
"This configuration have ([0-9].*) backups": "Konfigurasi ini memiliki $1 cadangan",
|
||||
"This configuration have no backup": "Konfigurasi ini tidak memiliki cadangan",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "Jika Anda yakin, silakan ketik nama konfigurasi dibawah dan klik Hapus",
|
||||
"Select All": "Pilih Semua",
|
||||
"Clear Selection": "Hapus Pilihan",
|
||||
"([0-9].*) Peers?": "$1 Peers?",
|
||||
"Download": "Unduh",
|
||||
"Downloading": "Mengunduh",
|
||||
"Download Finished": "Unduh Selesai",
|
||||
"Done": "Selesai",
|
||||
"Are you sure to delete": "Apakah Anda yakin untuk menghapus",
|
||||
"Are you sure to delete this peer\\?": "Apakah Anda yakin untuk menghapus peer ini?",
|
||||
"Configuration deleted": "Konfigurasi terhapus",
|
||||
"Configuration saved": "Konfigurasi tersimpan",
|
||||
"WGDashboard language update failed": "Pembaruan bahasa WGDashboard gagal",
|
||||
"Configuration restored": "Konfigurasi terpulihkan",
|
||||
"Allowed IP already taken by another peer": "Allowed IP telah digunakan oleh peer lain",
|
||||
"Failed to allow access of peer (.*)": "Gagal untuk mengizinkan akses ke peer $1",
|
||||
"Failed to save configuration through WireGuard": "Gagal untuk menyimpan konfigurasi melalui WireGuard",
|
||||
"Allow access successfully": "Berhasil mengizinkan akses",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) terhapus",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) berhasil terhapus. Gagal untuk menghapus $2 peer(s)",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) terbatas",
|
||||
"Display As": "Tampilkan Sebagai",
|
||||
"List": "Daftar",
|
||||
"Grid": "Kisi",
|
||||
"Protocol": "Protokol",
|
||||
"Open File": "Buka File",
|
||||
"Advanced Options": "Opsi Lanjutan",
|
||||
"Allowed IPs Validation": "Validasi Allowed IPs",
|
||||
"Update Name": "Pembaruan Nama",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "Untuk memperbarui konfigurasi nama berikut, WGDashboard akan mengeksekusi operasi berikut:",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "Duplikat konfigurasi tabel basis data saat ini dan file .conf dengan nama baru",
|
||||
"Delete current configuration's database table and \\.conf file": "Hapus konfigurasi tabel basis data saat ini dan file .conf",
|
||||
"Danger Zone": "Zona Berbahaya",
|
||||
"Configuration File": "File Konfigurasi",
|
||||
"Edit Raw Configuration File": "Edit File Konfigurasi Mentah",
|
||||
"Peer Configuration File": "File Konfigurasi Peer",
|
||||
"Share with Email": "Berbagi dengan Email",
|
||||
"Who are you sending to?": "Anda ingin kirim ke siapa?",
|
||||
"What's the subject?": "Apa subjeknya?",
|
||||
"What's the body?": "Apa isiannya?",
|
||||
"Email Account": "Akun Email",
|
||||
"Ready": "Siap",
|
||||
"Port": "Port",
|
||||
"Encryption": "Enkripsi",
|
||||
"No Encryption": "Tidak Ada Enkripsi",
|
||||
"Send From": "Kirim Dari",
|
||||
"Send Test Email": "Kirim Email Tes",
|
||||
"Email Body Template": "Template Isi Email",
|
||||
"Live Preview": "Pratinjau Langsung",
|
||||
"Include configuration file as an attachment": "Sertakan file konfigurasi sebagai lampiran",
|
||||
"Send": "Kirim",
|
||||
"Sending\\.\\.\\.": "Mengirim...",
|
||||
"Email sent successfully!": "Email berhasil terkirim!",
|
||||
"AmneziaWG Peer Setting": "Pengaturan Peer AmneziaWG",
|
||||
"System Status": "Keadaan Sistem",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Memori",
|
||||
"Swap Memory": "Memori Swap",
|
||||
"Processes": "Proses",
|
||||
"CPU Usage": "Penggunaan CPU",
|
||||
"Memory Usage": "Penggunaan Memori",
|
||||
"Swap Memory Usage": "Penggunaan Memori Swap",
|
||||
"Network": "Jaringan",
|
||||
"([0-9]{1,}) Interfaces": "$1 Antarmuka",
|
||||
"Storage": "Penyimpanan",
|
||||
"([0-9]{1,}) Partitions": "$1 Partisi",
|
||||
"(.*) Used": "$1 terpakai",
|
||||
"Untitled Peer": "Peer Tanpa Judul",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) berhasil terbatas. Gagal untuk membatasi $2 peer(s)"
|
||||
}
|
@ -296,7 +296,7 @@
|
||||
"Adding\\.\\.\\.": "Toevoegen...",
|
||||
"Configuration name already exist\\.": "Configuratienaam bestaat al.",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "De configuratienaam mag alleen uit 15 tekens bestaan, inclusief hoofd-/kleine letters, cijfers, onderstrepingsteken, gelijkteken, plusteken, punt en koppelteken.",
|
||||
"Dashboard IP Address \\& Listen Port": "",
|
||||
"Dashboard IP Address \\& Listen Port": "Dashboard IP-adres & Luisterpoort",
|
||||
"Confirm \\& edit restore information": "Bevestigen & herstelinformatie bewerken",
|
||||
"No backup yet, click the button above to create backup\\.": "Nog geen back-up, klik op de knop hierboven om een back-up te maken.",
|
||||
"Are you sure to delete this backup\\?": "Weet je zeker dat je deze back-up wilt verwijderen?",
|
||||
@ -308,62 +308,53 @@
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) succesvol verwijderd. Het verwijderen van $2 peer(s) is mislukt",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) beperkt",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 peer(s) succesvol beperkt. Het beperken van $2 peer(s) is mislukt",
|
||||
"Table": "",
|
||||
"Search": "",
|
||||
"Hop": "",
|
||||
"Average RTT \\(ms\\)": "",
|
||||
"Min RTT \\(ms\\)": "",
|
||||
"Max RTT \\(ms\\)": "",
|
||||
"You can visit our: ": "",
|
||||
"Official Documentation": "",
|
||||
"Discord Server": "",
|
||||
"Are you sure to restore this backup\\?": "",
|
||||
"Download": "",
|
||||
"Display As": "",
|
||||
"List": "",
|
||||
"Grid": "",
|
||||
"Protocol": "",
|
||||
"Open File": "",
|
||||
"Advanced Options": "",
|
||||
"Allowed IPs Validation": "",
|
||||
"Update Name": "",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "",
|
||||
"Delete current configuration's database table and \\.conf file": "",
|
||||
"Danger Zone": "",
|
||||
"Configuration File": "",
|
||||
"Edit Raw Configuration File": "",
|
||||
"Peer Configuration File": "",
|
||||
"Share with Email": "",
|
||||
"Email Account": "",
|
||||
"Ready": "",
|
||||
"Port": "",
|
||||
"Encryption": "",
|
||||
"No Encryption": "",
|
||||
"Send From": "",
|
||||
"Send Test Email": "",
|
||||
"Email Body Template": "",
|
||||
"Live Preview": "",
|
||||
"Include configuration file as an attachment": "",
|
||||
"Send": "",
|
||||
"Sending\\.\\.\\.": "",
|
||||
"Email sent successfully!": "",
|
||||
"AmneziaWG Peer Setting": "",
|
||||
"System Status": "",
|
||||
"CPU": "",
|
||||
"Memory": "",
|
||||
"Swap Memory": "",
|
||||
"Processes": "",
|
||||
"CPU Usage": "",
|
||||
"Memory Usage": "",
|
||||
"Swap Memory Usage": "",
|
||||
"Network": "",
|
||||
"([0-9]{1,}) Interfaces": "",
|
||||
"Storage": "",
|
||||
"([0-9]{1,}) Partitions": "",
|
||||
"(.*) Used": "",
|
||||
"Untitled Peer": "",
|
||||
"Who are you sending to\\?": "",
|
||||
"What\\'s the subject\\?": "",
|
||||
"What\\'s the body\\?": ""
|
||||
"Search": "Zoeken",
|
||||
"Download": "Download",
|
||||
"Display As": "Weergeven Als",
|
||||
"List": "Lijst",
|
||||
"Grid": "Raster",
|
||||
"Protocol": "Protocol",
|
||||
"Open File": "Bestand Openen",
|
||||
"Advanced Options": "Geavanceerde Opties",
|
||||
"Allowed IPs Validation": "Allowed IPs validatie",
|
||||
"Update Name": "Naam Bijwerken",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "Om deze configuratie bij te werken zal WGDashboard de volgende bewerkingen uitvoeren:",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "Dupliceer de database-tabel en het .conf-bestand van de huidige configuratie met de nieuwe naam",
|
||||
"Delete current configuration's database table and \\.conf file": "Verwijder de database-tabel en het .conf-bestand van de huidige configuratie",
|
||||
"Danger Zone": "Gevarenzone",
|
||||
"Configuration File": "Configuratiebestand",
|
||||
"Edit Raw Configuration File": "Bewerk Ruwe Configuratiebestand",
|
||||
"Peer Configuration File": "Peer-configuratiebestand",
|
||||
"Share with Email": "Delen via E-mail",
|
||||
"Who are you sending to?": "Naar wie stuur je het?",
|
||||
"What's the subject?": "Wat is het onderwerp?",
|
||||
"What's the body?": "Wat is de inhoud?",
|
||||
"Email Account": "E-mailaccount",
|
||||
"Ready": "Klaar",
|
||||
"Port": "Poort",
|
||||
"Encryption": "Encryptie",
|
||||
"No Encryption": "Geen Encryptie",
|
||||
"Send From": "Verzenden vanaf",
|
||||
"Send Test Email": "Testmail verzenden",
|
||||
"Email Body Template": "E-mail Inhoud Template",
|
||||
"Live Preview": "Live voorbeeld",
|
||||
"Include configuration file as an attachment": "Configuratiebestand als bijlage toevoegen",
|
||||
"Send": "Verzenden",
|
||||
"Sending\\.\\.\\.": "Bezig Met Verzenden...",
|
||||
"Email sent successfully!": "E-mail succesvol verzonden",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG Peer-instellingen",
|
||||
"System Status": "Systeemstatus",
|
||||
"CPU": "CPU",
|
||||
"Memory": "Geheugen",
|
||||
"Swap Memory": "Swap-geheugen",
|
||||
"Processes": "Processen",
|
||||
"CPU Usage": "CPU-verbruik",
|
||||
"Memory Usage": "Geheugenverbruik",
|
||||
"Swap Memory Usage": "Swap-geheugenverbruik",
|
||||
"Network": "Netwerk",
|
||||
"([0-9]{1,}) Interfaces": "([0-9]{1,}) Interfaces",
|
||||
"Storage": "Opslag",
|
||||
"([0-9]{1,}) Partitions": "([0-9]{1,}) Partities",
|
||||
"(.*) Used": "(.*) Gebruikt",
|
||||
"Untitled Peer": "Naamloze Peer"
|
||||
}
|
10
src/wgd.sh
10
src/wgd.sh
@ -83,7 +83,7 @@ _installPython(){
|
||||
{ printf "\n\n [Installing Python] [%s] \n\n""$(date)"; } >> ./log/install.txt
|
||||
printf "[WGDashboard] %s Installing Python\n" "$install"
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{ sudo apt update ; sudo apt-get install -y python3 net-tools; printf "\n\n"; } >> ./log/install.txt
|
||||
;;
|
||||
centos|fedora|redhat|rhel|almalinux|rocky)
|
||||
@ -116,7 +116,7 @@ _installPythonVenv(){
|
||||
printf "[WGDashboard] %s Installing Python Virtual Environment\n" "$install"
|
||||
if [ "$pythonExecutable" = "python3" ]; then
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{ sudo apt update ; sudo apt-get install -y python3-venv; printf "\n\n"; } &>> ./log/install.txt
|
||||
;;
|
||||
centos|fedora|redhat|rhel|almalinux|rocky)
|
||||
@ -140,7 +140,7 @@ _installPythonVenv(){
|
||||
esac
|
||||
else
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{ sudo apt-get update; sudo apt-get install ${pythonExecutable}-venv; } &>> ./log/install.txt
|
||||
;;
|
||||
esac
|
||||
@ -162,7 +162,7 @@ _installPythonPip(){
|
||||
then
|
||||
printf "[WGDashboard] %s Installing Python Package Manager (PIP)\n" "$install"
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
if [ "$pythonExecutable" = "python3" ]; then
|
||||
{ sudo apt update ; sudo apt-get install -y python3-pip; printf "\n\n"; } &>> ./log/install.txt
|
||||
else
|
||||
@ -205,7 +205,7 @@ _checkWireguard(){
|
||||
then
|
||||
printf "[WGDashboard] %s Installing WireGuard\n" "$install"
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
ubuntu|debian|raspbian)
|
||||
{
|
||||
sudo apt update && sudo apt-get install -y wireguard;
|
||||
printf "\n[WGDashboard] WireGuard installed on %s.\n\n" "$OS";
|
||||
|
Loading…
x
Reference in New Issue
Block a user