const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/peerShareLinkModal-bwttuqi_.js","assets/index-C00IVglr.js","assets/index-DFl-XeJT.css","assets/dayjs.min-ChFfjVGD.js","assets/vue-datepicker-DdPq8VBM.js","assets/localeText-BUK20hPB.js","assets/peerShareLinkModal-ouYxVldA.css","assets/peerJobs-Bt-Da7q8.js","assets/schedulePeerJob-BL2wgI9t.js","assets/schedulePeerJob-DPy59wup.css","assets/peerJobs-voXURBEt.css","assets/peerQRCode-Cw0q0TCl.js","assets/browser-CjSdxGTc.js","assets/peerConfigurationFile-BmRQPFgp.js","assets/peerConfigurationFile-BFmmapnE.css","assets/peerSettings-CjJoVr2d.js","assets/peerSettings-BkfvIQvk.css","assets/peerSearchBar-BjvtwCnI.js","assets/peerSearchBar-BrbvrjWX.css","assets/peerJobsAllModal-CRcoRIkq.js","assets/peerJobsLogsModal-WFwdsZl9.js","assets/editConfiguration-BPhJWo4E.js","assets/editConfiguration-Ca_IlmFH.css","assets/selectPeers-AIunJJWI.js","assets/selectPeers-Wjnh8YUZ.css","assets/peerAddModal-D-pLUQTA.js","assets/peerAddModal-s_w1PY7H.css"])))=>i.map(i=>d[i]); import{r as O,D as G,o as le,H as Y,x as te,q as E,a,c as v,b as e,d as i,u as k,t as w,e as $,J as ie,g as F,_ as Q,W as de,G as L,A as J,F as B,h as H,n as D,k as U,K as fe,L as ge,w as T,j as se,f as N,i as P,T as ee,M as A,N as R,O as ve,m as be,v as he,S as _e}from"./index-C00IVglr.js";import{_ as ye}from"./protocolBadge-BKzRJ4Mq.js";import{L as C}from"./localeText-BUK20hPB.js";import{C as we,L as Se,B as $e,a as Pe,b as xe,c as Ce,p as ke,d as Oe,e as De,f as Me,P as Le,h as Ae,g as ae}from"./index-CQK2bMfy.js";import{d as Re}from"./dayjs.min-ChFfjVGD.js";const Ie={class:"row gx-2 gy-2 mb-3"},Ee={class:"col-12"},Te={class:"card rounded-3 bg-transparent",style:{height:"270px"}},Be={class:"card-header bg-transparent border-0"},Ne={class:"text-muted"},Je={class:"card-body pt-1"},Fe={class:"col-sm col-lg-6"},je={class:"card rounded-3 bg-transparent",style:{height:"270px"}},Ve={class:"card-header bg-transparent border-0 d-flex align-items-center"},Ue={class:"text-muted"},Ge={key:0,class:"text-primary fw-bold ms-auto"},Qe={class:"card-body pt-1"},ze={class:"col-sm col-lg-6"},We={class:"card rounded-3 bg-transparent",style:{height:"270px"}},qe={class:"card-header bg-transparent border-0 d-flex align-items-center"},He={class:"text-muted"},Ke={key:0,class:"text-success fw-bold ms-auto"},Ye={class:"card-body pt-1"},Ze={__name:"peerDataUsageCharts",props:{configurationPeers:Array,configurationInfo:Object},setup(o){we.register(Se,$e,Pe,xe,Ce,ke,Oe,De,Me,Le);const t=o,n=O({timestamp:[],data:[]}),r=O({timestamp:[],data:[]}),x=ie(),_=G(),u=O(void 0),b=async()=>{await F("/api/getWireguardConfigurationRealtimeTraffic",{configurationName:x.params.id},g=>{let y=Re().format("hh:mm:ss A");(g.data.sent!==0&&g.data.recv!==0||n.value.data.length>0&&r.value.data.length>0)&&(n.value.timestamp.push(y),n.value.data.push(g.data.sent),r.value.timestamp.push(y),r.value.data.push(g.data.recv))})},m=()=>{clearInterval(u.value),u.value=void 0,t.configurationInfo.Status&&(u.value=setInterval(()=>{b()},parseInt(_.Configuration.Server.dashboard_refresh_interval)))};le(()=>{m()}),Y(()=>t.configurationInfo.Status,()=>{m()}),Y(()=>_.Configuration.Server.dashboard_refresh_interval,()=>{m()}),te(()=>{clearInterval(u.value),u.value=void 0});const p=E(()=>{let g=t.configurationPeers.filter(y=>y.cumu_data+y.total_data>0);return{labels:g.map(y=>y.name?y.name:`Untitled Peer - ${y.id}`),datasets:[{label:"Total Data Usage",data:g.map(y=>y.cumu_data+y.total_data),backgroundColor:g.map(y=>"#ffc107"),tooltip:{callbacks:{label:y=>`${y.formattedValue} GB`}}}]}}),S=E(()=>({labels:[...n.value.timestamp],datasets:[{label:"Data Sent",data:[...n.value.data],fill:!1,borderColor:"#198754",backgroundColor:"#198754",tension:0}]})),M=E(()=>({labels:[...r.value.timestamp],datasets:[{label:"Data Received",data:[...r.value.data],fill:!1,borderColor:"#0d6efd",backgroundColor:"#0d6efd",tension:0}]})),l=E(()=>({responsive:!0,plugins:{legend:{display:!1}},scales:{x:{ticks:{display:!1},grid:{display:!1}},y:{ticks:{callback:(g,y)=>`${Math.round((g+Number.EPSILON)*1e3)/1e3} GB`},grid:{display:!1}}}})),c=E(()=>({responsive:!0,plugins:{legend:{display:!1},tooltip:{callbacks:{label:g=>`${g.formattedValue} MB/s`}}},scales:{x:{ticks:{display:!1},grid:{display:!0}},y:{ticks:{callback:(g,y)=>`${Math.round((g+Number.EPSILON)*1e3)/1e3} MB/s`},grid:{display:!0}}}}));return(g,y)=>(a(),v("div",Ie,[e("div",Ee,[e("div",Te,[e("div",Be,[e("small",Ne,[i(C,{t:"Peers Data Usage"})])]),e("div",Je,[i(k(Ae),{data:p.value,options:l.value,style:{width:"100%",height:"200px","max-height":"200px"}},null,8,["data","options"])])])]),e("div",Fe,[e("div",je,[e("div",Ve,[e("small",Ue,[i(C,{t:"Real Time Received Data Usage"})]),r.value.data.length>0?(a(),v("small",Ge,w(r.value.data[r.value.data.length-1])+" MB/s ",1)):$("",!0)]),e("div",Qe,[i(k(ae),{options:c.value,data:M.value,style:{width:"100%",height:"200px","max-height":"200px"}},null,8,["options","data"])])])]),e("div",ze,[e("div",We,[e("div",qe,[e("small",He,[i(C,{t:"Real Time Sent Data Usage"})]),n.value.data.length>0?(a(),v("small",Ke,w(n.value.data[n.value.data.length-1])+" MB/s ",1)):$("",!0)]),e("div",Ye,[i(k(ae),{options:c.value,data:S.value,style:{width:"100%",height:"200px","max-height":"200px"}},null,8,["options","data"])])])])]))}},Xe={name:"peerSearch",components:{LocaleText:C},setup(){const o=G(),t=de();return{store:o,wireguardConfigurationStore:t}},props:{configuration:Object},data(){return{sort:{status:L("Status"),name:L("Name"),allowed_ip:L("Allowed IPs"),restricted:L("Restricted")},interval:{5e3:L("5 Seconds"),1e4:L("10 Seconds"),3e4:L("30 Seconds"),6e4:L("1 Minutes")},display:{grid:L("Grid"),list:L("List")},searchString:"",searchStringTimeout:void 0,showDisplaySettings:!1,showMoreSettings:!1}},methods:{debounce(){this.searchStringTimeout?(clearTimeout(this.searchStringTimeout),this.searchStringTimeout=setTimeout(()=>{this.wireguardConfigurationStore.searchString=this.searchString},300)):this.searchStringTimeout=setTimeout(()=>{this.wireguardConfigurationStore.searchString=this.searchString},300)},updateSort(o){J("/api/updateDashboardConfigurationItem",{section:"Server",key:"dashboard_sort",value:o},t=>{t.status&&this.store.getConfiguration()})},updateRefreshInterval(o){J("/api/updateDashboardConfigurationItem",{section:"Server",key:"dashboard_refresh_interval",value:o},t=>{t.status&&this.store.getConfiguration()})},updateDisplay(o){J("/api/updateDashboardConfigurationItem",{section:"Server",key:"dashboard_peer_list_display",value:o},t=>{t.status&&this.store.getConfiguration()})},downloadAllPeer(){F(`/api/downloadAllPeers/${this.configuration.Name}`,{},o=>{o.data.forEach(t=>{t.fileName=t.fileName+".conf"}),window.wireguard.generateZipFiles(o,this.configuration.Name)})}}},et={class:"d-flex flex-column gap-2 my-4"},tt={class:"d-flex gap-2 peerSearchContainer"},st={class:"dropdown"},ot={"data-bs-toggle":"dropdown",class:"btn w-100 btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle position-relative"},nt={class:"badge text-bg-primary ms-2"},at={class:"dropdown-menu rounded-3"},rt=["onClick"],lt={class:"ms-auto"},it={key:0,class:"bi bi-check-circle-fill"},dt={class:"dropdown"},ut={"data-bs-toggle":"dropdown",class:"btn btn-sm w-100 text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle position-relative"},ct={class:"badge text-bg-primary ms-2"},mt={class:"dropdown-menu rounded-3"},pt=["onClick"],ft={class:"ms-auto"},gt={key:0,class:"bi bi-check-circle-fill"},vt={class:"dropdown"},bt={"data-bs-toggle":"dropdown",class:"btn btn-sm w-100 text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle position-relative"},ht={class:"badge text-bg-primary ms-2"},_t={class:"dropdown-menu rounded-3"},yt=["onClick"],wt={class:"ms-auto"},St={key:0,class:"bi bi-check-circle-fill"};function $t(o,t,n,r,x,_){const u=U("LocaleText");return a(),v("div",et,[e("div",tt,[e("div",st,[e("button",ot,[t[4]||(t[4]=e("i",{class:"bi bi-sort-up me-2"},null,-1)),i(u,{t:"Sort By"}),e("span",nt,w(this.sort[r.store.Configuration.Server.dashboard_sort]),1)]),e("ul",at,[(a(!0),v(B,null,H(this.sort,(b,m)=>(a(),v("li",null,[e("button",{class:"dropdown-item d-flex align-items-center",onClick:p=>this.updateSort(m)},[e("small",null,w(b),1),e("small",lt,[r.store.Configuration.Server.dashboard_sort===m?(a(),v("i",it)):$("",!0)])],8,rt)]))),256))])]),e("div",dt,[e("button",ut,[t[5]||(t[5]=e("i",{class:"bi bi-arrow-repeat me-2"},null,-1)),i(u,{t:"Refresh Interval"}),e("span",ct,w(this.interval[r.store.Configuration.Server.dashboard_refresh_interval]),1)]),e("ul",mt,[(a(!0),v(B,null,H(this.interval,(b,m)=>(a(),v("li",null,[e("button",{class:"dropdown-item d-flex align-items-center",onClick:p=>this.updateRefreshInterval(m)},[e("small",null,w(b),1),e("small",ft,[r.store.Configuration.Server.dashboard_refresh_interval===m?(a(),v("i",gt)):$("",!0)])],8,pt)]))),256))])]),e("div",vt,[e("button",bt,[e("i",{class:D(["bi me-2","bi-"+r.store.Configuration.Server.dashboard_peer_list_display])},null,2),i(u,{t:"Display"}),e("span",ht,w(this.display[r.store.Configuration.Server.dashboard_peer_list_display]),1)]),e("ul",_t,[(a(!0),v(B,null,H(this.display,(b,m)=>(a(),v("li",null,[e("button",{class:"dropdown-item d-flex align-items-center",onClick:p=>this.updateDisplay(m)},[e("small",null,w(b),1),e("small",wt,[r.store.Configuration.Server.dashboard_peer_list_display===m?(a(),v("i",St)):$("",!0)])],8,yt)]))),256))])]),e("button",{class:"btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle ms-lg-auto",onClick:t[0]||(t[0]=b=>this.$emit("search"))},[t[6]||(t[6]=e("i",{class:"bi bi-search me-2"},null,-1)),i(u,{t:"Search"})]),e("button",{class:"btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle",onClick:t[1]||(t[1]=b=>this.downloadAllPeer())},[t[7]||(t[7]=e("i",{class:"bi bi-download me-2 me-lg-0 me-xl-2"},null,-1)),i(u,{t:"Download All",class:"d-sm-block d-lg-none d-xl-block"})]),e("button",{class:"btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle",onClick:t[2]||(t[2]=b=>this.$emit("selectPeers"))},[t[8]||(t[8]=e("i",{class:"bi bi-check2-all me-2 me-lg-0 me-xl-2"},null,-1)),i(u,{t:"Select Peers",class:"d-sm-block d-lg-none d-xl-block"})]),e("button",{class:"btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle",onClick:t[3]||(t[3]=b=>this.$emit("jobsAll")),type:"button","aria-expanded":"false"},[t[9]||(t[9]=e("i",{class:"bi bi-person-walking me-2 me-lg-0 me-xl-2"},null,-1)),i(u,{t:"Active Jobs",class:"d-sm-block d-lg-none d-xl-block"})])])])}const Pt=Q(Xe,[["render",$t],["__scopeId","data-v-c96b078a"]]);function xt(o){return fe()?(ge(o),!0):!1}function ue(o){return typeof o=="function"?o():k(o)}const ce=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ct=Object.prototype.toString,kt=o=>Ct.call(o)==="[object Object]",K=()=>{},Ot=Dt();function Dt(){var o,t;return ce&&((o=window?.navigator)==null?void 0:o.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window?.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function V(o){var t;const n=ue(o);return(t=n?.$el)!=null?t:n}const me=ce?window:void 0;function X(...o){let t,n,r,x;if(typeof o[0]=="string"||Array.isArray(o[0])?([n,r,x]=o,t=me):[t,n,r,x]=o,!t)return K;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const _=[],u=()=>{_.forEach(S=>S()),_.length=0},b=(S,M,l,c)=>(S.addEventListener(M,l,c),()=>S.removeEventListener(M,l,c)),m=Y(()=>[V(t),ue(x)],([S,M])=>{if(u(),!S)return;const l=kt(M)?{...M}:M;_.push(...n.flatMap(c=>r.map(g=>b(S,c,g,l))))},{immediate:!0,flush:"post"}),p=()=>{m(),u()};return xt(p),p}let re=!1;function Mt(o,t,n={}){const{window:r=me,ignore:x=[],capture:_=!0,detectIframe:u=!1}=n;if(!r)return K;Ot&&!re&&(re=!0,Array.from(r.document.body.children).forEach(l=>l.addEventListener("click",K)),r.document.documentElement.addEventListener("click",K));let b=!0;const m=l=>x.some(c=>{if(typeof c=="string")return Array.from(r.document.querySelectorAll(c)).some(g=>g===l.target||l.composedPath().includes(g));{const g=V(c);return g&&(l.target===g||l.composedPath().includes(g))}}),S=[X(r,"click",l=>{const c=V(o);if(!(!c||c===l.target||l.composedPath().includes(c))){if(l.detail===0&&(b=!m(l)),!b){b=!0;return}t(l)}},{passive:!0,capture:_}),X(r,"pointerdown",l=>{const c=V(o);b=!m(l)&&!!(c&&!l.composedPath().includes(c))},{passive:!0}),u&&X(r,"blur",l=>{setTimeout(()=>{var c;const g=V(o);((c=r.document.activeElement)==null?void 0:c.tagName)==="IFRAME"&&!g?.contains(r.document.activeElement)&&t(l)},0)})].filter(Boolean);return()=>S.forEach(l=>l())}const Lt={key:0,class:"position-absolute d-block p-1 px-2 bg-body text-body rounded-3 border shadow"},At={__name:"peerSettingsDropdownTool",props:{icon:String,title:String},emits:["click"],setup(o,{emit:t}){const n=t,r=O(!1);return(x,_)=>(a(),v("a",{class:"dropdown-item text-center px-0 rounded-3 position-relative",role:"button",onMouseenter:_[0]||(_[0]=u=>r.value=!0),onMouseleave:_[1]||(_[1]=u=>r.value=!1),onClick:_[2]||(_[2]=u=>n("click"))},[e("i",{class:D(["me-auto bi",o.icon])},null,2),i(se,{name:"zoomReversed"},{default:T(()=>[r.value?(a(),v("span",Lt,[e("small",null,[i(C,{t:o.title},null,8,["t"])])])):$("",!0)]),_:1})],32))}},Rt=Q(At,[["__scopeId","data-v-d4e41a56"]]),It={name:"peerSettingsDropdown",components:{PeerSettingsDropdownTool:Rt,LocaleText:C},setup(){return{dashboardStore:G()}},props:{Peer:Object},data(){return{deleteBtnDisabled:!1,restrictBtnDisabled:!1,allowAccessBtnDisabled:!1,confirmDelete:!1}},methods:{downloadPeer(){F("/api/downloadPeer/"+this.$route.params.id,{id:this.Peer.id},o=>{if(o.status){const t=new Blob([o.data.file],{type:"text/plain"}),n=URL.createObjectURL(t),r=`${o.data.fileName}.conf`,x=document.createElement("a");x.href=n,x.download=r,x.click(),this.dashboardStore.newMessage("WGDashboard","Peer download started","success")}else this.dashboardStore.newMessage("Server",o.message,"danger")})},downloadQRCode(o){F("/api/downloadPeer/"+this.$route.params.id,{id:this.Peer.id},t=>{t.status?this.$emit(o,t.data.file):this.dashboardStore.newMessage("Server",t.message,"danger")})},deletePeer(){this.deleteBtnDisabled=!0,J(`/api/deletePeers/${this.$route.params.id}`,{peers:[this.Peer.id]},o=>{this.dashboardStore.newMessage("Server",o.message,o.status?"success":"danger"),this.$emit("refresh"),this.deleteBtnDisabled=!1})},restrictPeer(){this.restrictBtnDisabled=!0,J(`/api/restrictPeers/${this.$route.params.id}`,{peers:[this.Peer.id]},o=>{this.dashboardStore.newMessage("Server",o.message,o.status?"success":"danger"),this.$emit("refresh"),this.restrictBtnDisabled=!1})},allowAccessPeer(){this.allowAccessBtnDisabled=!0,J(`/api/allowAccessPeers/${this.$route.params.id}`,{peers:[this.Peer.id]},o=>{this.dashboardStore.newMessage("Server",o.message,o.status?"success":"danger"),this.$emit("refresh"),this.allowAccessBtnDisabled=!1})}}},Et={class:"dropdown-menu mt-2 shadow-lg d-block rounded-3",style:{"max-width":"200px"}},Tt={style:{"font-size":"0.8rem","padding-left":"var(--bs-dropdown-item-padding-x)","padding-right":"var(--bs-dropdown-item-padding-x)"}},Bt={class:"text-body d-flex"},Nt={class:"ms-auto"},Jt={key:1},Ft={class:"w-100 dropdown-item text-muted",style:{"white-space":"break-spaces","font-size":"0.7rem"}},jt={key:2},Vt={class:"d-flex",style:{"padding-left":"var(--bs-dropdown-item-padding-x)","padding-right":"var(--bs-dropdown-item-padding-x)"}},Ut={key:1,class:"confirmDelete"},Gt={style:{"white-space":"break-spaces"},class:"mb-2 d-block fw-bold"},Qt={class:"d-flex w-100 gap-2"},zt=["disabled"],Wt=["disabled"],qt={key:1};function Ht(o,t,n,r,x,_){const u=U("LocaleText"),b=U("PeerSettingsDropdownTool");return a(),v("ul",Et,[this.Peer.restricted?(a(),v("li",qt,[e("a",{class:D(["dropdown-item d-flex text-warning",{disabled:this.allowAccessBtnDisabled}]),onClick:t[10]||(t[10]=m=>this.allowAccessPeer()),role:"button"},[t[22]||(t[22]=e("i",{class:"me-auto bi bi-unlock"},null,-1)),this.allowAccessBtnDisabled?(a(),P(u,{key:1,t:"Allowing Access..."})):(a(),P(u,{key:0,t:"Allow Access"}))],2)])):(a(),v(B,{key:0},[this.confirmDelete?(a(),v("li",Ut,[e("p",Gt,[i(u,{t:"Are you sure to delete this peer?"})]),e("div",Qt,[e("button",{onClick:t[8]||(t[8]=m=>this.deletePeer()),disabled:this.deleteBtnDisabled,class:"flex-grow-1 ms-auto btn btn-sm bg-danger"},[i(u,{t:"Yes"})],8,zt),e("button",{disabled:this.deleteBtnDisabled,onClick:t[9]||(t[9]=m=>this.confirmDelete=!1),class:"flex-grow-1 btn btn-sm bg-secondary-subtle text-secondary-emphasis border border-secondary-subtle"},[i(u,{t:"No"})],8,Wt)])])):(a(),v(B,{key:0},[this.Peer.status==="running"?(a(),v(B,{key:0},[e("li",Tt,[e("span",Bt,[t[11]||(t[11]=e("i",{class:"bi bi-box-arrow-in-right"},null,-1)),e("span",Nt,w(this.Peer.endpoint),1)])]),t[12]||(t[12]=e("li",null,[e("hr",{class:"dropdown-divider"})],-1))],64)):$("",!0),this.Peer.private_key?(a(),v("li",jt,[t[13]||(t[13]=e("div",{class:"text-center text-muted"},null,-1)),e("div",Vt,[i(b,{icon:"bi-download",title:"Download",onClick:t[0]||(t[0]=m=>this.downloadPeer())}),i(b,{icon:"bi-qr-code",title:"QR Code",onClick:t[1]||(t[1]=m=>this.$emit("qrcode"))}),i(b,{icon:"bi-body-text",title:"Configuration File",onClick:t[2]||(t[2]=m=>this.$emit("configurationFile"))}),i(b,{icon:"bi-share",title:"Share Peer",onClick:t[3]||(t[3]=m=>this.$emit("share"))})])])):(a(),v("li",Jt,[e("small",Ft,[i(u,{t:"Download & QR Code is not available due to no private key set for this peer"})])])),t[20]||(t[20]=e("li",null,[e("hr",{class:"dropdown-divider"})],-1)),e("li",null,[e("a",{class:"dropdown-item d-flex",role:"button",onClick:t[4]||(t[4]=m=>this.$emit("setting"))},[t[14]||(t[14]=e("i",{class:"me-auto bi bi-pen"},null,-1)),t[15]||(t[15]=N()),i(u,{t:"Peer Settings"})])]),e("li",null,[e("a",{class:"dropdown-item d-flex",role:"button",onClick:t[5]||(t[5]=m=>this.$emit("jobs"))},[t[16]||(t[16]=e("i",{class:"me-auto bi bi-app-indicator"},null,-1)),t[17]||(t[17]=N()),i(u,{t:"Schedule Jobs"})])]),t[21]||(t[21]=e("li",null,[e("hr",{class:"dropdown-divider"})],-1)),e("li",null,[e("a",{class:D(["dropdown-item d-flex text-warning",{disabled:this.restrictBtnDisabled}]),onClick:t[6]||(t[6]=m=>this.restrictPeer()),role:"button"},[t[18]||(t[18]=e("i",{class:"me-auto bi bi-lock"},null,-1)),this.restrictBtnDisabled?(a(),P(u,{key:1,t:"Restricting..."})):(a(),P(u,{key:0,t:"Restrict Access"}))],2)]),e("li",null,[e("a",{class:D(["dropdown-item d-flex fw-bold text-danger",{disabled:this.deleteBtnDisabled}]),onClick:t[7]||(t[7]=m=>this.confirmDelete=!0),role:"button"},[t[19]||(t[19]=e("i",{class:"me-auto bi bi-trash"},null,-1)),this.deleteBtnDisabled?(a(),P(u,{key:1,t:"Deleting..."})):(a(),P(u,{key:0,t:"Delete"}))],2)])],64))],64))])}const Kt=Q(It,[["render",Ht],["__scopeId","data-v-ebeddf70"]]),Yt={name:"peer",methods:{GetLocale:L},components:{LocaleText:C,PeerSettingsDropdown:Kt},props:{Peer:Object},data(){return{}},setup(){const o=O(null),t=O(!1),n=G();return Mt(o,r=>{t.value=!1}),{target:o,subMenuOpened:t,dashboardStore:n}},computed:{getLatestHandshake(){return this.Peer.latest_handshake.includes(",")?this.Peer.latest_handshake.split(",")[0]:this.Peer.latest_handshake}}},Zt={key:0,class:"card-header bg-transparent d-flex align-items-center gap-2 border-0"},Xt={key:0,style:{"font-size":"0.8rem",color:"#28a745"},class:"d-flex align-items-center"},es={style:{"font-size":"0.8rem"},class:"ms-auto d-flex gap-2"},ts={class:"text-primary"},ss={class:"text-success"},os={key:0,class:"text-secondary"},ns={key:1,class:"border-0 card-header bg-transparent text-warning fw-bold",style:{"font-size":"0.8rem"}},as={class:"card-body pt-1",style:{"font-size":"0.9rem"}},rs={class:"text-muted"},ls={class:"d-block"},is={class:"text-muted"},ds={class:"d-block"},us={class:"d-flex align-items-end ms-auto"};function cs(o,t,n,r,x,_){const u=U("LocaleText"),b=U("PeerSettingsDropdown");return a(),v("div",{class:D(["card shadow-sm rounded-3 peerCard",{"border-warning":n.Peer.restricted}])},[e("div",null,[n.Peer.restricted?(a(),v("div",ns,[t[13]||(t[13]=e("i",{class:"bi-lock-fill me-2"},null,-1)),i(u,{t:"Access Restricted"})])):(a(),v("div",Zt,[e("div",{class:D(["dot ms-0",{active:n.Peer.status==="running"}])},null,2),r.dashboardStore.Configuration.Server.dashboard_peer_list_display==="list"&&n.Peer.status==="running"?(a(),v("div",Xt,[t[7]||(t[7]=e("i",{class:"bi bi-box-arrow-in-right me-2"},null,-1)),e("span",null,w(n.Peer.endpoint),1)])):$("",!0),e("div",es,[e("span",ts,[t[8]||(t[8]=e("i",{class:"bi bi-arrow-down"},null,-1)),e("strong",null,w((n.Peer.cumu_receive+n.Peer.total_receive).toFixed(4)),1),t[9]||(t[9]=N(" GB "))]),e("span",ss,[t[10]||(t[10]=e("i",{class:"bi bi-arrow-up"},null,-1)),e("strong",null,w((n.Peer.cumu_sent+n.Peer.total_sent).toFixed(4)),1),t[11]||(t[11]=N(" GB "))]),n.Peer.latest_handshake!=="No Handshake"?(a(),v("span",os,[t[12]||(t[12]=e("i",{class:"bi bi-arrows-angle-contract"},null,-1)),N(" "+w(_.getLatestHandshake)+" ago ",1)])):$("",!0)])]))]),e("div",as,[e("h6",null,w(n.Peer.name?n.Peer.name:_.GetLocale("Untitled Peer")),1),e("div",{class:D(["d-flex",[r.dashboardStore.Configuration.Server.dashboard_peer_list_display==="grid"?"gap-1 flex-column":"flex-row gap-3"]])},[e("div",{class:D({"d-flex gap-2 align-items-center":r.dashboardStore.Configuration.Server.dashboard_peer_list_display==="list"})},[e("small",rs,[i(u,{t:"Public Key"})]),e("small",ls,[e("samp",null,w(n.Peer.id),1)])],2),e("div",{class:D({"d-flex gap-2 align-items-center":r.dashboardStore.Configuration.Server.dashboard_peer_list_display==="list"})},[e("small",is,[i(u,{t:"Allowed IPs"})]),e("small",ds,[e("samp",null,w(n.Peer.allowed_ip),1)])],2),e("div",us,[e("div",{class:D(["ms-auto px-2 rounded-3 subMenuBtn",{active:this.subMenuOpened}])},[e("a",{role:"button",class:"text-body",onClick:t[0]||(t[0]=m=>this.subMenuOpened=!0)},t[14]||(t[14]=[e("h5",{class:"mb-0"},[e("i",{class:"bi bi-three-dots"})],-1)])),i(se,{name:"slide-fade"},{default:T(()=>[this.subMenuOpened?(a(),P(b,{key:0,onQrcode:t[1]||(t[1]=m=>this.$emit("qrcode")),onConfigurationFile:t[2]||(t[2]=m=>this.$emit("configurationFile")),onSetting:t[3]||(t[3]=m=>this.$emit("setting")),onJobs:t[4]||(t[4]=m=>this.$emit("jobs")),onRefresh:t[5]||(t[5]=m=>this.$emit("refresh")),onShare:t[6]||(t[6]=m=>this.$emit("share")),Peer:n.Peer,ref:"target"},null,8,["Peer"])):$("",!0)]),_:1})],2)])],2)])],2)}const ms=Q(Yt,[["render",cs],["__scopeId","data-v-61d5584d"]]),ps={__name:"peerListModals",props:{configurationModals:Object,configurationModalSelectedPeer:Object},emits:["refresh"],setup(o,{emit:t}){const n=t,r=A(()=>R(()=>import("./peerShareLinkModal-bwttuqi_.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),x=A(()=>R(()=>import("./peerJobs-Bt-Da7q8.js"),__vite__mapDeps([7,8,1,2,4,3,5,9,10]))),_=A(()=>R(()=>import("./peerQRCode-Cw0q0TCl.js"),__vite__mapDeps([11,12,5,1,2]))),u=A(()=>R(()=>import("./peerConfigurationFile-BmRQPFgp.js"),__vite__mapDeps([13,1,2,5,12,14]))),b=A(()=>R(()=>import("./peerSettings-CjJoVr2d.js"),__vite__mapDeps([15,1,2,5,16])));return(m,p)=>(a(),P(ee,{name:"zoom"},{default:T(()=>[o.configurationModals.peerSetting.modalOpen?(a(),P(k(b),{key:"PeerSettingsModal",selectedPeer:o.configurationModalSelectedPeer,onRefresh:p[0]||(p[0]=S=>n("refresh")),onClose:p[1]||(p[1]=S=>o.configurationModals.peerSetting.modalOpen=!1)},null,8,["selectedPeer"])):$("",!0),o.configurationModals.peerQRCode.modalOpen?(a(),P(k(_),{key:"PeerQRCodeModal",selectedPeer:o.configurationModalSelectedPeer,onClose:p[2]||(p[2]=S=>o.configurationModals.peerQRCode.modalOpen=!1)},null,8,["selectedPeer"])):$("",!0),o.configurationModals.peerScheduleJobs.modalOpen?(a(),P(k(x),{key:"PeerJobsModal",onRefresh:p[3]||(p[3]=S=>n("refresh")),selectedPeer:o.configurationModalSelectedPeer,onClose:p[4]||(p[4]=S=>o.configurationModals.peerScheduleJobs.modalOpen=!1)},null,8,["selectedPeer"])):$("",!0),o.configurationModals.peerShare.modalOpen?(a(),P(k(r),{key:"PeerShareLinkModal",onClose:p[5]||(p[5]=S=>{o.configurationModals.peerShare.modalOpen=!1}),selectedPeer:o.configurationModalSelectedPeer},null,8,["selectedPeer"])):$("",!0),o.configurationModals.peerConfigurationFile.modalOpen?(a(),P(k(u),{key:4,onClose:p[6]||(p[6]=S=>o.configurationModals.peerConfigurationFile.modalOpen=!1),selectedPeer:o.configurationModalSelectedPeer},null,8,["selectedPeer"])):$("",!0)]),_:1}))}},fs={style:{"margin-bottom":"20px",height:"1px"},id:"loadMore"},gs={__name:"peerIntersectionObserver",props:["peerListLength","showPeersCount"],emits:["loadMore"],setup(o,{emit:t}){const n=O(void 0),r=t;return le(()=>{n.value=new IntersectionObserver(x=>{x.forEach(_=>{_.isIntersecting&&r("loadMore")})},{rootMargin:"20px",threshold:1}),n.value.observe(document.querySelector("#loadMore"))}),te(()=>{n.value.disconnect()}),(x,_)=>(a(),v("div",fs))}},vs={class:"container-fluid"},bs={class:"d-flex align-items-sm-center flex-column flex-sm-row gap-3"},hs={class:"text-muted d-flex align-items-center gap-2"},_s={class:"mb-0"},ys={class:"d-flex align-items-center gap-3"},ws={class:"mb-0 display-4"},Ss={class:"ms-sm-auto d-flex gap-2 flex-column"},$s={class:"card rounded-3 bg-transparent"},Ps={class:"card-body py-2 d-flex align-items-center"},xs={class:"text-muted"},Cs={class:"form-check form-switch mb-0 ms-auto pe-0 me-0"},ks=["for"],Os={key:2,class:"spinner-border spinner-border-sm ms-2","aria-hidden":"true"},Ds=["disabled","id"],Ms={class:"d-flex gap-2"},Ls={class:"row mt-3 gy-2 gx-2 mb-2"},As={class:"col-12 col-lg-3"},Rs={class:"card rounded-3 bg-transparent h-100"},Is={class:"card-body py-2 d-flex flex-column justify-content-center"},Es={class:"mb-0 text-muted"},Ts={class:"col-12 col-lg-3"},Bs={class:"card rounded-3 bg-transparent h-100"},Ns={class:"card-body py-2 d-flex flex-column justify-content-center"},Js={class:"mb-0 text-muted"},Fs={style:{"word-break":"break-all"},class:"col-12 col-lg-6"},js={class:"card rounded-3 bg-transparent h-100"},Vs={class:"card-body py-2 d-flex flex-column justify-content-center"},Us={class:"mb-0 text-muted"},Gs={class:"row gx-2 gy-2 mb-2"},Qs={class:"col-12 col-lg-3"},zs={class:"card rounded-3 bg-transparent h-100"},Ws={class:"card-body d-flex"},qs={class:"mb-0 text-muted"},Hs={class:"h4"},Ks={class:"col-12 col-lg-3"},Ys={class:"card rounded-3 bg-transparent h-100"},Zs={class:"card-body d-flex"},Xs={class:"mb-0 text-muted"},eo={class:"h4"},to={class:"col-12 col-lg-3"},so={class:"card rounded-3 bg-transparent h-100"},oo={class:"card-body d-flex"},no={class:"mb-0 text-muted"},ao={class:"h4 text-primary"},ro={class:"col-12 col-lg-3"},lo={class:"card rounded-3 bg-transparent h-100"},io={class:"card-body d-flex"},uo={class:"mb-0 text-muted"},co={class:"h4 text-success"},mo={style:{"margin-bottom":"80px"}},po=20,fo={__name:"peerList",async setup(o){let t,n;const r=A(()=>R(()=>import("./peerSearchBar-BjvtwCnI.js"),__vite__mapDeps([17,1,2,5,18]))),x=A(()=>R(()=>import("./peerJobsAllModal-CRcoRIkq.js"),__vite__mapDeps([19,8,1,2,4,3,5,9]))),_=A(()=>R(()=>import("./peerJobsLogsModal-WFwdsZl9.js"),__vite__mapDeps([20,3,1,2,5]))),u=A(()=>R(()=>import("./editConfiguration-BPhJWo4E.js"),__vite__mapDeps([21,1,2,5,3,22]))),b=A(()=>R(()=>import("./selectPeers-AIunJJWI.js"),__vite__mapDeps([23,1,2,5,24]))),m=A(()=>R(()=>import("./peerAddModal-D-pLUQTA.js"),__vite__mapDeps([25,1,2,5,26]))),p=G(),S=de(),M=ie(),l=O({}),c=O([]),g=O(!1),y=O({}),h=O({peerNew:{modalOpen:!1},peerSetting:{modalOpen:!1},peerScheduleJobs:{modalOpen:!1},peerQRCode:{modalOpen:!1},peerConfigurationFile:{modalOpen:!1},peerCreate:{modalOpen:!1},peerScheduleJobsAll:{modalOpen:!1},peerScheduleJobsLogs:{modalOpen:!1},peerShare:{modalOpen:!1},editConfiguration:{modalOpen:!1},selectPeers:{modalOpen:!1},backupRestore:{modalOpen:!1},deleteConfiguration:{modalOpen:!1},editRawConfigurationFile:{modalOpen:!1}}),Z=O(!1),I=async()=>{await F("/api/getWireguardConfigurationInfo",{configurationName:M.params.id},f=>{f.status&&(l.value=f.data.configurationInfo,c.value=f.data.configurationPeers,c.value.forEach(s=>{s.restricted=!1}),f.data.configurationRestrictedPeers.forEach(s=>{s.restricted=!0,c.value.push(s)}))})};[t,n]=ve(()=>I()),await t,n();const z=O(void 0),oe=()=>{clearInterval(z.value),z.value=setInterval(async()=>{await I()},parseInt(p.Configuration.Server.dashboard_refresh_interval))};oe(),te(()=>{clearInterval(z.value),z.value=void 0}),Y(()=>p.Configuration.Server.dashboard_refresh_interval,()=>{oe()});const pe=async()=>{g.value=!0,await F("/api/toggleWireguardConfiguration",{configurationName:l.value.Name},f=>{f.status?p.newMessage("Server",`${l.value.Name} ${f.data?"is on":"is off"}`,"success"):p.newMessage("Server",f.message,"danger"),S.Configurations.find(s=>s.Name===l.value.Name).Status=f.data,l.value.Status=f.data,g.value=!1})},W=E(()=>({connectedPeers:c.value.filter(f=>f.status==="running").length,totalUsage:c.value.length>0?c.value.filter(f=>!f.restricted).map(f=>f.total_data+f.cumu_data).reduce((f,s)=>f+s,0).toFixed(4):0,totalReceive:c.value.length>0?c.value.filter(f=>!f.restricted).map(f=>f.total_receive+f.cumu_receive).reduce((f,s)=>f+s,0).toFixed(4):0,totalSent:c.value.length>0?c.value.filter(f=>!f.restricted).map(f=>f.total_sent+f.cumu_sent).reduce((f,s)=>f+s,0).toFixed(4):0})),q=O(10),ne=E(()=>{const f=S.searchString?c.value.filter(s=>s.name.includes(S.searchString)||s.id.includes(S.searchString)||s.allowed_ip.includes(S.searchString)):c.value;return p.Configuration.Server.dashboard_sort==="restricted"?f.sort((s,d)=>s[p.Configuration.Server.dashboard_sort]d[p.Configuration.Server.dashboard_sort]?-1:0).slice(0,q.value):f.sort((s,d)=>s[p.Configuration.Server.dashboard_sort]d[p.Configuration.Server.dashboard_sort]?1:0).slice(0,q.value)});return(f,s)=>(a(),v("div",vs,[e("div",bs,[e("div",null,[e("div",hs,[e("h5",_s,[i(ye,{protocol:l.value.Protocol},null,8,["protocol"])])]),e("div",ys,[e("h1",ws,[e("samp",null,w(l.value.Name),1)])])]),e("div",Ss,[e("div",$s,[e("div",Ps,[e("small",xs,[i(C,{t:"Status"})]),e("div",{class:D(["dot ms-2",{active:l.value.Status}])},null,2),e("div",Cs,[e("label",{class:"form-check-label",style:{cursor:"pointer"},for:"switch"+l.value.id},[l.value.Status&&!g.value?(a(),P(C,{key:0,t:"On"})):!l.value.Status&&!g.value?(a(),P(C,{key:1,t:"Off"})):$("",!0),g.value?(a(),v("span",Os)):$("",!0)],8,ks),be(e("input",{class:"form-check-input",style:{cursor:"pointer"},disabled:g.value,type:"checkbox",role:"switch",id:"switch"+l.value.id,onChange:s[0]||(s[0]=d=>pe()),"onUpdate:modelValue":s[1]||(s[1]=d=>l.value.Status=d)},null,40,Ds),[[he,l.value.Status]])])])]),e("div",Ms,[e("a",{role:"button",onClick:s[2]||(s[2]=d=>h.value.peerNew.modalOpen=!0),class:"titleBtn py-2 text-decoration-none btn text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle"},[s[29]||(s[29]=e("i",{class:"bi bi-plus-circle me-2"},null,-1)),i(C,{t:"Peer"})]),e("button",{class:"titleBtn py-2 text-decoration-none btn text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle",onClick:s[3]||(s[3]=d=>h.value.editConfiguration.modalOpen=!0),type:"button","aria-expanded":"false"},[s[30]||(s[30]=e("i",{class:"bi bi-gear-fill me-2"},null,-1)),i(C,{t:"Configuration Settings"})])])])]),s[35]||(s[35]=e("hr",null,null,-1)),e("div",Ls,[e("div",As,[e("div",Rs,[e("div",Is,[e("p",Es,[e("small",null,[i(C,{t:"Address"})])]),N(" "+w(l.value.Address),1)])])]),e("div",Ts,[e("div",Bs,[e("div",Ns,[e("p",Js,[e("small",null,[i(C,{t:"Listen Port"})])]),N(" "+w(l.value.ListenPort),1)])])]),e("div",Fs,[e("div",js,[e("div",Vs,[e("p",Us,[e("small",null,[i(C,{t:"Public Key"})])]),e("samp",null,w(l.value.PublicKey),1)])])])]),e("div",Gs,[e("div",Qs,[e("div",zs,[e("div",Ws,[e("div",null,[e("p",qs,[e("small",null,[i(C,{t:"Connected Peers"})])]),e("strong",Hs,w(W.value.connectedPeers)+" / "+w(c.value.length),1)]),s[31]||(s[31]=e("i",{class:"bi bi-ethernet ms-auto h2 text-muted"},null,-1))])])]),e("div",Ks,[e("div",Ys,[e("div",Zs,[e("div",null,[e("p",Xs,[e("small",null,[i(C,{t:"Total Usage"})])]),e("strong",eo,w(W.value.totalUsage)+" GB",1)]),s[32]||(s[32]=e("i",{class:"bi bi-arrow-down-up ms-auto h2 text-muted"},null,-1))])])]),e("div",to,[e("div",so,[e("div",oo,[e("div",null,[e("p",no,[e("small",null,[i(C,{t:"Total Received"})])]),e("strong",ao,w(W.value.totalReceive)+" GB",1)]),s[33]||(s[33]=e("i",{class:"bi bi-arrow-down ms-auto h2 text-muted"},null,-1))])])]),e("div",ro,[e("div",lo,[e("div",io,[e("div",null,[e("p",uo,[e("small",null,[i(C,{t:"Total Sent"})])]),e("strong",co,w(W.value.totalSent)+" GB",1)]),s[34]||(s[34]=e("i",{class:"bi bi-arrow-up ms-auto h2 text-muted"},null,-1))])])])]),i(Ze,{configurationPeers:c.value,configurationInfo:l.value},null,8,["configurationPeers","configurationInfo"]),s[36]||(s[36]=e("hr",null,null,-1)),e("div",mo,[c.value.length>0?(a(),P(Pt,{key:0,onSearch:s[4]||(s[4]=d=>Z.value=!0),onJobsAll:s[5]||(s[5]=d=>h.value.peerScheduleJobsAll.modalOpen=!0),onJobLogs:s[6]||(s[6]=d=>h.value.peerScheduleJobsLogs.modalOpen=!0),onEditConfiguration:s[7]||(s[7]=d=>h.value.editConfiguration.modalOpen=!0),onSelectPeers:s[8]||(s[8]=d=>h.value.selectPeers.modalOpen=!0),onBackupRestore:s[9]||(s[9]=d=>h.value.backupRestore.modalOpen=!0),onDeleteConfiguration:s[10]||(s[10]=d=>h.value.deleteConfiguration.modalOpen=!0),configuration:l.value},null,8,["configuration"])):$("",!0),i(ee,{name:"peerList",tag:"div",class:"row gx-2 gy-2 z-0 position-relative"},{default:T(()=>[(a(!0),v(B,null,H(ne.value,d=>(a(),v("div",{class:D(["col-12",{"col-lg-6 col-xl-4":k(p).Configuration.Server.dashboard_peer_list_display==="grid"}]),key:d.id},[i(ms,{Peer:d,onShare:j=>{h.value.peerShare.modalOpen=!0,y.value=d},onRefresh:s[11]||(s[11]=j=>I()),onJobs:j=>{h.value.peerScheduleJobs.modalOpen=!0,y.value=d},onSetting:j=>{h.value.peerSetting.modalOpen=!0,y.value=d},onQrcode:j=>{y.value=d,h.value.peerQRCode.modalOpen=!0},onConfigurationFile:j=>{y.value=d,h.value.peerConfigurationFile.modalOpen=!0}},null,8,["Peer","onShare","onJobs","onSetting","onQrcode","onConfigurationFile"])],2))),128))]),_:1})]),i(se,{name:"slideUp"},{default:T(()=>[Z.value?(a(),P(k(r),{key:0,onClose:s[12]||(s[12]=d=>Z.value=!1)})):$("",!0)]),_:1}),i(ps,{configurationModals:h.value,configurationModalSelectedPeer:y.value,onRefresh:s[13]||(s[13]=d=>I())},null,8,["configurationModals","configurationModalSelectedPeer"]),i(ee,{name:"zoom"},{default:T(()=>[(a(),P(_e,{key:"PeerAddModal"},{default:T(()=>[h.value.peerNew.modalOpen?(a(),P(k(m),{key:0,onClose:s[14]||(s[14]=d=>h.value.peerNew.modalOpen=!1),onAddedPeers:s[15]||(s[15]=d=>{h.value.peerNew.modalOpen=!1,I()})})):$("",!0)]),_:1})),h.value.peerScheduleJobsAll.modalOpen?(a(),P(k(x),{key:"PeerJobsAllModal",onRefresh:s[16]||(s[16]=d=>I()),onAllLogs:s[17]||(s[17]=d=>h.value.peerScheduleJobsLogs.modalOpen=!0),onClose:s[18]||(s[18]=d=>h.value.peerScheduleJobsAll.modalOpen=!1),configurationPeers:c.value},null,8,["configurationPeers"])):$("",!0),h.value.peerScheduleJobsLogs.modalOpen?(a(),P(k(_),{key:"PeerJobsLogsModal",onClose:s[19]||(s[19]=d=>h.value.peerScheduleJobsLogs.modalOpen=!1),configurationInfo:l.value},null,8,["configurationInfo"])):$("",!0),h.value.editConfiguration.modalOpen?(a(),P(k(u),{key:"EditConfigurationModal",onEditRaw:s[20]||(s[20]=d=>h.value.editRawConfigurationFile.modalOpen=!0),onClose:s[21]||(s[21]=d=>h.value.editConfiguration.modalOpen=!1),onDataChanged:s[22]||(s[22]=d=>l.value=d),onRefresh:s[23]||(s[23]=d=>I()),onBackupRestore:s[24]||(s[24]=d=>h.value.backupRestore.modalOpen=!0),onDeleteConfiguration:s[25]||(s[25]=d=>h.value.deleteConfiguration.modalOpen=!0),configurationInfo:l.value},null,8,["configurationInfo"])):$("",!0),h.value.selectPeers.modalOpen?(a(),P(k(b),{key:3,onRefresh:s[26]||(s[26]=d=>I()),configurationPeers:c.value,onClose:s[27]||(s[27]=d=>h.value.selectPeers.modalOpen=!1)},null,8,["configurationPeers"])):$("",!0)]),_:1}),i(gs,{showPeersCount:q.value,peerListLength:ne.value.length,onLoadMore:s[28]||(s[28]=d=>q.value+=po)},null,8,["showPeersCount","peerListLength"])]))}},yo=Q(fo,[["__scopeId","data-v-4fe6960d"]]);export{yo as default};