import{a as n,c as i,f as B,i as f,e as g,_ as T,r as P,o as A,b as e,t as y,F as N,h as D,d as l,n as v,C as z,E as G,W as M,p as C,H as Y,D as F,I as H,m as _,z as k,y as Z,g as J,w as $,T as V,j as Q}from"./index-CRrH8rsP.js";import{L as o}from"./localeText-BwuzYH16.js";import{d as X}from"./dayjs.min-DtBetGsd.js";import{p as O}from"./index-L60y6kc9.js";const ee={key:0,class:"badge wireguardBg rounded-3 shadow"},te={key:1,class:"badge amneziawgBg rounded-3 shadow"},E={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(d){return(u,t)=>d.protocol==="wg"?(n(),i("span",ee,[t[0]||(t[0]=B(" WireGuard ")),d.mini?g("",!0):(n(),f(o,{key:0,t:"Configuration"}))])):d.protocol==="awg"?(n(),i("span",te,[t[1]||(t[1]=B(" AmneziaWG ")),d.mini?g("",!0):(n(),f(o,{key:0,t:"Configuration"}))])):g("",!0)}},se={class:"card rounded-3 shadow-sm"},oe={class:"mb-0 d-flex align-items-center gap-3"},ne={class:"text-muted ms-auto d-block"},le={key:0,class:"card-footer p-3 d-flex flex-column gap-2"},ae=["onClick","id"],ie={class:"card-body d-flex p-3 gap-3 align-items-center"},re={__name:"backupGroup",props:{configurationName:String,backups:Array,open:!1,selectedConfigurationBackup:Object,protocol:Array},emits:["select"],setup(d,{emit:u}){const t=d,h=u,p=P(t.open);return A(()=>{t.selectedConfigurationBackup&&document.querySelector(`#${t.selectedConfigurationBackup.filename.replace(".conf","")}`).scrollIntoView({behavior:"smooth"})}),(x,a)=>(n(),i("div",se,[e("a",{role:"button",class:"card-body d-flex align-items-center text-decoration-none d-flex gap-3",onClick:a[0]||(a[0]=m=>p.value=!p.value)},[e("h6",oe,[e("samp",null,y(d.configurationName),1),(n(!0),i(N,null,D(d.protocol,m=>(n(),f(E,{protocol:m},null,8,["protocol"]))),256))]),e("small",ne,[l(o,{t:d.backups.length+(d.backups.length>1?" Backups":" Backup")},null,8,["t"])]),e("h5",{class:v(["mb-0 dropdownIcon text-muted",{active:p.value}])},a[1]||(a[1]=[e("i",{class:"bi bi-chevron-down"},null,-1)]),2)]),p.value?(n(),i("div",le,[(n(!0),i(N,null,D(d.backups,m=>(n(),i("div",{class:"card rounded-3 shadow-sm animate__animated",key:m.filename,onClick:()=>{h("select",m)},id:m.filename.replace(".conf",""),role:"button"},[e("div",ie,[e("small",null,[a[2]||(a[2]=e("i",{class:"bi bi-file-earmark me-2"},null,-1)),e("samp",null,y(m.filename),1)]),e("small",null,[a[3]||(a[3]=e("i",{class:"bi bi-clock-history me-2"},null,-1)),e("samp",null,y(z(X)(m.backupDate).format("YYYY-MM-DD HH:mm:ss")),1)]),e("small",null,[a[4]||(a[4]=e("i",{class:"bi bi-database me-2"},null,-1)),m.database?(n(),f(o,{key:0,t:"Yes"})):(n(),f(o,{key:1,t:"No"}))]),a[5]||(a[5]=e("small",{class:"text-muted ms-auto"},[e("i",{class:"bi bi-chevron-right"})],-1))])],8,ae))),128))])):g("",!0)]))}},de=T(re,[["__scopeId","data-v-ccf48ac7"]]),ue={class:"d-flex flex-column gap-5",id:"confirmBackup"},ce={class:"d-flex flex-column gap-3"},me={class:"d-flex flex-column flex-sm-row align-items-start align-items-sm-center gap-3"},fe={class:"mb-0"},pe={class:"text-muted mb-1"},ve={class:"mb-0"},ge={class:"text-muted mb-1",for:"ConfigurationName"},be={class:"invalid-feedback"},_e={key:0},ke={key:1},ye={class:"mb-0"},he={class:"row g-3"},xe={class:"col-sm"},Ce={class:"text-muted mb-1",for:"PrivateKey"},Pe={class:"input-group"},we={class:"col-sm"},Be={class:"text-muted mb-1",for:"PublicKey"},$e={class:"text-muted mb-1",for:"ListenPort"},Ne={class:"invalid-feedback"},De={key:0},Ae={key:1},Se={class:"mb-0"},Ie={class:"text-muted mb-1 d-flex",for:"ListenPort"},Le={class:"invalid-feedback"},Ue={key:0},Ke={key:1},Re={class:"accordion",id:"newConfigurationOptionalAccordion"},Ve={class:"accordion-item"},Oe={class:"accordion-header"},Te={class:"accordion-button collapsed rounded-3",type:"button","data-bs-toggle":"collapse","data-bs-target":"#newConfigurationOptionalAccordionCollapse"},Ee={id:"newConfigurationOptionalAccordionCollapse",class:"accordion-collapse collapse","data-bs-parent":"#newConfigurationOptionalAccordion"},qe={class:"accordion-body d-flex flex-column gap-3"},We={class:"text-muted mb-1",for:"PreUp"},je={class:"text-muted mb-1",for:"PreDown"},ze={class:"text-muted mb-1",for:"PostUp"},Ge={class:"text-muted mb-1",for:"PostDown"},Me={class:"d-flex flex-column gap-3"},Ye={class:"d-flex flex-column flex-sm-row align-items-start align-items-sm-center gap-3"},Fe={class:"mb-0"},He={key:0},Ze={class:"row g-3"},Je={class:"col-sm"},Qe={class:"card text-bg-success rounded-3"},Xe={class:"card-body"},et={class:"col-sm"},tt={class:"card text-bg-warning rounded-3"},st={class:"card-body"},ot={class:"d-flex"},nt=["disabled"],lt={__name:"confirmBackup",props:{selectedConfigurationBackup:Object},setup(d){const u=d,t=G({ConfigurationName:u.selectedConfigurationBackup.filename.split("_")[0],Backup:u.selectedConfigurationBackup.filename,Protocol:u.selectedConfigurationBackup.protocol}),h=u.selectedConfigurationBackup.content.split(` `);for(let r of h){if(r==="[Peer]")break;if(r.length>0){let s=r.replace(" = ","=").split("=");s[0]==="ListenPort"?t[s[0]]=parseInt(s[1]):t[s[0]]=s[1]}}const p=P(!1),x=P(!1),a=P(""),m=M(),b=C(()=>/^[a-zA-Z0-9_=+.-]{1,15}$/.test(t.ConfigurationName)&&t.ConfigurationName.length>0&&!m.Configurations.find(r=>r.Name===t.ConfigurationName)),w=C(()=>{try{window.wireguard.generatePublicKey(t.PrivateKey)}catch{return!1}return!0}),S=C(()=>t.ListenPort>0&&t.ListenPort<=65353&&Number.isInteger(t.ListenPort)&&!m.Configurations.find(r=>parseInt(r.ListenPort)===t.ListenPort)),I=C(()=>{try{return O(t.Address),!0}catch{return!1}}),L=C(()=>I.value&&S.value&&w.value&&b.value);A(()=>{document.querySelector("main").scrollTo({top:0,behavior:"smooth"}),Y(()=>w,r=>{r&&(t.PublicKey=window.wireguard.generatePublicKey(t.PrivateKey))},{immediate:!0})});const U=C(()=>{let r;try{r=O(t.Address)}catch{return 0}return r.end-r.start}),K=C(()=>u.selectedConfigurationBackup.database?u.selectedConfigurationBackup.databaseContent.split(` `).filter(s=>s.search(`INSERT INTO "${t.ConfigurationName}"`)>=0).length:0),R=C(()=>u.selectedConfigurationBackup.database?u.selectedConfigurationBackup.databaseContent.split(` `).filter(s=>s.search(`INSERT INTO "${t.ConfigurationName}_restrict_access"`)>=0).length:0),q=F(),W=H(),j=async()=>{L.value&&(x.value=!0,await Z("/api/addWireguardConfiguration",t,async r=>{r.status?(q.newMessage("Server","Configuration restored","success"),await m.getConfigurations(),await W.push(`/configuration/${t.ConfigurationName}/peers`)):x.value=!1}))};return(r,s)=>(n(),i("div",ue,[e("form",ce,[e("div",me,[e("h4",fe,[l(o,{t:"Configuration"})])]),e("div",null,[e("label",pe,[e("small",null,[l(o,{t:"Protocol"})])]),e("h5",ve,[l(E,{protocol:d.selectedConfigurationBackup.protocol,mini:!0},null,8,["protocol"])])]),e("div",null,[e("label",ge,[e("small",null,[l(o,{t:"Configuration Name"})])]),_(e("input",{type:"text",class:v(["form-control rounded-3",[b.value?"is-valid":"is-invalid"]]),placeholder:"ex. wg1",id:"ConfigurationName","onUpdate:modelValue":s[0]||(s[0]=c=>t.ConfigurationName=c),disabled:"",required:""},null,2),[[k,t.ConfigurationName]]),e("div",be,[p.value?(n(),i("div",_e,y(a.value),1)):(n(),i("div",ke,[l(o,{t:"Configuration name is invalid. Possible reasons:"}),e("ul",ye,[e("li",null,[l(o,{t:"Configuration name already exist."})]),e("li",null,[l(o,{t:"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen."})])])]))])]),e("div",he,[e("div",xe,[e("div",null,[e("label",Ce,[e("small",null,[l(o,{t:"Private Key"})])]),e("div",Pe,[_(e("input",{type:"text",class:v(["form-control rounded-start-3",[w.value?"is-valid":"is-invalid"]]),id:"PrivateKey",required:"","onUpdate:modelValue":s[1]||(s[1]=c=>t.PrivateKey=c),disabled:""},null,2),[[k,t.PrivateKey]])])])]),e("div",we,[e("div",null,[e("label",Be,[e("small",null,[l(o,{t:"Public Key"})])]),_(e("input",{type:"text",class:"form-control rounded-3",id:"PublicKey","onUpdate:modelValue":s[2]||(s[2]=c=>t.PublicKey=c),disabled:""},null,512),[[k,t.PublicKey]])])])]),e("div",null,[e("label",$e,[e("small",null,[l(o,{t:"Listen Port"})])]),_(e("input",{type:"number",class:v(["form-control rounded-3",[S.value?"is-valid":"is-invalid"]]),placeholder:"0-65353",id:"ListenPort",min:"1",max:"65353","onUpdate:modelValue":s[3]||(s[3]=c=>t.ListenPort=c),disabled:"",required:""},null,2),[[k,t.ListenPort]]),e("div",Ne,[p.value?(n(),i("div",De,y(a.value),1)):(n(),i("div",Ae,[l(o,{t:"Listen Port is invalid. Possible reasons:"}),e("ul",Se,[e("li",null,[l(o,{t:"Invalid port."})]),e("li",null,[l(o,{t:"Port is assigned to existing WireGuard Configuration."})])])]))])]),e("div",null,[e("label",Ie,[e("small",null,[l(o,{t:"IP Address/CIDR"})]),e("small",{class:v(["ms-auto",[U.value>0?"text-success":"text-danger"]])},[l(o,{t:U.value+" Available IP Address"},null,8,["t"])],2)]),_(e("input",{type:"text",class:v(["form-control",[I.value?"is-valid":"is-invalid"]]),placeholder:"Ex: 10.0.0.1/24",id:"Address","onUpdate:modelValue":s[4]||(s[4]=c=>t.Address=c),disabled:"",required:""},null,2),[[k,t.Address]]),e("div",Le,[p.value?(n(),i("div",Ue,y(a.value),1)):(n(),i("div",Ke,[l(o,{t:"IP Address/CIDR is invalid"})]))])]),e("div",Re,[e("div",Ve,[e("h2",Oe,[e("button",Te,[l(o,{t:"Optional Settings"})])]),e("div",Ee,[e("div",qe,[e("div",null,[e("label",We,[e("small",null,[l(o,{t:"PreUp"})])]),_(e("input",{type:"text",class:"form-control rounded-3",id:"PreUp",disabled:"","onUpdate:modelValue":s[5]||(s[5]=c=>t.PreUp=c)},null,512),[[k,t.PreUp]])]),e("div",null,[e("label",je,[e("small",null,[l(o,{t:"PreDown"})])]),_(e("input",{type:"text",class:"form-control rounded-3",id:"PreDown",disabled:"","onUpdate:modelValue":s[6]||(s[6]=c=>t.PreDown=c)},null,512),[[k,t.PreDown]])]),e("div",null,[e("label",ze,[e("small",null,[l(o,{t:"PostUp"})])]),_(e("input",{type:"text",class:"form-control rounded-3",id:"PostUp",disabled:"","onUpdate:modelValue":s[7]||(s[7]=c=>t.PostUp=c)},null,512),[[k,t.PostUp]])]),e("div",null,[e("label",Ge,[e("small",null,[l(o,{t:"PostDown"})])]),_(e("input",{type:"text",class:"form-control rounded-3",id:"PostDown",disabled:"","onUpdate:modelValue":s[8]||(s[8]=c=>t.PostDown=c)},null,512),[[k,t.PostDown]])])])])])])]),e("div",Me,[e("div",Ye,[e("h4",Fe,[l(o,{t:"Database File"})]),e("h4",{class:v(["mb-0 ms-auto",[d.selectedConfigurationBackup.database?"text-success":"text-danger"]])},[e("i",{class:v(["bi",[d.selectedConfigurationBackup.database?"bi-check-circle-fill":"bi-x-circle-fill"]])},null,2)],2)]),d.selectedConfigurationBackup.database?(n(),i("div",He,[e("div",Ze,[e("div",Je,[e("div",Qe,[e("div",Xe,[s[10]||(s[10]=e("i",{class:"bi bi-person-fill me-2"},null,-1)),l(o,{t:"Contain"}),s[11]||(s[11]=B()),e("strong",null,y(K.value),1),s[12]||(s[12]=B()),K.value>1?(n(),f(o,{key:0,t:"Peer"})):(n(),f(o,{key:1,t:"Peer"}))])])]),e("div",et,[e("div",tt,[e("div",st,[s[13]||(s[13]=e("i",{class:"bi bi-person-fill-lock me-2"},null,-1)),l(o,{t:"Contain"}),s[14]||(s[14]=B()),e("strong",null,y(R.value),1),s[15]||(s[15]=B()),R.value>1?(n(),f(o,{key:0,t:"Restricted Peers"})):(n(),f(o,{key:1,t:"Restricted Peers"}))])])])])])):g("",!0)]),e("div",ot,[e("button",{class:"btn btn-dark btn-brand rounded-3 px-3 py-2 shadow ms-auto",disabled:!L.value||x.value,onClick:s[9]||(s[9]=c=>j())},[s[16]||(s[16]=e("i",{class:"bi bi-clock-history me-2"},null,-1)),l(o,{t:x.value?"Restoring...":"Restore"},null,8,["t"])],8,nt)])]))}},at={class:"mt-md-5 mt-3 text-body"},it={class:"container mb-4"},rt={class:"mb-5 d-flex align-items-center gap-4"},dt={class:"mb-0"},ut={key:0},ct={class:"d-flex text-decoration-none text-body flex-grow-1 align-items-center gap-3"},mt={class:"mb-0"},ft={class:"text-muted"},pt={key:0,class:"ms-sm-auto"},vt={class:"text-muted"},gt={key:0,id:"step1Detail"},bt={class:"mb-4"},_t={class:"d-flex gap-3 flex-column"},kt={key:0},yt={class:"card rounded-3"},ht={class:"card-body"},xt={class:"mb-0"},Ct={class:"my-5",key:"step2",id:"step2"},Pt={class:"text-muted"},wt={__name:"restoreConfiguration",setup(d){const u=P(void 0);A(()=>{J("/api/getAllWireguardConfigurationBackup",{},x=>{u.value=x.data})});const t=P(!1),h=P(void 0),p=P("");return(x,a)=>{const m=Q("RouterLink");return n(),i("div",at,[e("div",it,[e("div",rt,[l(m,{to:"/",class:"btn btn-dark btn-brand p-2 shadow",style:{"border-radius":"100%"}},{default:$(()=>a[1]||(a[1]=[e("h2",{class:"mb-0",style:{"line-height":"0"}},[e("i",{class:"bi bi-arrow-left-circle"})],-1)])),_:1}),e("h2",dt,[l(o,{t:"Restore Configuration"})])]),l(V,{name:"fade",appear:""},{default:$(()=>[u.value?(n(),i("div",ut,[e("div",{class:v(["d-flex mb-5 align-items-center steps",{active:!t.value}]),role:"button",onClick:a[0]||(a[0]=b=>t.value=!1),key:"step1"},[e("div",ct,[a[2]||(a[2]=e("h1",{class:"mb-0",style:{"line-height":"0"}},[e("i",{class:"bi bi-1-circle-fill"})],-1)),e("div",null,[e("h4",mt,[l(o,{t:"Step 1"})]),e("small",ft,[t.value?(n(),f(o,{key:1,t:"Click to change a backup"})):(n(),f(o,{key:0,t:"Select a backup you want to restore"}))])])]),l(V,{name:"zoomReversed"},{default:$(()=>[t.value?(n(),i("div",pt,[e("small",vt,[l(o,{t:"Selected Backup"})]),e("h6",null,[e("samp",null,y(h.value.filename),1)])])):g("",!0)]),_:1})],2),t.value?g("",!0):(n(),i("div",gt,[e("div",bt,[e("div",_t,[(n(!0),i(N,null,D(Object.keys(u.value.NonExistingConfigurations),b=>(n(),f(de,{onSelect:w=>{h.value=w,p.value=b,t.value=!0},selectedConfigurationBackup:h.value,open:p.value===b,protocol:[...new Set(u.value.NonExistingConfigurations[b].map(w=>w.protocol))],"configuration-name":b,backups:u.value.NonExistingConfigurations[b]},null,8,["onSelect","selectedConfigurationBackup","open","protocol","configuration-name","backups"]))),256)),Object.keys(u.value.NonExistingConfigurations).length===0?(n(),i("div",kt,[e("div",yt,[e("div",ht,[e("p",xt,[l(o,{t:"You don't have any configuration to restore"})])])])])):g("",!0)])])])),e("div",Ct,[e("div",{class:v(["steps d-flex text-decoration-none text-body flex-grow-1 align-items-center gap-3",{active:t.value}])},[a[4]||(a[4]=e("h1",{class:"mb-0",style:{"line-height":"0"}},[e("i",{class:"bi bi-2-circle-fill"})],-1)),e("div",null,[a[3]||(a[3]=e("h4",{class:"mb-0"},"Step 2",-1)),e("small",Pt,[t.value?(n(),f(o,{key:1,t:"Confirm & edit restore information"})):(n(),f(o,{key:0,t:"Backup not selected"}))])])],2)]),t.value?(n(),f(lt,{selectedConfigurationBackup:h.value,key:"confirm"},null,8,["selectedConfigurationBackup"])):g("",!0)])):g("",!0)]),_:1})])])}}},At=T(wt,[["__scopeId","data-v-40ee451e"]]);export{At as default};