mirror-WGDashboard/src/static/dist/WGDashboardAdmin/assets/editConfiguration-BS8eInHi.js

8 lines
32 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

import{_ as M,J,W as Y,o as z,I as q,D as H,r as y,K as G,c as h,f as v,a as e,b as s,m as C,y as S,n as B,z as L,t as P,h as Q,a2 as X,d as N,s as D,j as R,F as V,i as K,H as ee,a3 as te,e as O,L as A,E as se,u as T,g as I,p as ne,q as oe,w as U,k as j,a4 as le,T as Z,B as ie,v as ae}from"./index-Y3pG9DoR.js";import{L as n}from"./localeText-DcQapG1o.js";import{d as de}from"./dayjs.min-BxkQs1mo.js";const re={class:"card rounded-3 flex-grow-1 bg-danger-subtle border-danger-subtle border shadow"},ue={class:"card-body"},ce={class:"d-flex align-items-center gap-3 inputGroup"},me=["value"],fe={class:"mb-0"},ge={class:"d-flex mt-3"},be=["disabled"],ve={__name:"updateConfigurationName",props:{configurationName:String},emits:["close"],setup(d,{emit:r}){const t=d,f=r,o=J({data:"",valid:!1}),g=Y();z(()=>{q(()=>o.data,b=>{o.valid=/^[a-zA-Z0-9_=+.-]{1,15}$/.test(b)&&b.length>0&&!g.Configurations.find(_=>_.Name===b)})});const u=H(),x=y(!1),c=G(),a=async()=>{o.data&&(x.value=!0,clearInterval(u.Peers.RefreshInterval),await L("/api/renameWireguardConfiguration",{ConfigurationName:t.configurationName,NewConfigurationName:o.data},async b=>{b.status?(await g.getConfigurations(),u.newMessage("Server","Configuration renamed","success"),c.push(`/configuration/${o.data}/peers`)):(u.newMessage("Server",b.message,"danger"),x.value=!1)}))};return(b,_)=>(v(),h("div",re,[e("div",ue,[e("p",null,[s(n,{t:"To update this configuration's name, WGDashboard will execute the following operations:"})]),e("ol",null,[e("li",null,[s(n,{t:"Duplicate current configuration's database table and .conf file with the new name"})]),e("li",null,[s(n,{t:"Delete current configuration's database table and .conf file"})])]),e("div",ce,[e("input",{class:"form-control form-control-sm rounded-3",value:d.configurationName,disabled:""},null,8,me),_[3]||(_[3]=e("h3",{class:"mb-0"},[e("i",{class:"bi bi-arrow-right"})],-1)),C(e("input",{class:B(["form-control form-control-sm rounded-3",[o.data?o.valid?"is-valid":"is-invalid":""]]),id:"newConfigurationName","onUpdate:modelValue":_[0]||(_[0]=w=>o.data=w)},null,2),[[S,o.data]])]),e("div",{class:B(["invalid-feedback",{"d-block":!o.valid&&o.data}])},[s(n,{t:"Configuration name is invalid. Possible reasons:"}),e("ul",fe,[e("li",null,[s(n,{t:"Configuration name already exist"})]),e("li",null,[s(n,{t:"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen."})])])],2),e("div",ge,[e("button",{onClick:_[1]||(_[1]=w=>f("close")),class:"btn btn-sm bg-secondary-subtle border-secondary-subtle text-secondary-emphasis rounded-3"},[s(n,{t:"Cancel"})]),e("button",{onClick:_[2]||(_[2]=w=>a()),disabled:!o.data||x.value,class:"btn btn-sm btn-danger rounded-3 ms-auto"},[s(n,{t:"Save"})],8,be)])])]))}},pe=M(ve,[["__scopeId","data-v-33ea9576"]]),he={name:"Dropdown",props:{width:{type:String,default:"80px"},height:{type:String,default:"auto"},title:{type:String,default:""},disabled:{type:Boolean,default:!1},defaultDisplay:{type:Boolean,default:!1}}},ye={class:"title"};function xe(d,r,t,f,o,g){return v(),h("div",{class:B(["dropdown",{disabled:t.disabled}]),onClick:r[0]||(r[0]=(...u)=>d.toggleDropdown&&d.toggleDropdown(...u)),onFocusout:r[1]||(r[1]=(...u)=>d.hideDropdown&&d.hideDropdown(...u)),tabindex:"0"},[e("div",ye,[e("div",null,P(t.title),1)])],34)}const _e=M(he,[["render",xe]]),we={components:{Dropdown:_e},name:"CodeEditor",props:{lineNums:{type:Boolean,default:!1},modelValue:{type:String},value:{type:String},theme:{type:String,default:"github-dark"},tabSpaces:{type:Number,default:2},wrap:{type:Boolean,default:!1},readOnly:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},header:{type:Boolean,default:!0},width:{type:String,default:"540px"},height:{type:String,default:"auto"},maxWidth:{type:String},minWidth:{type:String},maxHeight:{type:String},minHeight:{type:String},borderRadius:{type:String,default:"12px"},languages:{type:Array,default:function(){return[["javascript","JS"]]}},langListWidth:{type:String,default:"110px"},langListHeight:{type:String,default:"auto"},langListDisplay:{type:Boolean,default:!1},displayLanguage:{type:Boolean,default:!0},zIndex:{type:String,default:"0"},fontSize:{type:String,default:"17px"},padding:{type:String,default:"20px"}},directives:{highlight:{mounted(d,r){d.textContent=r.value},updated(d,r){d.scrolling?d.scrolling=!1:d.textContent=r.value}}},data(){return{scrollBarWidth:0,scrollBarHeight:0,top:0,left:0,languageClass:"hljs language-"+this.languages[0][0],languageTitle:this.languages[0][1]?this.languages[0][1]:this.languages[0][0],content:this.value,cursorPosition:0,insertTab:!1,lineNum:0,lineNumsWidth:0,scrolling:!1,textareaHeight:0,showLineNums:this.wrap?!1:this.lineNums}},computed:{tabWidth(){let d="";for(let r=0;r<this.tabSpaces;r++)d+=" ";return d},contentValue(){return this.modelValue==null?this.content+`
`:this.modelValue+`
`},scroll(){return this.height!="auto"}},methods:{updateValue(d){this.modelValue==null?this.content=d.target.value:this.$emit("update:modelValue",d.target.value)},changeLang(d){this.languageTitle=d[1]?d[1]:d[0],this.languageClass="language-"+d[0],this.$emit("lang",d[0])},tab(){if(document.execCommand("insertText"))document.execCommand("insertText",!1,this.tabWidth);else{const d=this.$refs.textarea.selectionStart;this.content=this.content.substring(0,d)+this.tabWidth+this.content.substring(d),this.cursorPosition=d+this.tabWidth.length,this.insertTab=!0}},calcScrollDistance(d){this.$refs.code.scrolling=!0,this.scrolling=!0,this.top=-d.target.scrollTop,this.left=-d.target.scrollLeft},resizer(){new ResizeObserver(t=>{this.scrollBarWidth=t[0].target.offsetWidth-t[0].target.clientWidth,this.scrollBarHeight=t[0].target.offsetHeight-t[0].target.clientHeight,this.textareaHeight=t[0].target.offsetHeight}).observe(this.$refs.textarea);const r=new ResizeObserver(t=>{this.lineNumsWidth=t[0].target.offsetWidth});this.$refs.lineNums&&r.observe(this.$refs.lineNums)},copy(){document.execCommand("copy")?(this.$refs.textarea.select(),document.execCommand("copy"),window.getSelection().removeAllRanges()):navigator.clipboard.writeText(this.$refs.textarea.value)},getLineNum(){const d=this.$refs.textarea.value;let r=0,t=d.indexOf(`
`);for(;t!==-1;)r++,t=d.indexOf(`
`,t+1);const f=this.$refs.lineNums.firstChild.offsetHeight,o=parseInt(this.textareaHeight/f)-1;this.lineNum=this.height=="auto"||r>o?r:o}},mounted(){this.$emit("lang",this.languages[0][0]),this.$emit("content",this.content),this.$emit("textarea",this.$refs.textarea),this.resizer()},updated(){this.insertTab&&(this.$refs.textarea.setSelectionRange(this.cursorPosition,this.cursorPosition),this.insertTab=!1),this.lineNums&&(this.scrolling?this.scrolling=!1:this.getLineNum())}},ke=["theme"],Ce=["readOnly","autofocus","value"];function $e(d,r,t,f,o,g){const u=Q("Dropdown"),x=X("highlight");return v(),h("div",{theme:t.theme,class:B(["code-editor",{"hide-header":!t.header,scroll:g.scroll,"read-only":t.readOnly,wrap:t.wrap}]),style:D({width:t.width,height:t.height,zIndex:t.zIndex,maxWidth:t.maxWidth,minWidth:t.minWidth,maxHeight:t.maxHeight,minHeight:t.minHeight})},[e("div",{class:"hljs",style:D({borderRadius:t.borderRadius})},[t.header?(v(),h("div",{key:0,class:B(["header",{border:o.showLineNums}]),style:D({borderRadius:t.borderRadius+" "+t.borderRadius+" 0 0"})},[t.displayLanguage?(v(),R(u,{key:0,width:t.langListWidth,title:o.languageTitle,disabled:t.languages.length<=1,defaultDisplay:t.langListDisplay},null,8,["width","title","disabled","defaultDisplay"])):N("",!0)],6)):N("",!0),e("div",{class:"code-area",style:D({borderRadius:t.header?"0 0 "+t.borderRadius+" "+t.borderRadius:t.borderRadius})},[o.showLineNums?(v(),h("div",{key:0,ref:"lineNums",class:"line-nums hljs",style:D({fontSize:t.fontSize,paddingTop:t.header?"10px":t.padding,paddingBottom:t.padding,top:o.top+"px"})},[r[3]||(r[3]=e("div",null,"1",-1)),(v(!0),h(V,null,K(o.lineNum,c=>(v(),h("div",null,P(c+1),1))),256)),r[4]||(r[4]=e("div",null," ",-1))],4)):N("",!0),e("textarea",{title:"textarea",readOnly:t.readOnly,style:D({fontSize:t.fontSize,padding:t.header?t.lineNums?"10px "+t.padding+" "+t.padding:"0 "+t.padding+" "+t.padding:t.padding,marginLeft:o.showLineNums?o.lineNumsWidth+"px":"0",width:o.showLineNums?"calc(100% - "+o.lineNumsWidth+"px)":"100%"}),ref:"textarea",autofocus:t.autofocus,spellcheck:"false",onKeydown:r[0]||(r[0]=ee(te((...c)=>g.tab&&g.tab(...c),["prevent","stop"]),["tab"])),onScroll:r[1]||(r[1]=(...c)=>g.calcScrollDistance&&g.calcScrollDistance(...c)),value:t.modelValue==null?o.content:t.modelValue,onInput:r[2]||(r[2]=(...c)=>g.updateValue&&g.updateValue(...c))},null,44,Ce),e("pre",{style:D({paddingRight:o.scrollBarWidth+"px",paddingBottom:o.scrollBarHeight+"px",marginLeft:o.showLineNums?o.lineNumsWidth+"px":"0",width:o.showLineNums?"calc(100% - "+o.lineNumsWidth+"px)":"100%"})},[r[6]||(r[6]=O(" ",-1)),C((v(),h("code",{ref:"code",class:B(o.languageClass),style:D({top:o.top+"px",left:o.left+"px",fontSize:t.fontSize,padding:t.header?t.lineNums?"10px "+t.padding+" "+t.padding:"0 "+t.padding+" "+t.padding:t.padding})},[...r[5]||(r[5]=[O(`
`,-1)])],6)),[[x,g.contentValue]]),r[7]||(r[7]=O(`
`,-1))],4)],4)],4)],14,ke)}const Se=M(we,[["render",$e]]),Ne={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},Pe={class:"container d-flex h-100 w-100"},Be={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"1000px"}},Re={class:"card rounded-3 shadow flex-grow-1",id:"deleteConfigurationContainer"},De={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},Le={class:"mb-0"},We={class:"card-body px-4 d-flex flex-column gap-3"},Ve={key:0,class:"alert alert-danger rounded-3 mb-0"},Oe={class:"mb-2"},Ie={class:"bg-body w-100 p-2 rounded-3"},Me={class:"d-flex gap-2"},He=["disabled"],Ke=["disabled"],Te={__name:"editRawConfigurationFile",emits:["close"],async setup(d,{emit:r}){let t,f;const o=r,g=A(),u=y(""),x=y(""),c=y(!1),a=y(""),b=async()=>{await I("/api/getWireguardConfigurationRawFile",{configurationName:g.params.id},m=>{u.value=m.data.content,x.value=m.data.path})};[t,f]=se(()=>b()),await t,f();const _=H(),w=y(!1),$=async()=>{w.value=!0,await L("/api/updateWireguardConfigurationRawFile",{configurationName:g.params.id,rawConfiguration:u.value},m=>{m.status?(c.value=!1,_.newMessage("Server","Configuration saved","success")):(c.value=!0,a.value=m.message),w.value=!1})};return(m,i)=>(v(),h("div",Ne,[e("div",Pe,[e("div",Be,[e("div",Re,[e("div",De,[e("h5",Le,[s(n,{t:"Edit Raw Configuration File"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:i[0]||(i[0]=k=>o("close"))})]),e("div",We,[c.value?(v(),h("div",Ve,[e("div",Oe,[e("strong",null,[s(n,{t:"Failed to save configuration. Please see the following error message:"})])]),e("div",Ie,[e("pre",null,P(a.value),1)])])):N("",!0),s(Se,{disabled:!0,"read-only":w.value,modelValue:u.value,"onUpdate:modelValue":i[1]||(i[1]=k=>u.value=k),theme:T(_).Configuration.Server.dashboard_theme==="dark"?"github-dark":"github",languages:[["ini",x.value]],width:"100%",height:"600px"},null,8,["read-only","modelValue","theme","languages"]),e("div",Me,[e("button",{class:"btn bg-secondary-subtle border-secondary-subtle text-secondary-emphasis rounded-3 shadow ms-auto px-3 py-2",disabled:w.value,onClick:i[2]||(i[2]=k=>b())},[i[4]||(i[4]=e("i",{class:"bi bi-arrow-clockwise me-2"},null,-1)),s(n,{t:"Reset"})],8,He),e("button",{onClick:i[3]||(i[3]=k=>$()),disabled:w.value,class:"btn bg-danger-subtle border-danger-subtle text-danger-emphasis rounded-3 px-3 py-2 shadow"},[i[5]||(i[5]=e("i",{class:"bi bi-save-fill me-2"},null,-1)),w.value?(v(),R(n,{key:1,t:"Saving..."})):(v(),R(n,{key:0,t:"Save"}))],8,Ke)])])])])])]))}},Ue={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},ze={class:"container d-flex h-100 w-100"},Ae={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},Ee={class:"card rounded-3 shadow flex-grow-1 bg-danger-subtle border-danger-subtle",id:"deleteConfigurationContainer"},Fe={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},Je={class:"mb-0"},je={class:"card-body px-4 text-muted"},Ye={class:"mb-0"},qe={key:0},Ge={key:1},Ze={key:2,class:"d-flex align-items-center gap-2"},Qe=["placeholder"],Xe=["disabled"],et={__name:"deleteConfiguration",emits:["backup","close"],setup(d,{emit:r}){const f=A().params.id,o=y(""),g=G(),u=H(),x=y(!1),c=()=>{clearInterval(u.Peers.RefreshInterval),x.value=!0,L("/api/deleteWireguardConfiguration",{ConfigurationName:f},$=>{$.status?(g.push("/"),u.newMessage("Server","Configuration deleted","success")):x.value=!1})},a=y(!0),b=y([]),_=()=>{a.value=!0,I("/api/getWireguardConfigurationBackup",{configurationName:f},$=>{b.value=$.data,a.value=!1})};z(()=>{_()});const w=r;return($,m)=>(v(),h("div",Ue,[e("div",ze,[e("div",Ae,[e("div",Ee,[e("div",Fe,[e("h5",Je,[s(n,{t:"Are you sure to delete this configuration?"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:m[0]||(m[0]=i=>w("close"))})]),e("div",je,[e("p",Ye,[s(n,{t:"Once you deleted this configuration:"})]),e("ul",null,[e("li",null,[s(n,{t:"All connected peers will get disconnected"})]),e("li",null,[s(n,{t:"Both configuration file (.conf) and database table related to this configuration will get deleted"})])]),e("div",{class:B(["alert",[a.value?"alert-secondary":b.value.length>0?"alert-success":"alert-danger"]])},[a.value?(v(),h("div",qe,[m[5]||(m[5]=e("i",{class:"bi bi-search me-2"},null,-1)),s(n,{t:"Checking backups..."})])):b.value.length>0?(v(),h("div",Ge,[m[6]||(m[6]=e("i",{class:"bi bi-check-circle-fill me-2"},null,-1)),s(n,{t:"This configuration has "+b.value.length+" backups"},null,8,["t"])])):(v(),h("div",Ze,[m[9]||(m[9]=e("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),s(n,{t:"This configuration has no backup"}),e("a",{role:"button",onClick:m[1]||(m[1]=i=>w("backup")),class:"ms-auto btn btn-sm btn-primary rounded-3"},[m[7]||(m[7]=e("i",{class:"bi bi-clock-history me-2"},null,-1)),s(n,{t:"Backup"})]),e("a",{role:"button",onClick:m[2]||(m[2]=i=>_()),class:"btn btn-sm btn-primary rounded-3"},[...m[8]||(m[8]=[e("i",{class:"bi bi-arrow-clockwise"},null,-1)])])]))],2),m[11]||(m[11]=e("hr",null,null,-1)),e("p",null,[s(n,{t:"If you're sure, please type in the configuration name below and click Delete"})]),C(e("input",{class:"form-control rounded-3 mb-3",placeholder:T(f),"onUpdate:modelValue":m[3]||(m[3]=i=>o.value=i),type:"text"},null,8,Qe),[[S,o.value]]),e("button",{class:"btn btn-danger w-100",onClick:m[4]||(m[4]=i=>c()),disabled:o.value!==T(f)||x.value},[m[10]||(m[10]=e("i",{class:"bi bi-trash-fill me-2 rounded-3"},null,-1)),x.value?(v(),R(n,{key:1,t:"Deleting..."})):(v(),R(n,{key:0,t:"Delete"}))],8,Xe)])])])])]))}},tt={class:"card my-0 rounded-3"},st={class:"card-body position-relative"},nt={key:0,class:"position-absolute w-100 h-100 confirmationContainer start-0 top-0 rounded-3 d-flex p-2"},ot={class:"m-auto"},lt={class:"d-flex gap-2 align-items-center justify-content-center"},it=["disabled"],at=["disabled"],dt={key:0,class:"position-absolute w-100 h-100 confirmationContainer start-0 top-0 rounded-3 d-flex p-2"},rt={class:"m-auto"},ut={class:"d-flex gap-2 align-items-center justify-content-center"},ct=["disabled"],mt=["disabled"],ft={class:"d-flex gap-3"},gt={class:"d-flex flex-column"},bt={class:"text-muted"},vt={class:"d-flex flex-column"},pt={class:"text-muted"},ht={class:"d-flex gap-2 align-items-center ms-auto"},yt={class:"card rounded-3"},xt={key:0,class:"card-body"},_t=["value"],wt={class:"d-flex"},kt={__name:"backup",props:["b","delay"],emits:["refresh","refreshPeersList"],setup(d,{emit:r}){ne(m=>({v2dd0b691:w.value}));const t=d,f=y(!1),o=y(!1),g=A(),u=r,x=H(),c=y(!1),a=()=>{c.value=!0,L("/api/deleteWireguardConfigurationBackup",{ConfigurationName:g.params.id,BackupFileName:t.b.filename},m=>{c.value=!1,m.status?(u("refresh"),x.newMessage("Server","Backup deleted","success")):x.newMessage("Server","Backup failed to delete","danger")})},b=()=>{c.value=!0,L("/api/restoreWireguardConfigurationBackup",{ConfigurationName:g.params.id,BackupFileName:t.b.filename},m=>{c.value=!1,o.value=!1,m.status?(u("refreshPeersList"),x.newMessage("Server","Backup restored with "+t.b.filename,"success")):x.newMessage("Server","Backup failed to restore","danger")})},_=()=>{I("/api/downloadWireguardConfigurationBackup",{configurationName:g.params.id,backupFileName:t.b.filename},m=>{m.status&&window.open(le(`/fileDownload?file=${m.data}`),"_blank")})},w=oe(()=>t.delay+"s"),$=y(!1);return(m,i)=>(v(),h("div",tt,[e("div",st,[s(j,{name:"zoomReversed"},{default:U(()=>[f.value?(v(),h("div",nt,[e("div",ot,[e("h5",null,[s(n,{t:"Are you sure to delete this backup?"})]),e("div",lt,[e("button",{class:"btn btn-danger rounded-3",disabled:c.value,onClick:i[0]||(i[0]=k=>a())},[s(n,{t:"Yes"})],8,it),e("button",{onClick:i[1]||(i[1]=k=>f.value=!1),disabled:c.value,class:"btn bg-secondary-subtle text-secondary-emphasis border-secondary-subtle rounded-3"},[s(n,{t:"No"})],8,at)])])])):N("",!0)]),_:1}),s(j,{name:"zoomReversed"},{default:U(()=>[o.value?(v(),h("div",dt,[e("div",rt,[e("h5",null,[s(n,{t:"Are you sure to restore this backup?"})]),e("div",ut,[e("button",{disabled:c.value,onClick:i[2]||(i[2]=k=>b()),class:"btn btn-success rounded-3"},[s(n,{t:"Yes"})],8,ct),e("button",{onClick:i[3]||(i[3]=k=>o.value=!1),disabled:c.value,class:"btn bg-secondary-subtle text-secondary-emphasis border-secondary-subtle rounded-3"},[s(n,{t:"No"})],8,mt)])])])):N("",!0)]),_:1}),e("div",ft,[e("div",gt,[e("small",bt,[s(n,{t:"Backup"})]),e("samp",null,P(d.b.filename),1)]),e("div",vt,[e("small",pt,[s(n,{t:"Backup Date"})]),O(" "+P(T(de)(d.b.backupDate,"YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss")),1)]),e("div",ht,[e("button",{onClick:i[4]||(i[4]=k=>_()),class:"btn bg-primary-subtle text-primary-emphasis border-primary-subtle rounded-3 btn-sm"},[...i[8]||(i[8]=[e("i",{class:"bi bi-download"},null,-1)])]),e("button",{onClick:i[5]||(i[5]=k=>o.value=!0),class:"btn bg-warning-subtle text-warning-emphasis border-warning-subtle rounded-3 btn-sm"},[...i[9]||(i[9]=[e("i",{class:"bi bi-clock-history"},null,-1)])]),e("button",{onClick:i[6]||(i[6]=k=>f.value=!0),class:"btn bg-danger-subtle text-danger-emphasis border-danger-subtle rounded-3 btn-sm"},[...i[10]||(i[10]=[e("i",{class:"bi bi-trash-fill"},null,-1)])])])]),i[14]||(i[14]=e("hr",null,null,-1)),e("div",yt,[e("a",{role:"button",class:B(["card-header d-flex text-decoration-none align-items-center",{"border-bottom-0":!$.value}]),style:{cursor:"pointer"},onClick:i[7]||(i[7]=k=>$.value=!$.value)},[e("small",null,[i[11]||(i[11]=O(".conf ",-1)),s(n,{t:"File"})]),i[12]||(i[12]=e("i",{class:"bi bi-chevron-down ms-auto"},null,-1))],2),$.value?(v(),h("div",xt,[e("textarea",{class:"form-control rounded-3",value:d.b.content,disabled:"",style:{height:"300px","font-family":"var(--bs-font-monospace),sans-serif !important"}},null,8,_t)])):N("",!0)]),i[15]||(i[15]=e("hr",null,null,-1)),e("div",wt,[e("span",null,[i[13]||(i[13]=e("i",{class:"bi bi-database me-1"},null,-1)),s(n,{t:"Database File"})]),e("i",{class:B(["bi ms-auto",[d.b.database?"text-success bi-check-circle-fill":"text-danger bi-x-circle-fill"]])},null,2)])])]))}},Ct=M(kt,[["__scopeId","data-v-c65cdc10"]]),$t={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll",ref:"editConfigurationContainer"},St={class:"d-flex h-100 w-100"},Nt={class:"modal-dialog-centered dashboardModal w-100 h-100 overflow-x-scroll flex-column gap-3 mx-3"},Pt={class:"my-5 d-flex gap-3 flex-column position-relative"},Bt={class:"title"},Rt={class:"d-flex mb-3"},Dt={class:"mb-0"},Lt={class:"position-relative d-flex flex-column gap-3"},Wt={class:"text-center title",key:"spinner"},Vt={class:"card my-0 rounded-3",key:"noBackups"},Ot={class:"card-body text-center text-muted"},It={__name:"configurationBackupRestore",emits:["close","refreshPeersList"],setup(d,{emit:r}){const t=A(),f=y([]),o=y(!0),g=r;z(()=>{u()});const u=()=>{o.value=!0,I("/api/getWireguardConfigurationBackup",{configurationName:t.params.id},c=>{f.value=c.data,o.value=!1})},x=()=>{I("/api/createWireguardConfigurationBackup",{configurationName:t.params.id},c=>{f.value=c.data,o.value=!1})};return(c,a)=>(v(),h("div",$t,[e("div",St,[e("div",Nt,[e("div",Pt,[e("div",Bt,[e("div",Rt,[e("h4",Dt,[s(n,{t:"Backup & Restore"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:a[0]||(a[0]=b=>c.$emit("close"))})]),e("button",{onClick:a[1]||(a[1]=b=>x()),class:"btn bg-primary-subtle text-primary-emphasis border-primary-subtle rounded-3 w-100"},[a[4]||(a[4]=e("i",{class:"bi bi-plus-circle-fill me-2"},null,-1)),s(n,{t:"Create Backup"})])]),e("div",Lt,[s(Z,{name:"list1"},{default:U(()=>[o.value&&f.value.length===0?(v(),h("div",Wt,[...a[5]||(a[5]=[e("div",{class:"spinner-border"},null,-1)])])):!o.value&&f.value.length===0?(v(),h("div",Vt,[e("div",Ot,[a[6]||(a[6]=e("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),s(n,{t:"No backup yet, click the button above to create backup."})])])):N("",!0),(v(!0),h(V,null,K(f.value,b=>(v(),R(Ct,{onRefresh:a[2]||(a[2]=_=>u()),onRefreshPeersList:a[3]||(a[3]=_=>g("refreshPeersList")),b,key:b.filename},null,8,["b"]))),128))]),_:1})])])])])],512))}},Mt=M(It,[["__scopeId","data-v-1f718118"]]),Ht={id:"editPeerSettingsOverride"},Kt={class:"mb-0"},Tt={class:"mb-3 text-muted"},Ut={class:"d-flex gap-2 flex-column"},zt={for:"override_DNS",class:"form-label"},At={class:"text-muted"},Et=["disabled"],Ft={class:"invalid-feedback"},Jt={for:"override_EndpointAllowedIPs",class:"form-label"},jt={class:"text-muted"},Yt=["disabled"],qt={class:"invalid-feedback"},Gt={for:"override_ListenPort",class:"form-label"},Zt={class:"text-muted"},Qt=["disabled"],Xt={class:"invalid-feedback"},es={for:"override_MTU",class:"form-label"},ts={class:"text-muted"},ss=["disabled"],ns={class:"invalid-feedback"},os={for:"override_PeerRemoteEndpoint",class:"form-label"},ls={class:"text-muted"},is=["disabled"],as={for:"override_persistent_keepalive",class:"form-label"},ds={class:"text-muted"},rs=["disabled"],us={class:"invalid-feedback"},cs={class:"d-flex mt-1 gap-2"},ms=ie({__name:"editPeerSettingsOverride",props:["configuration"],setup(d){const r=d,t=y(!1),f=y({...r.configuration.Info.OverridePeerSettings}),o=y(!1),g=y("");z(()=>{document.querySelectorAll("#editPeerSettingsOverride input").forEach(c=>c.addEventListener("change",()=>{o.value=!0}))});const u=()=>{f.value=r.configuration.Info.OverridePeerSettings,o.value=!1},x=async()=>{document.querySelectorAll("#editPeerSettingsOverride input").forEach(c=>c.classList.remove("is-invalid","is-valid")),await L("/api/updateWireguardConfigurationInfo",{Name:r.configuration.Name,Key:"OverridePeerSettings",Value:f.value},c=>{c.status?(o.value=!1,r.configuration.Info.OverridePeerSettings=f.value,document.querySelectorAll("#editPeerSettingsOverride input").forEach(a=>a.classList.add("is-valid"))):(g.value=c.message,document.querySelector(`#override_${c.data}`).classList.add("is-invalid"))})};return(c,a)=>(v(),h("div",Ht,[e("h5",Kt,[s(n,{t:"Override Peer Settings"})]),e("h6",Tt,[e("small",null,[s(n,{t:"Only apply to peers in this configuration"})])]),e("div",Ut,[e("div",null,[e("label",zt,[e("small",At,[s(n,{t:"DNS"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:t.value,"onUpdate:modelValue":a[0]||(a[0]=b=>f.value.DNS=b),id:"override_DNS"},null,8,Et),[[S,f.value.DNS]]),e("div",Ft,P(g.value),1)]),e("div",null,[e("label",Jt,[e("small",jt,[s(n,{t:"Endpoint Allowed IPs"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:t.value,"onUpdate:modelValue":a[1]||(a[1]=b=>f.value.EndpointAllowedIPs=b),id:"override_EndpointAllowedIPs"},null,8,Yt),[[S,f.value.EndpointAllowedIPs]]),e("div",qt,P(g.value),1)]),e("div",null,[e("label",Gt,[e("small",Zt,[s(n,{t:"Listen Port"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:t.value,"onUpdate:modelValue":a[2]||(a[2]=b=>f.value.ListenPort=b),id:"override_ListenPort"},null,8,Qt),[[S,f.value.ListenPort]]),e("div",Xt,P(g.value),1)]),e("div",null,[e("label",es,[e("small",ts,[s(n,{t:"MTU"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:t.value,"onUpdate:modelValue":a[3]||(a[3]=b=>f.value.MTU=b),id:"override_MTU"},null,8,ss),[[S,f.value.MTU]]),e("div",ns,P(g.value),1)]),e("div",null,[e("label",os,[e("small",ls,[s(n,{t:"Peer Remote Endpoint"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:t.value,"onUpdate:modelValue":a[4]||(a[4]=b=>f.value.PeerRemoteEndpoint=b),id:"override_PeerRemoteEndpoint"},null,8,is),[[S,f.value.PeerRemoteEndpoint]])]),e("div",null,[e("label",as,[e("small",ds,[s(n,{t:"Persistent Keepalive"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:t.value,"onUpdate:modelValue":a[5]||(a[5]=b=>f.value.PersistentKeepalive=b),id:"override_PersistentKeepalive"},null,8,rs),[[S,f.value.PersistentKeepalive]]),e("div",us,P(g.value),1)]),e("div",cs,[e("button",{class:B([{disabled:!o.value},"btn btn-sm bg-secondary-subtle border-secondary-subtle text-secondary-emphasis rounded-3 shadow ms-auto"]),onClick:a[6]||(a[6]=b=>u())},[a[8]||(a[8]=e("i",{class:"bi bi-arrow-clockwise me-2"},null,-1)),s(n,{t:"Reset"})],2),e("button",{class:B([{disabled:!o.value},"btn btn-sm bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 shadow"]),onClick:a[7]||(a[7]=b=>x())},[a[9]||(a[9]=e("i",{class:"bi bi-save-fill me-2"},null,-1)),s(n,{t:"Save"})],2)])])]))}}),fs={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0",ref:"editConfigurationContainer"},gs={class:"w-100 h-100 overflow-y-scroll"},bs={class:"container d-flex h-100 w-100"},vs={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},ps={class:"card rounded-3 shadow flex-grow-1"},hs={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4"},ys={class:"mb-0"},xs={class:"card-body px-4 pb-4"},_s={class:"d-flex gap-2 flex-column"},ws={key:0,class:"d-flex align-items-center gap-3"},ks={class:"text-muted"},Cs={class:"d-flex align-items-center gap-3"},$s={class:"text-muted",style:{"word-break":"keep-all"}},Ss={class:"ms-auto",style:{"word-break":"break-all"}},Ns={class:"d-flex"},Ps={for:"configuration_private_key",class:"form-label"},Bs={class:"text-muted d-block"},Rs={class:"form-check form-switch ms-auto"},Ds=["disabled"],Ls={for:"configuration_ipaddress_cidr",class:"form-label"},Ws={class:"text-muted"},Vs=["disabled"],Os={for:"configuration_listen_port",class:"form-label"},Is={class:"text-muted"},Ms=["disabled"],Hs={class:"accordion mt-2",id:"editConfigurationOptionalAccordion"},Ks={class:"accordion-item"},Ts={class:"accordion-header"},Us={class:"accordion-button collapsed px-3 py-2",type:"button","data-bs-toggle":"collapse","data-bs-target":"#editOptionalAccordionCollapse"},zs={class:"text-muted"},As={id:"editOptionalAccordionCollapse",class:"accordion-collapse collapse","data-bs-parent":"#editConfigurationOptionalAccordion"},Es={class:"accordion-body d-flex flex-column gap-3"},Fs=["for"],Js={class:"text-muted"},js=["disabled","onUpdate:modelValue","id"],Ys=["for"],qs={class:"text-muted"},Gs=["disabled","onUpdate:modelValue","id"],Zs={class:"d-flex align-items-center gap-2 mt-1"},Qs=["disabled"],Xs=["disabled"],en={class:"mb-3"},tn={class:"d-flex gap-2 flex-column"},ln={__name:"editConfiguration",props:{configurationInfo:Object},emits:["changed","close","refresh","dataChanged"],setup(d,{emit:r}){const t=d,f=Y(),o=H(),g=y(!1),u=J(JSON.parse(JSON.stringify(t.configurationInfo))),x=y(!1),c=y(!1),a=J({PrivateKey:!0,IPAddress:!0,ListenPort:!0}),b=()=>{f.checkWGKeyLength(u.PrivateKey)?(a.PrivateKey=!0,u.PublicKey=window.wireguard.generatePublicKey(u.PrivateKey)):a.PrivateKey=!1},_=()=>{c.value=!1,Object.assign(u,JSON.parse(JSON.stringify(t.configurationInfo)))},w=r,$=()=>{g.value=!0,L("/api/updateWireguardConfiguration",u,W=>{g.value=!1,W.status?(o.newMessage("Server","Configuration saved","success"),c.value=!1,w("dataChanged",W.data)):o.newMessage("Server",W.message,"danger")})},m=y(!1);q(u,()=>{c.value=JSON.stringify(u)!==JSON.stringify(t.configurationInfo)},{deep:!0});const i=y(!1),k=y(!1),E=y(!1);return(W,l)=>(v(),h("div",fs,[e("div",gs,[s(Z,{name:"zoom"},{default:U(()=>[i.value?(v(),R(Te,{key:0,name:"EditRawConfigurationFile",onClose:l[0]||(l[0]=p=>i.value=!1)})):N("",!0),E.value?(v(),R(et,{key:"DeleteConfiguration",onBackup:l[1]||(l[1]=p=>k.value=!0),onClose:l[2]||(l[2]=p=>E.value=!1)})):N("",!0),k.value?(v(),R(Mt,{key:2,onClose:l[3]||(l[3]=p=>k.value=!1),onRefreshPeersList:l[4]||(l[4]=p=>w("refresh"))})):N("",!0)]),_:1}),e("div",bs,[e("div",vs,[e("div",ps,[e("div",hs,[e("h4",ys,[s(n,{t:"Configuration Settings"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:l[5]||(l[5]=p=>W.$emit("close"))})]),e("div",xs,[e("div",_s,[m.value?N("",!0):(v(),h("div",ws,[e("small",ks,[s(n,{t:"Name"})]),e("small",null,P(u.Name),1),e("button",{onClick:l[6]||(l[6]=p=>m.value=!0),class:"btn btn-sm bg-danger-subtle border-danger-subtle text-danger-emphasis rounded-3 ms-auto"},[s(n,{t:"Update Name"})])])),m.value?(v(),R(pe,{key:1,onClose:l[7]||(l[7]=p=>m.value=!1),"configuration-name":u.Name},null,8,["configuration-name"])):(v(),h(V,{key:2},[l[24]||(l[24]=e("hr",null,null,-1)),e("div",Cs,[e("small",$s,[s(n,{t:"Public Key"})]),e("small",Ss,P(u.PublicKey),1)]),l[25]||(l[25]=e("hr",null,null,-1)),e("div",null,[e("div",Ns,[e("label",Ps,[e("small",Bs,[s(n,{t:"Private Key"})])]),e("div",Rs,[C(e("input",{class:"form-check-input",type:"checkbox",role:"switch",id:"editPrivateKeySwitch","onUpdate:modelValue":l[8]||(l[8]=p=>x.value=p)},null,512),[[ae,x.value]]),l[18]||(l[18]=e("label",{class:"form-check-label",for:"editPrivateKeySwitch"},[e("small",null,"Edit")],-1))])]),C(e("input",{type:"text",class:B(["form-control form-control-sm rounded-3",{"is-invalid":!a.PrivateKey}]),disabled:g.value||!x.value,onKeyup:l[9]||(l[9]=p=>b()),"onUpdate:modelValue":l[10]||(l[10]=p=>u.PrivateKey=p),id:"configuration_private_key"},null,42,Ds),[[S,u.PrivateKey]])]),e("div",null,[e("label",Ls,[e("small",Ws,[s(n,{t:"IP Address/CIDR"})])]),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:g.value,"onUpdate:modelValue":l[11]||(l[11]=p=>u.Address=p),id:"configuration_ipaddress_cidr"},null,8,Vs),[[S,u.Address]])]),e("div",null,[e("label",Os,[e("small",Is,[s(n,{t:"Listen Port"})])]),C(e("input",{type:"number",class:"form-control form-control-sm rounded-3",disabled:g.value,"onUpdate:modelValue":l[12]||(l[12]=p=>u.ListenPort=p),id:"configuration_listen_port"},null,8,Ms),[[S,u.ListenPort]])]),e("div",Hs,[e("div",Ks,[e("h2",Ts,[e("button",Us,[e("small",zs,[s(n,{t:"Optional Settings"})])])]),e("div",As,[e("div",Es,[(v(),h(V,null,K(["Table","PreUp","PreDown","PostUp","PostDown"],p=>e("div",null,[e("label",{for:"configuration_"+p,class:"form-label"},[e("small",Js,[s(n,{t:p},null,8,["t"])])],8,Fs),C(e("input",{type:"text",class:"form-control form-control-sm rounded-3",disabled:g.value,"onUpdate:modelValue":F=>u[p]=F,id:"configuration_"+p},null,8,js),[[S,u[p]]])])),64)),d.configurationInfo.Protocol==="awg"?(v(),h(V,{key:0},K(["Jc","Jmin","Jmax","S1","S2","H1","H2","H3","H4"],p=>e("div",null,[e("label",{for:"configuration_"+p,class:"form-label"},[e("small",qs,[s(n,{t:p},null,8,["t"])])],8,Ys),C(e("input",{type:"number",class:"form-control form-control-sm rounded-3",disabled:g.value,"onUpdate:modelValue":F=>u[p]=F,id:"configuration_"+p},null,8,Gs),[[S,u[p]]])])),64)):N("",!0)])])])]),e("div",Zs,[e("button",{class:"btn btn-sm bg-secondary-subtle border-secondary-subtle text-secondary-emphasis rounded-3 shadow ms-auto",onClick:l[13]||(l[13]=p=>_()),disabled:!c.value||g.value},[l[19]||(l[19]=e("i",{class:"bi bi-arrow-clockwise me-2"},null,-1)),s(n,{t:"Reset"})],8,Qs),e("button",{class:"btn btn-sm bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 shadow",disabled:!c.value||g.value,onClick:l[14]||(l[14]=p=>$())},[l[20]||(l[20]=e("i",{class:"bi bi-save-fill me-2"},null,-1)),s(n,{t:"Save"})],8,Xs)]),l[26]||(l[26]=e("hr",null,null,-1)),s(ms,{configuration:d.configurationInfo},null,8,["configuration"]),l[27]||(l[27]=e("hr",null,null,-1)),e("h5",en,[s(n,{t:"Danger Zone"})]),e("div",tn,[e("button",{onClick:l[15]||(l[15]=p=>k.value=!0),class:"btn bg-warning-subtle border-warning-subtle text-warning-emphasis rounded-3 text-start d-flex"},[l[21]||(l[21]=e("i",{class:"bi bi-copy me-auto"},null,-1)),s(n,{t:"Backup & Restore"})]),e("button",{onClick:l[16]||(l[16]=p=>i.value=!0),class:"btn bg-warning-subtle border-warning-subtle text-warning-emphasis rounded-3 d-flex"},[l[22]||(l[22]=e("i",{class:"bi bi-pen me-auto"},null,-1)),s(n,{t:"Edit Raw Configuration File"})]),e("button",{onClick:l[17]||(l[17]=p=>E.value=!0),class:"btn bg-danger-subtle border-danger-subtle text-danger-emphasis rounded-3 d-flex mt-4"},[l[23]||(l[23]=e("i",{class:"bi bi-trash-fill me-auto"},null,-1)),s(n,{t:"Delete Configuration"})])])],64))])])])])])])],512))}};export{ln as default};