mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-10-03 07:46:18 +00:00
Finished updating locales
This commit is contained in:
@@ -41,10 +41,12 @@ const availablePeerSearchString = ref("")
|
||||
<button class="btn btn-sm bg-primary-subtle text-primary-emphasis rounded-3 ms-auto"
|
||||
@click="manage = !manage">
|
||||
<template v-if="!manage">
|
||||
<i class="bi bi-list-check me-2"></i>Manage
|
||||
<i class="bi bi-list-check me-2"></i>
|
||||
<LocaleText t="Manage"></LocaleText>
|
||||
</template>
|
||||
<template v-else>
|
||||
<i class="bi bi-check me-2"></i>Done
|
||||
<i class="bi bi-check me-2"></i>
|
||||
<LocaleText t="Done"></LocaleText>
|
||||
</template>
|
||||
</button>
|
||||
</div>
|
||||
|
@@ -28,7 +28,7 @@ onMounted(() => {
|
||||
<div class="card-header d-flex align-items-center rounded-0">
|
||||
<h6 class="my-2">{{ groupName }}</h6>
|
||||
<span class="badge text-bg-primary ms-auto">
|
||||
<LocaleText :t="getClients.length + ' Clients'"></LocaleText>
|
||||
<LocaleText :t="getClients.length + ' Client' + (getClients.length > 1 ? 's': '')"></LocaleText>
|
||||
</span>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
|
@@ -49,12 +49,12 @@ const toggle = async () => {
|
||||
class="form-check-input" type="checkbox" role="switch" id="oidc_switch">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="alert alert-dark rounded-3 mb-0">
|
||||
<LocaleText t="Due to security reason, in order to edit OIDC configuration, you will need to edit "></LocaleText>
|
||||
<code>wg-dashboard-oidc-providers.json</code> <LocaleText t="directly, then restart WGDashboard to apply the latest settings."></LocaleText>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div>-->
|
||||
<!-- <div class="alert alert-dark rounded-3 mb-0">-->
|
||||
<!-- <LocaleText t="Due to security reason, in order to edit OIDC configuration, you will need to edit "></LocaleText>-->
|
||||
<!-- <code>wg-dashboard-oidc-providers.json</code> <LocaleText t="directly, then restart WGDashboard to apply the latest settings."></LocaleText>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@@ -56,7 +56,7 @@ const emits = defineEmits(['assign'])
|
||||
:class="{'active': selectedGroup === groupName}"
|
||||
class="btn bg-primary-subtle text-primary-emphasis btn-sm me-2 rounded-3"
|
||||
v-for="(_, groupName) in assignmentStore.clients">
|
||||
{{ groupName }}
|
||||
<LocaleText :t="groupName"></LocaleText>
|
||||
<span class="ms-1 badge" :class="[ groupCount[groupName] > 0 ? 'bg-primary' : 'bg-secondary' ]">
|
||||
{{ groupCount[groupName] }}
|
||||
</span>
|
||||
|
@@ -4,6 +4,7 @@ const props = defineProps(['colors', 'group'])
|
||||
const emits = defineEmits(['close', 'select', ''])
|
||||
const searchString = ref("")
|
||||
import {WireguardConfigurationsStore} from "@/stores/WireguardConfigurationsStore.js"
|
||||
import LocaleText from "@/components/text/localeText.vue";
|
||||
const store = WireguardConfigurationsStore();
|
||||
onMounted(() => {
|
||||
let ele = document.querySelector(".icon-grid div.active")
|
||||
@@ -33,7 +34,7 @@ onMounted(() => {
|
||||
</div>
|
||||
<div class="p-2 border-top d-flex gap-2">
|
||||
<button class="btn btn-sm btn-success rounded-2 ms-auto" @click="emits('close')">
|
||||
Done
|
||||
<LocaleText t="Done"></LocaleText>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1,7 +1,9 @@
|
||||
<script setup lang="ts">
|
||||
import {computed, onMounted, ref} from "vue";
|
||||
import { GetLocale } from "@/utilities/locale.js"
|
||||
const props = defineProps(['group'])
|
||||
import bootstrapIcons from "bootstrap-icons/font/bootstrap-icons.json"
|
||||
import LocaleText from "@/components/text/localeText.vue";
|
||||
const emits = defineEmits(['close', 'select'])
|
||||
onMounted(() => {
|
||||
let ele = document.querySelector(".icon-grid div.active")
|
||||
@@ -29,7 +31,7 @@ const searchIcon = computed(() => {
|
||||
<i class="bi bi-search"></i>
|
||||
</label>
|
||||
<input v-model="searchString"
|
||||
placeholder="Search Icon"
|
||||
:placeholder="GetLocale('Search Icon')"
|
||||
class="form-control form-control-sm rounded-2">
|
||||
</div>
|
||||
<div class="p-2 d-grid icon-grid"
|
||||
@@ -47,10 +49,10 @@ const searchIcon = computed(() => {
|
||||
<button
|
||||
@click="group.Icon = ''"
|
||||
class="btn btn-sm btn-secondary rounded-2 ms-auto">
|
||||
Remove Icon
|
||||
<LocaleText t="Remove Icon"></LocaleText>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-success rounded-2" @click="emits('close')">
|
||||
Done
|
||||
<LocaleText t="Done"></LocaleText>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import LocaleText from "@/components/text/localeText.vue";
|
||||
import { GetLocale } from "@/utilities/locale.js"
|
||||
import {WireguardConfigurationsStore} from "@/stores/WireguardConfigurationsStore.js"
|
||||
import {ref} from "vue";
|
||||
const store = WireguardConfigurationsStore();
|
||||
@@ -42,7 +43,7 @@ const toggleTag = () => {
|
||||
:disabled="!edit"
|
||||
v-model="groupName"
|
||||
@change="group.GroupName = groupName"
|
||||
placeholder="Tag Name"
|
||||
:placeholder="GetLocale('Tag Name')"
|
||||
class="form-control form-control-sm p-2 rounded-2 w-100">
|
||||
<button
|
||||
v-if="edit"
|
||||
@@ -56,7 +57,7 @@ const toggleTag = () => {
|
||||
style="white-space: nowrap"
|
||||
:class="{active: !store.Filter.HiddenTags.includes(groupId)}"
|
||||
@click="toggleTag()"
|
||||
class="rounded-2 p-2 btn btn-sm btn-outline-primary">
|
||||
class="rounded-2 p-2 btn btn-sm btn-outline-primary">
|
||||
<i class="bi"
|
||||
:class="[!store.Filter.HiddenTags.includes(groupId) ? 'bi-eye-fill':'bi-eye-slash-fill']"
|
||||
></i>
|
||||
|
@@ -91,7 +91,7 @@ export default {
|
||||
<small>
|
||||
<i class="bi me-2"
|
||||
:class="[this.wireguardConfigurationsStore.CurrentSort.order === 'asc' ? 'bi-sort-up' : 'bi-sort-down']"
|
||||
v-if="this.wireguardConfigurationsStore.CurrentSort.key === sv"></i>{{s}}
|
||||
v-if="this.wireguardConfigurationsStore.CurrentSort.key === sv"></i><LocaleText :t="s"></LocaleText>
|
||||
</small>
|
||||
</a>
|
||||
</div>
|
||||
|
@@ -108,11 +108,6 @@ export default {
|
||||
}
|
||||
});
|
||||
map.addLayer(vectorLayer);
|
||||
if (this.store.Configuration.Server.dashboard_theme === 'dark'){
|
||||
map.on('postcompose',() => {
|
||||
document.querySelector('#map').style.filter="grayscale(80%) invert(100%)";
|
||||
});
|
||||
}
|
||||
}).catch(e => {
|
||||
this.osmAvailable = false
|
||||
})
|
||||
|
@@ -27,10 +27,10 @@ const calculateIP = ref(256)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card rounded-3">
|
||||
<div class="card-header">
|
||||
<div class="d-flex align-items-center">
|
||||
<LocaleText t="Templates"></LocaleText>
|
||||
<LocaleText t="Subnets & Listen Ports Templates"></LocaleText>
|
||||
<button
|
||||
type="button"
|
||||
@click="newTemplate()"
|
||||
|
@@ -139,8 +139,10 @@ const setMapCenter = (endpoint) => {
|
||||
<table class="table table-hover" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Endpoint</th>
|
||||
<th v-if="endpoints.geolocation">Geolocation</th>
|
||||
<th><LocaleText t="Endpoint"></LocaleText></th>
|
||||
<th v-if="endpoints.geolocation">
|
||||
<LocaleText t="Geolocation"></LocaleText>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@@ -84,13 +84,17 @@ const view = ref("edit")
|
||||
<a
|
||||
@click="view = 'edit'"
|
||||
:class="{active: view === 'edit'}"
|
||||
class="nav-link rounded-3" role="button">Edit</a>
|
||||
class="nav-link rounded-3" role="button">
|
||||
<LocaleText t="Edit"></LocaleText>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a
|
||||
:class="{active: view === 'sessions'}"
|
||||
@click="view = 'sessions'"
|
||||
class="nav-link rounded-3" role="button">Sessions</a>
|
||||
class="nav-link rounded-3" role="button">
|
||||
<LocaleText t="Sessions"></LocaleText>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import {ref} from "vue";
|
||||
import { GetLocale } from "@/utilities/locale.js"
|
||||
import {fetchGet, fetchPost} from "@/utilities/fetch.js"
|
||||
import LocaleText from "@/components/text/localeText.vue";
|
||||
import { v4 } from "uuid";
|
||||
@@ -26,9 +27,9 @@ if (!props.webHook){
|
||||
}
|
||||
|
||||
const Actions = ref({
|
||||
'peer_created': "Peer Created",
|
||||
'peer_deleted': "Peer Deleted",
|
||||
'peer_updated': "Peer Updated"
|
||||
'peer_created': GetLocale("Peer Created"),
|
||||
'peer_deleted': GetLocale("Peer Deleted"),
|
||||
'peer_updated': GetLocale("Peer Updated")
|
||||
})
|
||||
const emits = defineEmits(['refresh', 'delete'])
|
||||
import { DashboardConfigurationStore } from "@/stores/DashboardConfigurationStore"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<script setup>
|
||||
import {computed, ref} from "vue";
|
||||
import LocaleText from "@/components/text/localeText.vue";
|
||||
|
||||
const props = defineProps({
|
||||
core_number: Number,
|
||||
@@ -33,7 +34,7 @@ const squareHeight = computed(() => {
|
||||
:class="[align ? 'end-0':'start-0']"
|
||||
>
|
||||
<small class="text-muted me-2">
|
||||
Core #{{core_number + 1}}
|
||||
<LocaleText t="Core"></LocaleText> #{{core_number + 1}}
|
||||
</small>
|
||||
<small class="fw-bold">
|
||||
{{percentage}}%
|
||||
|
@@ -1300,4 +1300,8 @@ samp{
|
||||
transform: translateY(20px);
|
||||
opacity: 0;
|
||||
filter: blur(3px);
|
||||
}
|
||||
|
||||
[data-bs-theme="dark"] #map{
|
||||
filter: grayscale(80%) invert(100%)
|
||||
}
|
@@ -1,5 +1,4 @@
|
||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||
import {cookie} from "../utilities/cookie.js";
|
||||
import {fetchGet} from "@/utilities/fetch.js";
|
||||
import {WireguardConfigurationsStore} from "@/stores/WireguardConfigurationsStore.js";
|
||||
import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.js";
|
||||
|
@@ -1,4 +1,3 @@
|
||||
import router from "@/router/router.js";
|
||||
import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.js";
|
||||
|
||||
const getHeaders = () => {
|
||||
|
@@ -1 +1 @@
|
||||
import{a7 as A,r as n,D as S,g as l,z as v}from"./index-CqpVtsXc.js";const b=A("DashboardClientAssignmentStore",()=>{const f=n({}),d=n([]),o=n({}),c=n([]),g=n(!1),r=n(""),i=S(),w=async()=>{await l("/api/clients/allClients",{},s=>{o.value=s.data})},y=async()=>{await l("/api/clients/allClientsRaw",{},s=>{c.value=s.data,console.log(c.value)})},m=s=>Object.values(o.value).flat().find(e=>e.ClientID===s),u=async(s,e)=>{await l("/api/clients/assignedClients",{ConfigurationName:s,Peer:e},a=>{d.value=a.data})};return{assignments:d,getAssignedClients:u,getClients:w,getClientsRaw:y,clients:o,unassignClient:async(s,e,a)=>{g.value=!0,await v("/api/clients/unassignClient",{AssignmentID:a},async t=>{t.status?(i.newMessage("Server","Unassign successfully!","success"),s&&e&&await u(s,e)):(i.newMessage("Server","Unassign Failed. Reason: "+t.message,"success"),console.error("Unassign Failed. Reason: "+t.message)),g.value=!1})},assignClient:async(s,e,a,t=!0)=>{r.value=a,await v("/api/clients/assignClient",{ConfigurationName:s,Peer:e,ClientID:a},async C=>{C.status?(i.newMessage("Server","Assign successfully!","success"),t&&await u(s,e)):(i.newMessage("Server","Assign Failed. Reason: "+C.message,"success"),console.error("Assign Failed. Reason: "+C.message)),r.value=""})},getClientById:m,unassigning:g,assigning:r,clientsRaw:c,allConfigurationsPeers:f,getAllConfigurationsPeers:async()=>{await l("/api/clients/allConfigurationsPeers",{},s=>{f.value=s.data})}}});export{b as D};
|
||||
import{a7 as A,r as n,D as S,g as l,z as v}from"./index-mH92cJrc.js";const b=A("DashboardClientAssignmentStore",()=>{const f=n({}),d=n([]),o=n({}),c=n([]),g=n(!1),r=n(""),i=S(),w=async()=>{await l("/api/clients/allClients",{},s=>{o.value=s.data})},y=async()=>{await l("/api/clients/allClientsRaw",{},s=>{c.value=s.data,console.log(c.value)})},m=s=>Object.values(o.value).flat().find(e=>e.ClientID===s),u=async(s,e)=>{await l("/api/clients/assignedClients",{ConfigurationName:s,Peer:e},a=>{d.value=a.data})};return{assignments:d,getAssignedClients:u,getClients:w,getClientsRaw:y,clients:o,unassignClient:async(s,e,a)=>{g.value=!0,await v("/api/clients/unassignClient",{AssignmentID:a},async t=>{t.status?(i.newMessage("Server","Unassign successfully!","success"),s&&e&&await u(s,e)):(i.newMessage("Server","Unassign Failed. Reason: "+t.message,"success"),console.error("Unassign Failed. Reason: "+t.message)),g.value=!1})},assignClient:async(s,e,a,t=!0)=>{r.value=a,await v("/api/clients/assignClient",{ConfigurationName:s,Peer:e,ClientID:a},async C=>{C.status?(i.newMessage("Server","Assign successfully!","success"),t&&await u(s,e)):(i.newMessage("Server","Assign Failed. Reason: "+C.message,"success"),console.error("Assign Failed. Reason: "+C.message)),r.value=""})},getClientById:m,unassigning:g,assigning:r,clientsRaw:c,allConfigurationsPeers:f,getAllConfigurationsPeers:async()=>{await l("/api/clients/allConfigurationsPeers",{},s=>{f.value=s.data})}}});export{b as D};
|
8
src/static/dist/WGDashboardAdmin/assets/browser-B8eugmTx.js
vendored
Normal file
8
src/static/dist/WGDashboardAdmin/assets/browser-B8eugmTx.js
vendored
Normal file
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/dist/WGDashboardAdmin/assets/clientViewer-7MUereWv.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/clientViewer-7MUereWv.js
vendored
Normal file
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
src/static/dist/WGDashboardAdmin/assets/clients-D7IlE2fP.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/clients-D7IlE2fP.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as r,c as i,b as o,w as e,k as l,j as a,l as _,S as u,h as d,f as t}from"./index-CqpVtsXc.js";const m={name:"configuration"},f={class:"mt-md-5 mt-3 text-body"};function p(h,k,x,w,$,v){const n=d("RouterView");return t(),i("div",f,[o(n,null,{default:e(({Component:s,route:c})=>[o(l,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(_(s),{key:c.path,class:"z-1"}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",p]]);export{B as default};
|
||||
import{_ as r,c as i,b as o,w as e,k as l,j as a,l as _,S as u,h as d,f as t}from"./index-mH92cJrc.js";const m={name:"configuration"},f={class:"mt-md-5 mt-3 text-body"};function p(h,k,x,w,$,v){const n=d("RouterView");return t(),i("div",f,[o(n,null,{default:e(({Component:s,route:c})=>[o(l,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(_(s),{key:c.path,class:"z-1"}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",p]]);export{B as default};
|
@@ -1 +1 @@
|
||||
.fade-enter-active[data-v-9f596f5e]{transition-delay:var(--0d365bfc)!important}.progress-bar[data-v-851170e4]{width:0;transition:all 1s cubic-bezier(.42,0,.22,1)}.filter a[data-v-e551c21d]{text-decoration:none}
|
||||
.fade-enter-active[data-v-9f596f5e]{transition-delay:var(--0d365bfc)!important}.progress-bar[data-v-851170e4]{width:0;transition:all 1s cubic-bezier(.42,0,.22,1)}.filter a[data-v-7ed053f0]{text-decoration:none}
|
File diff suppressed because one or more lines are too long
1
src/static/dist/WGDashboardAdmin/assets/dashboardEmailSettings-CqwOH0Oa.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/dashboardEmailSettings-CqwOH0Oa.js
vendored
Normal file
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 f,c as i,a as t,b as u,h as w,d as k,m as x,y,n as p,t as v,z as _,D as m,W as b,A as S,f as n,r as D,q as $,F as W,i as V}from"./index-CqpVtsXc.js";import{L as C}from"./localeText-DKJsmANp.js";const F={name:"dashboardSettingsInputWireguardConfigurationPath",components:{LocaleText:C},props:{targetData:String,title:String,warning:!1,warningText:""},setup(){const o=m(),s=b(),r=`input_${S()}`;return{store:o,uuid:r,WireguardConfigurationStore:s}},data(){return{value:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.value=this.store.Configuration.Server[this.targetData]},methods:{async useValidation(){this.changed&&(this.updating=!0,await _("/api/updateDashboardConfigurationItem",{section:"Server",key:this.targetData,value:this.value},o=>{o.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Account[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3),this.WireguardConfigurationStore.getConfigurations(),this.store.newMessage("Server","WireGuard configuration path saved","success")):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=o.message),this.changed=!1,this.updating=!1}))}}},I={class:"card"},T={class:"card-header"},A={class:"my-2"},L={class:"card-body"},M={class:"form-group"},N=["for"],P={class:"d-flex gap-2 align-items-start"},B={class:"flex-grow-1"},G=["id","disabled"],z={class:"invalid-feedback fw-bold"},U=["disabled"],q={key:0,class:"bi bi-save2-fill"},E={key:1,class:"spinner-border spinner-border-sm"},K={key:0,class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block mt-1 mb-2"};function j(o,s,r,a,c,g){const d=w("LocaleText");return n(),i("div",I,[t("div",T,[t("h6",A,[u(d,{t:"Path"})])]),t("div",L,[t("div",M,[t("label",{for:this.uuid,class:"text-muted mb-1"},[t("strong",null,[t("small",null,[u(d,{t:this.title},null,8,["t"])])])],8,N),t("div",P,[t("div",B,[x(t("input",{type:"text",class:p(["form-control rounded-3",{"is-invalid":this.showInvalidFeedback,"is-valid":this.isValid}]),id:this.uuid,"onUpdate:modelValue":s[0]||(s[0]=e=>this.value=e),onKeydown:s[1]||(s[1]=e=>this.changed=!0),disabled:this.updating},null,42,G),[[y,this.value]]),t("div",z,v(this.invalidFeedback),1)]),t("button",{onClick:s[2]||(s[2]=e=>this.useValidation()),disabled:!this.changed,class:"ms-auto btn rounded-3 border-success-subtle bg-success-subtle text-success-emphasis"},[this.updating?(n(),i("span",E)):(n(),i("i",q))],8,U)]),r.warning?(n(),i("div",K,[t("small",null,[s[3]||(s[3]=t("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),u(d,{t:r.warningText},null,8,["t"])])])):k("",!0)])])])}const et=f(F,[["render",j]]),H={class:"card rounded-3"},J={class:"card-header"},O={class:"my-2"},Q={class:"card-body d-flex gap-2"},R={class:"list-group w-100"},X=["onClick"],Y={__name:"dashboardSettingsWireguardConfigurationAutostart",setup(o){const s=m(),r=b(),a=D(s.Configuration.WireGuardConfiguration.autostart),c=$(()=>r.Configurations.map(e=>e.Name)),g=async()=>{await _("/api/updateDashboardConfigurationItem",{section:"WireGuardConfiguration",key:"autostart",value:a.value},async e=>{e.status?(s.newMessage("Server","Start up configurations saved","success"),a.value=e.data):s.newMessage("Server","Start up configurations failed to save","danger")})},d=e=>{a.value.includes(e)?a.value=a.value.filter(h=>h!==e):a.value.push(e),g()};return(e,h)=>(n(),i("div",H,[t("div",J,[t("h6",O,[u(C,{t:"Toggle When Start Up"})])]),t("div",Q,[t("div",R,[(n(!0),i(W,null,V(c.value,l=>(n(),i("button",{type:"button",key:l,onClick:Z=>d(l),class:"list-group-item list-group-item-action py-2 w-100 d-flex align-items-center"},[t("samp",null,v(l),1),t("i",{class:p(["ms-auto",[a.value.includes(l)?"bi-check-circle-fill":"bi-circle"]])},null,2)],8,X))),128))])])]))}},at=f(Y,[["__scopeId","data-v-4aa2aed9"]]);export{et as D,at as a};
|
||||
import{_ as f,c as i,a as t,b as u,h as w,d as k,m as x,y,n as p,t as v,z as _,D as m,W as b,A as S,f as n,r as D,q as $,F as W,i as V}from"./index-mH92cJrc.js";import{L as C}from"./localeText-DSmP42vs.js";const F={name:"dashboardSettingsInputWireguardConfigurationPath",components:{LocaleText:C},props:{targetData:String,title:String,warning:!1,warningText:""},setup(){const o=m(),s=b(),r=`input_${S()}`;return{store:o,uuid:r,WireguardConfigurationStore:s}},data(){return{value:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.value=this.store.Configuration.Server[this.targetData]},methods:{async useValidation(){this.changed&&(this.updating=!0,await _("/api/updateDashboardConfigurationItem",{section:"Server",key:this.targetData,value:this.value},o=>{o.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Account[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3),this.WireguardConfigurationStore.getConfigurations(),this.store.newMessage("Server","WireGuard configuration path saved","success")):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=o.message),this.changed=!1,this.updating=!1}))}}},I={class:"card"},T={class:"card-header"},A={class:"my-2"},L={class:"card-body"},M={class:"form-group"},N=["for"],P={class:"d-flex gap-2 align-items-start"},B={class:"flex-grow-1"},G=["id","disabled"],z={class:"invalid-feedback fw-bold"},U=["disabled"],q={key:0,class:"bi bi-save2-fill"},E={key:1,class:"spinner-border spinner-border-sm"},K={key:0,class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block mt-1 mb-2"};function j(o,s,r,a,c,g){const d=w("LocaleText");return n(),i("div",I,[t("div",T,[t("h6",A,[u(d,{t:"Path"})])]),t("div",L,[t("div",M,[t("label",{for:this.uuid,class:"text-muted mb-1"},[t("strong",null,[t("small",null,[u(d,{t:this.title},null,8,["t"])])])],8,N),t("div",P,[t("div",B,[x(t("input",{type:"text",class:p(["form-control rounded-3",{"is-invalid":this.showInvalidFeedback,"is-valid":this.isValid}]),id:this.uuid,"onUpdate:modelValue":s[0]||(s[0]=e=>this.value=e),onKeydown:s[1]||(s[1]=e=>this.changed=!0),disabled:this.updating},null,42,G),[[y,this.value]]),t("div",z,v(this.invalidFeedback),1)]),t("button",{onClick:s[2]||(s[2]=e=>this.useValidation()),disabled:!this.changed,class:"ms-auto btn rounded-3 border-success-subtle bg-success-subtle text-success-emphasis"},[this.updating?(n(),i("span",E)):(n(),i("i",q))],8,U)]),r.warning?(n(),i("div",K,[t("small",null,[s[3]||(s[3]=t("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),u(d,{t:r.warningText},null,8,["t"])])])):k("",!0)])])])}const et=f(F,[["render",j]]),H={class:"card rounded-3"},J={class:"card-header"},O={class:"my-2"},Q={class:"card-body d-flex gap-2"},R={class:"list-group w-100"},X=["onClick"],Y={__name:"dashboardSettingsWireguardConfigurationAutostart",setup(o){const s=m(),r=b(),a=D(s.Configuration.WireGuardConfiguration.autostart),c=$(()=>r.Configurations.map(e=>e.Name)),g=async()=>{await _("/api/updateDashboardConfigurationItem",{section:"WireGuardConfiguration",key:"autostart",value:a.value},async e=>{e.status?(s.newMessage("Server","Start up configurations saved","success"),a.value=e.data):s.newMessage("Server","Start up configurations failed to save","danger")})},d=e=>{a.value.includes(e)?a.value=a.value.filter(h=>h!==e):a.value.push(e),g()};return(e,h)=>(n(),i("div",H,[t("div",J,[t("h6",O,[u(C,{t:"Toggle When Start Up"})])]),t("div",Q,[t("div",R,[(n(!0),i(W,null,V(c.value,l=>(n(),i("button",{type:"button",key:l,onClick:Z=>d(l),class:"list-group-item list-group-item-action py-2 w-100 d-flex align-items-center"},[t("samp",null,v(l),1),t("i",{class:p(["ms-auto",[a.value.includes(l)?"bi-check-circle-fill":"bi-circle"]])},null,2)],8,X))),128))])])]))}},at=f(Y,[["__scopeId","data-v-4aa2aed9"]]);export{et as D,at as a};
|
1
src/static/dist/WGDashboardAdmin/assets/dashboardWebHooks-CM8M01wM.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/dashboardWebHooks-CM8M01wM.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.table[data-v-7b6e949e]>:not(caption)>*>*{padding-left:0!important;padding-right:1rem!important}.list-group-item[data-v-578f1a2e]{border-radius:0!important;border-left:0!important;border-right:0!important}.list-group-item[data-v-578f1a2e]:first-child{border-top:0!important}.url[data-v-578f1a2e]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9rem}
|
1
src/static/dist/WGDashboardAdmin/assets/dashboardWebHooks-Dl-enc0Z.css
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/dashboardWebHooks-Dl-enc0Z.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.table[data-v-7b6e949e]>:not(caption)>*>*{padding-left:0!important;padding-right:1rem!important}.list-group-item[data-v-e0f0e683]{border-radius:0!important;border-left:0!important;border-right:0!important}.list-group-item[data-v-e0f0e683]:first-child{border-top:0!important}.url[data-v-e0f0e683]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9rem}
|
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{_ as M,H as J,W as Y,o as z,I as q,D as H,r as y,J as G,c as h,f as v,a as e,b as s,m as C,y as S,n as B,z as L,t as P,h as Q,a4 as X,d as N,s as D,j as R,F as V,i as K,E as ee,a5 as te,e as O,K as A,L as se,u as T,g as I,p as ne,q as oe,w as U,k as j,a6 as le,T as Z,B as ie,v as ae}from"./index-CqpVtsXc.js";import{L as n}from"./localeText-DKJsmANp.js";import{d as de}from"./dayjs.min-26Zi9Z8w.js";const re={class:"card rounded-3 flex-grow-1 bg-danger-subtle border-danger-subtle border shadow"},ue={class:"card-body"},ce={class:"d-flex align-items-center gap-3 inputGroup"},me=["value"],fe={class:"mb-0"},ge={class:"d-flex mt-3"},be=["disabled"],ve={__name:"updateConfigurationName",props:{configurationName:String},emits:["close"],setup(d,{emit:r}){const t=d,f=r,o=J({data:"",valid:!1}),g=Y();z(()=>{q(()=>o.data,b=>{o.valid=/^[a-zA-Z0-9_=+.-]{1,15}$/.test(b)&&b.length>0&&!g.Configurations.find(_=>_.Name===b)})});const u=H(),x=y(!1),c=G(),a=async()=>{o.data&&(x.value=!0,clearInterval(u.Peers.RefreshInterval),await L("/api/renameWireguardConfiguration",{ConfigurationName:t.configurationName,NewConfigurationName:o.data},async b=>{b.status?(await g.getConfigurations(),u.newMessage("Server","Configuration renamed","success"),c.push(`/configuration/${o.data}/peers`)):(u.newMessage("Server",b.message,"danger"),x.value=!1)}))};return(b,_)=>(v(),h("div",re,[e("div",ue,[e("p",null,[s(n,{t:"To update this configuration's name, WGDashboard will execute the following operations:"})]),e("ol",null,[e("li",null,[s(n,{t:"Duplicate current configuration's database table and .conf file with the new name"})]),e("li",null,[s(n,{t:"Delete current configuration's database table and .conf file"})])]),e("div",ce,[e("input",{class:"form-control form-control-sm rounded-3",value:d.configurationName,disabled:""},null,8,me),_[3]||(_[3]=e("h3",{class:"mb-0"},[e("i",{class:"bi bi-arrow-right"})],-1)),C(e("input",{class:B(["form-control form-control-sm rounded-3",[o.data?o.valid?"is-valid":"is-invalid":""]]),id:"newConfigurationName","onUpdate:modelValue":_[0]||(_[0]=w=>o.data=w)},null,2),[[S,o.data]])]),e("div",{class:B(["invalid-feedback",{"d-block":!o.valid&&o.data}])},[s(n,{t:"Configuration name is invalid. Possible reasons:"}),e("ul",fe,[e("li",null,[s(n,{t:"Configuration name already exist"})]),e("li",null,[s(n,{t:"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen."})])])],2),e("div",ge,[e("button",{onClick:_[1]||(_[1]=w=>f("close")),class:"btn btn-sm bg-secondary-subtle border-secondary-subtle text-secondary-emphasis rounded-3"},[s(n,{t:"Cancel"})]),e("button",{onClick:_[2]||(_[2]=w=>a()),disabled:!o.data||x.value,class:"btn btn-sm btn-danger rounded-3 ms-auto"},[s(n,{t:"Save"})],8,be)])])]))}},pe=M(ve,[["__scopeId","data-v-33ea9576"]]),he={name:"Dropdown",props:{width:{type:String,default:"80px"},height:{type:String,default:"auto"},title:{type:String,default:""},disabled:{type:Boolean,default:!1},defaultDisplay:{type:Boolean,default:!1}}},ye={class:"title"};function xe(d,r,t,f,o,g){return v(),h("div",{class:B(["dropdown",{disabled:t.disabled}]),onClick:r[0]||(r[0]=(...u)=>d.toggleDropdown&&d.toggleDropdown(...u)),onFocusout:r[1]||(r[1]=(...u)=>d.hideDropdown&&d.hideDropdown(...u)),tabindex:"0"},[e("div",ye,[e("div",null,P(t.title),1)])],34)}const _e=M(he,[["render",xe]]),we={components:{Dropdown:_e},name:"CodeEditor",props:{lineNums:{type:Boolean,default:!1},modelValue:{type:String},value:{type:String},theme:{type:String,default:"github-dark"},tabSpaces:{type:Number,default:2},wrap:{type:Boolean,default:!1},readOnly:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},header:{type:Boolean,default:!0},width:{type:String,default:"540px"},height:{type:String,default:"auto"},maxWidth:{type:String},minWidth:{type:String},maxHeight:{type:String},minHeight:{type:String},borderRadius:{type:String,default:"12px"},languages:{type:Array,default:function(){return[["javascript","JS"]]}},langListWidth:{type:String,default:"110px"},langListHeight:{type:String,default:"auto"},langListDisplay:{type:Boolean,default:!1},displayLanguage:{type:Boolean,default:!0},zIndex:{type:String,default:"0"},fontSize:{type:String,default:"17px"},padding:{type:String,default:"20px"}},directives:{highlight:{mounted(d,r){d.textContent=r.value},updated(d,r){d.scrolling?d.scrolling=!1:d.textContent=r.value}}},data(){return{scrollBarWidth:0,scrollBarHeight:0,top:0,left:0,languageClass:"hljs language-"+this.languages[0][0],languageTitle:this.languages[0][1]?this.languages[0][1]:this.languages[0][0],content:this.value,cursorPosition:0,insertTab:!1,lineNum:0,lineNumsWidth:0,scrolling:!1,textareaHeight:0,showLineNums:this.wrap?!1:this.lineNums}},computed:{tabWidth(){let d="";for(let r=0;r<this.tabSpaces;r++)d+=" ";return d},contentValue(){return this.modelValue==null?this.content+`
|
||||
import{_ as M,J,W as Y,o as z,H as q,D as H,r as y,K as G,c as h,f as v,a as e,b as s,m as C,y as S,n as B,z as L,t as P,h as Q,a4 as X,d as N,s as D,j as R,F as V,i as K,E as ee,a5 as te,e as O,L as A,I as se,u as T,g as I,p as ne,q as oe,w as U,k as j,a6 as le,T as Z,B as ie,v as ae}from"./index-mH92cJrc.js";import{L as n}from"./localeText-DSmP42vs.js";import{d as de}from"./dayjs.min-BSByM7MH.js";const re={class:"card rounded-3 flex-grow-1 bg-danger-subtle border-danger-subtle border shadow"},ue={class:"card-body"},ce={class:"d-flex align-items-center gap-3 inputGroup"},me=["value"],fe={class:"mb-0"},ge={class:"d-flex mt-3"},be=["disabled"],ve={__name:"updateConfigurationName",props:{configurationName:String},emits:["close"],setup(d,{emit:r}){const t=d,f=r,o=J({data:"",valid:!1}),g=Y();z(()=>{q(()=>o.data,b=>{o.valid=/^[a-zA-Z0-9_=+.-]{1,15}$/.test(b)&&b.length>0&&!g.Configurations.find(_=>_.Name===b)})});const u=H(),x=y(!1),c=G(),a=async()=>{o.data&&(x.value=!0,clearInterval(u.Peers.RefreshInterval),await L("/api/renameWireguardConfiguration",{ConfigurationName:t.configurationName,NewConfigurationName:o.data},async b=>{b.status?(await g.getConfigurations(),u.newMessage("Server","Configuration renamed","success"),c.push(`/configuration/${o.data}/peers`)):(u.newMessage("Server",b.message,"danger"),x.value=!1)}))};return(b,_)=>(v(),h("div",re,[e("div",ue,[e("p",null,[s(n,{t:"To update this configuration's name, WGDashboard will execute the following operations:"})]),e("ol",null,[e("li",null,[s(n,{t:"Duplicate current configuration's database table and .conf file with the new name"})]),e("li",null,[s(n,{t:"Delete current configuration's database table and .conf file"})])]),e("div",ce,[e("input",{class:"form-control form-control-sm rounded-3",value:d.configurationName,disabled:""},null,8,me),_[3]||(_[3]=e("h3",{class:"mb-0"},[e("i",{class:"bi bi-arrow-right"})],-1)),C(e("input",{class:B(["form-control form-control-sm rounded-3",[o.data?o.valid?"is-valid":"is-invalid":""]]),id:"newConfigurationName","onUpdate:modelValue":_[0]||(_[0]=w=>o.data=w)},null,2),[[S,o.data]])]),e("div",{class:B(["invalid-feedback",{"d-block":!o.valid&&o.data}])},[s(n,{t:"Configuration name is invalid. Possible reasons:"}),e("ul",fe,[e("li",null,[s(n,{t:"Configuration name already exist"})]),e("li",null,[s(n,{t:"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen."})])])],2),e("div",ge,[e("button",{onClick:_[1]||(_[1]=w=>f("close")),class:"btn btn-sm bg-secondary-subtle border-secondary-subtle text-secondary-emphasis rounded-3"},[s(n,{t:"Cancel"})]),e("button",{onClick:_[2]||(_[2]=w=>a()),disabled:!o.data||x.value,class:"btn btn-sm btn-danger rounded-3 ms-auto"},[s(n,{t:"Save"})],8,be)])])]))}},pe=M(ve,[["__scopeId","data-v-33ea9576"]]),he={name:"Dropdown",props:{width:{type:String,default:"80px"},height:{type:String,default:"auto"},title:{type:String,default:""},disabled:{type:Boolean,default:!1},defaultDisplay:{type:Boolean,default:!1}}},ye={class:"title"};function xe(d,r,t,f,o,g){return v(),h("div",{class:B(["dropdown",{disabled:t.disabled}]),onClick:r[0]||(r[0]=(...u)=>d.toggleDropdown&&d.toggleDropdown(...u)),onFocusout:r[1]||(r[1]=(...u)=>d.hideDropdown&&d.hideDropdown(...u)),tabindex:"0"},[e("div",ye,[e("div",null,P(t.title),1)])],34)}const _e=M(he,[["render",xe]]),we={components:{Dropdown:_e},name:"CodeEditor",props:{lineNums:{type:Boolean,default:!1},modelValue:{type:String},value:{type:String},theme:{type:String,default:"github-dark"},tabSpaces:{type:Number,default:2},wrap:{type:Boolean,default:!1},readOnly:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},header:{type:Boolean,default:!0},width:{type:String,default:"540px"},height:{type:String,default:"auto"},maxWidth:{type:String},minWidth:{type:String},maxHeight:{type:String},minHeight:{type:String},borderRadius:{type:String,default:"12px"},languages:{type:Array,default:function(){return[["javascript","JS"]]}},langListWidth:{type:String,default:"110px"},langListHeight:{type:String,default:"auto"},langListDisplay:{type:Boolean,default:!1},displayLanguage:{type:Boolean,default:!0},zIndex:{type:String,default:"0"},fontSize:{type:String,default:"17px"},padding:{type:String,default:"20px"}},directives:{highlight:{mounted(d,r){d.textContent=r.value},updated(d,r){d.scrolling?d.scrolling=!1:d.textContent=r.value}}},data(){return{scrollBarWidth:0,scrollBarHeight:0,top:0,left:0,languageClass:"hljs language-"+this.languages[0][0],languageTitle:this.languages[0][1]?this.languages[0][1]:this.languages[0][0],content:this.value,cursorPosition:0,insertTab:!1,lineNum:0,lineNumsWidth:0,scrolling:!1,textareaHeight:0,showLineNums:this.wrap?!1:this.lineNums}},computed:{tabWidth(){let d="";for(let r=0;r<this.tabSpaces;r++)d+=" ";return d},contentValue(){return this.modelValue==null?this.content+`
|
||||
`:this.modelValue+`
|
||||
`},scroll(){return this.height!="auto"}},methods:{updateValue(d){this.modelValue==null?this.content=d.target.value:this.$emit("update:modelValue",d.target.value)},changeLang(d){this.languageTitle=d[1]?d[1]:d[0],this.languageClass="language-"+d[0],this.$emit("lang",d[0])},tab(){if(document.execCommand("insertText"))document.execCommand("insertText",!1,this.tabWidth);else{const d=this.$refs.textarea.selectionStart;this.content=this.content.substring(0,d)+this.tabWidth+this.content.substring(d),this.cursorPosition=d+this.tabWidth.length,this.insertTab=!0}},calcScrollDistance(d){this.$refs.code.scrolling=!0,this.scrolling=!0,this.top=-d.target.scrollTop,this.left=-d.target.scrollLeft},resizer(){new ResizeObserver(t=>{this.scrollBarWidth=t[0].target.offsetWidth-t[0].target.clientWidth,this.scrollBarHeight=t[0].target.offsetHeight-t[0].target.clientHeight,this.textareaHeight=t[0].target.offsetHeight}).observe(this.$refs.textarea);const r=new ResizeObserver(t=>{this.lineNumsWidth=t[0].target.offsetWidth});this.$refs.lineNums&&r.observe(this.$refs.lineNums)},copy(){document.execCommand("copy")?(this.$refs.textarea.select(),document.execCommand("copy"),window.getSelection().removeAllRanges()):navigator.clipboard.writeText(this.$refs.textarea.value)},getLineNum(){const d=this.$refs.textarea.value;let r=0,t=d.indexOf(`
|
||||
`);for(;t!==-1;)r++,t=d.indexOf(`
|
1
src/static/dist/WGDashboardAdmin/assets/galois-field-CkUIqpA6.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/galois-field-CkUIqpA6.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
var n={},l;function u(){if(l)return n;l=1;const i=new Uint8Array(512),t=new Uint8Array(256);return function(){let r=1;for(let e=0;e<255;e++)i[e]=r,t[r]=e,r<<=1,r&256&&(r^=285);for(let e=255;e<512;e++)i[e]=i[e-255]}(),n.log=function(r){if(r<1)throw new Error("log("+r+")");return t[r]},n.exp=function(r){return i[r]},n.mul=function(r,e){return r===0||e===0?0:i[t[r]+t[e]]},n}export{u as r};
|
@@ -1 +0,0 @@
|
||||
function $(e){return e.includes(":")?6:e.includes(".")?4:0}function b(e){const t=$(e);if(!t)throw new Error(`Invalid IP address: ${e}`);let n=0n,r=0n;const l=Object.create(null);if(t===4)for(const s of e.split(".").map(BigInt).reverse())n+=s*2n**r,r+=8n;else{if(e.includes(".")&&(l.ipv4mapped=!0,e=e.split(":").map(o=>{if(o.includes(".")){const[p,c,i,f]=o.split(".").map(a=>Number(a).toString(16).padStart(2,"0"));return`${p}${c}:${i}${f}`}else return o}).join(":")),e.includes("%")){let o;[,e,o]=/(.+)%(.+)/.exec(e)||[],l.scopeid=o}const s=e.split(":"),u=s.indexOf("");if(u!==-1)for(;s.length<8;)s.splice(u,0,"");for(const o of s.map(p=>BigInt(parseInt(p||"0",16))).reverse())n+=o*2n**r,r+=16n}return l.number=n,l.version=t,l}function x({number:e,version:t,ipv4mapped:n,scopeid:r},{compress:l=!0,hexify:s=!1}={}){let u=t===4?24n:112n;const o=t===4?8n:16n;let p=e;const c=[];for(;u>0n;){const i=2n**u;c.push(p/i),p=e%i,u-=o}if(c.push(p),t===4)return c.join(".");{let i="";if(n&&!s){for(const[f,a]of c.entries())f<6?i+=`${a.toString(16)}:`:i+=`${String(a>>8n)}.${String(a&255n)}${f===6?".":""}`;l&&(i=g(i.split(":")))}else l?i=g(c.map(f=>f.toString(16))):i=c.map(f=>f.toString(16)).join(":");return r?`${i}%${r}`:i}}function g(e){let t=null,n=null;for(const[r,l]of e.entries())l==="0"?n?n.add(r):n=new Set([r]):n&&((!t||n.size>t.size)&&(t=n),n=null);(!t&&n||n&&t&&n.size>t.size)&&(t=n);for(const r of t||[])e[r]=":";return e.filter(Boolean).join(":").replace(/:{2,}/,"::")}const I={4:32,6:128};function v(e){return e.includes("/")?$(e):0}function w(e){const t=v(e),n=Object.create(null);let r;if(t)r=e,n.version=t;else{const d=$(e);if(d)r=`${e}/${I[d]}`,n.version=d;else throw new Error(`Network is not a CIDR or IP: ${e}`)}const[l,s]=r.split("/");if(!/^[0-9]+$/.test(s))throw new Error(`Network is not a CIDR or IP: ${e}`);const{number:u,version:o,ipv4mapped:p,scopeid:c}=b(l);n.ip=x({number:u,version:o,ipv4mapped:p,scopeid:c}),n.cidr=`${n.ip}/${s}`,n.prefix=s,n.prefixPresent=!!t;const i=I[o],f=u.toString(2).padStart(i,"0"),a=Number(i-Number(s)),m=f.substring(0,i-a);return n.start=BigInt(`0b${m}${"0".repeat(a)}`),n.end=BigInt(`0b${m}${"1".repeat(a)}`),n}export{w as p};
|
1
src/static/dist/WGDashboardAdmin/assets/index-Bno8fcdN.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/index-Bno8fcdN.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
function x(n){return n.includes(":")?6:n.includes(".")?4:0}function p(n){const t=x(n);if(!t)throw new Error(`Invalid IP address: ${n}`);let e=0n,r=0n;const s=Object.create(null);if(t===4)for(const i of n.split(".").map(BigInt).reverse())e+=i*2n**r,r+=8n;else{if(n.includes(".")&&(s.ipv4mapped=!0,n=n.split(":").map(o=>{if(o.includes(".")){const[u,l,f,a]=o.split(".").map(d=>Number(d).toString(16).padStart(2,"0"));return`${u}${l}:${f}${a}`}else return o}).join(":")),n.includes("%")){let o;[,n,o]=/(.+)%(.+)/.exec(n)||[],s.scopeid=o}const i=n.split(":"),c=i.indexOf("");if(c!==-1)for(;i.length<8;)i.splice(c,0,"");for(const o of i.map(u=>BigInt(parseInt(u||"0",16))).reverse())e+=o*2n**r,r+=16n}return s.number=e,s.version=t,s}function m({number:n,version:t,ipv4mapped:e,scopeid:r},{compress:s=!0,hexify:i=!1}={}){let c=t===4?24n:112n;const o=t===4?8n:16n;let u=n;const l=[];for(;c>0n;){const f=2n**c;l.push(u/f),u=n%f,c-=o}if(l.push(u),t===4)return l.join(".");{let f="";if(e&&!i){for(const[a,d]of l.entries())a<6?f+=`${d.toString(16)}:`:f+=`${String(d>>8n)}.${String(d&255n)}${a===6?".":""}`;s&&(f=y(f.split(":")))}else s?f=y(l.map(a=>a.toString(16))):f=l.map(a=>a.toString(16)).join(":");return r?`${f}%${r}`:f}}function B(n,{compress:t=!0,hexify:e=!1}={}){return m(p(n),{compress:t,hexify:e})}function y(n){let t=null,e=null;for(const[r,s]of n.entries())s==="0"?e?e.add(r):e=new Set([r]):e&&((!t||e.size>t.size)&&(t=e),e=null);(!t&&e||e&&t&&e.size>t.size)&&(t=e);for(const r of t||[])n[r]=":";return n.filter(Boolean).join(":").replace(/:{2,}/,"::")}const v={4:32,6:128};function b(n){return Array.from(new Set(n))}function N(n){return n.includes("/")?x(n):0}function I(n,t){const{number:e,version:r}=p(n.replace(/\/.+/,"")),{number:s,version:i}=p(t.replace(/\/.+/,""));return r===i?e-s>0n?1:e-s<0n?-1:0:r>i?1:0}function P(n,{compress:t=!0,hexify:e=!1}={}){const{start:r,end:s,prefix:i,version:c,prefixPresent:o}=g(n);return r!==s||o?`${B(m({number:r,version:c}),{compress:t,hexify:e})}/${i}`:B(n,{compress:t,hexify:e})}function h(n,t){return Array.isArray(n)?n.map(e=>h(e,t)):P(n,t)}function g(n){const t=N(n),e=Object.create(null);let r;if(t)r=n,e.version=t;else{const S=x(n);if(S)r=`${n}/${v[S]}`,e.version=S;else throw new Error(`Network is not a CIDR or IP: ${n}`)}const[s,i]=r.split("/");if(!/^[0-9]+$/.test(i))throw new Error(`Network is not a CIDR or IP: ${n}`);const{number:c,version:o,ipv4mapped:u,scopeid:l}=p(s);e.ip=m({number:c,version:o,ipv4mapped:u,scopeid:l}),e.cidr=`${e.ip}/${i}`,e.prefix=i,e.prefixPresent=!!t;const f=v[o],a=c.toString(2).padStart(f,"0"),d=Number(f-Number(i)),w=a.substring(0,f-d);return e.start=BigInt(`0b${w}${"0".repeat(d)}`),e.end=BigInt(`0b${w}${"1".repeat(d)}`),e}function z(n,t){return!(t.start<n.start||t.end>n.end)}function C(n){return n===0n?0n:2n**BigInt(String(n.toString(2).length-1))}function $(n){if(n.end-n.start===1n)return n.end%2n===0n?[{start:n.start,end:n.start},{start:n.end,end:n.end}]:[{start:n.start,end:n.end}];const t=A(n.end,n.start);let e=C(t),r,s;if(t===e&&n.start+t===n.end)return[n];if(n.start%e===0n)r=n.start,s=r+e-1n;else if(r=n.end/e*e,r+e-1n>n.end){for(r=(n.end/e-1n)*e;r<n.start;)e/=2n,r=(n.end/e-1n)*e;s=r+e-1n}else r=n.end/e*e,s=r+e-1n;let i=[{start:r,end:s}];return r!==n.start&&(i=i.concat($({start:n.start,end:r-1n}))),s!==n.end&&(i=i.concat($({start:s+1n,end:n.end}))),i}function A(n,t){return n+1n-t}function j(n,t){const e=h(m({number:BigInt(n.start.toString()),version:t})),r=A(n.end,n.start).toString(2),s=v[t]-(r.match(/0/g)||[]).length;return`${e}/${s}`}function O(n){const t={4:{},6:{}};for(const{start:e,end:r,version:s}of n)t[s][String(e)]||(t[s][String(e)]={start:0,end:0}),t[s][String(r)]||(t[s][String(r)]={start:0,end:0}),t[s][String(e)].start+=1,t[s][String(r)].end+=1;return t}function V(n){let t=null,e=null;const r=Object.keys(n);let s=0;const i=[];for(const[c,o]of r.entries()){const u=n[String(o)];if(t===null&&u.start&&(t=BigInt(o)),u.end&&(e=BigInt(o)),t===null)continue;u.start&&(s+=u.start),u.end&&(s-=u.end);const l=r[c+1];if(u.end&&s===0&&l&&BigInt(l)-BigInt(o)>1){for(const f of $({start:t,end:e}))i.push(f);t=null,e=null}else if(c===r.length-1)for(const f of $({start:t,end:e}))i.push(f)}return i}function k(n){const t=b((Array.isArray(n)?n:[n]).sort(I).map(g)),e=O(t),r={4:[],6:[]};for(const s of[4,6])r[s]=V(e[s]).map(i=>j(i,s));return[...r[4].sort(I),...r[6].sort(I)]}function*E(n){const t=b(Array.isArray(n)?n:[n]);for(const e of k(t)){const{start:r,end:s,version:i}=g(e);for(let c=r;c<=s;c++)yield h(m({number:c,version:i}))}}function R(n,t){const e=b(Array.isArray(n)?n:[n]),r=b(Array.isArray(t)?t:[t]),s=r.length;let i=0;for(const c of e){const o=g(c);for(const u of r){const l=g(u);if(o.version===l.version&&z(o,l)){i++;continue}}}return i===s}export{R as c,E as e,k as m,g as p};
|
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{B as Vs,U as Ws,V as qe,X as Vn,r as Wn,o as Nn,Y as jn,I as $n,Z as Ge,$ as Ns,a0 as Yn}from"./index-CqpVtsXc.js";/*!
|
||||
import{B as Vs,U as Ws,V as qe,X as Vn,r as Wn,o as Nn,Y as jn,H as $n,Z as Ge,$ as Ns,a0 as Yn}from"./index-mH92cJrc.js";/*!
|
||||
* @kurkle/color v0.3.4
|
||||
* https://github.com/kurkle/color#readme
|
||||
* (c) 2024 Jukka Kurkela
|
@@ -1 +1 @@
|
||||
import{_ as e,G as t,c as o,t as a,f as c}from"./index-CqpVtsXc.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return t(this.t)}}};function n(r,p,l,_,i,x){return c(),o("span",null,a(this.getLocaleText),1)}const m=e(s,[["render",n]]);export{m as L};
|
||||
import{_ as e,G as t,c as o,t as a,f as c}from"./index-mH92cJrc.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return t(this.t)}}};function n(r,p,l,_,i,x){return c(),o("span",null,a(this.getLocaleText),1)}const m=e(s,[["render",n]]);export{m as L};
|
@@ -1 +1 @@
|
||||
import{L as l}from"./localeText-DKJsmANp.js";import{d as c}from"./dayjs.min-26Zi9Z8w.js";import{_ as h,c as o,a as e,b as a,w as u,e as p,h as g,t as i,k as f,n as _,f as n}from"./index-CqpVtsXc.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(C,s,L,j,t,m){const d=g("LocaleText");return n(),o("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:_([{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"},"card-header pos"])},[a(f,{name:"zoom",mode:"out-in"},{default:u(()=>[t.dismiss?(n(),o("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)),a(d,{t:"Dismiss"})])])):(n(),o("div",b,[e("small",w,[a(d,{t:"FROM "}),p(" "+i(this.message.from),1)]),e("small",y,i(m.dayjs().format("hh:mm A")),1)]))]),_:1})],2),e("div",T,[e("div",null,i(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-DSmP42vs.js";import{d as c}from"./dayjs.min-BSByM7MH.js";import{_ as h,c as o,a as e,b as a,w as u,e as p,h as g,t as i,k as f,n as _,f as n}from"./index-mH92cJrc.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(C,s,L,j,t,m){const d=g("LocaleText");return n(),o("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:_([{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"},"card-header pos"])},[a(f,{name:"zoom",mode:"out-in"},{default:u(()=>[t.dismiss?(n(),o("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)),a(d,{t:"Dismiss"})])])):(n(),o("div",b,[e("small",w,[a(d,{t:"FROM "}),p(" "+i(this.message.from),1)]),e("small",y,i(m.dayjs().format("hh:mm A")),1)]))]),_:1})],2),e("div",T,[e("div",null,i(this.message.content),1)])],40,v)}const z=h(x,[["render",M],["__scopeId","data-v-94c76b54"]]);export{z as M};
|
1
src/static/dist/WGDashboardAdmin/assets/newConfiguration-CaR3VWG-.css
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/newConfiguration-CaR3VWG-.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.protocolBtnGroup a[data-v-c25dcde1]{transition:all .2s ease-in-out}
|
3
src/static/dist/WGDashboardAdmin/assets/newConfiguration-CmCSMTnr.js
vendored
Normal file
3
src/static/dist/WGDashboardAdmin/assets/newConfiguration-CmCSMTnr.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.protocolBtnGroup a[data-v-b0234609]{transition:all .2s ease-in-out}
|
@@ -1 +1 @@
|
||||
import{S as C,e as y,c as w,m as _,a as L,f as S,l as v,i as M,b as k,d as x,g as A,h as F,j as R,M as b,V as D,T as P,k as l,O as E,n as O,F as h,P as c,o as T,p as f,C as V,q as u,r as X}from"./Vector-C8V_x6Dm.js";import{_ as Y,D as G,c as $,d as q,f as j}from"./index-CqpVtsXc.js";class a extends C{constructor(t,e){super(),this.flatMidpoint_=null,this.flatMidpointRevision_=-1,this.maxDelta_=-1,this.maxDeltaRevision_=-1,e!==void 0&&!Array.isArray(t[0])?this.setFlatCoordinates(e,t):this.setCoordinates(t,e)}appendCoordinate(t){y(this.flatCoordinates,t),this.changed()}clone(){const t=new a(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t}closestPointXY(t,e,o,n){return n<w(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(_(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),L(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!1,t,e,o,n))}forEachSegment(t){return S(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)}getCoordinateAtM(t,e){return this.layout!="XYM"&&this.layout!="XYZM"?null:(e=e!==void 0?e:!1,v(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e))}getCoordinates(){return M(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinateAt(t,e){return k(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,this.stride)}getLength(){return x(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getFlatMidpoint(){return this.flatMidpointRevision_!=this.getRevision()&&(this.flatMidpoint_=this.getCoordinateAt(.5,this.flatMidpoint_??void 0),this.flatMidpointRevision_=this.getRevision()),this.flatMidpoint_}getSimplifiedGeometryInternal(t){const e=[];return e.length=A(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,0),new a(e,"XY")}getType(){return"LineString"}intersectsExtent(t){return F(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,this.getExtent())}setCoordinates(t,e){this.setLayout(e,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=R(this.flatCoordinates,0,t,this.stride),this.changed()}}const B={name:"osmap",props:{type:"",d:Object||Array},data(){return{osmAvailable:!0}},setup(){return{store:G()}},methods:{getLastLonLat(){if(this.type==="traceroute"){const i=this.d.findLast(t=>t.geo&&t.geo.lat&&t.geo.lon);return i?[i.geo.lon,i.geo.lat]:[0,0]}return[this.d.geo.lon,this.d.geo.lat]}},async mounted(){await fetch("https://tile.openstreetmap.org/",{signal:AbortSignal.timeout(1500)}).then(i=>{const t=new b({target:"map",layers:[new P({source:new E})],view:new D({center:l(this.getLastLonLat()),zoom:this.type==="traceroute"?3:10})}),e=[],o=new O;if(this.type==="traceroute")this.d.forEach(s=>{if(s.geo&&s.geo.lat&&s.geo.lon){const r=l([s.geo.lon,s.geo.lat]);e.push(r);const g=this.getLastLonLat(),m=new h({geometry:new c(r),last:s.geo.lon===g[0]&&s.geo.lat===g[1]});o.addFeature(m)}});else{const s=l([this.d.geo.lon,this.d.geo.lat]);e.push(s);const r=new h({geometry:new c(s)});o.addFeature(r)}const n=new a(e),d=new h({geometry:n});o.addFeature(d);const p=new T({source:o,style:function(s){if(s.getGeometry().getType()==="Point")return new f({image:new V({radius:10,fill:new X({color:s.get("last")?"#dc3545":"#0d6efd"}),stroke:new u({color:"white",width:5})})});if(s.getGeometry().getType()==="LineString")return new f({stroke:new u({color:"#0d6efd",width:2})})}});t.addLayer(p),this.store.Configuration.Server.dashboard_theme==="dark"&&t.on("postcompose",()=>{document.querySelector("#map").style.filter="grayscale(80%) invert(100%)"})}).catch(i=>{this.osmAvailable=!1})}},z={key:0,id:"map",class:"w-100 rounded-3"};function I(i,t,e,o,n,d){return this.osmAvailable?(j(),$("div",z)):q("",!0)}const H=Y(B,[["render",I]]);export{H as O};
|
||||
import{S as C,e as y,c as w,m as _,a as L,f as S,l as v,i as M,b as k,d as x,g as A,h as F,j as R,M as D,V as P,T as b,k as l,O as E,n as O,F as h,P as f,o as T,p as c,C as V,q as u,r as X}from"./Vector-C8V_x6Dm.js";import{_ as Y,D as G,c as $,d as j,f as q}from"./index-mH92cJrc.js";class r extends C{constructor(t,e){super(),this.flatMidpoint_=null,this.flatMidpointRevision_=-1,this.maxDelta_=-1,this.maxDeltaRevision_=-1,e!==void 0&&!Array.isArray(t[0])?this.setFlatCoordinates(e,t):this.setCoordinates(t,e)}appendCoordinate(t){y(this.flatCoordinates,t),this.changed()}clone(){const t=new r(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t}closestPointXY(t,e,o,n){return n<w(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(_(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),L(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!1,t,e,o,n))}forEachSegment(t){return S(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)}getCoordinateAtM(t,e){return this.layout!="XYM"&&this.layout!="XYZM"?null:(e=e!==void 0?e:!1,v(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e))}getCoordinates(){return M(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinateAt(t,e){return k(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,this.stride)}getLength(){return x(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getFlatMidpoint(){return this.flatMidpointRevision_!=this.getRevision()&&(this.flatMidpoint_=this.getCoordinateAt(.5,this.flatMidpoint_??void 0),this.flatMidpointRevision_=this.getRevision()),this.flatMidpoint_}getSimplifiedGeometryInternal(t){const e=[];return e.length=A(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,0),new r(e,"XY")}getType(){return"LineString"}intersectsExtent(t){return F(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,this.getExtent())}setCoordinates(t,e){this.setLayout(e,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=R(this.flatCoordinates,0,t,this.stride),this.changed()}}const B={name:"osmap",props:{type:"",d:Object||Array},data(){return{osmAvailable:!0}},setup(){return{store:G()}},methods:{getLastLonLat(){if(this.type==="traceroute"){const i=this.d.findLast(t=>t.geo&&t.geo.lat&&t.geo.lon);return i?[i.geo.lon,i.geo.lat]:[0,0]}return[this.d.geo.lon,this.d.geo.lat]}},async mounted(){await fetch("https://tile.openstreetmap.org/",{signal:AbortSignal.timeout(1500)}).then(i=>{const t=new D({target:"map",layers:[new b({source:new E})],view:new P({center:l(this.getLastLonLat()),zoom:this.type==="traceroute"?3:10})}),e=[],o=new O;if(this.type==="traceroute")this.d.forEach(s=>{if(s.geo&&s.geo.lat&&s.geo.lon){const a=l([s.geo.lon,s.geo.lat]);e.push(a);const g=this.getLastLonLat(),m=new h({geometry:new f(a),last:s.geo.lon===g[0]&&s.geo.lat===g[1]});o.addFeature(m)}});else{const s=l([this.d.geo.lon,this.d.geo.lat]);e.push(s);const a=new h({geometry:new f(s)});o.addFeature(a)}const n=new r(e),d=new h({geometry:n});o.addFeature(d);const p=new T({source:o,style:function(s){if(s.getGeometry().getType()==="Point")return new c({image:new V({radius:10,fill:new X({color:s.get("last")?"#dc3545":"#0d6efd"}),stroke:new u({color:"white",width:5})})});if(s.getGeometry().getType()==="LineString")return new c({stroke:new u({color:"#0d6efd",width:2})})}});t.addLayer(p)}).catch(i=>{this.osmAvailable=!1})}},z={key:0,id:"map",class:"w-100 rounded-3"};function I(i,t,e,o,n,d){return this.osmAvailable?(q(),$("div",z)):j("",!0)}const H=Y(B,[["render",I]]);export{H as O};
|
1
src/static/dist/WGDashboardAdmin/assets/peerAddModal-BSgPEdCb.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/peerAddModal-BSgPEdCb.js
vendored
Normal file
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
src/static/dist/WGDashboardAdmin/assets/peerAssignModal-DGqPau-e.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/peerAssignModal-DGqPau-e.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{_ as v,D as g,r as o,o as h,K as x,g as y,c as i,f as n,a as s,b as c,d as w,n as C,w as k,k as F}from"./index-CqpVtsXc.js";import{L as T}from"./localeText-DKJsmANp.js";import"./browser-CEKVUmOJ.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"},B={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},G={class:"mb-0"},L={class:"card-body p-4 d-flex flex-column gap-3"},N={style:{height:"300px"},class:"d-flex"},V=["value"],j={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)=>(n(),i("div",M,[s("div",S,[s("div",D,[s("div",P,[s("div",B,[s("h4",G,[c(T,{t:"Peer Configuration File"})]),s("button",{type:"button",class:"btn-close ms-auto",onClick:e[0]||(e[0]=_=>m("close"))})]),s("div",L,[s("div",N,[s("textarea",{style:{height:"300px"},class:C(["form-control w-100 rounded-3 animate__fadeIn animate__faster animate__animated",{"d-none":a.value}]),id:"peerConfigurationFile",value:l.value},null,10,V),a.value?(n(),i("div",j,e[2]||(e[2]=[s("span",{class:"visually-hidden"},"Loading...",-1)]))):w("",!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?(n(),i("span",q,e[4]||(e[4]=[s("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(n(),i("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
src/static/dist/WGDashboardAdmin/assets/peerConfigurationFile-Dzh_MPky.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/peerConfigurationFile-Dzh_MPky.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as v,D as g,r as o,o as h,L as x,g as y,c as i,f as n,a as s,b as c,d as w,n as C,w as k,k as F}from"./index-mH92cJrc.js";import{L as T}from"./localeText-DSmP42vs.js";import"./browser-B8eugmTx.js";import"./galois-field-CkUIqpA6.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"},L={class:"card rounded-3 shadow w-100"},P={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"},N={style:{height:"300px"},class:"d-flex"},V=["value"],j={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)=>(n(),i("div",M,[s("div",S,[s("div",D,[s("div",L,[s("div",P,[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",N,[s("textarea",{style:{height:"300px"},class:C(["form-control w-100 rounded-3 animate__fadeIn animate__faster animate__animated",{"d-none":a.value}]),id:"peerConfigurationFile",value:l.value},null,10,V),a.value?(n(),i("div",j,e[2]||(e[2]=[s("span",{class:"visually-hidden"},"Loading...",-1)]))):w("",!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?(n(),i("span",q,e[4]||(e[4]=[s("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(n(),i("span",$,e[3]||(e[3]=[s("i",{class:"bi bi-clipboard-fill"},null,-1)])))]),_:1})],8,W)])])])])])]))}},H=v(z,[["__scopeId","data-v-b0ea2d46"]]);export{H as default};
|
@@ -1 +1 @@
|
||||
import{L as o}from"./localeText-DKJsmANp.js";import{P as t}from"./peersDefaultSettingsInput-DG9w17oY.js";import{B as s,c as l,a,b as e,f as n}from"./index-CqpVtsXc.js";const r={class:"d-flex gap-3 flex-column"},i={class:"card rounded-3"},d={class:"card-header"},c={class:"my-2"},_={class:"card-body"},D=s({__name:"peerDefaultSettings",setup(p){return(g,m)=>(n(),l("div",r,[a("div",i,[a("div",d,[a("h6",c,[e(o,{t:"Peer Default Settings"})])]),a("div",_,[a("div",null,[e(t,{targetData:"peer_global_dns",title:"DNS"}),e(t,{targetData:"peer_endpoint_allowed_ip",title:"Endpoint Allowed IPs"}),e(t,{targetData:"peer_mtu",title:"MTU"}),e(t,{targetData:"peer_keep_alive",title:"Persistent Keepalive"}),e(t,{targetData:"remote_endpoint",title:"Peer Remote Endpoint",warning:!0,warningText:"This will be changed globally, and will be apply to all peer's QR code and configuration file."})])])])]))}});export{D as default};
|
||||
import{L as o}from"./localeText-DSmP42vs.js";import{P as t}from"./peersDefaultSettingsInput-DgB9BWQw.js";import{B as s,c as l,a,b as e,f as n}from"./index-mH92cJrc.js";const r={class:"d-flex gap-3 flex-column"},i={class:"card rounded-3"},d={class:"card-header"},c={class:"my-2"},_={class:"card-body"},D=s({__name:"peerDefaultSettings",setup(p){return(g,m)=>(n(),l("div",r,[a("div",i,[a("div",d,[a("h6",c,[e(o,{t:"Peer Default Settings"})])]),a("div",_,[a("div",null,[e(t,{targetData:"peer_global_dns",title:"DNS"}),e(t,{targetData:"peer_endpoint_allowed_ip",title:"Endpoint Allowed IPs"}),e(t,{targetData:"peer_mtu",title:"MTU"}),e(t,{targetData:"peer_keep_alive",title:"Persistent Keepalive"}),e(t,{targetData:"remote_endpoint",title:"Peer Remote Endpoint",warning:!0,warningText:"This will be changed globally, and will be apply to all peer's QR code and configuration file."})])])])]))}});export{D as default};
|
@@ -1 +1 @@
|
||||
import{a as p,S as b}from"./schedulePeerJob-D2j4hBth.js";import{_ as h,h as i,c as a,f as o,a as e,b as r,w as u,d as m,F as _,i as f,j as v,T as J,A as x,W as g}from"./index-CqpVtsXc.js";import{L as w}from"./localeText-DKJsmANp.js";import"./vue-datepicker-6WLWyFB2.js";import"./dayjs.min-26Zi9Z8w.js";const P={name:"peerJobs",setup(){return{store:g()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:b,ScheduleDropdown:p},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:x().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"},j={class:"mb-0 fw-normal"},k={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",j,[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",k,[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(J,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:u(()=>[(o(!0),a(_,null,f(this.selectedPeer.jobs,(s,E)=>(o(),v(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."})])])])):m("",!0)]),_:1})])])])])])}const z=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{z as default};
|
||||
import{a as p,S as b}from"./schedulePeerJob-9nZCB-vb.js";import{_ as h,h as i,c as a,f as o,a as e,b as r,w as u,d as m,F as _,i as f,j as v,T as J,A as x,W as g}from"./index-mH92cJrc.js";import{L as w}from"./localeText-DSmP42vs.js";import"./vue-datepicker-DXRta4gJ.js";import"./dayjs.min-BSByM7MH.js";const P={name:"peerJobs",setup(){return{store:g()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:b,ScheduleDropdown:p},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:x().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"},j={class:"mb-0 fw-normal"},k={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",j,[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",k,[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(J,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:u(()=>[(o(!0),a(_,null,f(this.selectedPeer.jobs,(s,E)=>(o(),v(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."})])])])):m("",!0)]),_:1})])])])])])}const z=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{z as default};
|
@@ -1 +1 @@
|
||||
import{S as _}from"./schedulePeerJob-D2j4hBth.js";import{_ as g,h as c,c as r,f as t,a as e,b as l,F as p,i as b,d as f,t as m,j as v,W as y}from"./index-CqpVtsXc.js";import{L as x}from"./localeText-DKJsmANp.js";import"./vue-datepicker-6WLWyFB2.js";import"./dayjs.min-26Zi9Z8w.js";const J={name:"peerJobsAllModal",setup(){return{store:y()}},components:{LocaleText:x,SchedulePeerJob:_},props:{configurationPeers:Array[Object]},computed:{getAllJobs(){return this.configurationPeers.filter(a=>a.jobs.length>0)}}},w={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},$={class:"container d-flex h-100 w-100"},k={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"},j={class:"card-body px-4 pb-4 pt-2"},C={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},P={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",w,[e("div",$,[e("div",k,[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",j,[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",C,[(t(!0),r(p,null,b(this.getAllJobs,(s,d)=>(t(),r("div",{class:"accordion-item",key:s.id},[e("h2",P,[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(),v(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-9nZCB-vb.js";import{_ as g,h as c,c as r,f as t,a as e,b as l,F as p,i as b,d as f,t as m,j as v,W as y}from"./index-mH92cJrc.js";import{L as x}from"./localeText-DSmP42vs.js";import"./vue-datepicker-DXRta4gJ.js";import"./dayjs.min-BSByM7MH.js";const J={name:"peerJobsAllModal",setup(){return{store:y()}},components:{LocaleText:x,SchedulePeerJob:_},props:{configurationPeers:Array[Object]},computed:{getAllJobs(){return this.configurationPeers.filter(a=>a.jobs.length>0)}}},w={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},$={class:"container d-flex h-100 w-100"},k={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"},j={class:"card-body px-4 pb-4 pt-2"},C={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},P={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",w,[e("div",$,[e("div",k,[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",j,[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",C,[(t(!0),r(p,null,b(this.getAllJobs,(s,d)=>(t(),r("div",{class:"accordion-item",key:s.id},[e("h2",P,[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(),v(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
@@ -1 +1 @@
|
||||
.icon[data-v-8d313844]{flex:1;min-width:30px;max-width:30px;width:30px;aspect-ratio:1 / 1}.icon[data-v-23f6ff04]{flex:1;aspect-ratio:1 / 1}#peerTag[data-v-ab3e5c4e]{width:300px;position:absolute;right:0;z-index:9999;margin-top:2px}.animation__fadeInDropdown[data-v-71502547]{animation-name:fadeInDropdown-71502547;animation-duration:.2s;animation-timing-function:cubic-bezier(.82,.58,.17,.9)}@keyframes fadeInDropdown-71502547{0%{opacity:0;filter:blur(3px);transform:translateY(-60px)}to{opacity:1;filter:blur(0px);transform:translateY(-40px)}}.displayModal .dashboardModal[data-v-71502547]{width:400px!important}@media screen and (max-width: 992px){.peerSearchContainer[data-v-71502547]{flex-direction:column}.peerSettingContainer .dashboardModal[data-v-71502547]{width:100%!important}}.peerSearchContainer>button[data-v-71502547],.peerSearchContainer .dropdown>button[data-v-71502547]{text-align:left;display:flex;align-items:center}span[data-v-d4e41a56]{top:-34px;left:0}.dropdown-menu[data-v-18549c26]{right:0;min-width:200px}.dropdown-menu.dropup[data-v-18549c26]{bottom:100%}.dropdown-item.disabled[data-v-18549c26],.dropdown-item[data-v-18549c26]:disabled{opacity:.7}.confirmDelete[data-v-18549c26]{padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.subMenuBtn.active[data-v-06609b08]{background-color:#ffffff20}.peerCard[data-v-06609b08]{transition:box-shadow .1s cubic-bezier(.82,.58,.17,.9)}.peerCard[data-v-06609b08]:hover{box-shadow:var(--bs-box-shadow)!important}@media screen and (max-width: 992px){.calendar-day .session-badge-list[data-v-5178a57b],.sessions-label[data-v-5178a57b]{display:none}}.session-list[data-v-5178a57b]{aspect-ratio:1 / 1}@media screen and (min-width: 992px){.session-dot[data-v-5178a57b]{display:none!important}.session-list[data-v-5178a57b]{height:12.5vh;overflow:scroll;aspect-ratio:auto!important}}.calendar-grid[data-v-3b03c7a5]{display:grid;grid-template-areas:"sun mon tue wed thu fri sat";grid-template-columns:repeat(7,1fr)}.calendar-day.day-6[data-v-3b03c7a5]{border-right:none!important}.calendar-day[data-v-3b03c7a5]{min-height:150px}@media screen and (max-width: 992px){.calendar-day[data-v-3b03c7a5]{min-height:100px!important}}@media screen and (min-width: 992px){.dayDetail[data-v-3b03c7a5]{display:none}}.extra-day .day-label[data-v-3b03c7a5]{opacity:.5}.peerNav .nav-link{&.active[data-v-f01325c0]{background-color:#efefef}}th[data-v-f01325c0],td[data-v-f01325c0]{background-color:transparent!important}@media screen and (max-width: 576px){.titleBtn[data-v-f01325c0]{flex-basis:100%}}
|
||||
.icon[data-v-3c48f50e]{flex:1;min-width:30px;max-width:30px;width:30px;aspect-ratio:1 / 1}.icon[data-v-accdf15e]{flex:1;aspect-ratio:1 / 1}#peerTag[data-v-ab3e5c4e]{width:300px;position:absolute;right:0;z-index:9999;margin-top:2px}.animation__fadeInDropdown[data-v-71502547]{animation-name:fadeInDropdown-71502547;animation-duration:.2s;animation-timing-function:cubic-bezier(.82,.58,.17,.9)}@keyframes fadeInDropdown-71502547{0%{opacity:0;filter:blur(3px);transform:translateY(-60px)}to{opacity:1;filter:blur(0px);transform:translateY(-40px)}}.displayModal .dashboardModal[data-v-71502547]{width:400px!important}@media screen and (max-width: 992px){.peerSearchContainer[data-v-71502547]{flex-direction:column}.peerSettingContainer .dashboardModal[data-v-71502547]{width:100%!important}}.peerSearchContainer>button[data-v-71502547],.peerSearchContainer .dropdown>button[data-v-71502547]{text-align:left;display:flex;align-items:center}span[data-v-d4e41a56]{top:-34px;left:0}.dropdown-menu[data-v-18549c26]{right:0;min-width:200px}.dropdown-menu.dropup[data-v-18549c26]{bottom:100%}.dropdown-item.disabled[data-v-18549c26],.dropdown-item[data-v-18549c26]:disabled{opacity:.7}.confirmDelete[data-v-18549c26]{padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.subMenuBtn.active[data-v-06609b08]{background-color:#ffffff20}.peerCard[data-v-06609b08]{transition:box-shadow .1s cubic-bezier(.82,.58,.17,.9)}.peerCard[data-v-06609b08]:hover{box-shadow:var(--bs-box-shadow)!important}@media screen and (max-width: 992px){.calendar-day .session-badge-list[data-v-5178a57b],.sessions-label[data-v-5178a57b]{display:none}}.session-list[data-v-5178a57b]{aspect-ratio:1 / 1}@media screen and (min-width: 992px){.session-dot[data-v-5178a57b]{display:none!important}.session-list[data-v-5178a57b]{height:12.5vh;overflow:scroll;aspect-ratio:auto!important}}.calendar-grid[data-v-3b03c7a5]{display:grid;grid-template-areas:"sun mon tue wed thu fri sat";grid-template-columns:repeat(7,1fr)}.calendar-day.day-6[data-v-3b03c7a5]{border-right:none!important}.calendar-day[data-v-3b03c7a5]{min-height:150px}@media screen and (max-width: 992px){.calendar-day[data-v-3b03c7a5]{min-height:100px!important}}@media screen and (min-width: 992px){.dayDetail[data-v-3b03c7a5]{display:none}}.extra-day .day-label[data-v-3b03c7a5]{opacity:.5}.peerNav .nav-link{&.active[data-v-f01325c0]{background-color:#efefef}}th[data-v-f01325c0],td[data-v-f01325c0]{background-color:transparent!important}@media screen and (max-width: 576px){.titleBtn[data-v-f01325c0]{flex-basis:100%}}
|
File diff suppressed because one or more lines are too long
2
src/static/dist/WGDashboardAdmin/assets/peerList-CcSkTACy.js
vendored
Normal file
2
src/static/dist/WGDashboardAdmin/assets/peerList-CcSkTACy.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{Q as i}from"./browser-CEKVUmOJ.js";import{L as c}from"./localeText-DKJsmANp.js";import{_ as l,h as p,c as n,f as d,a as e,b as _,d as m,n as u,g as h,D as f}from"./index-CqpVtsXc.js";const g={name:"peerQRCode",components:{LocaleText:c},props:{selectedPeer:Object},setup(){return{dashboardStore:f()}},data(){return{loading:!0}},mounted(){h("/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 Q(o,t,a,N,s,R){const r=p("LocaleText");return d(),n("div",b,[e("div",v,[e("div",C,[e("div",w,[e("div",P,[e("h4",x,[_(r,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=$=>this.$emit("close"))})]),e("div",S,[e("div",y,[e("canvas",{id:"qrcode",class:u(["rounded-3 shadow animate__animated animate__fadeIn animate__faster",{"d-none":s.loading}])},null,2),s.loading?(d(),n("div",L,t[1]||(t[1]=[e("span",{class:"visually-hidden"},"Loading...",-1)]))):m("",!0)])])])])])])}const q=l(g,[["render",Q],["__scopeId","data-v-7c287bf3"]]);export{q as default};
|
1
src/static/dist/WGDashboardAdmin/assets/peerQRCode-BKf0Be_T.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/peerQRCode-BKf0Be_T.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{Q as i}from"./browser-B8eugmTx.js";import{L as c}from"./localeText-DSmP42vs.js";import{_ as l,h as p,c as n,f as d,a as e,b as m,d as _,n as u,g as h,D as f}from"./index-mH92cJrc.js";import"./galois-field-CkUIqpA6.js";const g={name:"peerQRCode",components:{LocaleText:c},props:{selectedPeer:Object},setup(){return{dashboardStore:f()}},data(){return{loading:!0}},mounted(){h("/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 Q(o,t,a,N,s,R){const r=p("LocaleText");return d(),n("div",b,[e("div",v,[e("div",C,[e("div",w,[e("div",P,[e("h4",x,[m(r,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=$=>this.$emit("close"))})]),e("div",S,[e("div",y,[e("canvas",{id:"qrcode",class:u(["rounded-3 shadow animate__animated animate__fadeIn animate__faster",{"d-none":s.loading}])},null,2),s.loading?(d(),n("div",L,t[1]||(t[1]=[e("span",{class:"visually-hidden"},"Loading...",-1)]))):_("",!0)])])])])])])}const z=l(g,[["render",Q],["__scopeId","data-v-7c287bf3"]]);export{z as default};
|
@@ -1 +1 @@
|
||||
import{_ as p,q as m,G as f,W as h,r as u,a2 as _,K as v,J as g,o as x,a3 as S,c as y,d as b,f as B,a as s,m as w,y as T}from"./index-CqpVtsXc.js";const q={key:0,class:"fixed-bottom w-100 bottom-0 z-2 p-3",style:{"z-index":"1"}},C={class:"d-flex flex-column searchPeersContainer ms-auto p-2 rounded-5",style:{width:"300px"}},P={class:"rounded-5 border border-white p-2 d-flex align-items-center gap-1 w-100"},R=["placeholder"],k={__name:"peerSearchBar",props:["ConfigurationInfo"],emits:["close"],setup(V,{emit:z}){const l=m(()=>f("Search Peers..."));let r;const t=h(),e=u(t.searchString),d=()=>{r?(clearTimeout(r),r=setTimeout(()=>{t.searchString=e.value},300)):r=setTimeout(()=>{t.searchString=e.value},300)};_("searchBar");const a=v(),i=g();a.query.peer&&(e.value=a.query.peer,i.replace({query:null}));const n=u(!0);return x(()=>{document.querySelector("#searchPeers").focus()}),S(()=>{n.value=!1}),(G,o)=>n.value?(B(),y("div",q,[s("div",C,[s("div",P,[w(s("input",{ref:"searchBar",class:"flex-grow-1 form-control form-control-sm rounded-5 bg-transparent border-0 border-secondary-subtle",placeholder:l.value,id:"searchPeers",onKeyup:o[0]||(o[0]=c=>d()),"onUpdate:modelValue":o[1]||(o[1]=c=>e.value=c)},null,40,R),[[T,e.value]])])])])):b("",!0)}},K=p(k,[["__scopeId","data-v-576347d8"]]);export{K as default};
|
||||
import{_ as p,q as m,G as f,W as h,r as u,a2 as _,L as v,K as g,o as x,a3 as S,c as y,d as b,f as B,a as s,m as w,y as T}from"./index-mH92cJrc.js";const q={key:0,class:"fixed-bottom w-100 bottom-0 z-2 p-3",style:{"z-index":"1"}},C={class:"d-flex flex-column searchPeersContainer ms-auto p-2 rounded-5",style:{width:"300px"}},P={class:"rounded-5 border border-white p-2 d-flex align-items-center gap-1 w-100"},R=["placeholder"],k={__name:"peerSearchBar",props:["ConfigurationInfo"],emits:["close"],setup(V,{emit:z}){const l=m(()=>f("Search Peers..."));let r;const t=h(),e=u(t.searchString),d=()=>{r?(clearTimeout(r),r=setTimeout(()=>{t.searchString=e.value},300)):r=setTimeout(()=>{t.searchString=e.value},300)};_("searchBar");const a=v(),i=g();a.query.peer&&(e.value=a.query.peer,i.replace({query:null}));const n=u(!0);return x(()=>{document.querySelector("#searchPeers").focus()}),S(()=>{n.value=!1}),(G,o)=>n.value?(B(),y("div",q,[s("div",C,[s("div",P,[w(s("input",{ref:"searchBar",class:"flex-grow-1 form-control form-control-sm rounded-5 bg-transparent border-0 border-secondary-subtle",placeholder:l.value,id:"searchPeers",onKeyup:o[0]||(o[0]=c=>d()),"onUpdate:modelValue":o[1]||(o[1]=c=>e.value=c)},null,40,R),[[T,e.value]])])])])):b("",!0)}},K=p(k,[["__scopeId","data-v-576347d8"]]);export{K 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/dist/WGDashboardAdmin/assets/peerShareLinkModal-DYghPK4L.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/peerShareLinkModal-DYghPK4L.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.card[data-v-8cfb4d4d]{border-color:var(--bs-border-color)!important}textarea[data-v-913bd64b]:focus,input[data-v-913bd64b]:focus{box-shadow:none;border-color:var(--bs-border-color)!important}textarea[data-v-913bd64b]{padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}
|
1
src/static/dist/WGDashboardAdmin/assets/peerShareLinkModal-GoWqB_pD.css
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/peerShareLinkModal-GoWqB_pD.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.card[data-v-1a7765d4]{border-color:var(--bs-border-color)!important}textarea[data-v-01e380d2]:focus,input[data-v-01e380d2]:focus{box-shadow:none;border-color:var(--bs-border-color)!important}textarea[data-v-01e380d2]{padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}
|
@@ -1 +1 @@
|
||||
import{_ as h,c as o,a as e,m as c,d as m,b as d,h as f,y as g,n as v,t as p,z as b,D as w,A as x,f as r}from"./index-CqpVtsXc.js";import{L as _}from"./localeText-DKJsmANp.js";const k={components:{LocaleText:_},props:{targetData:String,title:String,warning:!1,warningText:""},setup(){const s=w(),t=`input_${x()}`;return{store:s,uuid:t}},data(){return{value:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.value=this.store.Configuration.Peers[this.targetData]},methods:{async useValidation(){this.changed&&await b("/api/updateDashboardConfigurationItem",{section:"Peers",key:this.targetData,value:this.value},s=>{s.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Peers[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=s.message),this.changed=!1,this.updating=!1})}}},V={class:"form-group mb-2"},D=["for"],y=["id","disabled"],T={class:"invalid-feedback"},C={key:0,class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block mt-1"};function F(s,t,a,I,n,u){const l=f("LocaleText");return r(),o("div",V,[e("label",{for:this.uuid,class:"text-muted mb-1"},[e("strong",null,[e("small",null,[d(l,{t:this.title},null,8,["t"])])])],8,D),c(e("input",{type:"text",class:v(["form-control",{"is-invalid":n.showInvalidFeedback,"is-valid":n.isValid}]),id:this.uuid,"onUpdate:modelValue":t[0]||(t[0]=i=>this.value=i),onKeydown:t[1]||(t[1]=i=>this.changed=!0),onBlur:t[2]||(t[2]=i=>u.useValidation()),disabled:this.updating},null,42,y),[[g,this.value]]),e("div",T,p(this.invalidFeedback),1),a.warning?(r(),o("div",C,[e("small",null,[t[3]||(t[3]=e("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),d(l,{t:a.warningText},null,8,["t"])])])):m("",!0)])}const B=h(k,[["render",F]]);export{B as P};
|
||||
import{_ as h,c as o,a as e,m as c,d as m,b as d,h as f,y as g,n as v,t as p,z as b,D as w,A as x,f as r}from"./index-mH92cJrc.js";import{L as _}from"./localeText-DSmP42vs.js";const k={components:{LocaleText:_},props:{targetData:String,title:String,warning:!1,warningText:""},setup(){const s=w(),t=`input_${x()}`;return{store:s,uuid:t}},data(){return{value:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.value=this.store.Configuration.Peers[this.targetData]},methods:{async useValidation(){this.changed&&await b("/api/updateDashboardConfigurationItem",{section:"Peers",key:this.targetData,value:this.value},s=>{s.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Peers[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=s.message),this.changed=!1,this.updating=!1})}}},V={class:"form-group mb-2"},D=["for"],y=["id","disabled"],T={class:"invalid-feedback"},C={key:0,class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block mt-1"};function F(s,t,a,I,n,u){const l=f("LocaleText");return r(),o("div",V,[e("label",{for:this.uuid,class:"text-muted mb-1"},[e("strong",null,[e("small",null,[d(l,{t:this.title},null,8,["t"])])])],8,D),c(e("input",{type:"text",class:v(["form-control",{"is-invalid":n.showInvalidFeedback,"is-valid":n.isValid}]),id:this.uuid,"onUpdate:modelValue":t[0]||(t[0]=i=>this.value=i),onKeydown:t[1]||(t[1]=i=>this.changed=!0),onBlur:t[2]||(t[2]=i=>u.useValidation()),disabled:this.updating},null,42,y),[[g,this.value]]),e("div",T,p(this.invalidFeedback),1),a.warning?(r(),o("div",C,[e("small",null,[t[3]||(t[3]=e("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),d(l,{t:a.warningText},null,8,["t"])])])):m("",!0)])}const B=h(k,[["render",F]]);export{B as P};
|
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{L as n}from"./localeText-DKJsmANp.js";import{c as a,d as r,e as s,j as i,f as e}from"./index-CqpVtsXc.js";const d={class:"position-relative"},c={key:0,class:"badge wireguardBg rounded-3 shadow z-1"},l={key:1,class:"badge amneziawgBg rounded-3 shadow"},p={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(o){return(m,t)=>(e(),a("div",d,[o.protocol==="wg"?(e(),a("span",c,[t[0]||(t[0]=s(" WireGuard ")),o.mini?r("",!0):(e(),i(n,{key:0,t:"Configuration"}))])):o.protocol==="awg"?(e(),a("span",l,[t[1]||(t[1]=s(" AmneziaWG ")),o.mini?r("",!0):(e(),i(n,{key:0,t:"Configuration"}))])):r("",!0)]))}};export{p as _};
|
||||
import{L as n}from"./localeText-DSmP42vs.js";import{c as a,d as r,e as s,j as i,f as e}from"./index-mH92cJrc.js";const d={class:"position-relative"},c={key:0,class:"badge wireguardBg rounded-3 shadow z-1"},l={key:1,class:"badge amneziawgBg rounded-3 shadow"},p={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(o){return(m,t)=>(e(),a("div",d,[o.protocol==="wg"?(e(),a("span",c,[t[0]||(t[0]=s(" WireGuard ")),o.mini?r("",!0):(e(),i(n,{key:0,t:"Configuration"}))])):o.protocol==="awg"?(e(),a("span",l,[t[1]||(t[1]=s(" AmneziaWG ")),o.mini?r("",!0):(e(),i(n,{key:0,t:"Configuration"}))])):r("",!0)]))}};export{p as _};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
.btn.disabled[data-v-6a5aba2a]{opacity:1;background-color:#0d6efd17;border-color:transparent}[data-v-4aa63a3e]{font-size:.875rem}input[data-v-4aa63a3e]{padding:.1rem .4rem}input[data-v-4aa63a3e]:disabled{border-color:transparent;background-color:#0d6efd17;color:#0d6efd}.dp__main[data-v-4aa63a3e]{width:auto;flex-grow:1;--dp-input-padding: 2.5px 30px 2.5px 12px;--dp-border-radius: .5rem}
|
||||
.btn.disabled[data-v-abe2acbc]{opacity:1;background-color:#0d6efd17;border-color:transparent}[data-v-4aa63a3e]{font-size:.875rem}input[data-v-4aa63a3e]{padding:.1rem .4rem}input[data-v-4aa63a3e]:disabled{border-color:transparent;background-color:#0d6efd17;color:#0d6efd}.dp__main[data-v-4aa63a3e]{width:auto;flex-grow:1;--dp-input-padding: 2.5px 30px 2.5px 12px;--dp-border-radius: .5rem}
|
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as c,z as D,D as m,A as x,c as i,a as t,t as S,m as l,y as u,e as p,f as o,b as n,F as $,i as w,h as r,w as I}from"./index-CqpVtsXc.js";import{P}from"./peersDefaultSettingsInput-DG9w17oY.js";import{A as k,a as A,D as y,b as C,c as V,d as F,e as T,_ as L}from"./dashboardEmailSettings-DsGs_ziK.js";import{D as R,a as W}from"./dashboardSettingsWireguardConfigurationAutostart-DUQUQ-VN.js";import{L as U}from"./localeText-DKJsmANp.js";import"./dayjs.min-26Zi9Z8w.js";import"./vue-datepicker-6WLWyFB2.js";const B={name:"dashboardSettingsInputIPAddressAndPort",props:{},setup(){const e=m(),s=`input_${x()}`;return{store:e,uuid:s}},data(){return{app_ip:"",app_port:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.app_ip=this.store.Configuration.Server.app_ip,this.app_port=this.store.Configuration.Server.app_port},methods:{async useValidation(){this.changed&&await D("/api/updateDashboardConfigurationItem",{section:"Server",key:this.targetData,value:this.value},e=>{e.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Account[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=e.message)})}}},G={class:"invalid-feedback d-block mt-0"},N={class:"row"},E={class:"form-group mb-2 col-sm"},M=["for"],j=["id"],z={class:"form-group col-sm"},K=["for"],q=["id"];function H(e,s,h,_,b,f){return o(),i("div",null,[t("div",G,S(this.invalidFeedback),1),t("div",N,[t("div",E,[t("label",{for:"app_ip_"+this.uuid,class:"text-muted mb-1"},s[2]||(s[2]=[t("strong",null,[t("small",null,"Dashboard IP Address")],-1)]),8,M),l(t("input",{type:"text",class:"form-control mb-2",id:"app_ip_"+this.uuid,"onUpdate:modelValue":s[0]||(s[0]=a=>this.app_ip=a)},null,8,j),[[u,this.app_ip]]),s[3]||(s[3]=t("div",{class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block"},[t("small",null,[t("i",{class:"bi bi-exclamation-triangle-fill me-2"}),t("code",null,"0.0.0.0"),p(" means it can be access by anyone with your server IP Address.")])],-1))]),t("div",z,[t("label",{for:"app_port_"+this.uuid,class:"text-muted mb-1"},s[4]||(s[4]=[t("strong",null,[t("small",null,"Dashboard Port")],-1)]),8,K),l(t("input",{type:"text",class:"form-control mb-2",id:"app_port_"+this.uuid,"onUpdate:modelValue":s[1]||(s[1]=a=>this.app_port=a)},null,8,q),[[u,this.app_port]])])]),s[5]||(s[5]=t("button",{class:"btn btn-success btn-sm fw-bold rounded-3"},[t("i",{class:"bi bi-floppy-fill me-2"}),p("Update Dashboard Settings & Restart ")],-1))])}const J=c(B,[["render",H]]),O={name:"settings",components:{DashboardEmailSettings:L,DashboardSettingsWireguardConfigurationAutostart:W,DashboardIPPortInput:T,DashboardLanguage:F,LocaleText:U,AccountSettingsMFA:V,DashboardAPIKeys:C,DashboardSettingsInputIPAddressAndPort:J,DashboardTheme:y,DashboardSettingsInputWireguardConfigurationPath:R,AccountSettingsInputPassword:A,AccountSettingsInputUsername:k,PeersDefaultSettingsInput:P},setup(){return{dashboardConfigurationStore:m()}},data(){return{activeTab:"WGDashboard",tabs:[{id:"",title:"WGDashboard Settings"},{id:"peers_settings",title:"Peers Settings"},{id:"wireguard_settings",title:"WireGuard Configuration Settings"}]}}},Q={class:"mt-md-5 mt-3 text-body mb-3"},X={class:"container-md d-flex flex-column gap-3"},Y={class:"border-bottom pb-3"},Z={class:"nav nav-pills nav-justified align-items-center gap-2"},tt={class:"nav-item"},st={class:"my-2"};function et(e,s,h,_,b,f){const a=r("LocaleText"),g=r("RouterLink"),v=r("RouterView");return o(),i("div",Q,[t("div",X,[t("div",Y,[t("ul",Z,[(o(!0),i($,null,w(this.tabs,d=>(o(),i("li",tt,[n(g,{to:{name:d.title},class:"nav-link rounded-3","exact-active-class":"active",role:"button"},{default:I(()=>[t("h6",st,[n(a,{t:d.title},null,8,["t"])])]),_:2},1032,["to"])]))),256))])]),n(v)])])}const ut=c(O,[["render",et]]);export{ut as default};
|
||||
import{_ as c,z as D,D as m,A as x,c as i,a as t,t as S,m as l,y as u,e as p,f as o,b as n,F as $,i as w,h as r,w as I}from"./index-mH92cJrc.js";import{P}from"./peersDefaultSettingsInput-DgB9BWQw.js";import{A as k,a as A,D as y,b as C,c as V,d as F,e as T,_ as L}from"./dashboardEmailSettings-CqwOH0Oa.js";import{D as R,a as W}from"./dashboardSettingsWireguardConfigurationAutostart-CcYlrBrT.js";import{L as U}from"./localeText-DSmP42vs.js";import"./dayjs.min-BSByM7MH.js";import"./vue-datepicker-DXRta4gJ.js";const B={name:"dashboardSettingsInputIPAddressAndPort",props:{},setup(){const e=m(),s=`input_${x()}`;return{store:e,uuid:s}},data(){return{app_ip:"",app_port:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.app_ip=this.store.Configuration.Server.app_ip,this.app_port=this.store.Configuration.Server.app_port},methods:{async useValidation(){this.changed&&await D("/api/updateDashboardConfigurationItem",{section:"Server",key:this.targetData,value:this.value},e=>{e.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Account[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=e.message)})}}},G={class:"invalid-feedback d-block mt-0"},N={class:"row"},E={class:"form-group mb-2 col-sm"},M=["for"],j=["id"],z={class:"form-group col-sm"},K=["for"],q=["id"];function H(e,s,h,_,b,f){return o(),i("div",null,[t("div",G,S(this.invalidFeedback),1),t("div",N,[t("div",E,[t("label",{for:"app_ip_"+this.uuid,class:"text-muted mb-1"},s[2]||(s[2]=[t("strong",null,[t("small",null,"Dashboard IP Address")],-1)]),8,M),l(t("input",{type:"text",class:"form-control mb-2",id:"app_ip_"+this.uuid,"onUpdate:modelValue":s[0]||(s[0]=a=>this.app_ip=a)},null,8,j),[[u,this.app_ip]]),s[3]||(s[3]=t("div",{class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block"},[t("small",null,[t("i",{class:"bi bi-exclamation-triangle-fill me-2"}),t("code",null,"0.0.0.0"),p(" means it can be access by anyone with your server IP Address.")])],-1))]),t("div",z,[t("label",{for:"app_port_"+this.uuid,class:"text-muted mb-1"},s[4]||(s[4]=[t("strong",null,[t("small",null,"Dashboard Port")],-1)]),8,K),l(t("input",{type:"text",class:"form-control mb-2",id:"app_port_"+this.uuid,"onUpdate:modelValue":s[1]||(s[1]=a=>this.app_port=a)},null,8,q),[[u,this.app_port]])])]),s[5]||(s[5]=t("button",{class:"btn btn-success btn-sm fw-bold rounded-3"},[t("i",{class:"bi bi-floppy-fill me-2"}),p("Update Dashboard Settings & Restart ")],-1))])}const J=c(B,[["render",H]]),O={name:"settings",components:{DashboardEmailSettings:L,DashboardSettingsWireguardConfigurationAutostart:W,DashboardIPPortInput:T,DashboardLanguage:F,LocaleText:U,AccountSettingsMFA:V,DashboardAPIKeys:C,DashboardSettingsInputIPAddressAndPort:J,DashboardTheme:y,DashboardSettingsInputWireguardConfigurationPath:R,AccountSettingsInputPassword:A,AccountSettingsInputUsername:k,PeersDefaultSettingsInput:P},setup(){return{dashboardConfigurationStore:m()}},data(){return{activeTab:"WGDashboard",tabs:[{id:"",title:"WGDashboard Settings"},{id:"peers_settings",title:"Peers Settings"},{id:"wireguard_settings",title:"WireGuard Configuration Settings"}]}}},Q={class:"mt-md-5 mt-3 text-body mb-3"},X={class:"container-md d-flex flex-column gap-3"},Y={class:"border-bottom pb-3"},Z={class:"nav nav-pills nav-justified align-items-center gap-2"},tt={class:"nav-item"},st={class:"my-2"};function et(e,s,h,_,b,f){const a=r("LocaleText"),g=r("RouterLink"),v=r("RouterView");return o(),i("div",Q,[t("div",X,[t("div",Y,[t("ul",Z,[(o(!0),i($,null,w(this.tabs,d=>(o(),i("li",tt,[n(g,{to:{name:d.title},class:"nav-link rounded-3","exact-active-class":"active",role:"button"},{default:I(()=>[t("h6",st,[n(a,{t:d.title},null,8,["t"])])]),_:2},1032,["to"])]))),256))])]),n(v)])])}const ut=c(O,[["render",et]]);export{ut as default};
|
@@ -1 +1 @@
|
||||
import{_ as u,c as r,a as e,b as o,h as m,e as p,d as c,t as h,m as l,y as d,z as f,D as w,f as i}from"./index-CqpVtsXc.js";import{L as g}from"./localeText-DKJsmANp.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:w()}},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,f("/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"},$={for:"confirmPassword",class:"mb-1 text-muted"},q=["disabled"],A={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=m("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]=p(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):c("",!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",$,[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",A,[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,q)])])])],8,_)}const W=u(b,[["render",B]]);export{W as default};
|
||||
import{_ as u,c as r,a as e,b as o,h as m,e as p,d as c,t as h,m as l,y as d,z as f,D as w,f as i}from"./index-mH92cJrc.js";import{L as g}from"./localeText-DSmP42vs.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:w()}},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,f("/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"},$={for:"confirmPassword",class:"mb-1 text-muted"},q=["disabled"],A={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=m("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]=p(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):c("",!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",$,[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",A,[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,q)])])])],8,_)}const W=u(b,[["render",B]]);export{W as default};
|
1
src/static/dist/WGDashboardAdmin/assets/share-Clo4DEcY.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/share-Clo4DEcY.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{_,c as m,a as t,b as r,h as p,r as c,D as h,g as u,L as b,f}from"./index-mH92cJrc.js";import{Q as v}from"./browser-B8eugmTx.js";import{L as y}from"./localeText-DSmP42vs.js";import"./galois-field-CkUIqpA6.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=b(),e=c(!1),s=h(),n=c(""),i=c(void 0),l=c(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(i.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(i.value=d.data,l.value=new Blob([i.value.file],{type:"text/plain"})):i.value=void 0,e.value=!0}),{store:s,theme:n,peerConfiguration:i,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),s=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=s,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},x=["data-bs-theme"],w={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"}},L={class:"m-auto"},I={key:1,class:"d-flex align-items-center flex-column gap-3"},B={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},k={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},R={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},D=["download","href"];function q(o,e,s,n,i,l){const a=p("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",w,[this.peerConfiguration?(f(),m("div",I,[t("div",B,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),r(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",k,null,512),t("p",R,[r(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),r(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,D)])):(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",L,[r(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,x)}const O=_(g,[["render",q],["__scopeId","data-v-1b44aacd"]]);export{O as default};
|
@@ -1 +0,0 @@
|
||||
import{_,c as m,a as t,b as r,h,r as c,D as p,g as u,K as b,f}from"./index-CqpVtsXc.js";import{Q as v}from"./browser-CEKVUmOJ.js";import{L as y}from"./localeText-DKJsmANp.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=b(),e=c(!1),s=p(),n=c(""),i=c(void 0),l=c(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(i.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(i.value=d.data,l.value=new Blob([i.value.file],{type:"text/plain"})):i.value=void 0,e.value=!0}),{store:s,theme:n,peerConfiguration:i,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),s=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=s,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},x=["data-bs-theme"],w={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"},B={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},k={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},R={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},D=["download","href"];function q(o,e,s,n,i,l){const a=h("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",w,[this.peerConfiguration?(f(),m("div",L,[t("div",B,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),r(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",k,null,512),t("p",R,[r(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),r(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,D)])):(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,[r(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,x)}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 @@
|
||||
.square[data-v-2ad535bb]{height:var(--2ec4d3bc);transition:background-color .5s cubic-bezier(.42,0,.22,1)}.square[data-v-9509d7a0]{height:var(--2dc8ab7e);transition:background-color .5s cubic-bezier(.42,0,.22,1)}
|
||||
.square[data-v-f8963858]{height:var(--60cb52de);transition:background-color .5s cubic-bezier(.42,0,.22,1)}.square[data-v-9509d7a0]{height:var(--2dc8ab7e);transition:background-color .5s cubic-bezier(.42,0,.22,1)}
|
@@ -1 +0,0 @@
|
||||
import{_ as b,p as m,q as p,r as v,c as t,f as r,b as f,w as g,d as x,n as C,s as n,a as l,t as d,k as w}from"./index-CqpVtsXc.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=v(!1),o=p(()=>u.square?"40px":"25px");return(c,a)=>(r(),t("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}%)`})},[f(w,{name:"zoomReversed"},{default:g(()=>[s.value?(r(),t("div",{key:0,style:n([{"white-space":"nowrap"},{top:o.value}]),class:C(["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)):x("",!0)]),_:1})],36))}},B=b(k,[["__scopeId","data-v-2ad535bb"]]);export{B as C};
|
@@ -0,0 +1 @@
|
||||
import{_ as p,r as b,q as f,c as t,f as r,b as n,w as x,d as v,n as g,s as l,a as c,e as C,t as d,k as w,p as y}from"./index-mH92cJrc.js";import{L as _}from"./localeText-DSmP42vs.js";const k={class:"text-muted me-2"},N={class:"fw-bold"},q={__name:"cpuCore",props:{core_number:Number,percentage:Number,align:Boolean,square:Boolean},setup(e){y(i=>({"60cb52de":s.value}));const u=e,o=b(!1),s=f(()=>u.square?"40px":"25px");return(i,a)=>(r(),t("div",{class:"flex-grow-1 square rounded-3 border position-relative p-2",onMouseenter:a[0]||(a[0]=m=>o.value=!0),onMouseleave:a[1]||(a[1]=m=>o.value=!1),style:l({"background-color":`rgb(13 110 253 / ${e.percentage*10}%)`})},[n(w,{name:"zoomReversed"},{default:x(()=>[o.value?(r(),t("div",{key:0,style:l([{"white-space":"nowrap"},{top:s.value}]),class:g(["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"]])},[c("small",k,[n(_,{t:"Core"}),C(" #"+d(e.core_number+1),1)]),c("small",N,d(e.percentage)+"% ",1)],6)):v("",!0)]),_:1})],36))}},h=p(q,[["__scopeId","data-v-f8963858"]]);export{h as C};
|
File diff suppressed because one or more lines are too long
1
src/static/dist/WGDashboardAdmin/assets/totp-Bom_Rztd.js
vendored
Normal file
1
src/static/dist/WGDashboardAdmin/assets/totp-Bom_Rztd.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as h,c as m,a as t,b as i,h as d,t as p,m as f,y as _,j as r,w as c,z as b,D as v,g,f as n}from"./index-mH92cJrc.js";import{Q as x}from"./browser-B8eugmTx.js";import{L as y}from"./localeText-DSmP42vs.js";import"./galois-field-CkUIqpA6.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=v();let e="";return await g("/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)?b("/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"],L={class:"m-auto text-body",style:{width:"500px"}},w={class:"d-flex flex-column"},C={class:"dashboardLogo display-4"},M={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"}},D={for:"totp",class:"mb-2"},R={class:"text-muted"},S={class:"form-group mb-2"},q=["disabled"],A={class:"invalid-feedback"},E={class:"valid-feedback"},F={class:"d-flex gap-3 mt-5 flex-column"};function Q(s,e,a,G,N,W){const o=d("LocaleText"),l=d("RouterLink");return n(),m("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",L,[t("div",w,[t("div",null,[t("h1",C,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",M,[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",$,p(this.l),1)],8,B)]),t("label",D,[t("small",R,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",S,[f(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),[[_,this.totp]]),t("div",A,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",E,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",F,[this.verified?(n(),r(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:c(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1,__:[3]})):(n(),r(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:c(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1,__:[2]}))])])])],8,k)}const H=h(T,[["render",Q]]);export{H as default};
|
@@ -1 +0,0 @@
|
||||
import{_ as h,c as m,a as t,b as i,h as d,t as p,m as f,y as _,j as r,w as c,z as b,D as v,g,f as n}from"./index-CqpVtsXc.js";import{Q as x}from"./browser-CEKVUmOJ.js";import{L as y}from"./localeText-DKJsmANp.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=v();let e="";return await g("/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)?b("/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"],L={class:"m-auto text-body",style:{width:"500px"}},w={class:"d-flex flex-column"},C={class:"dashboardLogo display-4"},M={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"}},D={for:"totp",class:"mb-2"},R={class:"text-muted"},S={class:"form-group mb-2"},q=["disabled"],A={class:"invalid-feedback"},E={class:"valid-feedback"},F={class:"d-flex gap-3 mt-5 flex-column"};function Q(s,e,a,G,N,W){const o=d("LocaleText"),l=d("RouterLink");return n(),m("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",L,[t("div",w,[t("div",null,[t("h1",C,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",M,[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",$,p(this.l),1)],8,B)]),t("label",D,[t("small",R,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",S,[f(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),[[_,this.totp]]),t("div",A,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",E,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",F,[this.verified?(n(),r(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:c(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1,__:[3]})):(n(),r(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:c(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1,__:[2]}))])])])],8,k)}const V=h(T,[["render",Q]]);export{V as default};
|
@@ -1 +1 @@
|
||||
import{_ as h,c as o,a as t,b as n,h as r,m as g,y as b,E as y,w as c,k as u,g as f,W as x,f as l,e as v,F as m,i as _,s as k,n as T,t as i}from"./index-CqpVtsXc.js";import{O as A}from"./osmap-BBWbsjrI.js";import{L as w}from"./localeText-DKJsmANp.js";import"./Vector-C8V_x6Dm.js";const R={name:"traceroute",components:{LocaleText:w,OSMap:A},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:x()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,f("/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"},L={class:"d-flex gap-2 mb-3 flex-column"},C={class:"flex-grow-1"},P={class:"mb-1 text-muted",for:"ipAddress"},O=["disabled"],V=["disabled"],B={key:0,class:"d-block"},E={key:1,class:"d-block"},I={class:"position-relative"},N={key:"pingPlaceholder"},z={key:1},D={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"},U={scope:"col"},j={scope:"col"},q={key:0},J={key:1};function Q(d,s,X,Y,Z,tt){const a=r("LocaleText"),p=r("OSMap");return l(),o("div",M,[t("div",S,[t("h3",$,[n(a,{t:"Traceroute"})]),t("div",L,[t("div",C,[t("label",P,[t("small",null,[n(a,{t:"Enter IP Address / Hostname"})])]),g(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]=y(e=>this.execute(),["enter"])),type:"text"},null,40,O),[[b,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(u,{name:"slide"},{default:c(()=>[this.tracing?(l(),o("span",E,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",I,[n(u,{name:"ping"},{default:c(()=>[this.tracerouteResult?(l(),o("div",z,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",D,[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",U,[n(a,{t:"Max RTT (ms)"})]),t("th",j,[n(a,{t:"Geolocation"})])])]),t("tbody",null,[(l(!0),o(m,null,_(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",N,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(l(),o(m,null,_(5,e=>t("div",{class:T(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:k({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const at=h(R,[["render",Q],["__scopeId","data-v-3e75b4d4"]]);export{at as default};
|
||||
import{_ as h,c as o,a as t,b as n,h as r,m as g,y as b,E as y,w as c,k as u,g as f,W as x,f as l,e as v,F as m,i as _,s as k,n as T,t as i}from"./index-mH92cJrc.js";import{O as A}from"./osmap-DlmBiBAF.js";import{L as w}from"./localeText-DSmP42vs.js";import"./Vector-C8V_x6Dm.js";const R={name:"traceroute",components:{LocaleText:w,OSMap:A},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:x()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,f("/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"},L={class:"d-flex gap-2 mb-3 flex-column"},C={class:"flex-grow-1"},P={class:"mb-1 text-muted",for:"ipAddress"},O=["disabled"],V=["disabled"],B={key:0,class:"d-block"},E={key:1,class:"d-block"},I={class:"position-relative"},N={key:"pingPlaceholder"},z={key:1},D={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"},U={scope:"col"},j={scope:"col"},q={key:0},J={key:1};function Q(d,s,X,Y,Z,tt){const a=r("LocaleText"),p=r("OSMap");return l(),o("div",M,[t("div",S,[t("h3",$,[n(a,{t:"Traceroute"})]),t("div",L,[t("div",C,[t("label",P,[t("small",null,[n(a,{t:"Enter IP Address / Hostname"})])]),g(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]=y(e=>this.execute(),["enter"])),type:"text"},null,40,O),[[b,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(u,{name:"slide"},{default:c(()=>[this.tracing?(l(),o("span",E,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",I,[n(u,{name:"ping"},{default:c(()=>[this.tracerouteResult?(l(),o("div",z,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",D,[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",U,[n(a,{t:"Max RTT (ms)"})]),t("th",j,[n(a,{t:"Geolocation"})])])]),t("tbody",null,[(l(!0),o(m,null,_(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",N,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(l(),o(m,null,_(5,e=>t("div",{class:T(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:k({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const at=h(R,[["render",Q],["__scopeId","data-v-3e75b4d4"]]);export{at as default};
|
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{B as n,D as r,c as i,a as s,b as t,j as l,d as c,u,f as e}from"./index-CqpVtsXc.js";import{L as o}from"./localeText-DKJsmANp.js";import{D as _,d as m,e as h,A as p,a as b,b as v,_ as g,c as f}from"./dashboardEmailSettings-DsGs_ziK.js";import"./dayjs.min-26Zi9Z8w.js";import"./vue-datepicker-6WLWyFB2.js";const A={class:"d-flex gap-3 flex-column"},D={class:"card rounded-3"},y={class:"card-header"},S={class:"my-2"},x={class:"card-body"},I={class:"row g-2"},P={class:"col-sm"},B={class:"col-sm"},C={class:"card rounded-3"},k={class:"card-header"},w={class:"my-2"},L={class:"card-body"},F={class:"card rounded-3"},M={class:"card-header"},N={class:"my-2"},V={class:"card-body d-flex flex-column gap-3"},z=n({__name:"wgdashboardSettings",setup(T){const d=r();return(U,a)=>(e(),i("div",A,[s("div",D,[s("div",y,[s("h6",S,[a[0]||(a[0]=s("i",{class:"bi bi-magic me-2"},null,-1)),t(o,{t:"Appearance"})])]),s("div",x,[s("div",I,[s("div",P,[t(_)]),s("div",B,[t(m)])])])]),s("div",C,[s("div",k,[s("h6",w,[a[1]||(a[1]=s("i",{class:"bi bi-ethernet me-2"},null,-1)),t(o,{t:"Dashboard IP Address & Listen Port"})])]),s("div",L,[t(h)])]),s("div",F,[s("div",M,[s("h6",N,[a[2]||(a[2]=s("i",{class:"bi bi-people-fill me-2"},null,-1)),t(o,{t:"Account Settings"})])]),s("div",V,[s("div",null,[t(p,{targetData:"username",title:"Username"})]),a[3]||(a[3]=s("hr",null,null,-1)),s("div",null,[t(b,{targetData:"password"})]),a[4]||(a[4]=s("hr",null,null,-1)),s("div",null,[s("h6",null,[t(o,{t:"Multi-Factor Authentication (MFA)"})]),u(d).getActiveCrossServer()?c("",!0):(e(),l(f,{key:0}))])])]),t(v),t(g)]))}});export{z as default};
|
||||
import{B as n,D as r,c as i,a as s,b as t,j as l,d as c,u,f as e}from"./index-mH92cJrc.js";import{L as o}from"./localeText-DSmP42vs.js";import{D as _,d as m,e as h,A as p,a as b,b as v,_ as g,c as f}from"./dashboardEmailSettings-CqwOH0Oa.js";import"./dayjs.min-BSByM7MH.js";import"./vue-datepicker-DXRta4gJ.js";const A={class:"d-flex gap-3 flex-column"},D={class:"card rounded-3"},y={class:"card-header"},S={class:"my-2"},x={class:"card-body"},I={class:"row g-2"},P={class:"col-sm"},B={class:"col-sm"},C={class:"card rounded-3"},k={class:"card-header"},w={class:"my-2"},L={class:"card-body"},F={class:"card rounded-3"},M={class:"card-header"},N={class:"my-2"},V={class:"card-body d-flex flex-column gap-3"},z=n({__name:"wgdashboardSettings",setup(T){const d=r();return(U,a)=>(e(),i("div",A,[s("div",D,[s("div",y,[s("h6",S,[a[0]||(a[0]=s("i",{class:"bi bi-magic me-2"},null,-1)),t(o,{t:"Appearance"})])]),s("div",x,[s("div",I,[s("div",P,[t(_)]),s("div",B,[t(m)])])])]),s("div",C,[s("div",k,[s("h6",w,[a[1]||(a[1]=s("i",{class:"bi bi-ethernet me-2"},null,-1)),t(o,{t:"Dashboard IP Address & Listen Port"})])]),s("div",L,[t(h)])]),s("div",F,[s("div",M,[s("h6",N,[a[2]||(a[2]=s("i",{class:"bi bi-people-fill me-2"},null,-1)),t(o,{t:"Account Settings"})])]),s("div",V,[s("div",null,[t(p,{targetData:"username",title:"Username"})]),a[3]||(a[3]=s("hr",null,null,-1)),s("div",null,[t(b,{targetData:"password"})]),a[4]||(a[4]=s("hr",null,null,-1)),s("div",null,[s("h6",null,[t(o,{t:"Multi-Factor Authentication (MFA)"})]),u(d).getActiveCrossServer()?c("",!0):(e(),l(f,{key:0}))])])]),t(v),t(g)]))}});export{z as default};
|
@@ -1 +1 @@
|
||||
import{D as e,a}from"./dashboardSettingsWireguardConfigurationAutostart-DUQUQ-VN.js";import{B as r,c as o,b as t,f as n}from"./index-CqpVtsXc.js";import"./localeText-DKJsmANp.js";const i={class:"d-flex gap-3 flex-column"},m=r({__name:"wireguardConfigurationSettings",setup(s){return(g,u)=>(n(),o("div",i,[t(e,{targetData:"wg_conf_path",title:"Configurations Directory",warning:!0,"warning-text":"Remember to remove / at the end of your path. e.g /etc/wireguard"}),t(a)]))}});export{m as default};
|
||||
import{D as e,a}from"./dashboardSettingsWireguardConfigurationAutostart-CcYlrBrT.js";import{B as r,c as o,b as t,f as n}from"./index-mH92cJrc.js";import"./localeText-DSmP42vs.js";const i={class:"d-flex gap-3 flex-column"},m=r({__name:"wireguardConfigurationSettings",setup(s){return(g,u)=>(n(),o("div",i,[t(e,{targetData:"wg_conf_path",title:"Configurations Directory",warning:!0,"warning-text":"Remember to remove / at the end of your path. e.g /etc/wireguard"}),t(a)]))}});export{m as default};
|
4
src/static/dist/WGDashboardAdmin/index.html
vendored
4
src/static/dist/WGDashboardAdmin/index.html
vendored
@@ -10,8 +10,8 @@
|
||||
<link rel="icon" href="/static/dist/WGDashboardAdmin/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/dist/WGDashboardAdmin/assets/index-CqpVtsXc.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/dist/WGDashboardAdmin/assets/index-D9tU2fy-.css">
|
||||
<script type="module" crossorigin src="/static/dist/WGDashboardAdmin/assets/index-mH92cJrc.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/dist/WGDashboardAdmin/assets/index-Cd3DxRM6.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
File diff suppressed because one or more lines are too long
41
src/static/dist/WGDashboardClient/assets/index-xixWgN9X.js
vendored
Normal file
41
src/static/dist/WGDashboardClient/assets/index-xixWgN9X.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -28,7 +28,7 @@
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<script type="module" crossorigin src="/static/dist/WGDashboardClient/assets/index-Dnx8i95a.js"></script>
|
||||
<script type="module" crossorigin src="/static/dist/WGDashboardClient/assets/index-xixWgN9X.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/dist/WGDashboardClient/assets/index-2OJLsfIF.css">
|
||||
</head>
|
||||
<body>
|
||||
|
@@ -365,5 +365,78 @@
|
||||
"Untitled Peer": "",
|
||||
"Who are you sending to\\?": "",
|
||||
"What\\'s the subject\\?": "",
|
||||
"What\\'s the body\\?": ""
|
||||
"What\\'s the body\\?": "",
|
||||
"Path": "",
|
||||
"Subnets \\& Listen Ports Templates": "",
|
||||
"Create templates to keep track a list of available Subnets \\& Listen Ports\n": "",
|
||||
"Add Template": "",
|
||||
"No Templates": "",
|
||||
"Override Peer Settings": "",
|
||||
"Only apply to peers in this configuration": "",
|
||||
"Tags": "",
|
||||
"Tag": "",
|
||||
"Show All Peers": "",
|
||||
"Close": "",
|
||||
"Search Icon": "",
|
||||
"Remove Icon": "",
|
||||
"Tag Peer": "",
|
||||
"Assign Peer": "",
|
||||
"Assign Peer to Client": "",
|
||||
"Assigned Clients": "",
|
||||
"Local": "",
|
||||
"Assign to Clients": "",
|
||||
"Enter Email or Name to Search": "",
|
||||
"Groups": "",
|
||||
"No result": "",
|
||||
"Are you sure to delete assignment for": "",
|
||||
"(.*) in group (.*)\\?": "",
|
||||
"All": "",
|
||||
"Details": "",
|
||||
"Peer Details": "",
|
||||
"Disconnected": "",
|
||||
"Connected": "",
|
||||
"Latest Handshake Time": "",
|
||||
"Peer Historical Sessions": "",
|
||||
"^([0-9].*) Sessions*$": "",
|
||||
"Duration:": "",
|
||||
"Peer Historical Endpoints": "",
|
||||
"Search Clients\\.\\.\\.": "",
|
||||
"Clients": "",
|
||||
"([0-9].*) Clients*": "",
|
||||
"Email": "",
|
||||
"Client ID": "",
|
||||
"Client Name": "",
|
||||
"Assigned Peers": "",
|
||||
"Manage": "",
|
||||
"No peer assigned to this client": "",
|
||||
"Delete Client": "",
|
||||
"Are you sure to delete this client\\?": "",
|
||||
"Available Peers": "",
|
||||
"Clients Settings": "",
|
||||
"Client Side App": "",
|
||||
"Webhooks*": "",
|
||||
"Add Webhook": "",
|
||||
"WGDashboard will sent a POST Request to the URL below with details of any subscribed events\\.": "",
|
||||
"Payload URL": "",
|
||||
"Content Type": "",
|
||||
"Verify SSL": "",
|
||||
"We highly suggest to enable SSL verification": "",
|
||||
"Custom Headers": "",
|
||||
"Header": "",
|
||||
"Value": "",
|
||||
"Subscribed Actions": "",
|
||||
"Peer Created": "",
|
||||
"Peer Deleted": "",
|
||||
"Peer Updated": "",
|
||||
"Enable Webhook": "",
|
||||
"Latest Session": "",
|
||||
"Started At": "",
|
||||
"Ended At": "",
|
||||
"Datetime": "",
|
||||
"Previous Sessions": "",
|
||||
"Notes": "",
|
||||
"Assign successfully!": "",
|
||||
"Sessions": "",
|
||||
"Data": "",
|
||||
"Back": ""
|
||||
}
|
@@ -4,9 +4,11 @@
|
||||
"(.*) Minutes": "$1 分钟",
|
||||
"(.*) Seconds": "$1 秒",
|
||||
"(.*) Used": "已使用 $1",
|
||||
"(.*) in group (.*)\\?": "在 $2 用户组的 $1",
|
||||
"(.*) is off": "$1 已停用",
|
||||
"(.*) is on": "$1 已启用",
|
||||
"([0-9].*) Backups?": "$1个备份",
|
||||
"([0-9].*) Clients*": "$1位用户",
|
||||
"([0-9].*) Peers?": "$1 个端点",
|
||||
"([0-9]{1,}) Interfaces": "$1 个网络接口",
|
||||
"([0-9]{1,}) Partitions": "$1 个分区",
|
||||
@@ -27,9 +29,12 @@
|
||||
"Active Jobs": "未运行任务",
|
||||
"Add": "创建",
|
||||
"Add Peers": "创建端点",
|
||||
"Add Template": "添加模板",
|
||||
"Add Webhook": "添加网络钩子",
|
||||
"Adding\\.\\.\\.": "创建中...",
|
||||
"Address": "网络地址",
|
||||
"Advanced Options": "高级选项",
|
||||
"All": "全部",
|
||||
"All Active Jobs": "所有未运行任务",
|
||||
"All connected peers will get disconnected": "所有已连接的端点会断开",
|
||||
"Allow Access": "解除限制访问",
|
||||
@@ -43,13 +48,23 @@
|
||||
"AmneziaWG Peer Setting": "AmneziaWG 端点设置",
|
||||
"Appearance": "外观",
|
||||
"Are you sure to delete": "您确定要删除",
|
||||
"Are you sure to delete assignment for": "您确定要移除以下用户的分配吗?",
|
||||
"Are you sure to delete this API key\\?": "确定删除此 API 秘钥?",
|
||||
"Are you sure to delete this backup\\?": "您确定要删除此备份吗?",
|
||||
"Are you sure to delete this client\\?": "您确定要删除此用户吗?",
|
||||
"Are you sure to delete this configuration\\?": "您确定要删除此配置吗?",
|
||||
"Are you sure to delete this peer\\?": "您确定要删除此端点吗?",
|
||||
"Are you sure to restore this backup\\?": "您确定要恢复此备份吗?",
|
||||
"Assign Peer": "分配端点",
|
||||
"Assign Peer to Client": "给用户分配端点",
|
||||
"Assign successfully!": "分配成功!",
|
||||
"Assign to Clients": "分配给用户",
|
||||
"Assigned Clients": "已分配用户",
|
||||
"Assigned Peers": "已分配端点",
|
||||
"Available Peers": "可分配端点",
|
||||
"Average / Min / Max Round Trip Time": "平均 / 最低 / 最高来回通讯延迟",
|
||||
"Average RTT \\(ms\\)": "平均来回时间(微秒)",
|
||||
"Back": "返回",
|
||||
"Backup": "备份",
|
||||
"Backup & Restore": "备份及恢复",
|
||||
"Backup Date": "备份日期",
|
||||
@@ -65,6 +80,12 @@
|
||||
"Clear Selection": "清除选择",
|
||||
"Click": "点击",
|
||||
"Click to change a backup": "点击更换备份",
|
||||
"Client ID": "用户ID",
|
||||
"Client Name": "用户名字",
|
||||
"Client Side App": "用户平台",
|
||||
"Clients": "用户",
|
||||
"Clients Settings": "用户设定",
|
||||
"Close": "关闭",
|
||||
"Complete": "完成",
|
||||
"Configuration": "配置",
|
||||
"Configuration File": "配置文件",
|
||||
@@ -81,17 +102,21 @@
|
||||
"Configurations Directory": "配置文件路径",
|
||||
"Confirm \\& edit restore information": "确认和编辑备份信息",
|
||||
"Confirm password": "确认密码",
|
||||
"Connected": "已连接",
|
||||
"Connected Peers": "已连接端点",
|
||||
"Contain": "含有",
|
||||
"Content Type": "内容格式",
|
||||
"Count": "数量",
|
||||
"Create": "创建",
|
||||
"Create API Key": "创建 API 秘钥",
|
||||
"Create Backup": "创建备份",
|
||||
"Create an account": "创建账户",
|
||||
"Create templates to keep track a list of available Subnets \\& Listen Ports\n": "创建模板以计算出可用的子网地址以及监听端口",
|
||||
"Creating\\.\\.\\.": "创建中...",
|
||||
"Current Password": "当前密码",
|
||||
"Current Version:": "当前版本: ",
|
||||
"Currently the peer is not sharing": "此端点未被共享",
|
||||
"Custom Headers": "自定义请求标头",
|
||||
"DNS": "域名系统(DNS)",
|
||||
"DNS format is incorrect": "域名系统(DNS)格式不正确",
|
||||
"Danger Zone": "危险区域",
|
||||
@@ -100,16 +125,21 @@
|
||||
"Dashboard Language": "面板语言",
|
||||
"Dashboard Theme": "面板主题",
|
||||
"Dashboard language update failed": "面板语言更新失败",
|
||||
"Data": "数据",
|
||||
"Database File": "数据库文件",
|
||||
"Date": "日期",
|
||||
"Datetime": "日期时间",
|
||||
"Delete": "删除",
|
||||
"Delete Client": "删除用户",
|
||||
"Delete Configuration": "删除配置",
|
||||
"Delete Peer": "删除端点",
|
||||
"Delete current configuration's database table and \\.conf file": "删除当前配置的数据库表以及.conf文件",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "删除了$1个端点",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "成功删除了$1个端点,失败删除了$2个端点",
|
||||
"Deleting...": "删除中...",
|
||||
"Details": "详情",
|
||||
"Disabled": "已停用",
|
||||
"Disconnected": "已断开",
|
||||
"Discord Server": "Discord 服务器",
|
||||
"Display": "显示设置",
|
||||
"Display As": "显示为",
|
||||
@@ -121,15 +151,20 @@
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "下载以及二维码功能不可用,需要填写此端点的秘钥",
|
||||
"Downloading": "正在下载",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "使用新名称克隆当前配置的数据库表以及.conf文件",
|
||||
"Duration:": "时长",
|
||||
"Edit": "编辑",
|
||||
"Edit Raw Configuration File": "编辑配置源文件",
|
||||
"Email": "邮箱",
|
||||
"Email Account": "邮箱账号",
|
||||
"Email Body Template": "邮件正文模板",
|
||||
"Email sent successfully!": "邮件发送成功!",
|
||||
"Enable Webhook": "启用网络钩子",
|
||||
"Enabled": "已启用",
|
||||
"Encryption": "加密方式",
|
||||
"Ended At": "结束于",
|
||||
"Endpoint Allowed IPs": "终结点允许的 IP 地址",
|
||||
"Endpoint Allowed IPs format is incorrect": "终结点允许的 IP 地址格式不正确",
|
||||
"Enter Email or Name to Search": "输入邮箱地址或用户名字来搜索",
|
||||
"Enter IP Address / Hostname": "输入 IP 地址 / 域名",
|
||||
"Enter IP Address/CIDR": "输入 IP 地址/前缀长度",
|
||||
"Enter a password": "输入密码",
|
||||
@@ -146,6 +181,8 @@
|
||||
"Generating key pairs by bulk failed": "生成公钥秘钥失败了",
|
||||
"Geolocation": "地理位置",
|
||||
"Grid": "网格",
|
||||
"Groups": "用户组",
|
||||
"Header": "请求标头",
|
||||
"Help": "帮助",
|
||||
"Home": "主页",
|
||||
"Hop": "跳数",
|
||||
@@ -164,16 +201,20 @@
|
||||
"Jobs Logs": "任务日志",
|
||||
"Key": "秘钥",
|
||||
"Language": "语言",
|
||||
"Latest Handshake Time": "最新握手时间",
|
||||
"Latest Session": "最新活动",
|
||||
"Light": "简约白",
|
||||
"Link expire date failed to update. Reason: (.*)": "分享链接过期时间更新失败。原因:$1",
|
||||
"Link expire date updated": "分享链接过期时间更新成功",
|
||||
"List": "列表",
|
||||
"Listen Port": "监听端口",
|
||||
"Live Preview": "实时预览",
|
||||
"Local": "本地",
|
||||
"Log ID": "任务 ID",
|
||||
"Logs": "日志",
|
||||
"MTU": "最大传输单元",
|
||||
"MTU format is not correct": "最大传输单元格式不正确",
|
||||
"Manage": "管理",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "更改 IP 地址或监听端口后需要手动重启 WGDashboard 以使用最新的设置",
|
||||
"Max RTT \\(ms\\)": "最高来回时间(微秒)",
|
||||
"Memory": "内存",
|
||||
@@ -190,28 +231,42 @@
|
||||
"Nice to meet you!": "很高兴见到您!",
|
||||
"No": "否",
|
||||
"No Encryption": "无加密",
|
||||
"No Templates": "没有模板",
|
||||
"No WGDashboard API Key": "没有 WGDashboard API 秘钥",
|
||||
"No active job at the moment\\.": "没有未运行的任务",
|
||||
"No available IP containing": "没有可用的 IP 地址含有 ",
|
||||
"No backup yet, click the button above to create backup\\.": "还没有任何备份,点击上方按钮创建",
|
||||
"No more available IP can assign": "没有更多可用的 IP 可以分配了",
|
||||
"No peer assigned to this client": "此用户没有分配端点",
|
||||
"No result": "没有结果",
|
||||
"Notes": "笔记",
|
||||
"OTP from your authenticator": "您多重身份验证器的一次性验证码",
|
||||
"Off": "已停用",
|
||||
"Official Documentation": "官方文档",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "噢不!此链接已过期或不正确。",
|
||||
"On": "已启用",
|
||||
"Once you deleted this configuration\\:": "当您删除了此配置后:",
|
||||
"Only apply to peers in this configuration": "只应用到此配置的端点",
|
||||
"Open File": "打开文件",
|
||||
"Optional Settings": "可选设定",
|
||||
"Or you can click the link below:": "或者您可以点击以下链接:",
|
||||
"Other Settings": "其它设定",
|
||||
"Override Peer Settings": "覆盖端点默认设定",
|
||||
"Password": "密码",
|
||||
"Path": "路径",
|
||||
"Payload URL": "链接",
|
||||
"Peer": "端点",
|
||||
"Peer Configuration File": "端点配置文件",
|
||||
"Peer Created": "创建端点",
|
||||
"Peer Default Settings": "端点默认设定",
|
||||
"Peer Deleted": "删除端点",
|
||||
"Peer Details": "端点详情",
|
||||
"Peer Historical Endpoints": "端点历史末端地址",
|
||||
"Peer Historical Sessions": "端点历史活动",
|
||||
"Peer Jobs": "端点任务",
|
||||
"Peer Remote Endpoint": "端点末端地址",
|
||||
"Peer Settings": "端点设定",
|
||||
"Peer Updated": "更新端点",
|
||||
"Peer created successfully": "成功创建端点",
|
||||
"Peer data usage reset successfully": "端点数据重置成功",
|
||||
"Peer does not exist": "此端点不存在",
|
||||
@@ -239,6 +294,7 @@
|
||||
"Please specify peer and configuration": "请提供配置名称以及端点",
|
||||
"Port": "端口",
|
||||
"Pre-Shared Key": "共享秘钥",
|
||||
"Previous Sessions": "以往活动",
|
||||
"Private Key": "秘钥",
|
||||
"Private key does not match with the public key": "秘钥与公钥不匹配",
|
||||
"Processes": "进程",
|
||||
@@ -252,6 +308,7 @@
|
||||
"Refresh": "刷新",
|
||||
"Refresh Interval": "刷新间隔",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "请把路径最后的 /(左斜杠)移除,例如:/etc/wireguard",
|
||||
"Remove Icon": "移除图标",
|
||||
"Repeat New Password": "重复新密码",
|
||||
"Reset": "重置",
|
||||
"Reset Data Usage": "重置数据用量",
|
||||
@@ -273,6 +330,8 @@
|
||||
"Scan QR Code with the WireGuard App to add peer": "使用 WireGuard APP 扫描以下二维码来添加端点",
|
||||
"Schedule Jobs": "计划任务",
|
||||
"Search": "搜索",
|
||||
"Search Clients\\.\\.\\.": "搜索用户...",
|
||||
"Search Icon": "搜索图标",
|
||||
"Search Peers\\.\\.\\.": "搜索端点...",
|
||||
"Select All": "选择所有",
|
||||
"Select Peers": "选择端点",
|
||||
@@ -286,12 +345,14 @@
|
||||
"Sent / Received / Lost Package": "发送 / 接收 / 丢失数据包",
|
||||
"Server": "服务器",
|
||||
"Server List": "服务器列表",
|
||||
"Sessions": "活动",
|
||||
"Settings": "设定",
|
||||
"Setup": "设置",
|
||||
"Share Peer": "分享端点",
|
||||
"Share link failed to create. Reason: (.*)": "端点分享链接生成失败。原因:$1",
|
||||
"Share with Email": "使用邮件分享",
|
||||
"Sharing\\.\\.\\.": "分享中...",
|
||||
"Show All Peers": "显示所有端点",
|
||||
"Sign In": "登录",
|
||||
"Sign Out": "退出登录",
|
||||
"Sign in session ended, please sign in again": "登录已过期,请重新登录",
|
||||
@@ -299,17 +360,23 @@
|
||||
"Sorry, your username or password is incorrect.": "对不起,您的用户名或密码不正确",
|
||||
"Sort By": "排列方式",
|
||||
"Start Sharing": "开始分享",
|
||||
"Started At": "开始于",
|
||||
"Status": "状态",
|
||||
"Step (.*)": "第$1步",
|
||||
"Stop Sharing": "停止分享",
|
||||
"Stop Sharing\\.\\.\\.": "停止分享中...",
|
||||
"Storage": "储存",
|
||||
"Subnets \\& Listen Ports Templates": "子网 & 监听端口模板",
|
||||
"Subscribed Actions": "已订阅的动作",
|
||||
"Success": "成功",
|
||||
"Swap Memory": "交换区内存",
|
||||
"Swap Memory Usage": "交换区内存用量",
|
||||
"System Status": "系统状态",
|
||||
"TOTP verified!": "一次性验证码验证成功!",
|
||||
"Table": "路由表",
|
||||
"Tag": "标签",
|
||||
"Tag Peer": "标签端点",
|
||||
"Tags": "标签",
|
||||
"The maximum number of peers can add is (.*)": "最多只能添加$1个端点",
|
||||
"Theme": "主题",
|
||||
"This IP is not available: (.*)": "此 IP 地址不可用:$1",
|
||||
@@ -337,10 +404,15 @@
|
||||
"Updated at": "更新于",
|
||||
"Use your own Private and Public Key": "使用您自己的秘钥和公钥",
|
||||
"Username": "用户名",
|
||||
"Value": "值",
|
||||
"Verify SSL": "验证SSL",
|
||||
"WGDashboard API Keys function is disabled": "WGDashboard 的 API 秘钥功能并未开启",
|
||||
"WGDashboard Account Settings": "WGDashboard 账户设定",
|
||||
"WGDashboard Settings": "WGDashboard 设定",
|
||||
"WGDashboard language update failed": "WGDashboard 语言更新失败",
|
||||
"WGDashboard will sent a POST Request to the URL below with details of any subscribed events\\.": "WGDashboard会发送一个包含订阅内容的POST请求到以下指定的URL",
|
||||
"We highly suggest to enable SSL verification": "我们墙裂推荐您开启SSL验证",
|
||||
"Webhooks*": "网络钩子",
|
||||
"Welcome to": "欢迎来到",
|
||||
"What\\'s the body\\?": "正文是什么?",
|
||||
"What\\'s the subject\\?": "主题是什么?",
|
||||
@@ -359,6 +431,7 @@
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(至少8个字符或以上并且确保它足够复杂哟!)",
|
||||
"\\(Required for QR Code and Download\\)": "(二维码以及下载功能需要填写秘钥)",
|
||||
"\\(Required\\)": "(必填项)",
|
||||
"^([0-9].*) Sessions*$": "$1个活动",
|
||||
"if": "如果",
|
||||
"is": "是",
|
||||
"larger than": "大于",
|
||||
|
@@ -1,369 +1,442 @@
|
||||
{
|
||||
" file": " 檔案",
|
||||
"(.*) Available IP Address": "$1個可用的 IP 地址",
|
||||
"(.*) Minutes": "$1 分鐘",
|
||||
" file": " 文件",
|
||||
"(.*) Available IP Address": "$1个可用的 IP 地址",
|
||||
"(.*) Minutes": "$1 分钟",
|
||||
"(.*) Seconds": "$1 秒",
|
||||
"(.*) Used": "已使用 $1",
|
||||
"(.*) in group (.*)\\?": "在 $2 用戶組的 $1",
|
||||
"(.*) is off": "$1 已停用",
|
||||
"(.*) is on": "$1 已啟用",
|
||||
"([0-9].*) Backups?": "$1個備份",
|
||||
"([0-9].*) Peers?": "$1 個端點",
|
||||
"([0-9]{1,}) Interfaces": "$1 個網路介面",
|
||||
"([0-9]{1,}) Partitions": "$1 個分割區",
|
||||
"([0-9].*) Backups?": "$1个備份",
|
||||
"([0-9].*) Clients*": "$1位用戶",
|
||||
"([0-9].*) Peers?": "$1 个端点",
|
||||
"([0-9]{1,}) Interfaces": "$1 个網络接口",
|
||||
"([0-9]{1,}) Partitions": "$1 个分区",
|
||||
"(v[0-9.]{1,}) is now available for update!": "有新版本 $1 可更新!",
|
||||
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. 請使用您選擇的驗證器掃描以下二維碼來生成一次性驗證碼",
|
||||
"2\\. Enter the TOTP generated by your authenticator to verify": "2. 請輸入驗證器生成的一次性驗證碼進行驗證",
|
||||
"API Key": "API 金鑰",
|
||||
"API Key created": "API 金鑰建立成功",
|
||||
"API Key deleted": "API 金鑰刪除成功",
|
||||
"API Keys": "API 金鑰",
|
||||
"API Keys function is failed to disable": "API 金鑰功能停用失敗",
|
||||
"API Keys function is failed to enable": "API 金鑰功能開啟失敗",
|
||||
"API Keys function is successfully disabled": "API 金鑰功能停用成功",
|
||||
"API Keys function is successfully enabled": "API 金鑰功能開啟成功",
|
||||
"Access Remote Server": "訪問遠端伺服器",
|
||||
"Access Restricted": "已限制訪問",
|
||||
"Account Settings": "帳戶設定",
|
||||
"Active Jobs": "未執行任務",
|
||||
"Add": "建立",
|
||||
"Add Peers": "建立端點",
|
||||
"Adding\\.\\.\\.": "建立中...",
|
||||
"Address": "網路地址",
|
||||
"Advanced Options": "進階選項",
|
||||
"All Active Jobs": "所有未執行任務",
|
||||
"All connected peers will get disconnected": "所有已連線的端點會斷開",
|
||||
"Allow Access": "解除限制訪問",
|
||||
"Allow access successfully": "解除限制訪問成功",
|
||||
"Allowed IP already taken by another peer": "允許的 IP 地址已經被別的端點佔用",
|
||||
"Allowed IPs": "允許的 IP 地址",
|
||||
"Allowed IPs Validation": "驗證允許的 IP 位址",
|
||||
"Allowed IPs already taken by another peer": "允許的 IP 地址已被其他端點使用",
|
||||
"Allowed IPs is invalid": "允許的 IP 地址錯誤",
|
||||
"Allowing Access\\.\\.\\.": "解除限制訪問中...",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG 端點設定",
|
||||
"Appearance": "外觀",
|
||||
"Are you sure to delete": "您確定要刪除",
|
||||
"Are you sure to delete this API key\\?": "確定刪除此 API 金鑰?",
|
||||
"Are you sure to delete this backup\\?": "您確定要刪除此備份嗎?",
|
||||
"Are you sure to delete this configuration\\?": "您確定要刪除此配置嗎?",
|
||||
"Are you sure to delete this peer\\?": "您確定要刪除此端點嗎?",
|
||||
"Are you sure to restore this backup\\?": "您確定要恢復到此備份嗎?",
|
||||
"Average / Min / Max Round Trip Time": "平均 / 最低 / 最高來回通訊延遲",
|
||||
"Average RTT \\(ms\\)": "平均來回時間(毫秒)",
|
||||
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. 请使用您选择的驗证器扫描以下二维码来生成一次性驗证码",
|
||||
"2\\. Enter the TOTP generated by your authenticator to verify": "2. 请輸入驗证器生成的一次性驗证码进行驗证",
|
||||
"API Key": "API 秘钥",
|
||||
"API Key created": "API 秘钥创建成功",
|
||||
"API Key deleted": "API 秘钥刪除成功",
|
||||
"API Keys": "API 秘钥",
|
||||
"API Keys function is failed to disable": "API 秘钥功能停用失败",
|
||||
"API Keys function is failed to enable": "API 秘钥功能開啟失败",
|
||||
"API Keys function is successfully disabled": "API 秘钥功能停用成功",
|
||||
"API Keys function is successfully enabled": "API 秘钥功能開啟成功",
|
||||
"Access Remote Server": "访问远程服務器",
|
||||
"Access Restricted": "已限制访问",
|
||||
"Account Settings": "账戶設定",
|
||||
"Active Jobs": "未运行任務",
|
||||
"Add": "创建",
|
||||
"Add Peers": "创建端点",
|
||||
"Add Template": "添加模板",
|
||||
"Add Webhook": "添加網络钩子",
|
||||
"Adding\\.\\.\\.": "创建中...",
|
||||
"Address": "網络地址",
|
||||
"Advanced Options": "高级选项",
|
||||
"All": "全部",
|
||||
"All Active Jobs": "所有未运行任務",
|
||||
"All connected peers will get disconnected": "所有已連接的端点会斷開",
|
||||
"Allow Access": "解除限制访问",
|
||||
"Allow access successfully": "解除限制访问成功",
|
||||
"Allowed IP already taken by another peer": "允许的 IP 地址已经被别的端点占用",
|
||||
"Allowed IPs": "允许的 IP 地址",
|
||||
"Allowed IPs Validation": "驗证允许的 IP 地址",
|
||||
"Allowed IPs already taken by another peer": "允许的 IP 地址已被其他端点使用",
|
||||
"Allowed IPs is invalid": "允许的 IP 地址错误",
|
||||
"Allowing Access\\.\\.\\.": "解除限制访问中...",
|
||||
"AmneziaWG Peer Setting": "AmneziaWG 端点設置",
|
||||
"Appearance": "外观",
|
||||
"Are you sure to delete": "您确定要刪除",
|
||||
"Are you sure to delete assignment for": "您确定要移除以下用戶的分配吗?",
|
||||
"Are you sure to delete this API key\\?": "确定刪除此 API 秘钥?",
|
||||
"Are you sure to delete this backup\\?": "您确定要刪除此備份吗?",
|
||||
"Are you sure to delete this client\\?": "您确定要刪除此用戶吗?",
|
||||
"Are you sure to delete this configuration\\?": "您确定要刪除此配置吗?",
|
||||
"Are you sure to delete this peer\\?": "您确定要刪除此端点吗?",
|
||||
"Are you sure to restore this backup\\?": "您确定要恢復此備份吗?",
|
||||
"Assign Peer": "分配端点",
|
||||
"Assign Peer to Client": "给用戶分配端点",
|
||||
"Assign successfully!": "分配成功!",
|
||||
"Assign to Clients": "分配给用戶",
|
||||
"Assigned Clients": "已分配用戶",
|
||||
"Assigned Peers": "已分配端点",
|
||||
"Available Peers": "可分配端点",
|
||||
"Average / Min / Max Round Trip Time": "平均 / 最低 / 最高来回通讯延迟",
|
||||
"Average RTT \\(ms\\)": "平均来回时间(微秒)",
|
||||
"Back": "返回",
|
||||
"Backup": "備份",
|
||||
"Backup & Restore": "備份及恢復",
|
||||
"Backup Date": "備份日期",
|
||||
"Backup not selected": "沒有選擇備份",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "配置檔案 (.conf) 以及相關的資料庫檔案會被刪除",
|
||||
"Backup not selected": "没有选择備份",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "配置文件 (.conf) 以及相關的数据庫文件会被刪除",
|
||||
"Bulk Add": "批量添加",
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "如果選擇批量添加端點,系統會自動生成每一個端點的名稱,並且會自動安排可用的 IP 地址。",
|
||||
"CPU": "中央處理器",
|
||||
"CPU Usage": "中央處理器用量",
|
||||
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "如果选择批量添加端点,系统会自動生成每一个端点的名称,并且会自動安排可用的 IP 地址。",
|
||||
"CPU": "中央处理器",
|
||||
"CPU Usage": "中央处理器用量",
|
||||
"Cancel": "取消",
|
||||
"Checking backups...": "檢查備份中...",
|
||||
"Checking for update...": "正在檢查是否有新版本...",
|
||||
"Clear Selection": "清除選擇",
|
||||
"Click": "點擊",
|
||||
"Click to change a backup": "點擊更換備份",
|
||||
"Checking backups...": "检查備份中...",
|
||||
"Checking for update...": "正在检查是否有新版本...",
|
||||
"Clear Selection": "清除选择",
|
||||
"Click": "点击",
|
||||
"Click to change a backup": "点击更换備份",
|
||||
"Client ID": "用戶ID",
|
||||
"Client Name": "用戶名字",
|
||||
"Client Side App": "用戶平臺",
|
||||
"Clients": "用戶",
|
||||
"Clients Settings": "用戶設定",
|
||||
"Close": "關闭",
|
||||
"Complete": "完成",
|
||||
"Configuration": "配置",
|
||||
"Configuration File": "配置檔案",
|
||||
"Configuration Name": "配置名稱",
|
||||
"Configuration File": "配置文件",
|
||||
"Configuration Name": "配置名称",
|
||||
"Configuration Settings": "配置設定",
|
||||
"Configuration deleted": "配置刪除成功",
|
||||
"Configuration does not exist": "此配置不存在",
|
||||
"Configuration name already exist\\.": "配置名稱已存在。",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "配置名稱只能含有15個小/大寫英文字母,數字,下劃線,等於號,加號,小數點或短橫線。",
|
||||
"Configuration name is invalid. Possible reasons:": "配置名稱不正確。可能的原因:",
|
||||
"Configuration name already exist\\.": "配置名称已存在。",
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "配置名称只能含有15个小/大寫英文字母,数字,下划线,等于號,加號,小数点或短横线。",
|
||||
"Configuration name is invalid. Possible reasons:": "配置名称不正确。可能的原因:",
|
||||
"Configuration restored": "配置恢復成功",
|
||||
"Configuration saved": "配置保存成功",
|
||||
"Configurations": "配置",
|
||||
"Configurations Directory": "配置檔案路徑",
|
||||
"Confirm \\& edit restore information": "確認和編輯備份信息",
|
||||
"Confirm password": "確認密碼",
|
||||
"Connected Peers": "已連線端點",
|
||||
"Configurations Directory": "配置文件路径",
|
||||
"Confirm \\& edit restore information": "确认和编辑備份信息",
|
||||
"Confirm password": "确认密码",
|
||||
"Connected": "已連接",
|
||||
"Connected Peers": "已連接端点",
|
||||
"Contain": "含有",
|
||||
"Count": "數量",
|
||||
"Create": "建立",
|
||||
"Create API Key": "建立 API 金鑰",
|
||||
"Create Backup": "建立備份",
|
||||
"Create an account": "建立帳戶",
|
||||
"Creating\\.\\.\\.": "建立中...",
|
||||
"Current Password": "當前密碼",
|
||||
"Content Type": "内容格式",
|
||||
"Count": "数量",
|
||||
"Create": "创建",
|
||||
"Create API Key": "创建 API 秘钥",
|
||||
"Create Backup": "创建備份",
|
||||
"Create an account": "创建账戶",
|
||||
"Create templates to keep track a list of available Subnets \\& Listen Ports\n": "创建模板以计算出可用的子網地址以及监听端口",
|
||||
"Creating\\.\\.\\.": "创建中...",
|
||||
"Current Password": "當前密码",
|
||||
"Current Version:": "當前版本: ",
|
||||
"Currently the peer is not sharing": "此端點未被分享",
|
||||
"DNS": "域名系統(DNS)",
|
||||
"DNS format is incorrect": "域名系統(DNS)格式不正確",
|
||||
"Danger Zone": "危險區域",
|
||||
"Dark": "簡約黑",
|
||||
"Dashboard IP Address \\& Listen Port": "面板 IP地址 & 監聽端口",
|
||||
"Dashboard Language": "面板語言",
|
||||
"Dashboard Theme": "面板主題",
|
||||
"Dashboard language update failed": "面板語言更新失敗",
|
||||
"Database File": "資料庫檔案",
|
||||
"Currently the peer is not sharing": "此端点未被共享",
|
||||
"Custom Headers": "自定义请求标头",
|
||||
"DNS": "域名系统(DNS)",
|
||||
"DNS format is incorrect": "域名系统(DNS)格式不正确",
|
||||
"Danger Zone": "危险区域",
|
||||
"Dark": "简约黑",
|
||||
"Dashboard IP Address \\& Listen Port": "面板 IP地址 & 监听端口",
|
||||
"Dashboard Language": "面板语言",
|
||||
"Dashboard Theme": "面板主题",
|
||||
"Dashboard language update failed": "面板语言更新失败",
|
||||
"Data": "数据",
|
||||
"Database File": "数据庫文件",
|
||||
"Date": "日期",
|
||||
"Datetime": "日期时间",
|
||||
"Delete": "刪除",
|
||||
"Delete Client": "刪除用戶",
|
||||
"Delete Configuration": "刪除配置",
|
||||
"Delete Peer": "刪除端點",
|
||||
"Delete current configuration's database table and \\.conf file": "刪除目前配置的資料庫資料表以及.conf檔案",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "刪除了$1個端點",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "成功刪除了$1個端點,失敗刪除了$2個端點",
|
||||
"Delete Peer": "刪除端点",
|
||||
"Delete current configuration's database table and \\.conf file": "刪除當前配置的数据庫表以及.conf文件",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "刪除了$1个端点",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "成功刪除了$1个端点,失败刪除了$2个端点",
|
||||
"Deleting...": "刪除中...",
|
||||
"Details": "详情",
|
||||
"Disabled": "已停用",
|
||||
"Discord Server": "Discord 伺服器",
|
||||
"Display": "顯示設定",
|
||||
"Display As": "顯示為",
|
||||
"Don't think that's a good idea": "我不覺得這是一個好主意",
|
||||
"Disconnected": "已斷開",
|
||||
"Discord Server": "Discord 服務器",
|
||||
"Display": "顯示設置",
|
||||
"Display As": "顯示为",
|
||||
"Don't think that's a good idea": "我不觉得这是一个好主意",
|
||||
"Done": "完成",
|
||||
"Download": "下載",
|
||||
"Download All": "全部下載",
|
||||
"Download Finished": "下載完成",
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "下載以及二維碼功能不可用,需要填寫此端點的金鑰",
|
||||
"Downloading": "正在下載",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "使用新名稱複製目前配置的資料庫資料表以及.conf檔案",
|
||||
"Edit": "編輯",
|
||||
"Edit Raw Configuration File": "編輯原始配置檔案",
|
||||
"Email Account": "電子郵件帳號",
|
||||
"Email Body Template": "郵件內文模板",
|
||||
"Email sent successfully!": "郵件傳送成功!",
|
||||
"Download": "下载",
|
||||
"Download All": "全部下载",
|
||||
"Download Finished": "下载完成",
|
||||
"Download \\& QR Code is not available due to no private key set for this peer": "下载以及二维码功能不可用,需要填寫此端点的秘钥",
|
||||
"Downloading": "正在下载",
|
||||
"Duplicate current configuration's database table and \\.conf file with the new name": "使用新名称克隆當前配置的数据庫表以及.conf文件",
|
||||
"Duration:": "时长",
|
||||
"Edit": "编辑",
|
||||
"Edit Raw Configuration File": "编辑配置源文件",
|
||||
"Email": "邮箱",
|
||||
"Email Account": "邮箱账號",
|
||||
"Email Body Template": "邮件正文模板",
|
||||
"Email sent successfully!": "邮件发送成功!",
|
||||
"Enable Webhook": "啟用網络钩子",
|
||||
"Enabled": "已啟用",
|
||||
"Encryption": "加密方式",
|
||||
"Endpoint Allowed IPs": "終結點允許的 IP 地址",
|
||||
"Endpoint Allowed IPs format is incorrect": "終結點允許的 IP 地址格式不正確",
|
||||
"Ended At": "结束于",
|
||||
"Endpoint Allowed IPs": "終结点允许的 IP 地址",
|
||||
"Endpoint Allowed IPs format is incorrect": "終结点允许的 IP 地址格式不正确",
|
||||
"Enter Email or Name to Search": "輸入邮箱地址或用戶名字来搜索",
|
||||
"Enter IP Address / Hostname": "輸入 IP 地址 / 域名",
|
||||
"Enter IP Address/CIDR": "輸入 IP 地址/前綴長度",
|
||||
"Enter a password": "輸入密碼",
|
||||
"Enter an username you like": "輸入一個您喜歡的用戶名",
|
||||
"Expire At": "過期於",
|
||||
"FROM ": "來自 ",
|
||||
"Failed": "失敗",
|
||||
"Failed to add peers in bulk": "批量建立端點失敗",
|
||||
"Failed to allow access of peer (.*)": "此端點解除限制訪問失敗:$1",
|
||||
"Failed to check available update": "獲取更新失敗",
|
||||
"Failed to save configuration through WireGuard": "使用 WireGuard 保存配置失敗",
|
||||
"File": "檔案",
|
||||
"Filter": "篩選",
|
||||
"Generating key pairs by bulk failed": "生成公鑰金鑰失敗了",
|
||||
"Enter IP Address/CIDR": "輸入 IP 地址/前缀长度",
|
||||
"Enter a password": "輸入密码",
|
||||
"Enter an username you like": "輸入一个您喜欢的用戶名",
|
||||
"Expire At": "过期于",
|
||||
"FROM ": "来自 ",
|
||||
"Failed": "失败",
|
||||
"Failed to add peers in bulk": "批量创建端点失败",
|
||||
"Failed to allow access of peer (.*)": "此端点解除限制访问失败:$1",
|
||||
"Failed to check available update": "获取更新失败",
|
||||
"Failed to save configuration through WireGuard": "使用 WireGuard 保存配置失败",
|
||||
"File": "文件",
|
||||
"Filter": "筛选",
|
||||
"Generating key pairs by bulk failed": "生成公钥秘钥失败了",
|
||||
"Geolocation": "地理位置",
|
||||
"Grid": "網格",
|
||||
"Help": "幫助",
|
||||
"Groups": "用戶組",
|
||||
"Header": "请求标头",
|
||||
"Help": "帮助",
|
||||
"Home": "主頁",
|
||||
"Hop": "跳數",
|
||||
"How many peers you want to add\\?": "您想添加多少個端點?",
|
||||
"I don't need MFA": "我不需要多重身份驗證 (MFA)",
|
||||
"Hop": "跳数",
|
||||
"How many peers you want to add\\?": "您想添加多少个端点?",
|
||||
"I don't need MFA": "我不需要多重身份驗证 (MFA)",
|
||||
"IP Address": "IP 地址",
|
||||
"IP Address / Hostname": "IP 地址 / 域名",
|
||||
"IP Address/CIDR": "IP 地址/前綴長度",
|
||||
"IP Address/CIDR is invalid": "IP 地址/前綴長度格式錯誤",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "如果您確定,請在下方輸入此配置的名稱並點擊刪除",
|
||||
"Include configuration file as an attachment": "附加配置檔案為附件",
|
||||
"Invalid Port": "錯誤的端口",
|
||||
"Is Alive": "在線",
|
||||
"IP Address/CIDR": "IP 地址/前缀长度",
|
||||
"IP Address/CIDR is invalid": "IP 地址/前缀长度格式错误",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "如果您确定,请在下方輸入此配置的名称并点击刪除",
|
||||
"Include configuration file as an attachment": "添加配置文件为附件",
|
||||
"Invalid Port": "错误的端口",
|
||||
"Is Alive": "在线",
|
||||
"Job": "任務",
|
||||
"Job ID": "任務 ID",
|
||||
"Jobs Logs": "任務日誌",
|
||||
"Key": "金鑰",
|
||||
"Language": "語言",
|
||||
"Light": "簡約白",
|
||||
"Link expire date failed to update. Reason: (.*)": "分享鏈接過期時間更新失敗。原因:$1",
|
||||
"Link expire date updated": "分享鏈接過期時間更新成功",
|
||||
"Jobs Logs": "任務日志",
|
||||
"Key": "秘钥",
|
||||
"Language": "语言",
|
||||
"Latest Handshake Time": "最新握手时间",
|
||||
"Latest Session": "最新活動",
|
||||
"Light": "简约白",
|
||||
"Link expire date failed to update. Reason: (.*)": "分享鏈接过期时间更新失败。原因:$1",
|
||||
"Link expire date updated": "分享鏈接过期时间更新成功",
|
||||
"List": "列表",
|
||||
"Listen Port": "監聽端口",
|
||||
"Live Preview": "即時預覽",
|
||||
"Listen Port": "监听端口",
|
||||
"Live Preview": "实时预覽",
|
||||
"Local": "本地",
|
||||
"Log ID": "任務 ID",
|
||||
"Logs": "日誌",
|
||||
"MTU": "最大傳輸單元",
|
||||
"MTU format is not correct": "最大傳輸單元格式不正確",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "更改 IP 地址或監聽端口後需要手動重啟 WGDashboard 以使用最新的設定",
|
||||
"Max RTT \\(ms\\)": "最高來回時間(毫秒)",
|
||||
"Memory": "記憶體",
|
||||
"Memory Usage": "記憶體用量",
|
||||
"Logs": "日志",
|
||||
"MTU": "最大传輸单元",
|
||||
"MTU format is not correct": "最大传輸单元格式不正确",
|
||||
"Manage": "管理",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "更改 IP 地址或监听端口后需要手動重啟 WGDashboard 以使用最新的設置",
|
||||
"Max RTT \\(ms\\)": "最高来回时间(微秒)",
|
||||
"Memory": "内存",
|
||||
"Memory Usage": "内存用量",
|
||||
"Message": "消息",
|
||||
"Min RTT \\(ms\\)": "最低來回時間(毫秒)",
|
||||
"Multi-Factor Authentication \\(MFA\\)": "多重身份驗證 (MFA)",
|
||||
"Name": "名稱",
|
||||
"Network": "網路",
|
||||
"Never Expire": "永不過期",
|
||||
"Min RTT \\(ms\\)": "最低来回时间(微秒)",
|
||||
"Multi-Factor Authentication \\(MFA\\)": "多重身份驗证 (MFA)",
|
||||
"Name": "名称",
|
||||
"Network": "網络",
|
||||
"Never Expire": "从不过期",
|
||||
"New Configuration": "新配置",
|
||||
"New Password": "新密碼",
|
||||
"New Password": "新密码",
|
||||
"Next": "下一步",
|
||||
"Nice to meet you!": "很高興見到您!",
|
||||
"Nice to meet you!": "很高兴见到您!",
|
||||
"No": "否",
|
||||
"No Encryption": "無加密",
|
||||
"No WGDashboard API Key": "沒有 WGDashboard API 金鑰",
|
||||
"No active job at the moment\\.": "沒有未執行的任務",
|
||||
"No available IP containing": "沒有可用的 IP 地址含有 ",
|
||||
"No backup yet, click the button above to create backup\\.": "還沒有任何備份,點擊上方按鈕建立",
|
||||
"No more available IP can assign": "沒有更多可用的 IP 可以分配了",
|
||||
"OTP from your authenticator": "您多重身份驗證器的一次性驗證碼",
|
||||
"No Encryption": "无加密",
|
||||
"No Templates": "没有模板",
|
||||
"No WGDashboard API Key": "没有 WGDashboard API 秘钥",
|
||||
"No active job at the moment\\.": "没有未运行的任務",
|
||||
"No available IP containing": "没有可用的 IP 地址含有 ",
|
||||
"No backup yet, click the button above to create backup\\.": "还没有任何備份,点击上方按钮创建",
|
||||
"No more available IP can assign": "没有更多可用的 IP 可以分配了",
|
||||
"No peer assigned to this client": "此用戶没有分配端点",
|
||||
"No result": "没有结果",
|
||||
"Notes": "笔记",
|
||||
"OTP from your authenticator": "您多重身份驗证器的一次性驗证码",
|
||||
"Off": "已停用",
|
||||
"Official Documentation": "官方文檔",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "噢不!此鏈接已過期或不正確。",
|
||||
"Official Documentation": "官方文档",
|
||||
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "噢不!此鏈接已过期或不正确。",
|
||||
"On": "已啟用",
|
||||
"Once you deleted this configuration\\:": "當您刪除了此配置後:",
|
||||
"Open File": "打開檔案",
|
||||
"Optional Settings": "可選設定",
|
||||
"Or you can click the link below:": "或者您可以點擊以下鏈接:",
|
||||
"Once you deleted this configuration\\:": "當您刪除了此配置后:",
|
||||
"Only apply to peers in this configuration": "只应用到此配置的端点",
|
||||
"Open File": "打開文件",
|
||||
"Optional Settings": "可选設定",
|
||||
"Or you can click the link below:": "或者您可以点击以下鏈接:",
|
||||
"Other Settings": "其它設定",
|
||||
"Password": "密碼",
|
||||
"Peer": "端點",
|
||||
"Peer Configuration File": "端點配置檔案",
|
||||
"Peer Default Settings": "端點預設設定",
|
||||
"Peer Jobs": "端點任務",
|
||||
"Peer Remote Endpoint": "端點末端地址",
|
||||
"Peer Settings": "端點設定",
|
||||
"Peer created successfully": "成功建立端點",
|
||||
"Peer data usage reset successfully": "端點數據重置成功",
|
||||
"Peer does not exist": "此端點不存在",
|
||||
"Peer download started": "端點檔案下載開始",
|
||||
"Peer job deleted": "端點任務刪除成功",
|
||||
"Peer job saved": "端點任務保存成功",
|
||||
"Peer saved": "端點保存成功",
|
||||
"Peers": "端點",
|
||||
"Peers Data Usage": "端點的數據用量",
|
||||
"Peers Default Settings": "端點預設設定",
|
||||
"Peers Settings": "端點設定",
|
||||
"Override Peer Settings": "覆盖端点默认設定",
|
||||
"Password": "密码",
|
||||
"Path": "路径",
|
||||
"Payload URL": "鏈接",
|
||||
"Peer": "端点",
|
||||
"Peer Configuration File": "端点配置文件",
|
||||
"Peer Created": "创建端点",
|
||||
"Peer Default Settings": "端点默认設定",
|
||||
"Peer Deleted": "刪除端点",
|
||||
"Peer Details": "端点详情",
|
||||
"Peer Historical Endpoints": "端点曆史末端地址",
|
||||
"Peer Historical Sessions": "端点曆史活動",
|
||||
"Peer Jobs": "端点任務",
|
||||
"Peer Remote Endpoint": "端点末端地址",
|
||||
"Peer Settings": "端点設定",
|
||||
"Peer Updated": "更新端点",
|
||||
"Peer created successfully": "成功创建端点",
|
||||
"Peer data usage reset successfully": "端点数据重置成功",
|
||||
"Peer does not exist": "此端点不存在",
|
||||
"Peer download started": "端点文件下载開始",
|
||||
"Peer job deleted": "端点任務刪除成功",
|
||||
"Peer job saved": "端点任務保存成功",
|
||||
"Peer saved": "端点保存成功",
|
||||
"Peers": "端点",
|
||||
"Peers Data Usage": "端点的数据用量",
|
||||
"Peers Default Settings": "端点默认設置",
|
||||
"Peers Settings": "端点設定",
|
||||
"Persistent Keepalive": "持久保持活動",
|
||||
"Persistent Keepalive format is not correct": "持久保持活動格式不正確",
|
||||
"Pick Available IP": "選擇可用的 IP 地址",
|
||||
"Pinging...": "嘗試連線中...",
|
||||
"Please fill in all required box": "請填寫所有必填項",
|
||||
"Please fill in the following fields to finish setup": "請填入以下信息來完成初始化設定",
|
||||
"Please provide a valid configuration name": "請提供一個正確的配置名稱",
|
||||
"Please provide ipAddress": "請提供 ipAddress",
|
||||
"Please provide ipAddress and count": "請提供 ipAddress 和 count",
|
||||
"Please specify amount of peers you want to add": "請提供批量添加端點的數量",
|
||||
"Please specify an IP Address (v4/v6)": "請提供一個 IP 地址 (v4或v6)",
|
||||
"Please specify job": "請提供任務",
|
||||
"Please specify one or more peers": "請提供一個或更多端點",
|
||||
"Please specify peer and configuration": "請提供配置名稱以及端點",
|
||||
"Port": "埠口",
|
||||
"Pre-Shared Key": "共享金鑰",
|
||||
"Private Key": "金鑰",
|
||||
"Private key does not match with the public key": "金鑰與公鑰不匹配",
|
||||
"Processes": "程序",
|
||||
"Protocol": "協議",
|
||||
"Public Key": "公鑰",
|
||||
"QR Code": "二維碼",
|
||||
"Ready": "準備就緒",
|
||||
"Real Time Received Data Usage": "實時接收數據量",
|
||||
"Real Time Sent Data Usage": "實時傳送數據量",
|
||||
"Received": "接收數據",
|
||||
"Persistent Keepalive format is not correct": "持久保持活動格式不正确",
|
||||
"Pick Available IP": "选择可用的 IP 地址",
|
||||
"Pinging...": "尝試連接中...",
|
||||
"Please fill in all required box": "请填寫所有必填项",
|
||||
"Please fill in the following fields to finish setup": "请填入以下信息来完成初始化設置",
|
||||
"Please provide a valid configuration name": "请提供一个正确的配置名称",
|
||||
"Please provide ipAddress": "请提供 ipAddress",
|
||||
"Please provide ipAddress and count": "请提供 ipAddress 和 count",
|
||||
"Please specify amount of peers you want to add": "请提供批量添加端点的数量",
|
||||
"Please specify an IP Address (v4/v6)": "请提供一个 IP 地址 (v4或v6)",
|
||||
"Please specify job": "请提供任務",
|
||||
"Please specify one or more peers": "请提供一个或更多端点",
|
||||
"Please specify peer and configuration": "请提供配置名称以及端点",
|
||||
"Port": "端口",
|
||||
"Pre-Shared Key": "共享秘钥",
|
||||
"Previous Sessions": "以往活動",
|
||||
"Private Key": "秘钥",
|
||||
"Private key does not match with the public key": "秘钥與公钥不匹配",
|
||||
"Processes": "进程",
|
||||
"Protocol": "协议",
|
||||
"Public Key": "公钥",
|
||||
"QR Code": "二维码",
|
||||
"Ready": "准備就绪",
|
||||
"Real Time Received Data Usage": "实时接收数据量",
|
||||
"Real Time Sent Data Usage": "实时发送数据量",
|
||||
"Received": "接收数据",
|
||||
"Refresh": "刷新",
|
||||
"Refresh Interval": "刷新間隔",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "請把路徑最後的 /(左斜杠)移除,例如:/etc/wireguard",
|
||||
"Repeat New Password": "重複新密碼",
|
||||
"Refresh Interval": "刷新间隔",
|
||||
"Remember to remove / at the end of your path. e.g /etc/wireguard": "请把路径最后的 /(左斜杠)移除,例如:/etc/wireguard",
|
||||
"Remove Icon": "移除圖标",
|
||||
"Repeat New Password": "重復新密码",
|
||||
"Reset": "重置",
|
||||
"Reset Data Usage": "重置數據用量",
|
||||
"Reset Data Usage": "重置数据用量",
|
||||
"Restore": "恢復",
|
||||
"Restore Configuration": "恢復配置",
|
||||
"Restoring": "恢復中...",
|
||||
"Restrict Access": "限制訪問",
|
||||
"Restrict Peer": "限制端點",
|
||||
"Restricted": "已限制端點",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "限制訪問了$1個端點",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "成功限制訪問了$1個端點,失敗限制訪問了$2個端點",
|
||||
"Restricted Peers?": "已限制訪問端點",
|
||||
"Restricting\\.\\.\\.": "限制訪問中...",
|
||||
"Revert": "撤銷更改",
|
||||
"Restrict Access": "限制访问",
|
||||
"Restrict Peer": "限制端点",
|
||||
"Restricted": "已限制端点",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "限制访问了$1个端点",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "成功限制访问了$1个端点,失败限制访问了$2个端点",
|
||||
"Restricted Peers?": "已限制访问端点",
|
||||
"Restricting\\.\\.\\.": "限制访问中...",
|
||||
"Revert": "撤销更改",
|
||||
"Save": "保存",
|
||||
"Save Configuration": "保存配置",
|
||||
"Save Peer": "保存端點",
|
||||
"Save Peer": "保存端点",
|
||||
"Saving\\.\\.\\.": "保存中...",
|
||||
"Scan QR Code with the WireGuard App to add peer": "使用 WireGuard APP 掃描以下二維碼來添加端點",
|
||||
"Schedule Jobs": "計劃任務",
|
||||
"Search": "搜尋",
|
||||
"Search Peers\\.\\.\\.": "搜索端點...",
|
||||
"Select All": "選擇所有",
|
||||
"Select Peers": "選擇端點",
|
||||
"Select a backup you want to restore": "選擇一個您想恢復的配置",
|
||||
"Selected Backup": "已選擇備份",
|
||||
"Send": "傳送",
|
||||
"Send From": "寄件人",
|
||||
"Send Test Email": "傳送測試郵件",
|
||||
"Sending\\.\\.\\.": "傳送中...",
|
||||
"Sent": "傳送數據",
|
||||
"Sent / Received / Lost Package": "傳送 / 接收 / 丟失數據包",
|
||||
"Server": "伺服器",
|
||||
"Server List": "伺服器列表",
|
||||
"Scan QR Code with the WireGuard App to add peer": "使用 WireGuard APP 扫描以下二维码来添加端点",
|
||||
"Schedule Jobs": "计划任務",
|
||||
"Search": "搜索",
|
||||
"Search Clients\\.\\.\\.": "搜索用戶...",
|
||||
"Search Icon": "搜索圖标",
|
||||
"Search Peers\\.\\.\\.": "搜索端点...",
|
||||
"Select All": "选择所有",
|
||||
"Select Peers": "选择端点",
|
||||
"Select a backup you want to restore": "选择一个您想恢復的配置",
|
||||
"Selected Backup": "已选择備份",
|
||||
"Send": "发送",
|
||||
"Send From": "发送自",
|
||||
"Send Test Email": "发送測試邮件",
|
||||
"Sending\\.\\.\\.": "发送中...",
|
||||
"Sent": "发送数据",
|
||||
"Sent / Received / Lost Package": "发送 / 接收 / 丢失数据包",
|
||||
"Server": "服務器",
|
||||
"Server List": "服務器列表",
|
||||
"Sessions": "活動",
|
||||
"Settings": "設定",
|
||||
"Setup": "設定",
|
||||
"Share Peer": "分享端點",
|
||||
"Share link failed to create. Reason: (.*)": "端點分享鏈接生成失敗。原因:$1",
|
||||
"Share with Email": "使用電子郵件分享",
|
||||
"Setup": "設置",
|
||||
"Share Peer": "分享端点",
|
||||
"Share link failed to create. Reason: (.*)": "端点分享鏈接生成失败。原因:$1",
|
||||
"Share with Email": "使用邮件分享",
|
||||
"Sharing\\.\\.\\.": "分享中...",
|
||||
"Sign In": "登入",
|
||||
"Sign Out": "登出",
|
||||
"Sign in session ended, please sign in again": "登入已過期,請重新登入",
|
||||
"Signing In\\.\\.\\.": "正在登入...",
|
||||
"Sorry, your username or password is incorrect.": "對不起,您的用戶名或密碼不正確",
|
||||
"Show All Peers": "顯示所有端点",
|
||||
"Sign In": "登录",
|
||||
"Sign Out": "退出登录",
|
||||
"Sign in session ended, please sign in again": "登录已过期,请重新登录",
|
||||
"Signing In\\.\\.\\.": "正在登录...",
|
||||
"Sorry, your username or password is incorrect.": "对不起,您的用戶名或密码不正确",
|
||||
"Sort By": "排列方式",
|
||||
"Start Sharing": "開始分享",
|
||||
"Status": "狀態",
|
||||
"Started At": "開始于",
|
||||
"Status": "状態",
|
||||
"Step (.*)": "第$1步",
|
||||
"Stop Sharing": "停止分享",
|
||||
"Stop Sharing\\.\\.\\.": "停止分享中...",
|
||||
"Storage": "儲存",
|
||||
"Subnets \\& Listen Ports Templates": "子網 & 监听端口模板",
|
||||
"Subscribed Actions": "已訂阅的動作",
|
||||
"Success": "成功",
|
||||
"Swap Memory": "交換記憶體",
|
||||
"Swap Memory Usage": "交換記憶體用量",
|
||||
"System Status": "系統狀態",
|
||||
"TOTP verified!": "一次性驗證碼驗證成功!",
|
||||
"Swap Memory": "交换区内存",
|
||||
"Swap Memory Usage": "交换区内存用量",
|
||||
"System Status": "系统状態",
|
||||
"TOTP verified!": "一次性驗证码驗证成功!",
|
||||
"Table": "路由表",
|
||||
"The maximum number of peers can add is (.*)": "最多只能添加$1個端點",
|
||||
"Theme": "主題",
|
||||
"Tag": "标签",
|
||||
"Tag Peer": "标签端点",
|
||||
"Tags": "标签",
|
||||
"The maximum number of peers can add is (.*)": "最多只能添加$1个端点",
|
||||
"Theme": "主题",
|
||||
"This IP is not available: (.*)": "此 IP 地址不可用:$1",
|
||||
"This configuration have ([0-9].*) backups": "此配置有$1個備份",
|
||||
"This configuration have no backup": "此配置沒有備份",
|
||||
"This peer already exist": "此端點已存在",
|
||||
"This peer does not have any job yet\\.": "此端點還沒有任何任務",
|
||||
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "更改這個設定會應用到所有端點的配置檔案和配置二維碼",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "如果更新這個配置名稱,WGDashboard會執行以下操作:",
|
||||
"Toggle When Start Up": "運行後啟動配置",
|
||||
"This configuration have ([0-9].*) backups": "此配置有$1个備份",
|
||||
"This configuration have no backup": "此配置没有備份",
|
||||
"This peer already exist": "此端点已存在",
|
||||
"This peer does not have any job yet\\.": "此端点还没有任何任務",
|
||||
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "更改这个設定会应用到所有端点的配置文件和配置二维码",
|
||||
"To update this configuration's name, WGDashboard will execute the following operations:": "如果更新这个配置名称,WGDashboard会執行以下操作:",
|
||||
"Toggle When Start Up": "运行后啟動配置",
|
||||
"Tools": "工具箱",
|
||||
"Total": "總數據",
|
||||
"Total Received": "總接收數據用量",
|
||||
"Total Sent": "總傳送數據用量",
|
||||
"Total Usage": "總數據用量",
|
||||
"Total": "總数据",
|
||||
"Total Received": "總接收数据用量",
|
||||
"Total Sent": "總发送数据用量",
|
||||
"Total Usage": "總数据用量",
|
||||
"Turning Off\\.\\.\\.": "停用中...",
|
||||
"Turning On\\.\\.\\.": "啟用中...",
|
||||
"Unsaved Job": "未保存任務",
|
||||
"Untitled Peer": "未命名端點",
|
||||
"Update Name": "更新名稱",
|
||||
"Update Password": "更新密碼",
|
||||
"Update peer failed when saving the configuration": "配置保存端點失敗",
|
||||
"Update peer failed when updating Allowed IPs": "更新允許的 IP 地址失敗",
|
||||
"Update peer failed when updating Pre-Shared Key": "更新共享密鑰失敗",
|
||||
"Updated at": "更新於",
|
||||
"Use your own Private and Public Key": "使用您自己的金鑰和公鑰",
|
||||
"Untitled Peer": "未命名端点",
|
||||
"Update Name": "更新名称",
|
||||
"Update Password": "更新密码",
|
||||
"Update peer failed when saving the configuration": "配置保存端点失败",
|
||||
"Update peer failed when updating Allowed IPs": "更新允许的 IP 地址失败",
|
||||
"Update peer failed when updating Pre-Shared Key": "更新共享密钥失败",
|
||||
"Updated at": "更新于",
|
||||
"Use your own Private and Public Key": "使用您自己的秘钥和公钥",
|
||||
"Username": "用戶名",
|
||||
"WGDashboard API Keys function is disabled": "WGDashboard 的 API 金鑰功能並未開啟",
|
||||
"WGDashboard Account Settings": "WGDashboard 帳戶設定",
|
||||
"Value": "值",
|
||||
"Verify SSL": "驗证SSL",
|
||||
"WGDashboard API Keys function is disabled": "WGDashboard 的 API 秘钥功能并未開啟",
|
||||
"WGDashboard Account Settings": "WGDashboard 账戶設定",
|
||||
"WGDashboard Settings": "WGDashboard 設定",
|
||||
"WGDashboard language update failed": "WGDashboard 語言更新失敗",
|
||||
"Welcome to": "歡迎來到",
|
||||
"What\\'s the body\\?": "內文是什麼?",
|
||||
"What\\'s the subject\\?": "主題是什麼?",
|
||||
"When should this API Key expire\\?": "這個 API 金鑰什麼時候過期呢?",
|
||||
"Who are you sending to\\?": "您想傳送給誰?",
|
||||
"WGDashboard language update failed": "WGDashboard 语言更新失败",
|
||||
"WGDashboard will sent a POST Request to the URL below with details of any subscribed events\\.": "WGDashboard会发送一个包含訂阅内容的POST请求到以下指定的URL",
|
||||
"We highly suggest to enable SSL verification": "我们墙裂推薦您開啟SSL驗证",
|
||||
"Webhooks*": "網络钩子",
|
||||
"Welcome to": "欢迎来到",
|
||||
"What\\'s the body\\?": "正文是什么?",
|
||||
"What\\'s the subject\\?": "主题是什么?",
|
||||
"When should this API Key expire\\?": "这个 API 秘钥什么时候过期呢?",
|
||||
"Who are you sending to\\?": "您想发送给谁?",
|
||||
"WireGuard Configuration Settings": "WireGuard 配置設定",
|
||||
"WireGuard Configurations": "WireGuard 配置",
|
||||
"WireGuard Configurations Settings": "WireGuard 配置設定",
|
||||
"WireGuard configuration path saved": "WireGuard 配置路徑保存成功",
|
||||
"WireGuard configuration path saved": "WireGuard 配置路径保存成功",
|
||||
"Yes": "是",
|
||||
"You can add up to (.*) peers": "您最多可以添加 $1 個端點",
|
||||
"You can visit our: ": "您可以訪問我們的:",
|
||||
"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.": "您還沒有任何WireGuard配置。請檢查您的配置資料夾或前往設定更改路徑。預設資料夾是 /etc/wireguard",
|
||||
"You don't have any configuration to restore": "您沒有任何配置備份可以恢復",
|
||||
"You're on the latest version": "已經是最新版本",
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(至少8個字符或以上並且確保它足夠複雜哟!)",
|
||||
"\\(Required for QR Code and Download\\)": "(二維碼以及下載功能需要填寫金鑰)",
|
||||
"\\(Required\\)": "(必填項)",
|
||||
"You can add up to (.*) peers": "您最多可以添加 $1 个端点",
|
||||
"You can visit our: ": "您可以访问我们的:",
|
||||
"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.": "您还没有任何WireGuard配置。请检查您的配置文件夹或前往設置更改路径。默认文件夹是 /etc/wireguard",
|
||||
"You don't have any configuration to restore": "您没有任何配置備份可以恢復",
|
||||
"You're on the latest version": "已经是最新版本",
|
||||
"\\(At least 8 characters and make sure is strong enough!\\)": "(至少8个字符或以上并且确保它足够復雜哟!)",
|
||||
"\\(Required for QR Code and Download\\)": "(二维码以及下载功能需要填寫秘钥)",
|
||||
"\\(Required\\)": "(必填项)",
|
||||
"^([0-9].*) Sessions*$": "$1个活動",
|
||||
"if": "如果",
|
||||
"is": "是",
|
||||
"larger than": "大於",
|
||||
"larger than": "大于",
|
||||
"or": "或",
|
||||
"or click the button below to download the ": "或點擊下面的按鈕下載 ",
|
||||
"or click the button below to download the ": "或点击下面的按钮下载 ",
|
||||
"then": "那就",
|
||||
"to add your server": "添加您的伺服器"
|
||||
"to add your server": "添加您的服務器"
|
||||
}
|
Reference in New Issue
Block a user