1import{d as ae,r as u,e as W,w as X,u as g,v as f,l as Z,x as e,A as t,Q as K,K as B,k as r,F as d,T as v,S as P,H as J,I as ee,R as de,Y as fe,J as me,P as pe}from"./@chart-BXmWMIfR.js";import{c2 as le,ag as ve,bM as ye,bo as ge,aa as Ie,ap as ke,al as Ne,ah as be,E as Y}from"./index-CPXi7tQh.js";import{h as _e}from"./main-DyYoFkp9.js";import{a as Se}from"./daemon.constants-CRyf_1x9.js";import"./virtual-interface.proposals-RqstxY_2.js";import{_ as we}from"./CanNotBeConfigured.vue_vue_type_script_setup_true_lang-ChxTgy3Q.js";import{_ as Ee}from"./CompanyLayout.vue_vue_type_script_setup_true_lang-DJH8IfCZ.js";import{u as Te}from"./router.service-3tQ1KB3D.js";import{u as h}from"./virtual-interface.service-BaPSr_AQ.js";import{i as Ve}from"./daemon-BQDMhjiH.js";import{v as Le,a as he}from"./virtual-interfaces.types-dT5G669T.js";import{s as Q}from"./@jimber-shared-components-BR90iqQf.js";import{P as j,_ as N}from"./PaneDetailItemsContainer-DaYlRjTW.js";import{P as te,_ as L}from"./PaneDetailsStack-BrBkyIMD.js";import{f as Ce}from"./general-functions-gMqkeI7q.js";import{_ as xe}from"./FirewallPolicyEntityChip.vue_vue_type_script_setup_true_lang-DVG6jQ52.js";import"./@ace-BEIQESsW.js";import"./@libsodium-BNugX1YT.js";import"./@moment-BLMuvzoS.js";import"./@formkit-pro-gPB7B6Jc.js";import"./CanNotBeConfiguredEntry.vue_vue_type_script_setup_true_lang-DowWtqNr.js";import"./multiple-logo-bg-C312Ls0j.js";import"./VirtualInterfaceDto-C-CCp2-v.js";import"./daemon.service-De7mUM2Y.js";import"./group.service-CZ8SBJP4.js";import"./native-device.service-Dbvde-Yu.js";import"./native-network.service-CpOjYiG5.js";import"./UpdateTimeSlotDto-CGZiWewb.js";import"./IDnsSchedule-BgYgs82Q.js";import"./NativeNetworkDto-vTFJGiAB.js";import"./SimpleUserDto-XWGcraB2.js";import"./niac.device.service-DxJK8LlA.js";import"./niac.service-DID2eRHM.js";import"./server.service-CI5mki0q.js";function re(m){return m.isActive&&!!m.networkController&&Ve(m.networkController)}const De={class:"flex flex-wrap gap-2"},Re={class:"whitespace-pre-wrap break-all"},$e={class:"min-h-[44px]"},Pe=ae({__name:"VirtualInterfaceDetails",props:{companyName:{},virtualInterface:{}},setup(m){const p=m,i=u(),C=u(!1),w=u(),E=u([]),x=u(!1),c=u(!1),I=u(0),b=u(70),_=u(0);let A=0,O=0;const k={DETAILS:"Details",LOGS:"Logs"},D=u(k.DETAILS),q=[{key:"cidr",displayName:"Network",enableSorting:!1},{key:"sources",displayName:"Source",enableSorting:!1}],H=[{key:"cidr",displayName:"Network",enableSorting:!1},{key:"routedNetworkName",displayName:"Routed Network",enableSorting:!1}],G=[{key:"level",displayName:"Level",enableSorting:!1},{key:"timestamp",displayName:"Timestamp",enableSorting:!1},{key:"message",displayName:"Message",enableSorting:!1}],a={debug:"bg-gray-200 text-gray-800 dark:bg-gray-700 dark:text-gray-100",info:"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-100",warning:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-100",error:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-100"},l={group:"GROUP",server:"SERVER",nativeDevice:"NATIVE_DEVICE",userDevice:"USER_DEVICE",nativeNetwork:"NATIVE_NETWORK",networkIsolationUser:"NETWORK_ISOLATION_USER",niac:"NIAC",niacDevice:"NIAC_DEVICE"};function s(o){return l[o]??o}function R(o){const n=new Set;return o.filter(T=>{const V=`${T.sourceType}:${T.sourceName}`;return n.has(V)?!1:(n.add(V),!0)})}function M(o){return a[o]}function U(o){(o===k.DETAILS||o===k.LOGS)&&(D.value=o)}const $=W(()=>p.virtualInterface.enabled?i.value?.ready?re(p.virtualInterface)?"Established":"Down":"Not ready":"Disabled"),S=W(()=>p.virtualInterface.localId?p.virtualInterface.localId:p.virtualInterface.authenticationMethod==="certificate"?"From local certificate":p.virtualInterface.localEndpoint),ne=W(()=>x.value?"Loading logs...":c.value?"Could not load the VTI logs.":"No VTI logs received yet.");async function se(){C.value=!0,w.value=void 0;try{const{getEffectiveIpsecConfiguration:o}=h();i.value=await o({companyName:p.companyName,id:p.virtualInterface.id})}catch{i.value=void 0,w.value="Could not load the effective IPsec configuration."}finally{C.value=!1}}async function z(o=!1){const n=++A;o||(O+=1,x.value=!0),c.value=!1;try{const{getVirtualInterfaceLogs:T}=h(),V=await T({companyName:p.companyName,id:p.virtualInterface.id,skip:I.value,take:b.value});n===A&&(E.value=V.logs,_.value=V.size)}catch{n===A&&(o||(E.value=[],_.value=0),c.value=!0)}finally{o||(O-=1,x.value=O>0)}}const{pause:oe,resume:ie}=le(()=>z(!0),1e4,{immediate:!1});function ue(){I.value+=b.value,z()}function ce(){I.value=Math.max(0,I.value-b.value),z()}return X(()=>p.virtualInterface.id,()=>{I.value=0,se(),D.value===k.LOGS&&z()},{immediate:!0}),X(D,o=>{if(o===k.LOGS){z(),ie();return}oe()}),(o,n)=>{const T=Z("Tab"),V=Z("TabsWrapper");return f(),g(V,{class:"mt-0 overflow-auto","selected-tab":D.value,onSelectedTabChanged:U},{default:e(()=>[t(T,{title:k.DETAILS},{default:e(()=>[t(te,null,{default:e(()=>[C.value?(f(),g(L,{key:0},{title:e(()=>[...n[0]||(n[0]=[r("Information",-1)])]),default:e(()=>[t(j,null,{default:e(()=>[t(N,{label:"Status"},{default:e(()=>[...n[1]||(n[1]=[r("Loading effective configuration...",-1)])]),_:1})]),_:1})]),_:1})):w.value?(f(),g(L,{key:1},{title:e(()=>[...n[2]||(n[2]=[r("Information",-1)])]),default:e(()=>[t(j,null,{default:e(()=>[t(N,{label:"Status"},{default:e(()=>[r(d(w.value),1)]),_:1})]),_:1})]),_:1})):i.value?(f(),K(J,{key:2},[t(L,null,{title:e(()=>[...n[3]||(n[3]=[r("Information",-1)])]),default:e(()=>[t(j,null,{default:e(()=>[t(N,{label:"State"},{default:e(()=>[r(d($.value),1)]),_:1}),t(N,{label:"Readiness"},{default:e(()=>[t(ve,{value:i.value.ready,"true-label":"Ready","false-label":"Not ready"},null,8,["value"])]),_:1}),t(N,{label:"Interface"},{default:e(()=>[r(d(m.virtualInterface.portName),1)]),_:1}),t(N,{label:"Local Endpoint"},{default:e(()=>[r(d(m.virtualInterface.localEndpoint),1)]),_:1}),t(N,{label:"Remote Endpoint"},{default:e(()=>[r(d(m.virtualInterface.remoteEndpoint),1)]),_:1}),t(N,{label:"Local ID"},{default:e(()=>[r(d(S.value),1)]),_:1}),t(N,{label:"Remote ID"},{default:e(()=>[r(d(m.virtualInterface.remoteId||m.virtualInterface.remoteEndpoint),1)]),_:1}),t(N,{label:"Enabled"},{default:e(()=>[r(d(m.virtualInterface.enabled?"Yes":"No"),1)]),_:1})]),_:1})]),_:1}),t(L,null,{title:e(()=>[...n[4]||(n[4]=[r("Local Protected Networks",-1)])]),default:e(()=>[t(v(Q),{headers:q,data:i.value.localTrafficSelectors,class:"rounded-md","empty-message":"No local protected networks were resolved."},{"data-sources":e(({row:y})=>[P("div",De,[(f(!0),K(J,null,ee(R(y.sources),F=>(f(),g(xe,{key:`${F.sourceType}-${F.sourceName}
1`,type:s(F.sourceType),"display-name":F.sourceName},null,8,["type","display-name"]))),128))])]),_:1},8,["data"])]),_:1}),t(L,null,{title:e(()=>[...n[5]||(n[5]=[r("Remote Protected Networks",-1)])]),default:e(()=>[t(v(Q),{headers:H,data:i.value.remoteTrafficSelectors,class:"rounded-md","empty-message":"No remote protected networks were resolved."},null,8,["data"])]),_:1}),i.value.warnings.length?(f(),g(L,{key:0},{title:e(()=>[...n[6]||(n[6]=[r("Configuration Warnings",-1)])]),default:e(()=>[(f(!0),K(J,null,ee(i.value.warnings,y=>(f(),g(v(ye),{key:y,class:"[&>strong]:hidden"},{default:e(()=>[r(d(y),1)]),_:2},1024))),128))]),_:1})):B("",!0)],64)):B("",!0)]),_:1})]),_:1},8,["title"]),t(T,{title:k.LOGS},{default:e(()=>[t(te,null,{default:e(()=>[t(L,{class:"[&_:has(>table)]:!max-h-[75vh]"},{title:e(()=>[...n[7]||(n[7]=[r("VTI Logs",-1)])]),default:e(()=>[t(v(Q),{headers:G,data:E.value,class:"rounded-md","empty-message":ne.value},{"data-level":e(({row:y})=>[P("span",{class:de(["rounded px-2 py-1 capitalize",M(y.level)])},d(y.level),3)]),"data-timestamp":e(({row:y})=>[r(d(v(Ce)(y.timestamp)),1)]),"data-message":e(({row:y})=>[P("span",Re,d(y.message),1)]),_:1},8,["data","empty-message"]),P("div",$e,[_.value>0?(f(),g(v(ge),{key:0,take:b.value,skip:I.value,size:_.value,filtered:E.value.length,class:"mb-3","onUpdate:next":ue,"onUpdate:previous":ce},null,8,["take","skip","size","filtered"])):B("",!0)])]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["selected-tab"])}}}),Ae={class:"flex items-center"},gt=ae({__name:"VirtualInterfaces",props:{companyName:{}},setup(m){const p=u({enableSearch:!0,options:["all"]}),i=m,C=u(),w=u([]),E=u([]),x=u(new Map),c=u(),I=u(!1);let b,_=!1;const A=W(()=>({displayName:"Virtual Interface",displayKey:"portName",actions:{create:{mode:"route",to:{name:"createVirtualInterface",params:{companyName:i.companyName}}},update:{mode:"route",to:a=>({name:"updateVirtualInterface",params:{companyName:i.companyName,virtualInterfaceId:a.id}})},delete:{mode:"confirm",submitHandler:a=>{const{deleteVirtualInterface:l}=h();return l({companyName:i.companyName,id:a.id})}}}})),O={getEntities:async({pagination:a,filters:l,orderBy:s,advancedFilters:R})=>{const M=JSON.parse(JSON.stringify(R));M?.length&&M.forEach(S=>{S.field==="networkController"&&(S.field="hostname")}
1);const{getVirtualInterfaces:U}=h(),$={companyName:i.companyName,search:l?.searchString,skip:a?.skip,take:a?.take,orderBy:s,filters:M};b=$;try{const S=await U({...$,skip:$.skip,take:$.take});return k(S.virtualInterfaces),{size:S.size,entities:S.virtualInterfaces}}catch{Y({type:"error",text:"Couldn't fetch virtual interfaces"})}return{size:0,entities:[]}}};function k(a){if(x.value=new Map(a.map(s=>[s.id,re(s)])),!c.value)return;const l=a.find(s=>s.id===c.value?.id);l&&(c.value=l)}async function D(){if(!b||_)return;const a=b;_=!0;try{const{getVirtualInterfaces:l}=h(),s=await l({...a,skip:a.skip,take:a.take});b===a&&k(s.virtualInterfaces)}catch{}finally{_=!1}}le(D,Se);const q=async a=>{const{updateVirtualInterface:l}=h();try{await l({companyName:i.companyName,id:a.id,updateVirtualInterfaceDto:{enabled:!a.enabled}}),Y({text:`Virtual Interface ${a.portName} successfully ${a.enabled?"disabled":"enabled"}`,type:"success"})}catch{Y({text:"Failed to update Virtual Interface",type:"error"})}finally{C.value?.doReload()}};function H(a){c.value=a}function G(){c.value=void 0}return fe(async()=>{const{getOnPremiseNetworkControllers:a}=Te(),{getVirtualInterfaces:l}=h(),[s,R]=await Promise.all([a({companyName:i.companyName,onlyWithPorts:!0}),l({companyName:i.companyName,skip:0,take:1})]);w.value=s.networkControllers,E.value=R.virtualInterfaces,I.value=!0}),(a,l)=>(f(),g(Ee,null,{sectionTitle:e(()=>[...l[2]||(l[2]=[r("Native Networks",-1)])]),pageTitle:e(()=>[...l[3]||(l[3]=[r("Virtual Interfaces",-1)])]),default:e(()=>[I.value&&!w.value.length&&!E.value.length?(f(),g(we,{key:0,"entity-type":"Virtual Interfaces","main-dependencies":[{name:"on-premise Network Controllers",path:"NetworkControllers",icon:v(_e)}]},{message:e(()=>[...l[4]||(l[4]=[r(" To enable Virtual Interfaces, on-premise Network Controllers that have previously connected to SASE must be available. ",-1)])]),_:1},8,["main-dependencies"])):I.value?(f(),g(v(Ie),{key:1,ref_key:"crudTable",ref:C,"open-with-single-click":"",headers:v(he),"entity-provider":O,"entity-options":A.value,"search-options":p.value,"empty-message":"No virtual interfaces found","backend-pagination-sorting":!0,pagination:{itemsPerPage:50},"show-advanced-filter":!0,"advanced-filter-fields":v(Le),"show-reload-button":!0,"show-get-started-component-if-empty":!0,onOpenEntity:H},{"data-portName":e(({row:s})=>[P("div",Ae,[t(Ne,{active:x.value.get(s.id)??!1,disabled:!s.enabled},null,8,["active","disabled"]),r(" "+d(s.portName),1)])]),"data-enabled":e(({row:s})=>[P("div",{onClick:l[0]||(l[0]=me(()=>{},["stop"]))},[t(v(ke),{enabled:s.enabled,onClicked:R=>q(s)},null,8,["enabled","onClicked"])])]),_:1},8,["headers","entity-options","search-options","advanced-filter-fields"])):B("",!0),t(v(be),{show:!!c.value,onClose:l[1]||(l[1]=s=>G())},pe({default:e(()=>[c.value?(f(),g(Pe,{key:0,"company-name":i.companyName,"virtual-interface":c.value},null,8,["company-name","virtual-interface"])):B("",!0)]),_:2},[c.value?{name:"pageTitle",fn:e(()=>[r(d(c.value.portName),1)]),key:"0"}:void 0]),1032,["show"])]),_:1}))}});export{gt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.