mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2024-11-21 23:01:39 +01:00
Adjusted router to dynamic import
This commit is contained in:
parent
eaac12ddc8
commit
b97fc16ad9
8
src/static/app/dist/assets/browser.js
vendored
Normal file
8
src/static/app/dist/assets/browser.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/configuration.js
vendored
Normal file
1
src/static/app/dist/assets/configuration.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{_ as r,c as i,b as o,w as e,e as _,o as t,h as l,g as n,i as u,S as d}from"./index.js";const m={name:"configuration"},p={class:"mt-md-5 mt-3 text-body"};function f(h,x,k,w,$,g){const a=_("RouterView");return t(),i("div",p,[o(a,null,{default:e(({Component:s,route:c})=>[o(l,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),n(d,null,{default:e(()=>[(t(),n(u(s),{key:c.path}))]),_:2},1024))]),_:2},1024)]),_:1})])}const y=r(m,[["render",f]]);export{y as default};
|
1
src/static/app/dist/assets/configurationList.css
vendored
Normal file
1
src/static/app/dist/assets/configurationList.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.fade-enter-active[data-v-a85a04a5]{transition-delay:var(--1d5189b2)!important}.configurationListTitle{.btn[data-v-790c086d]{border-radius:50%!important}}@media screen and (max-width: 768px){.configurationListTitle{&[data-v-790c086d]{flex-direction:column;gap:.5rem}h3 span[data-v-790c086d]{margin-left:auto!important}.btn[data-v-790c086d]{width:100%}}}
|
1
src/static/app/dist/assets/configurationList.js
vendored
Normal file
1
src/static/app/dist/assets/configurationList.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/dayjs.min.js
vendored
Normal file
1
src/static/app/dist/assets/dayjs.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
src/static/app/dist/assets/index.css
vendored
4
src/static/app/dist/assets/index.css
vendored
File diff suppressed because one or more lines are too long
74
src/static/app/dist/assets/index.js
vendored
74
src/static/app/dist/assets/index.js
vendored
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/index2.css
vendored
Normal file
1
src/static/app/dist/assets/index2.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
@media screen and (max-width: 768px){.navbar-container[data-v-461d2bae]{position:absolute;z-index:1000;animation-duration:.4s;animation-fill-mode:both;display:none;animation-timing-function:cubic-bezier(.82,.58,.17,.9)}.navbar-container.active[data-v-461d2bae]{animation-direction:normal;display:block!important;animation-name:zoomInFade-461d2bae}}.navbar-container[data-v-461d2bae]{height:100vh}@supports (height: 100dvh){@media screen and (max-width: 768px){.navbar-container[data-v-461d2bae]{height:calc(100dvh - 50px)}}}@keyframes zoomInFade-461d2bae{0%{opacity:0;transform:translateY(60px);filter:blur(3px)}to{opacity:1;transform:translateY(0);filter:blur(0px)}}.messageCentre[data-v-93734089]{top:1rem;right:1rem;width:calc(100% - 2rem)}main[data-v-93734089]{height:100vh}@supports (height: 100dvh){@media screen and (max-width: 768px){main[data-v-93734089]{height:calc(100dvh - 50px)}}}
|
1
src/static/app/dist/assets/index2.js
vendored
Normal file
1
src/static/app/dist/assets/index2.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/index3.js
vendored
Normal file
1
src/static/app/dist/assets/index3.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
function f(e){return e.includes(":")?6:e.includes(".")?4:0}function b(e){const i=f(e);if(!i)throw new Error(`Invalid IP address: ${e}`);let n=0n,o=0n;const r=Object.create(null);if(i===4)for(const s of e.split(".").map(BigInt).reverse())n+=s*2n**o,o+=8n;else{if(e.includes(".")&&(r.ipv4mapped=!0,e=e.split(":").map(t=>{if(t.includes(".")){const[c,l,d,a]=t.split(".").map($=>Number($).toString(16).padStart(2,"0"));return`${c}${l}:${d}${a}`}else return t}).join(":")),e.includes("%")){let t;[,e,t]=/(.+)%(.+)/.exec(e)||[],r.scopeid=t}const s=e.split(":"),u=s.indexOf("");if(u!==-1)for(;s.length<8;)s.splice(u,0,"");for(const t of s.map(c=>BigInt(parseInt(c||"0",16))).reverse())n+=t*2n**o,o+=16n}return r.number=n,r.version=i,r}const p={4:32,6:128},I=e=>e.includes("/")?f(e):0;function m(e){const i=I(e),n=Object.create(null);if(i)n.cidr=e,n.version=i;else{const a=f(e);if(a)n.cidr=`${e}/${p[a]}`,n.version=a;else throw new Error(`Network is not a CIDR or IP: ${e}`)}const[o,r]=n.cidr.split("/");if(!/^[0-9]+$/.test(r))throw new Error(`Network is not a CIDR or IP: ${e}`);n.prefix=r,n.single=r===String(p[n.version]);const{number:s,version:u}=b(o),t=p[u],c=s.toString(2).padStart(t,"0"),l=Number(t-r),d=c.substring(0,t-l);return n.start=BigInt(`0b${d}${"0".repeat(l)}`),n.end=BigInt(`0b${d}${"1".repeat(l)}`),n}export{m as p};
|
1
src/static/app/dist/assets/localeText.js
vendored
Normal file
1
src/static/app/dist/assets/localeText.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{_ as t,G as e,t as o}from"./index.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return e(this.t)}}};function a(c,r,n,p,_,i){return o(this.getLocaleText)}const x=t(s,[["render",a]]);export{x as L};
|
1
src/static/app/dist/assets/message.css
vendored
Normal file
1
src/static/app/dist/assets/message.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.message[data-v-f50b8f0c]{width:100%}@media screen and (min-width: 576px){.message[data-v-f50b8f0c]{width:400px}}
|
1
src/static/app/dist/assets/message.js
vendored
Normal file
1
src/static/app/dist/assets/message.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{L as c}from"./localeText.js";import{d as n}from"./dayjs.min.js";import{_ as d,o as r,c as m,a as s,b as i,d as t,t as e,n as l,e as _}from"./index.js";const p={name:"message",methods:{dayjs:n},components:{LocaleText:c},props:{message:Object},mounted(){setTimeout(()=>{this.message.show=!1},5e3)}},g=["id"],h={class:"card-body"},f={class:"d-flex"},x={class:"fw-bold d-block",style:{"text-transform":"uppercase"}},u={class:"ms-auto"};function b(y,v,w,T,L,a){const o=_("LocaleText");return r(),m("div",{class:l(["card shadow rounded-3 position-relative message ms-auto",{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"}]),id:this.message.id},[s("div",h,[s("div",f,[s("small",x,[i(o,{t:"FROM "}),t(" "+e(this.message.from),1)]),s("small",u,e(a.dayjs().format("hh:mm A")),1)]),t(" "+e(this.message.content),1)])],10,g)}const M=d(p,[["render",b],["__scopeId","data-v-f50b8f0c"]]);export{M};
|
1
src/static/app/dist/assets/newConfiguration.js
vendored
Normal file
1
src/static/app/dist/assets/newConfiguration.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/osmap.css
vendored
Normal file
1
src/static/app/dist/assets/osmap.css
vendored
Normal file
File diff suppressed because one or more lines are too long
10
src/static/app/dist/assets/osmap.js
vendored
Normal file
10
src/static/app/dist/assets/osmap.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/peerCreate.css
vendored
Normal file
1
src/static/app/dist/assets/peerCreate.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.list-move[data-v-6d5fc831],.list-enter-active[data-v-6d5fc831],.list-leave-active[data-v-6d5fc831]{transition:all .3s ease}.list-enter-from[data-v-6d5fc831],.list-leave-to[data-v-6d5fc831]{opacity:0;transform:translateY(10px)}.list-leave-active[data-v-6d5fc831]{position:absolute}.peerSettingContainer[data-v-17eb547c]{background-color:#00000060;z-index:9998}div[data-v-17eb547c]{transition:.2s ease-in-out}.inactiveField[data-v-17eb547c]{opacity:.4}.card[data-v-17eb547c]{max-height:100%}
|
1
src/static/app/dist/assets/peerCreate.js
vendored
Normal file
1
src/static/app/dist/assets/peerCreate.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
src/static/app/dist/assets/peerList.css
vendored
Normal file
7
src/static/app/dist/assets/peerList.css
vendored
Normal file
File diff suppressed because one or more lines are too long
18
src/static/app/dist/assets/peerList.js
vendored
Normal file
18
src/static/app/dist/assets/peerList.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/ping.css
vendored
Normal file
1
src/static/app/dist/assets/ping.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.pingPlaceholder[data-v-a08ce97e]{width:100%;height:79.98px}.ping-move[data-v-a08ce97e],.ping-enter-active[data-v-a08ce97e],.ping-leave-active[data-v-a08ce97e]{transition:all .4s cubic-bezier(.82,.58,.17,.9)}.ping-leave-active[data-v-a08ce97e]{position:absolute;width:100%}.ping-enter-from[data-v-a08ce97e],.ping-leave-to[data-v-a08ce97e]{opacity:0;filter:blur(3px)}
|
1
src/static/app/dist/assets/ping.js
vendored
Normal file
1
src/static/app/dist/assets/ping.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/restoreConfiguration.css
vendored
Normal file
1
src/static/app/dist/assets/restoreConfiguration.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.dropdownIcon[data-v-626f1988]{transition:all .2s ease-in-out}.dropdownIcon.active[data-v-626f1988]{transform:rotate(180deg)}.steps{&[data-v-e5d78cfb]{transition:all .3s ease-in-out;opacity:.3}&.active[data-v-e5d78cfb]{opacity:1}}
|
4
src/static/app/dist/assets/restoreConfiguration.js
vendored
Normal file
4
src/static/app/dist/assets/restoreConfiguration.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/settings.css
vendored
Normal file
1
src/static/app/dist/assets/settings.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
@media screen and (max-width: 992px){.apiKey-card-body{&[data-v-a76253c8]{flex-direction:column!important;align-items:start!important}div.ms-auto[data-v-a76253c8]{margin-left:0!important}div[data-v-a76253c8]{width:100%;align-items:start!important}small[data-v-a76253c8]{margin-right:auto}}}.apiKey-move[data-v-100ee9f9],.apiKey-enter-active[data-v-100ee9f9],.apiKey-leave-active[data-v-100ee9f9]{transition:all .5s ease}.apiKey-enter-from[data-v-100ee9f9],.apiKey-leave-to[data-v-100ee9f9]{opacity:0;transform:translateY(30px) scale(.9)}.apiKey-leave-active[data-v-100ee9f9]{position:absolute;width:100%}.dropdown-menu[data-v-0f26916d]{width:100%}.list-group{&[data-v-4aa2aed9]:first-child{border-top-left-radius:var(--bs-border-radius-lg);border-top-right-radius:var(--bs-border-radius-lg)}&[data-v-4aa2aed9]:last-child{border-bottom-left-radius:var(--bs-border-radius-lg);border-bottom-right-radius:var(--bs-border-radius-lg)}}
|
1
src/static/app/dist/assets/settings.js
vendored
Normal file
1
src/static/app/dist/assets/settings.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/setup.js
vendored
Normal file
1
src/static/app/dist/assets/setup.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{_ as u,D as m,m as p,c as r,a as e,b as o,d as c,t as h,j as f,k as l,p as d,o as i,e as w}from"./index.js";import{L as g}from"./localeText.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:m()}},data(){return{setup:{username:"",newPassword:"",repeatNewPassword:"",enable_totp:!0},loading:!1,errorMessage:"",done:!1}},computed:{goodToSubmit(){return this.setup.username&&this.setup.newPassword.length>=8&&this.setup.repeatNewPassword.length>=8&&this.setup.newPassword===this.setup.repeatNewPassword}},methods:{submit(){this.loading=!0,p("/api/Welcome_Finish",this.setup,n=>{n.status?(this.done=!0,this.$router.push("/2FASetup")):(document.querySelectorAll("#createAccount input").forEach(s=>s.classList.add("is-invalid")),this.errorMessage=n.message,document.querySelector(".login-container-fluid").scrollTo({top:0,left:0,behavior:"smooth"})),this.loading=!1})}}},_=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},v={class:"dashboardLogo display-4"},y={class:"mb-5"},P={key:0,class:"alert alert-danger"},N={class:"d-flex flex-column gap-3"},k={id:"createAccount",class:"d-flex flex-column gap-2"},S={class:"form-group text-body"},T={for:"username",class:"mb-1 text-muted"},C={class:"form-group text-body"},L={for:"password",class:"mb-1 text-muted"},V={class:"form-group text-body"},$={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=w("LocaleText");return i(),r("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[e("div",x,[e("span",v,[o(t,{t:"Nice to meet you!"})]),e("p",y,[o(t,{t:"Please fill in the following fields to finish setup"}),s[4]||(s[4]=c(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):f("",!0),e("div",N,[e("form",k,[e("div",S,[e("label",T,[e("small",null,[o(t,{t:"Enter an username you like"})])]),l(e("input",{type:"text",autocomplete:"username","onUpdate:modelValue":s[0]||(s[0]=a=>this.setup.username=a),class:"form-control",id:"username",name:"username",required:""},null,512),[[d,this.setup.username]])]),e("div",C,[e("label",L,[e("small",null,[o(t,{t:"Enter a password"}),e("code",null,[o(t,{t:"(At least 8 characters and make sure is strong enough!)"})])])]),l(e("input",{type:"password",autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.setup.newPassword=a),class:"form-control",id:"password",name:"password",required:""},null,512),[[d,this.setup.newPassword]])]),e("div",V,[e("label",$,[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/app/dist/assets/share.css
vendored
Normal file
1
src/static/app/dist/assets/share.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.animate__fadeInUp[data-v-1b44aacd]{animation-timing-function:cubic-bezier(.42,0,.22,1)}
|
1
src/static/app/dist/assets/share.js
vendored
Normal file
1
src/static/app/dist/assets/share.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{_,q as r,D as p,f as u,c as m,a as t,b as c,X as h,o as f,e as b}from"./index.js";import{b as v}from"./browser.js";import{L as y}from"./localeText.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=h(),e=r(!1),i=p(),n=r(""),s=r(void 0),l=r(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(s.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(s.value=d.data,l.value=new Blob([s.value.file],{type:"text/plain"})):s.value=void 0,e.value=!0}),{store:i,theme:n,peerConfiguration:s,blob:l}},mounted(){this.peerConfiguration&&v.toCanvas(document.querySelector("#qrcode"),this.peerConfiguration.file,o=>{o&&console.error(o)})},methods:{download(){const o=new Blob([this.peerConfiguration.file],{type:"text/plain"}),e=URL.createObjectURL(o),i=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=i,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},w=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},C={key:0,class:"text-center position-relative",style:{}},U={class:"position-absolute w-100 h-100 top-0 start-0 d-flex animate__animated animate__fadeInUp",style:{"animation-delay":"0.1s"}},I={class:"m-auto"},L={key:1,class:"d-flex align-items-center flex-column gap-3"},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"},q={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},D=["download","href"];function R(o,e,i,n,s,l){const a=b("LocaleText");return f(),m("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.theme},[t("div",x,[this.peerConfiguration?(f(),m("div",L,[t("div",B,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),c(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",k,null,512),t("p",q,[c(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),c(a,{t:" file"})]),t("a",{download:this.peerConfiguration.fileName+".conf",href:l.getBlob,class:"btn btn-lg bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle animate__animated animate__fadeInUp shadow-sm",style:{"animation-delay":"0.25s"}},e[3]||(e[3]=[t("i",{class:"bi bi-download"},null,-1)]),8,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,[c(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,w)}const N=_(g,[["render",R],["__scopeId","data-v-1b44aacd"]]);export{N as default};
|
1
src/static/app/dist/assets/signin.css
vendored
Normal file
1
src/static/app/dist/assets/signin.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.dot.inactive[data-v-ed7817c7]{background-color:#dc3545;box-shadow:0 0 0 .2rem #dc354545}.spin[data-v-ed7817c7]{animation:spin-ed7817c7 1s infinite cubic-bezier(.82,.58,.17,.9)}@keyframes spin-ed7817c7{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media screen and (max-width: 768px){.remoteServerContainer[data-v-ed7817c7]{flex-direction:column}.remoteServerContainer .button-group button[data-v-ed7817c7]{width:100%}}@media screen and (max-width: 768px){.login-box[data-v-95530d22]{width:100%!important}.login-box div[data-v-95530d22]{width:auto!important}}
|
1
src/static/app/dist/assets/signin.js
vendored
Normal file
1
src/static/app/dist/assets/signin.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/totp.js
vendored
Normal file
1
src/static/app/dist/assets/totp.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{_ as h,D as m,f as p,m as f,c as b,a as t,b as i,t as _,k as v,p as g,g as d,w as r,e as c,o as n}from"./index.js";import{b as x}from"./browser.js";import{L as y}from"./localeText.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=m();let e="";return await p("/api/Welcome_GetTotpLink",{},a=>{a.status&&(e=a.data)}),{l:e,store:s}},mounted(){this.l&&x.toCanvas(document.getElementById("qrcode"),this.l,function(s){})},data(){return{totp:"",totpInvalidMessage:"",verified:!1}},methods:{validateTotp(){}},watch:{totp(s){const e=document.querySelector("#totp");e.classList.remove("is-invalid","is-valid"),s.length===6&&(console.log(s),/[0-9]{6}/.test(s)?f("/api/Welcome_VerifyTotpLink",{totp:s},a=>{a.status?(this.verified=!0,e.classList.add("is-valid"),this.$emit("verified")):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP does not match.")}):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP can only contain numbers"))}}},k=["data-bs-theme"],w={class:"m-auto text-body",style:{width:"500px"}},L={class:"d-flex flex-column"},M={class:"dashboardLogo display-4"},C={class:"mb-2"},P={class:"text-muted"},I={class:"p-3 bg-body-secondary rounded-3 border mb-3"},O={class:"text-muted mb-0"},B=["href"],$={style:{"line-break":"anywhere"}},D={for:"totp",class:"mb-2"},S={class:"text-muted"},q={class:"form-group mb-2"},A=["disabled"],E={class:"invalid-feedback"},F={class:"valid-feedback"},R={class:"d-flex gap-3 mt-5 flex-column"};function G(s,e,a,N,W,Q){const o=c("LocaleText"),l=c("RouterLink");return n(),b("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[t("div",w,[t("div",L,[t("div",null,[t("h1",M,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",C,[t("small",P,[i(o,{t:"1. Please scan the following QR Code to generate TOTP with your choice of authenticator"})])]),e[1]||(e[1]=t("canvas",{id:"qrcode",class:"rounded-3 mb-2"},null,-1)),t("div",I,[t("p",O,[t("small",null,[i(o,{t:"Or you can click the link below:"})])]),t("a",{href:this.l},[t("code",$,_(this.l),1)],8,B)]),t("label",D,[t("small",S,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",q,[v(t("input",{class:"form-control text-center totp",id:"totp",maxlength:"6",type:"text",inputmode:"numeric",autocomplete:"one-time-code","onUpdate:modelValue":e[0]||(e[0]=u=>this.totp=u),disabled:this.verified},null,8,A),[[g,this.totp]]),t("div",E,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",F,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",R,[this.verified?(n(),d(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:r(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1})):(n(),d(l,{key:0,to:"/",class:"btn bg-secondary-subtle text-secondary-emphasis rounded-3 flex-grow-1 btn-lg border-1 border-secondary-subtle shadow d-flex"},{default:r(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1}))])])])],8,k)}const z=h(T,[["render",G]]);export{z as default};
|
1
src/static/app/dist/assets/traceroute.css
vendored
Normal file
1
src/static/app/dist/assets/traceroute.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.pingPlaceholder[data-v-549eb223]{width:100%;height:40px}.ping-leave-active[data-v-549eb223]{position:absolute}table th[data-v-549eb223],table td[data-v-549eb223]{padding:.5rem}.table[data-v-549eb223]>:not(caption)>*>*{background-color:transparent!important}.ping-move[data-v-549eb223],.ping-enter-active[data-v-549eb223],.ping-leave-active[data-v-549eb223]{transition:all .4s cubic-bezier(.82,.58,.17,.9)}.ping-leave-active[data-v-549eb223]{position:absolute;width:100%}.ping-enter-from[data-v-549eb223],.ping-leave-to[data-v-549eb223]{opacity:0;filter:blur(3px)}
|
1
src/static/app/dist/assets/traceroute.js
vendored
Normal file
1
src/static/app/dist/assets/traceroute.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{_ as h,W as b,f as g,c as o,a as t,b as n,k as y,p as f,z as v,w as r,h as c,o as a,d as x,F as u,r as m,n as k,y as T,t as i,j as A,e as _}from"./index.js";import{O as w}from"./osmap.js";import{L as R}from"./localeText.js";const M={name:"traceroute",components:{LocaleText:R,OSMap:w},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:b()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,g("/api/traceroute/execute",{ipAddress:this.ipAddress},d=>{d.status?this.tracerouteResult=d.data:this.store.newMessage("Server",d.message,"danger"),this.tracing=!1}))}}},S={class:"mt-md-5 mt-3 text-body"},$={class:"container-md"},C={class:"mb-3 text-body"},L={class:"d-flex gap-2 flex-column mb-5"},P={class:"mb-1 text-muted",for:"ipAddress"},V=["disabled"],N=["disabled"],O={key:0,class:"d-block"},z={key:1,class:"d-block"},B={class:"position-relative"},I={key:"pingPlaceholder"},D={key:1},E={key:"table",class:"w-100 mt-2"},F={class:"table table-sm rounded-3 w-100"},G={scope:"col"},H={scope:"col"},K={scope:"col"},W={scope:"col"},j={scope:"col"},U={scope:"col"},q={key:0};function J(d,s,Q,X,Y,Z){const l=_("LocaleText"),p=_("OSMap");return a(),o("div",S,[t("div",$,[t("h3",C,[n(l,{t:"Traceroute"})]),t("div",L,[t("div",null,[t("label",P,[t("small",null,[n(l,{t:"Enter IP Address / Hostname"})])]),y(t("input",{disabled:this.tracing,id:"ipAddress",class:"form-control","onUpdate:modelValue":s[0]||(s[0]=e=>this.ipAddress=e),onKeyup:s[1]||(s[1]=v(e=>this.execute(),["enter"])),type:"text"},null,40,V),[[f,this.ipAddress]])]),t("button",{class:"btn btn-primary rounded-3 mt-3 position-relative",disabled:this.tracing||!this.ipAddress,onClick:s[2]||(s[2]=e=>this.execute())},[n(c,{name:"slide"},{default:r(()=>[this.tracing?(a(),o("span",z,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)]))):(a(),o("span",O,s[3]||(s[3]=[t("i",{class:"bi bi-person-walking me-2"},null,-1),x("Trace! ")])))]),_:1})],8,N)]),t("div",B,[n(c,{name:"ping"},{default:r(()=>[this.tracerouteResult?(a(),o("div",D,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",E,[t("table",F,[t("thead",null,[t("tr",null,[t("th",G,[n(l,{t:"Hop"})]),t("th",H,[n(l,{t:"IP Address"})]),t("th",K,[n(l,{t:"Average RTT (ms)"})]),t("th",W,[n(l,{t:"Min RTT (ms)"})]),t("th",j,[n(l,{t:"Max RTT (ms)"})]),t("th",U,[n(l,{t:"Geolocation"})])])]),t("tbody",null,[(a(!0),o(u,null,m(this.tracerouteResult,(e,tt)=>(a(),o("tr",null,[t("td",null,[t("small",null,i(e.hop),1)]),t("td",null,[t("small",null,i(e.ip),1)]),t("td",null,[t("small",null,i(e.avg_rtt),1)]),t("td",null,[t("small",null,i(e.min_rtt),1)]),t("td",null,[t("small",null,i(e.max_rtt),1)]),t("td",null,[e.geo.city&&e.geo.country?(a(),o("span",q,[t("small",null,i(e.geo.city)+", "+i(e.geo.country),1)])):A("",!0)])]))),256))])])])])):(a(),o("div",I,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(a(),o(u,null,m(5,e=>t("div",{class:k(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:T({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const ot=h(M,[["render",J],["__scopeId","data-v-549eb223"]]);export{ot as default};
|
1
src/static/app/dist/assets/vue-datepicker.js
vendored
Normal file
1
src/static/app/dist/assets/vue-datepicker.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
src/static/app/dist/assets/wireguard.js
vendored
Normal file
4
src/static/app/dist/assets/wireguard.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/*! SPDX-License-Identifier: GPL-2.0
|
||||
*
|
||||
* Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
*/(function(){function c(n){var r=new Float64Array(16);if(n)for(var a=0;a<n.length;++a)r[a]=n[a];return r}function F(n,r){for(var a,e=c(),f=c(),t=0;t<16;++t)f[t]=r[t];b(f),b(f),b(f);for(var u=0;u<2;++u){e[0]=f[0]-65517;for(var t=1;t<15;++t)e[t]=f[t]-65535-(e[t-1]>>16&1),e[t-1]&=65535;e[15]=f[15]-32767-(e[14]>>16&1),a=e[15]>>16&1,e[14]&=65535,h(f,e,1-a)}for(var t=0;t<16;++t)n[2*t]=f[t]&255,n[2*t+1]=f[t]>>8}function b(n){for(var r=0;r<16;++r)n[(r+1)%16]+=(r<15?1:38)*Math.floor(n[r]/65536),n[r]&=65535}function h(n,r,a){for(var e,f=~(a-1),t=0;t<16;++t)e=f&(n[t]^r[t]),n[t]^=e,r[t]^=e}function g(n,r,a){for(var e=0;e<16;++e)n[e]=r[e]+a[e]|0}function i(n,r,a){for(var e=0;e<16;++e)n[e]=r[e]-a[e]|0}function v(n,r,a){for(var e=new Float64Array(31),f=0;f<16;++f)for(var t=0;t<16;++t)e[f+t]+=r[f]*a[t];for(var f=0;f<15;++f)e[f]+=38*e[f+16];for(var f=0;f<16;++f)n[f]=e[f];b(n),b(n)}function B(n,r){for(var a=c(),e=0;e<16;++e)a[e]=r[e];for(var e=253;e>=0;--e)v(a,a,a),e!==2&&e!==4&&v(a,a,r);for(var e=0;e<16;++e)n[e]=a[e]}function A(n){n[31]=n[31]&127|64,n[0]&=248}function m(n){for(var r,a=new Uint8Array(32),e=c([1]),f=c([9]),t=c(),u=c([1]),y=c(),U=c(),L=c([56129,1]),S=c([9]),d=0;d<32;++d)a[d]=n[d];A(a);for(var d=254;d>=0;--d)r=a[d>>>3]>>>(d&7)&1,h(e,f,r),h(t,u,r),g(y,e,t),i(e,e,t),g(t,f,u),i(f,f,u),v(u,y,y),v(U,e,e),v(e,t,e),v(t,f,y),g(y,e,t),i(e,e,t),v(f,e,e),i(t,u,U),v(e,t,L),g(e,e,u),v(t,t,e),v(e,u,U),v(u,f,S),v(f,y,y),h(e,f,r),h(t,u,r);return B(t,t),v(e,e,t),F(a,e),a}function K(){var n=new Uint8Array(32);return window.crypto.getRandomValues(n),n}function P(){var n=K();return A(n),n}function s(n,r){for(var a=Uint8Array.from([r[0]>>2&63,(r[0]<<4|r[1]>>4)&63,(r[1]<<2|r[2]>>6)&63,r[2]&63]),e=0;e<4;++e)n[e]=a[e]+65+(25-a[e]>>8&6)-(51-a[e]>>8&75)-(61-a[e]>>8&15)+(62-a[e]>>8&3)}function x(n){var r,a=new Uint8Array(44);for(r=0;r<32/3;++r)s(a.subarray(r*4),n.subarray(r*3));return s(a.subarray(r*4),Uint8Array.from([n[r*3+0],n[r*3+1],0])),a[43]=61,String.fromCharCode.apply(null,a)}function R(n){let r=window.atob(n),a=r.length,e=new Uint8Array(a);for(let t=0;t<a;t++)e[t]=r.charCodeAt(t);return new Uint8Array(e.buffer)}function l(n,r){n.push(r&255,r>>>8&255,r>>>16&255,r>>>24&255)}function o(n,r){n.push(r&255,r>>>8&255)}function w(n,r){for(var a=0;a<r.length;++a)n.push(r[a]&255)}function C(n){for(var r=unescape(encodeURIComponent(n)),a=new Uint8Array(r.length),e=0;e<r.length;++e)a[e]=r.charCodeAt(e);return a}function p(n){if(!p.table){p.table=[];for(var r=0,a=0;a<256;r=++a){for(var e=0;e<8;++e)r=r&1?3988292384^r>>>1:r>>>1;p.table[a]=r}}for(var f=-1,t=0;t<n.length;++t)f=f>>>8^p.table[(f^n[t])&255];return(f^-1)>>>0}function _(n){for(var r=[],a=[],e=0,f=0;f<n.length;++f){var t=C(n[f].fileName),u=C(n[f].file),y=p(u);l(r,67324752),o(r,20),o(r,0),o(r,0),o(r,0),o(r,0),l(r,y),l(r,u.length),l(r,u.length),o(r,t.length),o(r,0),w(r,t),w(r,u),l(a,33639248),o(a,0),o(a,20),o(a,0),o(a,0),o(a,0),o(a,0),l(a,y),l(a,u.length),l(a,u.length),o(a,t.length),o(a,0),o(a,0),o(a,0),o(a,0),l(a,32),l(a,e),w(a,t),e+=30+u.length+t.length}return w(r,a),l(r,101010256),o(r,0),o(r,0),o(r,n.length),o(r,n.length),l(r,a.length),l(r,e),o(r,0),Uint8Array.from(r)}window.wireguard={generateKeypair:function(){var n=P(),r=m(n),a=K();return{publicKey:x(r),privateKey:x(n),presharedKey:x(a)}},generatePublicKey:function(n){return n=R(n),x(m(n))},generateZipFiles:function(n,r){var a=n.data,e=_(a),f=new Blob([e],{type:"application/zip"}),t=document.createElement("a");t.download=r,t.href=URL.createObjectURL(f),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}}})();
|
@ -1,22 +1,22 @@
|
||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||
import {cookie} from "../utilities/cookie.js";
|
||||
import Index from "@/views/index.vue"
|
||||
import Signin from "@/views/signin.vue";
|
||||
import ConfigurationList from "@/components/configurationList.vue";
|
||||
// import Index from "@/views/index.vue"
|
||||
// import Signin from "@/views/signin.vue";
|
||||
// import ConfigurationList from "@/components/configurationList.vue";
|
||||
import {fetchGet} from "@/utilities/fetch.js";
|
||||
import Settings from "@/views/settings.vue";
|
||||
// import Settings from "@/views/settings.vue";
|
||||
import {WireguardConfigurationsStore} from "@/stores/WireguardConfigurationsStore.js";
|
||||
import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.js";
|
||||
import Setup from "@/views/setup.vue";
|
||||
import NewConfiguration from "@/views/newConfiguration.vue";
|
||||
import Configuration from "@/views/configuration.vue";
|
||||
import PeerList from "@/components/configurationComponents/peerList.vue";
|
||||
import PeerCreate from "@/components/configurationComponents/peerCreate.vue";
|
||||
import Ping from "@/views/ping.vue";
|
||||
import Traceroute from "@/views/traceroute.vue";
|
||||
import Totp from "@/components/setupComponent/totp.vue";
|
||||
import Share from "@/views/share.vue";
|
||||
import RestoreConfiguration from "@/views/restoreConfiguration.vue";
|
||||
// import Setup from "@/views/setup.vue";
|
||||
// import NewConfiguration from "@/views/newConfiguration.vue";
|
||||
// import Configuration from "@/views/configuration.vue";
|
||||
// import PeerList from "@/components/configurationComponents/peerList.vue";
|
||||
// import PeerCreate from "@/components/configurationComponents/peerCreate.vue";
|
||||
// import Ping from "@/views/ping.vue";
|
||||
// import Traceroute from "@/views/traceroute.vue";
|
||||
// import Totp from "@/components/setupComponent/totp.vue";
|
||||
// import Share from "@/views/share.vue";
|
||||
// import RestoreConfiguration from "@/views/restoreConfiguration.vue";
|
||||
|
||||
const checkAuth = async () => {
|
||||
let result = false
|
||||
@ -39,7 +39,7 @@ const router = createRouter({
|
||||
{
|
||||
name: "Index",
|
||||
path: '/',
|
||||
component: Index,
|
||||
component: () => import('@/views/index.vue'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
},
|
||||
@ -47,7 +47,7 @@ const router = createRouter({
|
||||
{
|
||||
name: "Configuration List",
|
||||
path: '',
|
||||
component: ConfigurationList,
|
||||
component: () => import('@/components/configurationList.vue'),
|
||||
meta: {
|
||||
title: "WireGuard Configurations"
|
||||
}
|
||||
@ -55,7 +55,7 @@ const router = createRouter({
|
||||
{
|
||||
name: "Settings",
|
||||
path: '/settings',
|
||||
component: Settings,
|
||||
component: () => import('@/views/settings.vue'),
|
||||
meta: {
|
||||
title: "Settings"
|
||||
}
|
||||
@ -63,17 +63,17 @@ const router = createRouter({
|
||||
{
|
||||
path: '/ping',
|
||||
name: "Ping",
|
||||
component: Ping,
|
||||
component: () => import('@/views/ping.vue'),
|
||||
},
|
||||
{
|
||||
path: '/traceroute',
|
||||
name: "Traceroute",
|
||||
component: Traceroute,
|
||||
component: () => import('@/views/traceroute.vue'),
|
||||
},
|
||||
{
|
||||
name: "New Configuration",
|
||||
path: '/new_configuration',
|
||||
component: NewConfiguration,
|
||||
component: () => import('@/views/newConfiguration.vue'),
|
||||
meta: {
|
||||
title: "New Configuration"
|
||||
}
|
||||
@ -81,7 +81,7 @@ const router = createRouter({
|
||||
{
|
||||
name: "Restore Configuration",
|
||||
path: '/restore_configuration',
|
||||
component: RestoreConfiguration,
|
||||
component: () => import('@/views/restoreConfiguration.vue'),
|
||||
meta: {
|
||||
title: "Restore Configuration"
|
||||
}
|
||||
@ -89,7 +89,7 @@ const router = createRouter({
|
||||
{
|
||||
name: "Configuration",
|
||||
path: '/configuration/:id',
|
||||
component: Configuration,
|
||||
component: () => import('@/views/configuration.vue'),
|
||||
meta: {
|
||||
title: "Configuration"
|
||||
},
|
||||
@ -97,12 +97,12 @@ const router = createRouter({
|
||||
{
|
||||
name: "Peers List",
|
||||
path: 'peers',
|
||||
component: PeerList
|
||||
component: () => import('@/components/configurationComponents/peerList.vue')
|
||||
},
|
||||
{
|
||||
name: "Peers Create",
|
||||
path: 'create',
|
||||
component: PeerCreate
|
||||
component: () => import('@/components/configurationComponents/peerCreate.vue')
|
||||
},
|
||||
]
|
||||
},
|
||||
@ -110,27 +110,31 @@ const router = createRouter({
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/signin', component: Signin,
|
||||
path: '/signin',
|
||||
component: () => import('@/views/signin.vue'),
|
||||
meta: {
|
||||
title: "Sign In"
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/welcome', component: Setup,
|
||||
path: '/welcome',
|
||||
component: () => import("@/views/setup.vue"),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: "Welcome to WGDashboard"
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/2FASetup', component: Totp,
|
||||
path: '/2FASetup',
|
||||
component: () => import("@/components/setupComponent/totp.vue"),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: "Multi-Factor Authentication Setup"
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/share', component: Share,
|
||||
path: '/share',
|
||||
component: () => import("@/views/share.vue"),
|
||||
meta: {
|
||||
title: "Share"
|
||||
}
|
||||
|
@ -8,8 +8,7 @@ export const GetLocale = (key) => {
|
||||
const match = reg.filter(x => {
|
||||
return key.match(new RegExp('^' + x + '$', 'gi')) !== null
|
||||
})
|
||||
if (match.length === 0 || match.length > 1){
|
||||
// console.log(`[Translation Needed] Language: ${store.Configuration.Server.dashboard_language} \nKey: ${key}`)
|
||||
if (match.length === 0 || match.length > 1 || store.Locale[match[0]].length === 0){
|
||||
return key
|
||||
}
|
||||
return key.replace(new RegExp(match[0], 'gi'), store.Locale[match[0]])
|
||||
|
@ -246,7 +246,7 @@ export default {
|
||||
width: 100%;
|
||||
height: 79.98px;
|
||||
}
|
||||
.ping-move, /* apply transition to moving elements */
|
||||
.ping-move,
|
||||
.ping-enter-active,
|
||||
.ping-leave-active {
|
||||
transition: all 0.4s cubic-bezier(0.82, 0.58, 0.17, 0.9);
|
||||
@ -259,7 +259,6 @@ export default {
|
||||
.ping-enter-from,
|
||||
.ping-leave-to {
|
||||
opacity: 0;
|
||||
//transform: scale(1.1);
|
||||
filter: blur(3px);
|
||||
}
|
||||
</style>
|
@ -166,12 +166,9 @@ export default {
|
||||
.ping-enter-from,
|
||||
.ping-leave-to {
|
||||
opacity: 0;
|
||||
//transform: scale(1.1);
|
||||
filter: blur(3px);
|
||||
}
|
||||
|
||||
/* ensure leaving items are taken out of layout flow so that moving
|
||||
animations can be calculated correctly. */
|
||||
.ping-leave-active {
|
||||
position: absolute;
|
||||
}
|
||||
@ -184,7 +181,7 @@ table th, table td{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
.ping-move, /* apply transition to moving elements */
|
||||
.ping-move,
|
||||
.ping-enter-active,
|
||||
.ping-leave-active {
|
||||
transition: all 0.4s cubic-bezier(0.82, 0.58, 0.17, 0.9);
|
||||
@ -197,7 +194,6 @@ table th, table td{
|
||||
.ping-enter-from,
|
||||
.ping-leave-to {
|
||||
opacity: 0;
|
||||
//transform: scale(1.1);
|
||||
filter: blur(3px);
|
||||
}
|
||||
</style>
|
@ -236,5 +236,76 @@
|
||||
"IP Address": "IP-Adresse",
|
||||
"Enter IP Address / Hostname": "IP-Adresse/Hostnamen eingeben",
|
||||
"IP Address / Hostname": "IP-Adresse/Hostnamen",
|
||||
"Count": "Zählen"
|
||||
"Count": "Zählen",
|
||||
"Geolocation": "",
|
||||
"Is Alive": "",
|
||||
"Average / Min / Max Round Trip Time": "",
|
||||
"Sent / Received / Lost Package": "",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "",
|
||||
"Restore Configuration": "",
|
||||
"Step (.*)": "",
|
||||
"Select a backup you want to restore": "",
|
||||
"Click to change a backup": "",
|
||||
"Selected Backup": "",
|
||||
"You don't have any configuration to restore": "",
|
||||
"Help": "",
|
||||
"Backup": "",
|
||||
"([0-9].*) Backups?": "",
|
||||
"Yes": "",
|
||||
"No": "",
|
||||
"Backup not selected": "",
|
||||
"Confirm \\& edit restore information": "",
|
||||
"(.*) Available IP Address": "",
|
||||
"Database File": "",
|
||||
"Contain": "",
|
||||
"Restricted Peers?": "",
|
||||
"Restore": "",
|
||||
"Restoring": "",
|
||||
"WGDashboard Settings": "",
|
||||
"Peers Settings": "",
|
||||
"WireGuard Configuration Settings": "",
|
||||
"Appearance": "",
|
||||
"Theme": "",
|
||||
"Language": "",
|
||||
"Account Settings": "",
|
||||
"Peer Default Settings": "",
|
||||
"Toggle When Start Up": "",
|
||||
"Other Settings": "",
|
||||
"Select Peers": "",
|
||||
"Backup & Restore": "",
|
||||
"Delete Configuration": "",
|
||||
"Create Backup": "",
|
||||
"No backup yet, click the button above to create backup\\.": "",
|
||||
"Are you sure to delete this backup\\?": "",
|
||||
"Are you sure to restore this backup?\\": "",
|
||||
"Backup Date": "",
|
||||
"File": "",
|
||||
"Are you sure to delete this configuration\\?": "",
|
||||
"Once you deleted this configuration\\:": "",
|
||||
"All connected peers will get disconnected": "",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "",
|
||||
"Checking backups...": "",
|
||||
"This configuration have ([0-9].*) backups": "",
|
||||
"This configuration have no backup": "",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "",
|
||||
"Select All": "",
|
||||
"Clear Selection": "",
|
||||
"([0-9].*) Peers?": "",
|
||||
"Downloading": "",
|
||||
"Download Finished": "",
|
||||
"Done": "",
|
||||
"Are you sure to delete": "",
|
||||
"Are you sure to delete this peer\\?": "",
|
||||
"Configuration deleted": "",
|
||||
"Configuration saved": "",
|
||||
"WGDashboard language update failed": "",
|
||||
"Configuration restored": "",
|
||||
"Allowed IP already taken by another peer": "",
|
||||
"Failed to allow access of peer (.*)": "",
|
||||
"Failed to save configuration through WireGuard": "",
|
||||
"Allow access successfully": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": ""
|
||||
}
|
||||
|
@ -232,5 +232,81 @@
|
||||
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "Il nome della configurazione può contenere solo 15 lettere tra minuscole/maiuscole, numeri, segno '_', segno '=', segno '>', punto e virgola.",
|
||||
"Invalid Port": "Porta non valida",
|
||||
"Save Configuration": "Salva la configurazione",
|
||||
"IP Address/CIDR is invalid": "L'indirizzo IP/CIDR non è valido"
|
||||
"IP Address/CIDR is invalid": "L'indirizzo IP/CIDR non è valido",
|
||||
"IP Address": "",
|
||||
"Enter IP Address / Hostname": "",
|
||||
"IP Address / Hostname": "",
|
||||
"Dashboard IP Address \\& Listen Port": "",
|
||||
"Count": "",
|
||||
"Geolocation": "",
|
||||
"Is Alive": "",
|
||||
"Average / Min / Max Round Trip Time": "",
|
||||
"Sent / Received / Lost Package": "",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "",
|
||||
"Restore Configuration": "",
|
||||
"Step (.*)": "",
|
||||
"Select a backup you want to restore": "",
|
||||
"Click to change a backup": "",
|
||||
"Selected Backup": "",
|
||||
"You don't have any configuration to restore": "",
|
||||
"Help": "",
|
||||
"Backup": "",
|
||||
"([0-9].*) Backups?": "",
|
||||
"Yes": "",
|
||||
"No": "",
|
||||
"Backup not selected": "",
|
||||
"Confirm \\& edit restore information": "",
|
||||
"(.*) Available IP Address": "",
|
||||
"Database File": "",
|
||||
"Contain": "",
|
||||
"Restricted Peers?": "",
|
||||
"Restore": "",
|
||||
"Restoring": "",
|
||||
"WGDashboard Settings": "",
|
||||
"Peers Settings": "",
|
||||
"WireGuard Configuration Settings": "",
|
||||
"Appearance": "",
|
||||
"Theme": "",
|
||||
"Language": "",
|
||||
"Account Settings": "",
|
||||
"Peer Default Settings": "",
|
||||
"Toggle When Start Up": "",
|
||||
"Other Settings": "",
|
||||
"Select Peers": "",
|
||||
"Backup & Restore": "",
|
||||
"Delete Configuration": "",
|
||||
"Create Backup": "",
|
||||
"No backup yet, click the button above to create backup\\.": "",
|
||||
"Are you sure to delete this backup\\?": "",
|
||||
"Are you sure to restore this backup?\\": "",
|
||||
"Backup Date": "",
|
||||
"File": "",
|
||||
"Are you sure to delete this configuration\\?": "",
|
||||
"Once you deleted this configuration\\:": "",
|
||||
"All connected peers will get disconnected": "",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "",
|
||||
"Checking backups...": "",
|
||||
"This configuration have ([0-9].*) backups": "",
|
||||
"This configuration have no backup": "",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "",
|
||||
"Select All": "",
|
||||
"Clear Selection": "",
|
||||
"([0-9].*) Peers?": "",
|
||||
"Downloading": "",
|
||||
"Download Finished": "",
|
||||
"Done": "",
|
||||
"Are you sure to delete": "",
|
||||
"Are you sure to delete this peer\\?": "",
|
||||
"Configuration deleted": "",
|
||||
"Configuration saved": "",
|
||||
"WGDashboard language update failed": "",
|
||||
"Configuration restored": "",
|
||||
"Allowed IP already taken by another peer": "",
|
||||
"Failed to allow access of peer (.*)": "",
|
||||
"Failed to save configuration through WireGuard": "",
|
||||
"Allow access successfully": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": ""
|
||||
}
|
@ -236,6 +236,76 @@
|
||||
"IP Address": "IP-адрес",
|
||||
"Enter IP Address / Hostname": "Введите IP-адрес/имя хоста",
|
||||
"IP Address / Hostname": "IP-адрес/имя хоста",
|
||||
"Count": "Считать"
|
||||
|
||||
"Count": "Считать",
|
||||
"Geolocation": "",
|
||||
"Is Alive": "",
|
||||
"Average / Min / Max Round Trip Time": "",
|
||||
"Sent / Received / Lost Package": "",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "",
|
||||
"Restore Configuration": "",
|
||||
"Step (.*)": "",
|
||||
"Select a backup you want to restore": "",
|
||||
"Click to change a backup": "",
|
||||
"Selected Backup": "",
|
||||
"You don't have any configuration to restore": "",
|
||||
"Help": "",
|
||||
"Backup": "",
|
||||
"([0-9].*) Backups?": "",
|
||||
"Yes": "",
|
||||
"No": "",
|
||||
"Backup not selected": "",
|
||||
"Confirm \\& edit restore information": "",
|
||||
"(.*) Available IP Address": "",
|
||||
"Database File": "",
|
||||
"Contain": "",
|
||||
"Restricted Peers?": "",
|
||||
"Restore": "",
|
||||
"Restoring": "",
|
||||
"WGDashboard Settings": "",
|
||||
"Peers Settings": "",
|
||||
"WireGuard Configuration Settings": "",
|
||||
"Appearance": "",
|
||||
"Theme": "",
|
||||
"Language": "",
|
||||
"Account Settings": "",
|
||||
"Peer Default Settings": "",
|
||||
"Toggle When Start Up": "",
|
||||
"Other Settings": "",
|
||||
"Select Peers": "",
|
||||
"Backup & Restore": "",
|
||||
"Delete Configuration": "",
|
||||
"Create Backup": "",
|
||||
"No backup yet, click the button above to create backup\\.": "",
|
||||
"Are you sure to delete this backup\\?": "",
|
||||
"Are you sure to restore this backup?\\": "",
|
||||
"Backup Date": "",
|
||||
"File": "",
|
||||
"Are you sure to delete this configuration\\?": "",
|
||||
"Once you deleted this configuration\\:": "",
|
||||
"All connected peers will get disconnected": "",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "",
|
||||
"Checking backups...": "",
|
||||
"This configuration have ([0-9].*) backups": "",
|
||||
"This configuration have no backup": "",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "",
|
||||
"Select All": "",
|
||||
"Clear Selection": "",
|
||||
"([0-9].*) Peers?": "",
|
||||
"Downloading": "",
|
||||
"Download Finished": "",
|
||||
"Done": "",
|
||||
"Are you sure to delete": "",
|
||||
"Are you sure to delete this peer\\?": "",
|
||||
"Configuration deleted": "",
|
||||
"Configuration saved": "",
|
||||
"WGDashboard language update failed": "",
|
||||
"Configuration restored": "",
|
||||
"Allowed IP already taken by another peer": "",
|
||||
"Failed to allow access of peer (.*)": "",
|
||||
"Failed to save configuration through WireGuard": "",
|
||||
"Allow access successfully": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": ""
|
||||
}
|
@ -236,6 +236,76 @@
|
||||
"IP Address": "IP-адреса",
|
||||
"Enter IP Address / Hostname": "Введіть IP-адресу / ім’я хоста",
|
||||
"IP Address / Hostname": "IP-адресу / ім’я хоста",
|
||||
"Count": "Граф"
|
||||
|
||||
"Count": "Граф",
|
||||
"Geolocation": "",
|
||||
"Is Alive": "",
|
||||
"Average / Min / Max Round Trip Time": "",
|
||||
"Sent / Received / Lost Package": "",
|
||||
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "",
|
||||
"Restore Configuration": "",
|
||||
"Step (.*)": "",
|
||||
"Select a backup you want to restore": "",
|
||||
"Click to change a backup": "",
|
||||
"Selected Backup": "",
|
||||
"You don't have any configuration to restore": "",
|
||||
"Help": "",
|
||||
"Backup": "",
|
||||
"([0-9].*) Backups?": "",
|
||||
"Yes": "",
|
||||
"No": "",
|
||||
"Backup not selected": "",
|
||||
"Confirm \\& edit restore information": "",
|
||||
"(.*) Available IP Address": "",
|
||||
"Database File": "",
|
||||
"Contain": "",
|
||||
"Restricted Peers?": "",
|
||||
"Restore": "",
|
||||
"Restoring": "",
|
||||
"WGDashboard Settings": "",
|
||||
"Peers Settings": "",
|
||||
"WireGuard Configuration Settings": "",
|
||||
"Appearance": "",
|
||||
"Theme": "",
|
||||
"Language": "",
|
||||
"Account Settings": "",
|
||||
"Peer Default Settings": "",
|
||||
"Toggle When Start Up": "",
|
||||
"Other Settings": "",
|
||||
"Select Peers": "",
|
||||
"Backup & Restore": "",
|
||||
"Delete Configuration": "",
|
||||
"Create Backup": "",
|
||||
"No backup yet, click the button above to create backup\\.": "",
|
||||
"Are you sure to delete this backup\\?": "",
|
||||
"Are you sure to restore this backup?\\": "",
|
||||
"Backup Date": "",
|
||||
"File": "",
|
||||
"Are you sure to delete this configuration\\?": "",
|
||||
"Once you deleted this configuration\\:": "",
|
||||
"All connected peers will get disconnected": "",
|
||||
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "",
|
||||
"Checking backups...": "",
|
||||
"This configuration have ([0-9].*) backups": "",
|
||||
"This configuration have no backup": "",
|
||||
"If you're sure, please type in the configuration name below and click Delete": "",
|
||||
"Select All": "",
|
||||
"Clear Selection": "",
|
||||
"([0-9].*) Peers?": "",
|
||||
"Downloading": "",
|
||||
"Download Finished": "",
|
||||
"Done": "",
|
||||
"Are you sure to delete": "",
|
||||
"Are you sure to delete this peer\\?": "",
|
||||
"Configuration deleted": "",
|
||||
"Configuration saved": "",
|
||||
"WGDashboard language update failed": "",
|
||||
"Configuration restored": "",
|
||||
"Allowed IP already taken by another peer": "",
|
||||
"Failed to allow access of peer (.*)": "",
|
||||
"Failed to save configuration through WireGuard": "",
|
||||
"Allow access successfully": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\)": "",
|
||||
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": ""
|
||||
}
|
Loading…
Reference in New Issue
Block a user