mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-10-03 15:56:17 +00:00
8 lines
32 KiB
JavaScript
8 lines
32 KiB
JavaScript
import{_ as M,E as J,W as Y,o as z,H as q,D as H,r as y,I 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,a3 as X,d as N,s as D,j as R,F as V,i as K,C as ee,a4 as te,e as O,K as A,L as se,u as T,g as I,p as ne,q as oe,w as U,k as j,T as Z,J as le,v as ie}from"./index-B-jc5mKC.js";import{L as n}from"./localeText-DmTH4uVF.js";import{d as ae}from"./dayjs.min-CrcZDfUc.js";const de={class:"card rounded-3 flex-grow-1 bg-danger-subtle border-danger-subtle border shadow"},re={class:"card-body"},ue={class:"d-flex align-items-center gap-3 inputGroup"},ce=["value"],me={class:"mb-0"},fe={class:"d-flex mt-3"},ge=["disabled"],be={__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",de,[e("div",re,[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",ue,[e("input",{class:"form-control form-control-sm rounded-3",value:d.configurationName,disabled:""},null,8,ce),_[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",me,[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",fe,[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,ge)])])]))}},ve=M(be,[["__scopeId","data-v-33ea9576"]]),pe={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}}},he={class:"title"};function ye(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",he,[e("div",null,P(t.title),1)])],34)}const xe=M(pe,[["render",ye]]),_e={components:{Dropdown:xe},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())}},we=["theme"],ke=["readOnly","autofocus","value"];function Ce(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,ke),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(" ")),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(`
|
||
`)]),6)),[[x,g.contentValue]]),r[7]||(r[7]=O(`
|
||
`))],4)],4)],4)],14,we)}const $e=M(_e,[["render",Ce]]),Se={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},Ne={class:"container d-flex h-100 w-100"},Pe={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"1000px"}},Be={class:"card rounded-3 shadow flex-grow-1",id:"deleteConfigurationContainer"},Re={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},De={class:"mb-0"},Le={class:"card-body px-4 d-flex flex-column gap-3"},We={key:0,class:"alert alert-danger rounded-3 mb-0"},Ve={class:"mb-2"},Oe={class:"bg-body w-100 p-2 rounded-3"},Ie={class:"d-flex gap-2"},Me=["disabled"],He=["disabled"],Ke={__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",Se,[e("div",Ne,[e("div",Pe,[e("div",Be,[e("div",Re,[e("h5",De,[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",Le,[c.value?(v(),h("div",We,[e("div",Ve,[e("strong",null,[s(n,{t:"Failed to save configuration. Please see the following error message:"})])]),e("div",Oe,[e("pre",null,P(a.value),1)])])):N("",!0),s($e,{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",Ie,[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,Me),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,He)])])])])])]))}},Te={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},Ue={class:"container d-flex h-100 w-100"},ze={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},Ae={class:"card rounded-3 shadow flex-grow-1 bg-danger-subtle border-danger-subtle",id:"deleteConfigurationContainer"},Ee={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},Fe={class:"mb-0"},Je={class:"card-body px-4 text-muted"},je={class:"mb-0"},Ye={key:0},qe={key:1},Ge={key:2,class:"d-flex align-items-center gap-2"},Ze=["placeholder"],Qe=["disabled"],Xe={__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",Te,[e("div",Ue,[e("div",ze,[e("div",Ae,[e("div",Ee,[e("h5",Fe,[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",je,[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",Ye,[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",qe,[m[6]||(m[6]=e("i",{class:"bi bi-check-circle-fill me-2"},null,-1)),s(n,{t:"This configuration have "+b.value.length+" backups"},null,8,["t"])])):(v(),h("div",Ge,[m[9]||(m[9]=e("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),s(n,{t:"This configuration have 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,Ze),[[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,Qe)])])])])]))}},et={class:"card my-0 rounded-3"},tt={class:"card-body position-relative"},st={key:0,class:"position-absolute w-100 h-100 confirmationContainer start-0 top-0 rounded-3 d-flex p-2"},nt={class:"m-auto"},ot={class:"d-flex gap-2 align-items-center justify-content-center"},lt=["disabled"],it=["disabled"],at={key:0,class:"position-absolute w-100 h-100 confirmationContainer start-0 top-0 rounded-3 d-flex p-2"},dt={class:"m-auto"},rt={class:"d-flex gap-2 align-items-center justify-content-center"},ut=["disabled"],ct=["disabled"],mt={class:"d-flex gap-3"},ft={class:"d-flex flex-column"},gt={class:"text-muted"},bt={class:"d-flex flex-column"},vt={class:"text-muted"},pt={class:"d-flex gap-2 align-items-center ms-auto"},ht={class:"card rounded-3"},yt={key:0,class:"card-body"},xt=["value"],_t={class:"d-flex"},wt={__name:"backup",props:["b","delay"],emits:["refresh","refreshPeersList"],setup(d,{emit:r}){ne(m=>({b32c1fd8: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(`/fileDownload?file=${m.data}`,"_blank")})},w=oe(()=>t.delay+"s"),$=y(!1);return(m,i)=>(v(),h("div",et,[e("div",tt,[s(j,{name:"zoomReversed"},{default:U(()=>[f.value?(v(),h("div",st,[e("div",nt,[e("h5",null,[s(n,{t:"Are you sure to delete this backup?"})]),e("div",ot,[e("button",{class:"btn btn-danger rounded-3",disabled:c.value,onClick:i[0]||(i[0]=k=>a())},[s(n,{t:"Yes"})],8,lt),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,it)])])])):N("",!0)]),_:1}),s(j,{name:"zoomReversed"},{default:U(()=>[o.value?(v(),h("div",at,[e("div",dt,[e("h5",null,[s(n,{t:"Are you sure to restore this backup?"})]),e("div",rt,[e("button",{disabled:c.value,onClick:i[2]||(i[2]=k=>b()),class:"btn btn-success rounded-3"},[s(n,{t:"Yes"})],8,ut),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,ct)])])])):N("",!0)]),_:1}),e("div",mt,[e("div",ft,[e("small",gt,[s(n,{t:"Backup"})]),e("samp",null,P(d.b.filename),1)]),e("div",bt,[e("small",vt,[s(n,{t:"Backup Date"})]),O(" "+P(T(ae)(d.b.backupDate,"YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss")),1)]),e("div",pt,[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",ht,[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 ")),s(n,{t:"File"})]),i[12]||(i[12]=e("i",{class:"bi bi-chevron-down ms-auto"},null,-1))],2),$.value?(v(),h("div",yt,[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,xt)])):N("",!0)]),i[15]||(i[15]=e("hr",null,null,-1)),e("div",_t,[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)])])]))}},kt=M(wt,[["__scopeId","data-v-9f0c0156"]]),Ct={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll",ref:"editConfigurationContainer"},$t={class:"d-flex h-100 w-100"},St={class:"modal-dialog-centered dashboardModal w-100 h-100 overflow-x-scroll flex-column gap-3 mx-3"},Nt={class:"my-5 d-flex gap-3 flex-column position-relative"},Pt={class:"title"},Bt={class:"d-flex mb-3"},Rt={class:"mb-0"},Dt={class:"position-relative d-flex flex-column gap-3"},Lt={class:"text-center title",key:"spinner"},Wt={class:"card my-0 rounded-3",key:"noBackups"},Vt={class:"card-body text-center text-muted"},Ot={__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",Ct,[e("div",$t,[e("div",St,[e("div",Nt,[e("div",Pt,[e("div",Bt,[e("h4",Rt,[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",Dt,[s(Z,{name:"list1"},{default:U(()=>[o.value&&f.value.length===0?(v(),h("div",Lt,a[5]||(a[5]=[e("div",{class:"spinner-border"},null,-1)]))):!o.value&&f.value.length===0?(v(),h("div",Wt,[e("div",Vt,[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(kt,{onRefresh:a[2]||(a[2]=_=>u()),onRefreshPeersList:a[3]||(a[3]=_=>g("refreshPeersList")),b,key:b.filename},null,8,["b"]))),128))]),_:1})])])])])],512))}},It=M(Ot,[["__scopeId","data-v-1f718118"]]),Mt={id:"editPeerSettingsOverride"},Ht={class:"mb-0"},Kt={class:"mb-3 text-muted"},Tt={class:"d-flex gap-2 flex-column"},Ut={for:"override_DNS",class:"form-label"},zt={class:"text-muted"},At=["disabled"],Et={class:"invalid-feedback"},Ft={for:"override_EndpointAllowedIPs",class:"form-label"},Jt={class:"text-muted"},jt=["disabled"],Yt={class:"invalid-feedback"},qt={for:"override_ListenPort",class:"form-label"},Gt={class:"text-muted"},Zt=["disabled"],Qt={class:"invalid-feedback"},Xt={for:"override_MTU",class:"form-label"},es={class:"text-muted"},ts=["disabled"],ss={class:"invalid-feedback"},ns={for:"override_PeerRemoteEndpoint",class:"form-label"},os={class:"text-muted"},ls=["disabled"],is={for:"override_persistent_keepalive",class:"form-label"},as={class:"text-muted"},ds=["disabled"],rs={class:"invalid-feedback"},us={class:"d-flex mt-1 gap-2"},cs=le({__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",Mt,[e("h5",Ht,[s(n,{t:"Override Peer Settings"})]),e("h6",Kt,[e("small",null,[s(n,{t:"Only apply to peers in this configuration"})])]),e("div",Tt,[e("div",null,[e("label",Ut,[e("small",zt,[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,At),[[S,f.value.DNS]]),e("div",Et,P(g.value),1)]),e("div",null,[e("label",Ft,[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,jt),[[S,f.value.EndpointAllowedIPs]]),e("div",Yt,P(g.value),1)]),e("div",null,[e("label",qt,[e("small",Gt,[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,Zt),[[S,f.value.ListenPort]]),e("div",Qt,P(g.value),1)]),e("div",null,[e("label",Xt,[e("small",es,[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,ts),[[S,f.value.MTU]]),e("div",ss,P(g.value),1)]),e("div",null,[e("label",ns,[e("small",os,[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,ls),[[S,f.value.PeerRemoteEndpoint]])]),e("div",null,[e("label",is,[e("small",as,[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,ds),[[S,f.value.PersistentKeepalive]]),e("div",rs,P(g.value),1)]),e("div",us,[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)])])]))}}),ms={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0",ref:"editConfigurationContainer"},fs={class:"w-100 h-100 overflow-y-scroll"},gs={class:"container d-flex h-100 w-100"},bs={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},vs={class:"card rounded-3 shadow flex-grow-1"},ps={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4"},hs={class:"mb-0"},ys={class:"card-body px-4 pb-4"},xs={class:"d-flex gap-2 flex-column"},_s={key:0,class:"d-flex align-items-center gap-3"},ws={class:"text-muted"},ks={class:"d-flex align-items-center gap-3"},Cs={class:"text-muted",style:{"word-break":"keep-all"}},$s={class:"ms-auto",style:{"word-break":"break-all"}},Ss={class:"d-flex"},Ns={for:"configuration_private_key",class:"form-label"},Ps={class:"text-muted d-block"},Bs={class:"form-check form-switch ms-auto"},Rs=["disabled"],Ds={for:"configuration_ipaddress_cidr",class:"form-label"},Ls={class:"text-muted"},Ws=["disabled"],Vs={for:"configuration_listen_port",class:"form-label"},Os={class:"text-muted"},Is=["disabled"],Ms={class:"accordion mt-2",id:"editConfigurationOptionalAccordion"},Hs={class:"accordion-item"},Ks={class:"accordion-header"},Ts={class:"accordion-button collapsed px-3 py-2",type:"button","data-bs-toggle":"collapse","data-bs-target":"#editOptionalAccordionCollapse"},Us={class:"text-muted"},zs={id:"editOptionalAccordionCollapse",class:"accordion-collapse collapse","data-bs-parent":"#editConfigurationOptionalAccordion"},As={class:"accordion-body d-flex flex-column gap-3"},Es=["for"],Fs={class:"text-muted"},Js=["disabled","onUpdate:modelValue","id"],js=["for"],Ys={class:"text-muted"},qs=["disabled","onUpdate:modelValue","id"],Gs={class:"d-flex align-items-center gap-2 mt-1"},Zs=["disabled"],Qs=["disabled"],Xs={class:"mb-3"},en={class:"d-flex gap-2 flex-column"},on={__name:"editConfiguration",props:{configurationInfo:Object},emits:["changed","close","refresh"],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",ms,[e("div",fs,[s(Z,{name:"zoom"},{default:U(()=>[i.value?(v(),R(Ke,{key:0,name:"EditRawConfigurationFile",onClose:l[0]||(l[0]=p=>i.value=!1)})):N("",!0),E.value?(v(),R(Xe,{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(It,{key:2,onClose:l[3]||(l[3]=p=>k.value=!1),onRefreshPeersList:l[4]||(l[4]=p=>w("refresh"))})):N("",!0)]),_:1}),e("div",gs,[e("div",bs,[e("div",vs,[e("div",ps,[e("h4",hs,[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",ys,[e("div",xs,[m.value?N("",!0):(v(),h("div",_s,[e("small",ws,[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(ve,{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",ks,[e("small",Cs,[s(n,{t:"Public Key"})]),e("small",$s,P(u.PublicKey),1)]),l[25]||(l[25]=e("hr",null,null,-1)),e("div",null,[e("div",Ss,[e("label",Ns,[e("small",Ps,[s(n,{t:"Private Key"})])]),e("div",Bs,[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),[[ie,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,Rs),[[S,u.PrivateKey]])]),e("div",null,[e("label",Ds,[e("small",Ls,[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,Ws),[[S,u.Address]])]),e("div",null,[e("label",Vs,[e("small",Os,[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,Is),[[S,u.ListenPort]])]),e("div",Ms,[e("div",Hs,[e("h2",Ks,[e("button",Ts,[e("small",Us,[s(n,{t:"Optional Settings"})])])]),e("div",zs,[e("div",As,[(v(),h(V,null,K(["Table","PreUp","PreDown","PostUp","PostDown"],p=>e("div",null,[e("label",{for:"configuration_"+p,class:"form-label"},[e("small",Fs,[s(n,{t:p},null,8,["t"])])],8,Es),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",Ys,[s(n,{t:p},null,8,["t"])])],8,js),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,qs),[[S,u[p]]])])),64)):N("",!0)])])])]),e("div",Gs,[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,Zs),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,Qs)]),l[26]||(l[26]=e("hr",null,null,-1)),s(cs,{configuration:d.configurationInfo},null,8,["configuration"]),l[27]||(l[27]=e("hr",null,null,-1)),e("h5",Xs,[s(n,{t:"Danger Zone"})]),e("div",en,[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{on as default};
|