mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-07-09 14:46:59 +00:00
2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{L as b}from"./localeText-DQo_Zwde.js";import{_ as m,a as n,c as d,b as t,d as o,m as r,x as h,n as u,j as _,D as v,W as k,v as y,G as K,f as x,w as S,F as I,h as A,t as w,k as P,e as $}from"./index-CM1Y3Pe1.js";const L={name:"nameInput",components:{LocaleText:b},props:{bulk:Boolean,data:Object,saving:Boolean}},D={for:"peer_name_textbox",class:"form-label"},T={class:"text-muted"},B=["disabled"];function V(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",{class:u({inactiveField:this.bulk})},[t("label",D,[t("small",T,[o(l,{t:"Name"})])]),r(t("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:this.saving||this.bulk,"onUpdate:modelValue":e[0]||(e[0]=s=>this.data.name=s),id:"peer_name_textbox",placeholder:""},null,8,B),[[h,this.data.name]])],2)}const st=m(L,[["render",V]]),N={name:"privatePublicKeyInput",components:{LocaleText:b},props:{data:Object,saving:Boolean,bulk:Boolean},setup(){const a=v(),e=k();return{dashboardStore:a,wgStore:e}},data(){return{keypair:{publicKey:"",privateKey:"",presharedKey:""},editKey:!1,error:!1}},methods:{genKeyPair(){this.editKey=!1,this.keypair=window.wireguard.generateKeypair(),this.data.private_key=this.keypair.privateKey,this.data.public_key=this.keypair.publicKey},testKey(a){return/^[A-Za-z0-9+/]{43}=?=?$/.test(a)},checkMatching(){try{this.keypair.privateKey&&this.wgStore.checkWGKeyLength(this.keypair.privateKey)&&(this.keypair.publicKey=window.wireguard.generatePublicKey(this.keypair.privateKey),window.wireguard.generatePublicKey(this.keypair.privateKey)!==this.keypair.publicKey?(this.error=!0,this.dashboardStore.newMessage("WGDashboard","Private key does not match with the public key","danger")):(this.data.private_key=this.keypair.privateKey,this.data.public_key=this.keypair.publicKey))}catch{this.error=!0,this.data.private_key="",this.data.public_key=""}}},mounted(){this.genKeyPair()},watch:{keypair:{deep:!0,handler(){this.error=!1,this.checkMatching()}}}},C={for:"peer_private_key_textbox",class:"form-label"},U={class:"text-muted"},M={class:"input-group"},O=["disabled"],E=["disabled"],G={class:"d-flex"},j={for:"public_key",class:"form-label"},F={class:"text-muted"},R={class:"form-check form-switch ms-auto"},W=["disabled"],q={class:"form-check-label",for:"enablePublicKeyEdit"},J=["disabled"];function z(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",{class:u(["d-flex gap-2 flex-column",{inactiveField:this.bulk}])},[t("div",null,[t("label",C,[t("small",U,[o(l,{t:"Private Key"}),t("code",null,[o(l,{t:"(Required for QR Code and Download)"})])])]),t("div",M,[r(t("input",{type:"text",class:u(["form-control form-control-sm rounded-start-3",{"is-invalid":this.error}]),"onUpdate:modelValue":e[0]||(e[0]=s=>this.keypair.privateKey=s),disabled:!this.editKey||this.bulk,onBlur:e[1]||(e[1]=s=>this.checkMatching()),id:"peer_private_key_textbox"},null,42,O),[[h,this.keypair.privateKey]]),t("button",{class:"btn btn-outline-info btn-sm rounded-end-3",onClick:e[2]||(e[2]=s=>this.genKeyPair()),disabled:this.bulk,type:"button",id:"button-addon2"},e[6]||(e[6]=[t("i",{class:"bi bi-arrow-repeat"},null,-1)]),8,E)])]),t("div",null,[t("div",G,[t("label",j,[t("small",F,[o(l,{t:"Public Key"}),t("code",null,[o(l,{t:"(Required)"})])])]),t("div",R,[r(t("input",{class:"form-check-input",type:"checkbox",role:"switch",disabled:this.bulk,id:"enablePublicKeyEdit","onUpdate:modelValue":e[3]||(e[3]=s=>this.editKey=s)},null,8,W),[[y,this.editKey]]),t("label",q,[t("small",null,[o(l,{t:"Use your own Private and Public Key"})])])])]),r(t("input",{class:u(["form-control-sm form-control rounded-3",{"is-invalid":this.error}]),"onUpdate:modelValue":e[4]||(e[4]=s=>this.keypair.publicKey=s),onBlur:e[5]||(e[5]=s=>this.checkMatching()),disabled:!this.editKey||this.bulk,type:"text",id:"public_key"},null,42,J),[[h,this.keypair.publicKey]])])],2)}const at=m(N,[["render",z]]),H={name:"allowedIPsInput",components:{LocaleText:b},props:{data:Object,saving:Boolean,bulk:Boolean,availableIp:void 0},data(){return{allowedIp:[],availableIpSearchString:"",customAvailableIp:"",allowedIpFormatError:!1}},setup(){const a=k(),e=v();return{store:a,dashboardStore:e}},computed:{searchAvailableIps(){return this.availableIpSearchString?this.availableIp.filter(a=>a.includes(this.availableIpSearchString)&&!this.data.allowed_ips.includes(a)):this.availableIp.filter(a=>!this.data.allowed_ips.includes(a))},inputGetLocale(){return K("Enter IP Address/CIDR")}},methods:{addAllowedIp(a){let e=a.split(",");for(let i=0;i<e.length;i++){let c=e[i].trim();if(this.store.checkCIDR(c))this.data.allowed_ips.push(c);else return this.allowedIpFormatError=!0,this.dashboardStore.newMessage("WGDashboard",`This Allowed IP address is invalid: ${c}`,"danger"),!1}return this.customAvailableIp="",!0}},watch:{customAvailableIp(){this.allowedIpFormatError=!1},availableIp(){}},mounted(){this.availableIp!==void 0&&this.availableIp.length>0&&this.data.allowed_ips.length===0&&this.addAllowedIp(this.availableIp[0])}},Q={class:"d-flex"},Y={for:"peer_allowed_ip_textbox",class:"form-label"},Z={class:"text-muted"},X={class:"form-check form-switch ms-auto"},ee={class:"form-check-label",for:"disableIPValidation"},te={class:"d-flex"},se=["onClick"],ae={class:"d-flex gap-2 align-items-center"},le={class:"input-group"},oe=["placeholder","disabled"],ie=["disabled"],ne={class:"text-muted"},de={class:"dropdown flex-grow-1"},re=["disabled"],ce={key:0,class:"dropdown-menu mt-2 shadow w-100 dropdown-menu-end rounded-3",style:{"overflow-y":"scroll","max-height":"270px",width:"300px !important"}},pe={class:"px-3 pb-2 pt-1 d-flex gap-3 align-items-center"},ue=["onClick"],he={class:"me-auto"},be={key:0},me={class:"px-3 text-muted"};function _e(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",{class:u({inactiveField:this.bulk})},[t("div",Q,[t("label",Y,[t("small",Z,[o(l,{t:"Allowed IPs"}),e[4]||(e[4]=x()),t("code",null,[o(l,{t:"(Required)"})])])]),t("div",X,[r(t("input",{class:"form-check-input",type:"checkbox","onUpdate:modelValue":e[0]||(e[0]=s=>this.data.override_allowed_ips=s),role:"switch",id:"disableIPValidation"},null,512),[[y,this.data.override_allowed_ips]]),t("label",ee,[t("small",null,[o(l,{t:"Disable Allowed IPs Validation"})])])])]),t("div",te,[t("div",{class:u(["d-flex gap-2 flex-wrap",{"mb-2":this.data.allowed_ips.length>0}])},[o(P,{name:"list"},{default:S(()=>[(n(!0),d(I,null,A(this.data.allowed_ips,(s,g)=>(n(),d("span",{class:"badge rounded-pill text-bg-success",key:s},[x(w(s)+" ",1),t("a",{role:"button",onClick:Xe=>this.data.allowed_ips.splice(g,1)},e[5]||(e[5]=[t("i",{class:"bi bi-x-circle-fill ms-1"},null,-1)]),8,se)]))),128))]),_:1})],2)]),t("div",ae,[t("div",le,[r(t("input",{type:"text",class:u(["form-control form-control-sm rounded-start-3",{"is-invalid":this.allowedIpFormatError}]),placeholder:this.inputGetLocale,"onUpdate:modelValue":e[1]||(e[1]=s=>p.customAvailableIp=s),id:"peer_allowed_ip_textbox",disabled:i.bulk},null,10,oe),[[h,p.customAvailableIp]]),t("button",{class:u(["btn btn-sm rounded-end-3",[this.customAvailableIp?"btn-success":"btn-outline-success"]]),disabled:i.bulk||!this.customAvailableIp,onClick:e[2]||(e[2]=s=>this.addAllowedIp(this.customAvailableIp)),type:"button",id:"button-addon2"},e[6]||(e[6]=[t("i",{class:"bi bi-plus-lg"},null,-1)]),10,ie)]),t("small",ne,[o(l,{t:"or"})]),t("div",de,[t("button",{class:"btn btn-outline-secondary btn-sm dropdown-toggle rounded-3 w-100",disabled:!i.availableIp||i.bulk,"data-bs-auto-close":"outside",type:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[e[7]||(e[7]=t("i",{class:"bi bi-filter-circle me-2"},null,-1)),o(l,{t:"Pick Available IP"})],8,re),this.availableIp?(n(),d("ul",ce,[t("li",null,[t("div",pe,[e[8]||(e[8]=t("label",{for:"availableIpSearchString",class:"text-muted"},[t("i",{class:"bi bi-search"})],-1)),r(t("input",{id:"availableIpSearchString",class:"form-control form-control-sm rounded-3","onUpdate:modelValue":e[3]||(e[3]=s=>this.availableIpSearchString=s)},null,512),[[h,this.availableIpSearchString]])])]),(n(!0),d(I,null,A(this.searchAvailableIps,s=>(n(),d("li",null,[t("a",{class:"dropdown-item d-flex",role:"button",onClick:g=>this.addAllowedIp(s)},[t("span",he,[t("small",null,w(s),1)])],8,ue)]))),256)),this.searchAvailableIps.length===0?(n(),d("li",be,[t("small",me,[o(l,{t:"No available IP containing"}),x(' "'+w(this.availableIpSearchString)+'"',1)])])):$("",!0)])):$("",!0)])])],2)}const lt=m(H,[["render",_e],["__scopeId","data-v-de7dd21e"]]),fe={name:"dnsInput",components:{LocaleText:b},props:{data:Object,saving:Boolean},data(){return{error:!1,dns:JSON.parse(JSON.stringify(this.data.DNS))}},setup(){const a=k(),e=v();return{store:a,dashboardStore:e}},methods:{checkDNS(){if(this.dns){let a=this.dns.split(",").map(e=>e.replaceAll(" ",""));for(let e in a)if(!this.store.regexCheckIP(a[e])){this.error||this.dashboardStore.newMessage("WGDashboard","DNS format is incorrect","danger"),this.error=!0,this.data.DNS="";return}this.error=!1,this.data.DNS=this.dns}}},watch:{dns(){this.checkDNS()}}},ve={for:"peer_DNS_textbox",class:"form-label"},ke={class:"text-muted"},ye=["disabled"];function xe(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",null,[t("label",ve,[t("small",ke,[o(l,{t:"DNS"})])]),r(t("input",{type:"text",class:u(["form-control form-control-sm rounded-3",{"is-invalid":this.error}]),disabled:this.saving,"onUpdate:modelValue":e[0]||(e[0]=s=>this.dns=s),id:"peer_DNS_textbox"},null,10,ye),[[h,this.dns]])])}const ot=m(fe,[["render",xe]]),we={name:"endpointAllowedIps",components:{LocaleText:b},props:{data:Object,saving:Boolean},setup(){const a=k(),e=v();return{store:a,dashboardStore:e}},data(){return{endpointAllowedIps:JSON.parse(JSON.stringify(this.data.endpoint_allowed_ip)),error:!1}},methods:{checkAllowedIP(){let a=this.endpointAllowedIps.split(",").map(e=>e.replaceAll(" ",""));for(let e in a)if(!this.store.checkCIDR(a[e])){this.error||this.dashboardStore.newMessage("WGDashboard","Endpoint Allowed IPs format is incorrect","danger"),this.data.endpoint_allowed_ip="",this.error=!0;return}this.error=!1,this.data.endpoint_allowed_ip=this.endpointAllowedIps}},watch:{endpointAllowedIps(){this.checkAllowedIP()}}},$e={for:"peer_endpoint_allowed_ips",class:"form-label"},ge={class:"text-muted"},Ie=["disabled"];function Ae(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",null,[t("label",$e,[t("small",ge,[o(l,{t:"Endpoint Allowed IPs"}),t("code",null,[o(l,{t:"(Required)"})])])]),r(t("input",{type:"text",class:u(["form-control form-control-sm rounded-3",{"is-invalid":p.error}]),disabled:this.saving,"onUpdate:modelValue":e[0]||(e[0]=s=>this.endpointAllowedIps=s),onBlur:e[1]||(e[1]=s=>this.checkAllowedIP()),id:"peer_endpoint_allowed_ips"},null,42,Ie),[[h,this.endpointAllowedIps]])])}const it=m(we,[["render",Ae]]),Ke={name:"presharedKeyInput",components:{LocaleText:b},props:{data:Object,saving:Boolean},data(){return{enable:!1}},watch:{enable(){this.enable?this.data.preshared_key=window.wireguard.generateKeypair().presharedKey:this.data.preshared_key=""}}},Se={class:"d-flex align-items-start"},Pe={for:"peer_preshared_key_textbox",class:"form-label"},Le={class:"text-muted"},De={class:"form-check form-switch ms-auto"},Te=["disabled"];function Be(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",null,[t("div",Se,[t("label",Pe,[t("small",Le,[o(l,{t:"Pre-Shared Key"})])]),t("div",De,[r(t("input",{class:"form-check-input",type:"checkbox",role:"switch","onUpdate:modelValue":e[0]||(e[0]=s=>this.enable=s),id:"peer_preshared_key_switch"},null,512),[[y,this.enable]])])]),r(t("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:this.saving||!this.enable,"onUpdate:modelValue":e[1]||(e[1]=s=>this.data.preshared_key=s),id:"peer_preshared_key_textbox"},null,8,Te),[[h,this.data.preshared_key]])])}const nt=m(Ke,[["render",Be]]),Ve={name:"mtuInput",components:{LocaleText:b},props:{data:Object,saving:Boolean}},Ne={for:"peer_mtu",class:"form-label"},Ce={class:"text-muted"},Ue=["disabled"];function Me(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",null,[t("label",Ne,[t("small",Ce,[o(l,{t:"MTU"})])]),r(t("input",{type:"number",class:"form-control form-control-sm rounded-3",disabled:this.saving,"onUpdate:modelValue":e[0]||(e[0]=s=>this.data.mtu=s),min:"0",id:"peer_mtu"},null,8,Ue),[[h,this.data.mtu]])])}const dt=m(Ve,[["render",Me]]),Oe={name:"persistentKeepAliveInput",components:{LocaleText:b},props:{data:Object,saving:Boolean}},Ee={for:"peer_keep_alive",class:"form-label"},Ge={class:"text-muted"},je=["disabled"];function Fe(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",null,[t("label",Ee,[t("small",Ge,[o(l,{t:"Persistent Keepalive"})])]),r(t("input",{type:"number",class:"form-control form-control-sm rounded-3",disabled:this.saving,"onUpdate:modelValue":e[0]||(e[0]=s=>this.data.keepalive=s),id:"peer_keep_alive"},null,8,je),[[h,this.data.keepalive]])])}const rt=m(Oe,[["render",Fe]]),Re={name:"bulkAdd",components:{LocaleText:b},props:{saving:Boolean,data:Object,availableIp:void 0},computed:{bulkAddGetLocale(){return K("How many peers you want to add?")}}},We={class:"form-check form-switch"},qe=["disabled"],Je={class:"form-check-label me-2",for:"bulk_add"},ze={class:"text-muted d-block"},He={key:0,class:"form-group"},Qe=["max","placeholder"],Ye={class:"text-muted"};function Ze(a,e,i,c,p,f){const l=_("LocaleText");return n(),d("div",null,[t("div",We,[r(t("input",{class:"form-check-input",type:"checkbox",role:"switch",disabled:!this.availableIp,id:"bulk_add","onUpdate:modelValue":e[0]||(e[0]=s=>this.data.bulkAdd=s)},null,8,qe),[[y,this.data.bulkAdd]]),t("label",Je,[t("small",null,[t("strong",null,[o(l,{t:"Bulk Add"})])])])]),t("p",{class:u({"mb-0":!this.data.bulkAdd})},[t("small",ze,[o(l,{t:"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP."})])],2),this.data.bulkAdd?(n(),d("div",He,[r(t("input",{class:"form-control form-control-sm rounded-3 mb-1",type:"number",min:"1",id:"bulk_add_count",max:this.availableIp.length,"onUpdate:modelValue":e[1]||(e[1]=s=>this.data.bulkAddAmount=s),placeholder:this.bulkAddGetLocale},null,8,Qe),[[h,this.data.bulkAddAmount]]),t("small",Ye,[o(l,{t:"You can add up to "+this.availableIp.length+" peers"},null,8,["t"])])])):$("",!0)])}const ct=m(Re,[["render",Ze]]);export{lt as A,ct as B,ot as D,it as E,dt as M,st as N,rt as P,nt as a,at as b};
|