PageSourceSearch

https://www.thumbquilttrail.com/static/js/mod-dvm-main-c6441fcf.98a649eb.chunk.js

js thumbquilttrail.com collected 2026-09-25 10:17:38 UTC 63,005 bytes, 5 lines download raw bytes

1"use strict";(()=>{(self.webpackChunkflatui=self.webpackChunkflatui||[]).push([[22299,75187,76225,83212],{11584:(ue,ne,n)=>{n.d(ne,{m:()=>W});var e=n(33628),c=n.n(e);const W=s=>({assignedpkg:K,type:J,data:I})=>{s=s||((l,b)=>{const M=`${l}-${b}`;return(0,e.get)(K,["byId",M])||{deviceOid:l,vdomOid:b}});const U=I.oid;if(J=="device"){I=I;const l=s(U,0),b=s(U,3).fwm_prof?{fwm_prof:s(U,3).fwm_prof}:{};let M,A;return I.vdom_status===0?M=s(U,3):A=s(U,1),(0,e.isNil)(I.vid)&&(delete l?.vdomOid,delete M?.vdomOid,delete A?.vdomOid),!l&&!M&&!A?null:{...l,...M,...A,...b}}if(J=="vdom"){I=I;const l=I.did,b={...s(l,U)};return delete b?.fwm_prof,b}return null}},21745:(ue,ne,n)=>{n.d(ne,{uz:()=>G,aj:()=>j,jZ:()=>g});var e=n(33628);const c=O("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),W=O("rp,rt"),s=Object.assign({},W,c),K=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,J=/([^#-~ |!])/g,I=O("area,br,col,hr,img,wbr"),z=Object.assign({},c,O("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),U=Object.assign({},W,O("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),l=O("background,cite,href,longdesc,src,xlink:href,xml:base"),b=O("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),M=O("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode
1-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",!0),A=Object.assign({},l,M,b),X=O("script,style"),R=Object.assign({},I,z,U,s);function j(m){const w=[],_=e.noop;return o(m,d(w,_)),w.join("")}function g(m){const w=[];return d(w,e.noop).chars(m),w.join("")}function o(m,w){m==null?m="":typeof m!="string"&&(m=""+m);let _=q(m);if(!_)return"";let E=5;do{if(E===0)throw"Failed to sanitize html because the input is unstable";E--,m=_.innerHTML,_=q(m)}while(_&&m!==_.innerHTML);let u=_.firstChild;for(;u;){switch(u.nodeType){case 1:w.start(u.nodeName.toLowerCase(),te(u.attributes));break;case 3:w.chars(u.textContent||"");break}let F;if(!(F=u.firstChild)&&(u.nodeType===1&&w.end(u.nodeName.toLowerCase()),F=B("nextSibling",u),!F))for(;F==null&&(u=B("parentNode",u),u!==_);)F=B("nextSibling",u),u.nodeType===1&&w.end(u.nodeName.toLowerCase());u=F}for(;_&&(u=_.firstChild);)_.removeChild(u)}function d(m,w){let _=!1;const E=(0,e.bind)(m.push,m);return{start:function(u,F){u=(0,e.lowerCase)(u),!_&&X[u]&&(_=u),!_&&R[u]===!0&&(E("<"),E(u),(0,e.forEach)(F,function(le,oe){const ie=(0,e.lowerCase)(oe),me=u==="img"&&ie==="src"||ie==="background";A[ie]===!0&&(l[ie]!==!0||w(le,me))&&(E(" "),E(oe),E('="'),E(h(le)),E('"'))}),E(">"))},end:function(u){u=(0,e.lowerCase)(u),!_&&R[u]===!0&&I[u]!==!0&&(E("</"),E(u),E(">")),u==_&&(_=!1)},chars:function(u){_||E(h(u))}}}function h(m){return m.replace(/&/g,"&amp;").replace(K,w=>
1{const _=w.charCodeAt(0),E=w.charCodeAt(1);return"&#"+((_-55296)*1024+(E-56320)+65536)+";"}).replace(J,w=>"&#"+w.charCodeAt(0)+";").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function O(m,w){return L(m.split(","),w)}function L(m,w){const _={};for(let E=0;E<m.length;E++)_[w?(0,e.lowerCase)(m[E]):m[E]]=!0;return _}function te(m){const w={};for(let _=0,E=m.length;_<E;_++){const u=m[_];w[u.name]=u.value}return w}const p=window.Node.prototype.contains||function(m){return!!(this.compareDocumentPosition(m)&16)};function B(m,w){const _=w[m];if(_&&p.call(w,_))throw`Failed to sanitize html because the element is clobbered: ${w.outerHTML||w.outerText}`;return _}const q=function(m,w){if(u())return F;if(!w||!w.implementation)throw new Error("Can't create an inert html document");const E=w.implementation.createHTMLDocument("inert").documentElement.querySelector("body");return le;function u(){try{return!!F("")}catch{return!1}}function F(oe){oe="<remove></remove>"+oe;try{const ie=new DOMParser().parseFromString(oe,"text/html").body;return ie.firstChild?.remove(),ie}catch{return null}}function le(oe){return E&&(E.innerHTML=oe),E}}(window,window.document);function ee(m){return m.replace(/</g,"&lt;").replace(/>/g,"&gt;")}function H(m){const _=`<(?!${m.map(E=>`\\/?${E}\\b`).join("|")})[^>]+>`;return new RegExp(_,"gi")}const G=(m,w)=>{const _=H(w);return m.replace(_,E=>ee(E))}},46170:(ue,ne,n)=>{n.d(ne,{DeviceInventory:()=>V});var e=n(27343),c=n(94999),W=n(58489),s=n(73560),K=n(33628),J=n(43912),I=n(13954),z=n(60987),U=n(2912),l=n(66912),b=n(36873),M=n(71255).A;const{donutChatUtil:A}=W.ProTable,X=t=>t?{devName:t._deviceName?t._deviceName:t.name}:{},R=t=>t&&(0,b.checkDeviceFirmware)(t,"5.4","<")?(l.Y5.show(gettext("This feature is only available for devices on FortiOS 5.4.0 or later."),"danger"),!0):!1,j=(t,r)=>{let i,a,f;const v=z.fiAdom.current();if(t){const{devName:Z}=X(t);i=["adom/"+v.name+`/device/${Z}`],a="get",f={"api type":"monitor",path:"system",name:"csf","no-action":1,payload:[{vdom:r}]}}else i=["adom/"+v.name+`/group/${(0,s.H4)(v)}`],a="get",f={"api type":"monitor",path:"system",name:"csf","no-action":1,payload:[{vdom:"*"}]};return{target:i,method:a,resource_health:f}},g=(t,r)=>{const[i,a]=(0,c.useState)({});return(0,c.useEffect)(()=>{if(R(t))return;const{target:f,method:v,resource_health:Z}=j(t,r);I.Ye.send({params:J.fiFmgHttp.genProxyRequest(f,v,Z).params[0].data,chunksz:200,useBatchApi:!0,acceptEmptyChuckData:(k={})=>{k.status?.code,M.USER.RESPOSE_STATUS.NOT_OK},parser:(k,Y,$)=>{let Q={target:Y.name,status:$};return Q.response=k,Q}}).then(()=>{},()=>{},k=>{const Y={};if(Array.isArray(k)){for(const $ of k){const{target:Q,response:re}=$,de=(re||[]).reduce((ve,Oe)=>{const pe=Oe.results.devices||{};for(const[_e,Ie]of Object.entries(pe))ve[_e]=Ie;return ve},{});Y[Q]=de}a(Y)}}).catch(k=>{console.error(k),l.Y5.show(gettext("Error fetching CSF data"),"danger")})},[]),i},o=(t,r)=>{let i,a,f;const v=z.fiAdom.current();if(t){const{devName:Z}=X(t),k=r||"*";i=["adom/"+v.name+`/device/${Z}`],a="get",f={"api type":"monitor",path:"user",name:"device/query","no-action":!0,payload:[{vdom:k,start:0,count:5e3,cache_query:!0,filter_logic:"and",query_type:"unified_latest"}]}}else i=["adom/"+v.name+`/group/${(0,s.H4)(v)}`],a="get",f={"api type":"monitor",path:"user",name:"device/query","no-action":1,payload:[{vdom:"*",start:0,count:5e3,cache_query:!0,filter_logic:"and",query_type:"unified_latest"}]};return{target:i,method:a,resource_health:f}},d=(t,r,i,a,f)=>{const v={hardware_vendor:[],os_name:[],is_online:[],detected_interface:[],fortiswitch_id:[],fortiap_id:[],fortiap_ssid:[]},[Z,k]=(0,U.jJ)(),[Y,$]=(0,c.useState)(!0),[Q,re]=(0,c.useState)([]),[de,ve]=(0,c.useState)([]),[Oe,pe]=(0,c.useState)(v);return(0,c.useEffect)(()=>{if(R(t))return;let _e=[];$(!0),re([]),ve([]),pe(v);const{target:Ie,method:je,resource_health:Ne}=o(t,r);I.Ye.send({params:J.fiFmgHttp.genProxyRequest(Ie,je,Ne).params[0].data,chunksz:200,useBatchApi:!0,acceptEmptyChuckData:(fe={})=>fe.status?.code===M.USER.RESPOSE_STATUS.NOT_OK,parser:(fe,xe,he)=>{let Re={target:xe.name,status:he};return Re.response=fe,Re}}).then(()=>{},()=>{},fe=>{_e=[..._e,...fe];let{data:xe=[]}=h(_e,t,r);const{tableData:he,chartData:Re}=G({tableData:xe,chartFilters:i,grouping:a,chartsDef:f});re(xe),ve(he),pe(Re)}
1).catch(fe=>{console.error(fe),l.Y5.show(gettext("Error fetching device inventory data"),"danger")}).always(()=>{$(!1)})},[Z,t,r]),{isLoading:Y,setIsLoading:$,originalData:Q,tableData:de,setTableData:ve,chartData:Oe,setChartData:pe,reload:k}};function h(t,r,i){let a=[],f,v=0;t.forEach(Y=>{let $=Y.target||"";[Y.response].flat().forEach(Q=>{i&&Q.vdom!==i||Q&&Q.results&&(Q.results.forEach(re=>{re.from_device=$,re._index=v,v++}),a=a.concat(Q.results))})}),f=a;let Z=[],k;r&&(k=X(r));try{let Y=a;if((0,K.isArray)(Y))for(let $=0;$<Y.length;$++){const Q=b.fiDeviceDataLoader.getDeviceByName(Y[$].from_device),re=(0,b.checkDeviceFirmware)(Q,"6.4","<");q(re)(Y[$]),ee(Y[$]),B(Y[$]),Y[$]._vdom=k,Z.push(Y[$])}else l.Y5.show(gettext("Invalid query result from the device"),"danger");f=Z}catch{}return{data:f}}const O="hardware_vendor",L="os_name",te="Other";function p(t){return t?{conn:M.DVM.DVM_CONN_STATUS_UP}:{conn:M.DVM.DVM_CONN_STATUS_DOWN}}function B(t){let r=t.host||{};t.alias=r.name||t.alias||t.hostname||t.mac||"",t.os=t.os?t.os.name+" "+(t.os.version||""):"",t.categories=(0,K.isArray)(t.categories)?t.categories.join(", "):""}function q(t){const r=Math.floor(Date.now()/1e3);return i=>{t||!(0,K.isNumber)(i.last_seen)||(i.last_seen=r-i.last_seen)}}function ee(t){t.online||t.last_seen<=300?t.connection=p(!0):t.connection=p(!1)}const H=(t,r,i,a)=>{const f=k=>{const Y={is_online:({value:Q,attrData:re})=>Q==="Online"?re:!re},$=({value:Q,attrData:re})=>Q===te&&re!==void 0?!1:!(Q!==te&&re!==Q);for(const Q of r){const re=Q.chartName,de=Q.category;if(!(Y[re]?Y[re]:$)({value:de,attrData:k[re]}))return!1}return!0},v=t.filter(f);return{tableData:m(_(v),i),chartData:A.tableDataToChartsData(v,a),filteredData:v}},G=({tableData:t,chartFilters:r,grouping:i,chartsDef:a})=>{if(!r||Array.isArray(r)&&r.length===0){const f=m(_(t),i);return{tableData:f,chartData:A.tableDataToChartsData(t,a),filteredTableData:f}}else return H(t,r,i,a)},m=(t,r)=>{const i=t.reduce((a,f)=>{const v=f[r]||te;return a[v]?a[v].push(f):a[v]=[f],a},{});return Object.entries(i).map(([a,f])=>({rowKey:`grouping_${a}`,groupName:a,isGroup:!0,children:f})).sort((a,f)=>a.groupName===te?1:f.groupName===te?-1:a.groupName.localeCompare(f.groupName))},w=t=>{const r=t?.hostname||"",i=t.master_mac,a=r||i,f=t.mac;return`${a}_${f}`},_=t=>t.map(r=>({...r,rowKey:w(r)}));var E=n(83955),u=n(97114);const F=({deviceData:t})=>{const r=(0,c.useMemo)(()=>Object.values((0,s.yG)([t],!1)),[t]);return(0,e.jsx)("div",{className:"tw-flex",children:r.map(({key:i,label:a,icon:f,disabled:v,exec:Z})=>v?null:(0,e.jsxs)(u.cQ,{slot:"body",onClick:Z,disabled:v,className:"tw-m-1",children:[(0,e.jsx)(u.bQ,{name:f.name,slot:"prefix",className:"tw-mr-1"}),a]},i))})};var le=n(76225);function oe({title:t,backgroundColor:r,count:i}){const a={display:"inline-block",minWidth:"1.4em",textAlign:"center",boxSizing:"border-box",verticalAlign:1,padding:"1px 0.4em",borderRadius:10};return(0,e.jsx)("div",{className:"tw-p-1 tw-m-1",title:t,style:{...a,borderColor:`rgb(var(${r}))`,backgroundColor:`rgb(var(${r}))`,color:"rgb(var(--nw-color-neutral-0))"},children:i})}var ie=n(48828);const{Tooltip:me}=W.ProLego,D="tw-text-neutral tw-w-32 tw-mr-2",ce=(t,r)=>(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:D,children:gettext(t)}),(0,e.jsx)("span",{children:r})]}),Ee=t=>{const r=t.hostname||"",{_icon:i,_css:a}=(0,s.R0)(t.os_name),f=r===""&&t.master_mac||"";return(0,e.jsxs)("div",{children:[(t.ipv4_address||t.ipv6_address)&&(0,e.jsxs)("div",{className:"tw-flex tw-items-center tw-m-2",children:[(0,e.jsx)("nw-avatar",{class:"tw-mx-6",shape:"circle"}),(0,e.jsx)("span",{children:t.ipv4_address||t.ipv6_address||""})]}),(0,e.jsxs)("div",{children:[ce("Device",(0,e.jsxs)(e.Fragment,{children:[" ",(0,e.jsx)(u.bQ,{name:i,className:`tw-mr-1 tw-top-0.5 ${a}`}),(0,e.jsx)("span",{children:r+" "+f})]})),t.last_seen&&ce("Last Seen",(0,E.formatDateFromNow)(t.last_seen)),t.mac&&ce("MAC Address",t.mac),(t.ipv4_address||t.ipv6_address)&&ce("IP Address",t.ipv4_address||t.ipv6_address),t.detected_interface&&ce("Interface",(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(u.bQ,{name:"port",className:"tw-text-success tw-mr-1 tw-top-0.5"}),(0,e.jsx)("span",{children:t.detected_interface})]})),t.hardware_vendor&&ce("Hardware",t.hardware_vendor),t.os_name&&ce("OS",t.os_name),t.is_fortiguard_src&&ce("Detected By",(0,e.jsxs)(e.Fragment,{children:[" ",(0,e.jsx)(u.bQ,{name:"forticloud",className:"tw-mr-1 tw-top-0.5"}),(0,e.jsx)("span",{children:gettext("Detected by FortiGuard IoT detection service")})]})),(0,e.jsx)(F,{deviceData:t})]})]})},Se=({rowData:t,highlighter:r})=>{const i=(0,c.useRef)(null),a=t.is_fortiguard_src,f=()=>{if(t?.fortifone_name)return{data:t?.fortifone_name,iconName:"fortivoice",iconLibrary:"fgt-products"};const $=t.hostname||"",Q=$===""&&t.master_mac||"",{_icon:re,_css:de}=(0,s.R0)(t.os_name);return{data:$+" "+Q,iconName:re,iconClasses:`${de}`,iconLibrary:null}},{data:v,iconName:Z,iconClasses:k="",iconLibrary:Y}=f();return(0,e.jsx)(me,{content:()=>Ee(t),children:(0,e.jsxs)("span",{className:"device_name",ref:i,children:[(0,e.jsx)(u.bQ,{name:Z,library:Y,className:`tw-mr-1 tw-top-0.5 ${k}`}),(0,e.jsx)("span",{children:r(v)}),a&&(0,e.jsx)(u.bQ,{name:"forticloud",className:"tw-ml-1 tw-top-0.5"})]})})},ye=t=>{let r=null,i=t.user_info,a=t?.unauth_user;if(i){const f=Array.isArray(i)&&i.length?i[0].username?.[0]:"";f&&(r={name:"user",label:gettext("Authenticated User"),library:"fa-solid",text:f,color:"rgb(var(--nw-color-primary-400))"})}else a&&(r={name:"user",label:gettext("Unauthenticated User"),library:"fa-solid",text:a,color:"rgb(var(--nw-color-neutral-400))"});return r},ge=({rowData:t,cellData:r})=>(0,e.jsx)(me,{content:()=>(0,e.jsx)("div",{style:{maxHeight:"calc(100vh - 20px)"},children:(0,e.jsxs)(u.cQ,{slot:"body",onClick:()=>W.ProToolkit.openDrawer((0,e.jsx)(le.ViewVulnerability,{deviceData:t})),children:[(0,e.jsx)(u.bQ,{name:"eye-open",slot:"prefix",className:"tw-mr-1"}),gettext("View Vulnerabilities")]})}),children:(0,e.jsx)("div",{className:"tw-flex",children:s.oC.map(i=>r[i]&&r[i]>0?(0,e.jsx)(oe,{title:s.W[i],backgroundColor:s.GB[i],count:r[i]},i):null)})}),Ce=({csfMonitorData:t={}})=>[{key:"device",width:200,title:gettext("Device"),cellRenderer:({rowData:r},i)=>(0,e.jsx)(Se,{rowData:r,highlighter:i}),dataGetter:({rowData:r})=>{const i=r.hostname||"",a=i===""&&r.master_mac||"";return i+" "+a},sortable:!0},{key:"user_info",width:150,title:gettext("User"),cellRenderer:({rowData:r},i)=>{const a=ye(r);return a?(0,e.jsxs)("div",{className:"tw-flex tw-items-center",children:[(0,e.jsx)(u.bQ,{style:{color:a.color},className:"tw-mr-1",name:a.name,label:a.label,library:a.library}),(0,e.jsx)("span",{children:i(a.text)})]}):""},dataGetter:({rowData:r})=>ye(r)?.text||"",sortable:!0},{key:"joinedAddresses",title:gettext("Address"),cellRenderer:({rowData:r},i)=>{const a=(0,e.jsx)("div",{children:i(r.ipv4_address)||""}),f=(0,e.jsx)("div",{children:i(r.ipv6_address)||""}),v=(0,e.jsx)("div",{children:i(r.master_mac)||""});return(0,e.jsxs)("div",{children:[a,f,v]})},dataGetter:({rowData:r})=>{const i=r.ipv4_address||"",a=r.ipv6_address||"",f=r.master_mac||"";return i+a+f},sortable:!0,ignoreCsv:!0},{key:"ipv4_address",hidden:!0,dataGetter:s.a},{key:"ipv6_address",hidden:!0,dataGetter:s.a},{key:"master_mac",hidden:!0,dataGetter:s.a},{key:"os_name",title:gettext("Software OS"),width:200,dataGetter:({rowData:r})=>r.os_name||"Other identified device",sortable:!0}
1,{key:"lot_vulnerabilities",title:gettext("IoT Vulnerabilities"),hidden:!1,cellRenderer:({rowData:r,cellData:i})=>i?(0,e.jsx)(ge,{rowData:r,cellData:i}):null,dataGetter:({rowData:r})=>{if(!r?.iot_vulnerability)return null;let i=r.iot_vulnerability;return Array.isArray(i)||(i=[i]),i.reduce((a,f)=>Object.assign(a,{[f?.severity||0]:(a[f?.severity||0]||0)+1}),{})}},{key:"fortiSwitch",title:gettext("FortiSwitch"),width:200,cellRenderer:({rowData:r},i)=>{const a=r.fortiswitch_id||"";return a?(0,e.jsxs)("div",{children:[(0,e.jsx)(u.bQ,{library:"fgt-standard",name:"fortiswitch",className:"tw-top-0.5 tw-mr-1"}),(0,e.jsx)("span",{children:i(a)})]}):null},dataGetter:({rowData:r})=>r.fortiswitch_id||"",sortable:!0},{key:"fortiap_ssid",title:gettext("WiFi SSID"),hidden:!1,dataGetter:s.a},{key:"fortiap_id",title:gettext("FortiAP"),hidden:!0,dataGetter:s.a,cellRenderer:({rowData:r},i)=>r.fortiap_id?(0,e.jsxs)("div",{children:[(0,e.jsx)(u.bQ,{className:"tw-mr-1 tw-top-0.5",name:"wifi-controller"}),(0,e.jsx)("span",{children:i(r.fortiap_id)})]}):""},{key:"hardware_family",title:gettext("Device Family"),width:200,dataGetter:s.a},{key:"hardware_version",title:gettext("Hardware Version"),width:200,dataGetter:s.a},{key:"from_device",title:gettext("Detected by"),width:200,dataGetter:s.a,cellRenderer:({rowData:r},i)=>{const a=r.from_device||"";return(0,e.jsxs)("div",{children:[(0,e.jsx)(u.bQ,{name:"up",className:"tw-text-success tw-mr-1 tw-top-0.5"}),(0,e.jsx)("span",{children:i(a)})]})},sortable:!0},{key:"hardware_vendor",title:gettext("Hardware Vendor"),width:200,dataGetter:s.a,sortable:!0,hidden:!0},{key:"os_version",title:gettext("Software Version"),hidden:!0,dataGetter:s.a},{key:"hardware_type",title:gettext("Device Type"),hidden:!0,dataGetter:s.a},{key:"domain",title:gettext("Domain"),hidden:!0,dataGetter:s.a},{key:"forticlient_version",title:gettext("FortiClient Version"),hidden:!0,dataGetter:s.a},{key:"fortiswitch_port_name",title:gettext("FortiSwitch Ports"),hidden:!0,dataGetter:({rowData:r})=>{const i=r.fortiswitch_name||r.fortiswitch_id,a=r.fortiswitch_port_name;return a?i?`${i}: ${a}`:a:""}},{key:"hostname",title:gettext("Hostname"),hidden:!0,dataGetter:s.a},{key:"interfaces",title:gettext("Interfaces"),hidden:!0,cellRenderer:({rowData:r},i)=>{const a=r.fortiap_ssid,f=r.detected_interface,v=a?`${a} (${f})`:f;return(0,e.jsxs)("div",{children:[(0,e.jsx)(u.bQ,{name:"wifi",className:"tw-mr-1 tw-top-0.5 color-green"}),(0,e.jsx)("span",{children:i(v)})]})},dataGetter:({rowData:r})=>{const i=r.fortiap_ssid,a=r.detected_interface;return i?`${i} (${a})`:a},sortable:!0},{key:"last_seen",title:gettext("Last Seen"),hidden:!0,cellRenderer:({rowData:r},i)=>(0,e.jsx)("span",{children:i((0,E.formatDateFromNow)(r.last_seen))}),dataGetter:({rowData:r})=>(0,E.formatDateFromNow)(r.last_seen)},{key:"mac",title:gettext("MAC"),hidden:!0,dataGetter:s.a},{key:"server",title:gettext("Server"),hidden:!0,dataGetter:s.a},{key:"is_online",title:gettext("Status"),hidden:!0,cellRenderer:({rowData:r},i)=>{const a=r.is_online,f=a?gettext("Online"):gettext("Offline"),v=a?"tw-text-success":"tw-text-warning",Z=a?"up":"down";return(0,e.jsxs)("div",{children:[(0,e.jsx)(u.bQ,{name:Z,className:`tw-mr-1 tw-top-0.5 ${v}`}),(0,e.jsx)("span",{children:i(f)})]})},dataGetter:({rowData:r})=>r.is_online?gettext("Online"):gettext("Offline")},{key:"fortifone_extension",title:gettext("FortiFone Extension"),hidden:!0,dataGetter:({rowData:r})=>r?.fortifone_extension},{key:"fortifone_name",title:gettext("FortiVoice"),cellRenderer:({rowData:r},i)=>{const a=r?.from_device,f=r?.fortivoice_managed_serial;if(!(0,K.isNil)(f)){const v=we({device:a,sn:f,csfMonitorData:t}),Z={data:i(v),iconName:"fortivoice",iconLibrary:"fgt-products",label:gettext("FortiVoice Name")};return(0,e.jsx)(ie.mr,{...Z})}}}],we=({device:t,sn:r,csfMonitorData:i})=>{let a="";const f=(0,K.get)(i,`${t}.fortivoice`,[]);for(const v of f)v.serial===r&&(a=v.host_name);return a};var De=n(41588),x=n(77434),S=n(71255).A;const T=t=>{let r=0;return t.ipv4_address&&r++,t.ipv6_address&&r++,t.master_mac&&r++,r=Math.max(1,r),r*S.USER.SYS.DIV_TABLE.ENTRY_HEIGHT_32},y=(0,c.forwardRef)(({device:t,tableId:r,vdomName:i,...a},f)=>{const{fullScreenFnItems:v,ExpandableTableWrapper:Z}=(0,x.q)(),[k,Y]=(0,c.useState)(void 0),[$,Q]=(0,c.useState)(O),re=(0,s.lO)(),de=($===O?["hardware_vendor","os_name","is_online","detected_interface","fortiswitch_id","fortiap_id","fortiap_ssid"]:["os_name","hardware_vendor","is_online","detected_interface","fortiswitch_id","fortiap_id","fortiap_ssid"]).map(ae=>re[ae]),ve=g(t,i),{isLoading:Oe,originalData:pe,tableData:_e,setTableData:Ie,chartData:je,setChartData:Ne,reload:fe}=d(t,i,k,$,de);(0,c.useEffect)(()=>{const{tableData:ae}=G({tableData:pe,chartFilters:k,grouping:$,chartsDef:de});Ie(ae)},[$]),(0,c.useImperativeHandle)(f,()=>({refresh:fe}));const xe=(0,c.useRef)(),he=(0,c.useCallback)((ae,se,Te)=>{const Pe=se?"tw--top-0.5":"tw-top-0.5";return{...(0,s.yG)(ae,se,Te),refresh:{key:"refresh",label:gettext("Refresh"),icon:{name:"refresh"},disabled:!1,exec:()=>fe()},export:{key:"export",label:gettext("Export to CSV"),icon:{name:"csv-format",className:Pe},disabled:!1,exec:()=>{let be="inventory.csv",Me=xe.current.displayedTableData.reduce((Ae,Ue)=>(Ae=Ae.concat(Ue.children),Ae),[]),ke=(0,s.zD)(Le);return W.ProToolkit.openModal((0,e.jsx)(De.Im,{fileName:be,data:Me,columnDefs:ke}),{width:"lg",height:"40vh"})}},group_device_table:{key:"group_device_table",disabled:!1,render:()=>(0,e.jsx)("div",{className:"tw-w-full tw-flex tw-items-center tw-leading-7",style:{minWidth:"10rem"},children:(0,e.jsx)(W.ProLego.SSelect,{value:$,source:[{id:O,text:gettext("Hardware Vendor")},{id:L,text:gettext("Software OS")}],onChange:be=>{Q(be)}})})}}},[xe.current?.displayedTableData,$]),Re=(0,c.useCallback)(ae=>{const se=he(ae,!1,t);
1return[se["mac-addr"],se["ip4-addr"],se["ip6-addr"],se["packet-capture"]]},[he]),Ve=(0,c.useCallback)(ae=>{const se=he(ae,!0,t);return[se.refresh,se["mac-addr"],se["ip4-addr"],se["ip6-addr"],se.export,v]},[he,v]),Fe=(0,c.useCallback)(ae=>[he(ae,!0,t).group_device_table],[he]),Le=(0,c.useMemo)(()=>Ce({csfMonitorData:ve}),[ve]);return(0,e.jsx)(Z,{children:(0,e.jsx)(W.ProTable.DonutChartTable,{tableId:r,rowKey:"rowKey",charts:de,chartData:je,tableData:_e,reload:fe,isLoading:Oe,columns:Le,getToolbarItems:Ve,getToolbarRightItems:Fe,getContextMenuItems:Re,rowHeight:T,ref:xe,isGroupRow:({rowData:ae})=>ae.isGroup,groupRowRenderer:({rowData:ae,numOfChildren:se})=>(0,e.jsxs)("div",{children:[ae.groupName,se()]}),onFilter:({activeCharts:ae,setDisplayedChartData:se})=>{const Te=Object.values(ae).filter(Me=>Me!==!1),{tableData:Pe,chartData:be}=G({tableData:pe,chartFilters:Te,grouping:$,chartsDef:de});Y(Te),se(be),Ie(Pe),Ne(be)},...a})})}),V=t=>{const{device:r}=t;return r?(0,e.jsx)(P,{...t}):(0,e.jsx)(y,{tableId:"device_inventory"})},N=t=>({key:"refresh",render:()=>(0,e.jsx)("div",{className:"tw-flex tw-items-center tw-h-full",onClick:t,children:(0,e.jsx)(u.hP,{library:"fafm",name:"refresh",label:gettext("Refresh")})})}),C=t=>{const{setWidgetToolbarItems:r}=W.ProDashboard.useDashWidget(),i=(0,c.useMemo)(()=>[N(t)],[t]);(0,c.useEffect)(()=>{r(i)},[i])},P=t=>{const{device:r,vdomName:i}=t,a=(0,c.useRef)();return C(a?.current?.refresh),(0,e.jsx)("div",{className:"tw-w-full tw-h-full",id:"device_inventory_widget_table",children:(0,e.jsx)(y,{tableId:"device_inventory_widget",device:r,vdomName:i.name,ref:a})})}},47132:(ue,ne,n)=>{n.d(ne,{DeviceRevisionDiff:()=>O});var e=n(27343),c=n(94999),W=n(25913),s=n.n(W),K=n(57173),J=n(2912),I=n(28593),z=n.n(I),U=n(91405),l=n(49366),b=n(54417),M=n(33628);const A=({containerClass:p,title:B="",total:q="",deleted:ee="",inserted:H="",modified:G="",isRight:m=!1})=>{const w=()=>[{key:"row_header",rowName:"",rowText:B},{key:"row_total",rowName:gettext("Total"),rowText:q},{key:"row_deleted",rowName:gettext("Deleted"),rowText:ee,hidden:()=>m},{key:"row_added",rowName:gettext("Added"),rowText:H,hidden:()=>!m},{key:"row_modified",rowName:gettext("Modified"),rowText:G}].map(({key:E,rowName:u,rowText:F,hidden:le})=>((0,M.isFunction)(le)?le():le)?null:(0,e.jsxs)("tr",{style:{border:"1px solid rgb(var(--nw-color-border))"},children:[(0,e.jsx)(l.ConditionalComponent,{condition:u,children:(0,e.jsx)("td",{className:"tw-p-1 tw-w-3/6",children:u})}),(0,e.jsx)("td",{className:"tw-p-1 tw-w-3/6",children:F})]},E));return(0,e.jsx)("div",{className:p,children:(0,e.jsx)("table",{className:"tw-w-full",children:(0,e.jsx)("tbody",{children:w()})})})};var X=n(66912),R=n(41406),j=n(16206);const g=p=>`device_revision_diff:${p}`,o=()=>({title:"",content:""}),d={PREVIOUS:1,SELECT:2,FACTORY:3},h={FULL:0,DIFF_ONLY:1,TO_SCRIPT:2},O=({$opener:p,title:B=gettext("Device Revision Diff"),device:q,currentRevision:ee=void 0,previousRevision:H=void 0,allRevisions:G=void 0,diffPromise:m=void 0})=>{const w=(0,c.useRef)(null),_=(0,c.useRef)(null),[E,u]=(0,c.useState)(!1),[F,le]=(0,c.useState)({revision1:o(),revision2:o(),patch:[]}),[oe,ie]=(0,c.useState)(!1),[me,D]=(0,c.useState)(!1),[ce,Ee]=(0,c.useState)(!1),[Se,ye]=(0,c.useState)(!1),[ge,Ce]=(0,c.useState)(H),{state:we}=(0,J.PX)({defaultValue:[],loader:async()=>{try{D(!0);let C=[];if(Array.isArray(G)?C=[...G]:C=await R.Yg.getRevisionHistoryById(q.oid),H===void 0){const P=C.find(t=>t.current_rev);P&&(Ce(P),_.current.setValues({revisionOpt:d.PREVIOUS,diffOpt:h.FULL,selectedVersion:P.rev}))}return C}catch(C){console.error(C)}finally{D(!1)}}}),De=C=>({[d.PREVIOUS]:{title:()=>gettext("Revision ID: %s").printf([ge?.rev]),getVersion:()=>ge?.rev},[d.FACTORY]:{title:()=>gettext("Factory Default Revision"),getVersion:()=>0},[d.SELECT]:{title:({selectedVersion:t})=>gettext("Revision ID: %s").printf([t]),getVersion:({selectedVersion:t})=>t}})[C],x=({filename:C=`device_${q.name}_diff_script.txt`,content:P},t)=>{if(!P){const{revisionOpt:r}=t,a=De(r).getVersion(t),f=ee?ee?.rev:0,v=gettext("Script cannot be generated for revisions %s and %s.").printf([a,f]);X.Y5.show(v,"danger",0);return}return(0,j.u)(C,P)},S=async C=>{D(!0);const P=await T(C,{op:h.TO_SCRIPT});x(P,C),D(!1)},T=async(C,P={})=>
1{if((0,M.isFunction)(m))return m(C);const{revisionOpt:t}=C,i={version1:De(t).getVersion(C),version2:ee?ee?.rev:0,op:h.FULL,...P};return await R.Yg.diffRevision(q.oid,i,t)},y=()=>{if(w.current){const C=w.current.getCMInstance();s().commands.goNextDiff(C.edit)<0&&Ee(!0),ye(!1)}},V=()=>{if(w.current){const C=w.current.getCMInstance();s().commands.goNextDiff(C.edit)<0&&ye(!0),Ee(!1)}},N=C=>{const P={fmkctx:C,device:q,currentRevision:ee,previousRev:ge,allRevisionData:we,revisionState:F,collapsed:oe,setCollapsed:ie};if(me)return(0,e.jsx)(l.PageSpinner,{});if(!E)return(0,e.jsx)(L,{...P});if(E)return(0,e.jsx)(te,{ref:w,...P})};return(0,e.jsx)(U.l1,{innerRef:_,initialValues:{revisionOpt:ge?d.PREVIOUS:d.SELECT,diffOpt:h.FULL,selectedVersion:ge?ge?.rev:ee?.rev},onSubmit:async C=>{if(!E){D(!0);const P=await T(C),r={version1:{title:De(C.revisionOpt).title(C),content:P.version1},version2:{title:ee?gettext("Revision ID: %s").printf([ee?.rev]):gettext("Current Database:"),content:P.version2},patch:P.patch};le(r),ie(C.diffOpt!==h.FULL),C.diffOpt===h.TO_SCRIPT?S(C):(u(!0),D(!1))}},children:C=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.NwProHeader,{children:B}),N(C),(0,e.jsxs)(l.NwProFooter,{children:[(0,e.jsx)(l.ConditionalComponent,{condition:!E,children:(0,e.jsx)(l.OkBtn,{automationId:g("apply"),onClick:()=>{C.submitForm()},children:gettext("Apply")})}),(0,e.jsxs)(l.ConditionalComponent,{condition:E,children:[(0,e.jsx)(l.OkBtn,{automationId:g("capture_script"),onClick:()=>{S(C.values)},children:gettext("Save Diff as Script")}),(0,e.jsx)(l.OkBtn,{automationId:g(oe?"full_diff":"diff_only"),onClick:()=>{ie(!oe)},children:oe?gettext("Show Full Diff"):gettext("Show Diff Only")}),(0,e.jsxs)(l.ConditionalComponent,{condition:!oe,children:[(0,e.jsx)(l.OkBtn,{automationId:g("previous_diff"),onClick:()=>{V()},disabled:Se,children:gettext("< Previous Diff")}),(0,e.jsx)(l.OkBtn,{automationId:g("next_diff"),onClick:()=>{y()},disabled:ce,children:gettext("Next Diff >")})]})]}),(0,e.jsx)(l.CancelBtn,{automationId:g("cancel"),onClick:()=>{p.reject()},children:gettext("Cancel")})]})]})})},L=({fmkctx:p,currentRevision:B,allRevisionData:q,previousRev:ee})=>{const{values:H}=p,G=()=>B?gettext("Compare Database V%s Against").printf([B?.rev]):gettext("Compare Current Version Against");return(0,e.jsx)(l.NwProBody,{labelSize:"md",children:(0,e.jsxs)(l.NwProSection,{children:[(0,e.jsx)(l.NwProInputRow,{label:G(),children:(0,e.jsx)(b.Vj,{name:"revisionOpt",automationId:g("revision_opt"),disabled:m=>m.id===d.PREVIOUS&&!ee,choices:[{id:d.PREVIOUS,text:ee?gettext("Previous Version V%s").printf([ee?.rev]):gettext("Previous Version")},{id:d.SELECT,text:gettext("Select Version")},{id:d.FACTORY,text:gettext("Factory Default")}]})}),(0,e.jsx)(l.ConditionalComponent,{condition:H.revisionOpt===d.SELECT,children:(0,e.jsx)(l.NwProInputRow,{label:gettext("Version"),indent:2,children:(0,e.jsx)(b.Uh,{name:"selectedVersion",automationId:g("selected_version"),source:q.map(m=>({id:m.rev,text:m.rev}))})})}),(0,e.jsx)(l.NwProInputRow,{label:gettext("Diff Output"),children:(0,e.jsx)(b.Vj,{name:"diffOpt",automationId:g("diff_opt"),choices:[{id:h.FULL,text:gettext("Show Full File Diff")},{id:h.DIFF_ONLY,text:gettext("Show Diff Only")},{id:h.TO_SCRIPT,text:gettext("Capture Diff to a script")}]})})]})})},te=c.forwardRef(({revisionState:p,collapsed:B},q)=>{const[ee,H]=(0,c.useState)(!1),G=(0,c.useRef)(null),[m,w]=(0,c.useState)(null);(0,c.useImperativeHandle)(q,()=>({getCMInstance:()=>m}));const _=()=>{const u=G.current;u.innerHTML="",w(null)};(0,c.useEffect)(()=>{H(!0),_();const{version1:u,version2:F,patch:le}=p,oe=G.current,ie=s().MergeView(oe,{mode:"cli",value:F.content,readOnly:"nocursor",origLeft:u.content,lineNumbers:!0,highlightDifferences:!0,connect:"align",collapseIdentical:B|0,fixedGutter:!1,revertButtons:!1,showCursorWhenSelecting:!0,extraKeys:{"Ctrl-Q":me=>
1{me.display.input.blur(),z()(".modal-footer > button").first().focus()}},diff:le});w(ie),H(!1)},[p,B]);const E=(0,c.useMemo)(()=>{if(!m)return{lhs:{total:0,deleted:0,modified:0},rhs:{total:0,inserted:0,modified:0}};const u={lhs:{total:m.left.orig.doc.size,modified:0,deleted:0},rhs:{total:m.edit.doc.size,modified:0,inserted:0}};for(const F of m.left.chunks)F.origTo-F.origFrom>0&&F.editTo==F.editFrom?u.lhs.deleted+=F.origTo-F.origFrom:F.editTo-F.editFrom>0&&F.origTo==F.origFrom?u.rhs.inserted+=F.editTo-F.editFrom:u.lhs.modified+=F.origTo-F.origFrom;return u},[m]);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.ConditionalComponent,{condition:ee,children:(0,e.jsx)(l.PageSpinner,{})}),(0,e.jsxs)(l.NwProBody,{children:[(0,e.jsx)(l.ConditionalComponent,{condition:!ee,children:(0,e.jsxs)("div",{className:"tw-w-full tw-flex tw-items-center",children:[(0,e.jsx)(A,{containerClass:"tw-w-3/6",title:p.version1.title,...E.lhs}),(0,e.jsx)(A,{containerClass:"tw-w-3/6",title:p.version2.title,isRight:!0,...E.rhs})]})}),(0,e.jsx)("div",{id:"revision_diff_codemirror",ref:G})]})]})})},47607:(ue,ne,n)=>{n.d(ne,{MG:()=>K,LG:()=>W,O4:()=>R,un:()=>M,p9:()=>b,qW:()=>U,PA:()=>X});var e=n(60987),c=n(71255).A;const W="is_missing_license",s=null,K={HDWR:gettext("Hardware"),FMWR:gettext("Firmware"),ENHN:gettext("Enhanced Support"),COMP:gettext("Comprehensive Support"),AVDB:gettext("AntiVirus"),NIDS:gettext("IPS"),FAZC:gettext("FortiAnalyzer Cloud"),FMGC:gettext("FortiManager Cloud"),FRVS:gettext("Vulnerability Management"),FURL:gettext("Web Filtering"),FCTL:gettext("FortiClient Telemetry and Compliance License"),FDDB:gettext("DB Security"),FMSS:gettext("Mobile Security Service"),FNSD:gettext("Domain Query Protection"),FQDB:gettext("File Query"),FRAD:gettext("FortiRecorder AI Database"),FVDB:gettext("FortiClient Endpoint Management"),FWDB:gettext("FortiWeb Security Service"),IRDB:gettext("IP Reputation"),ISSS:gettext("Industrial Security Service"),FGSA:gettext("Security Rating Update"),PBDS:gettext("Threat Detection Service"),SOAR:gettext("Security Orchestration, Automation and Response"),SBCL:gettext("FortiSandbox Cloud"),SBEN:gettext("FortiSandbox Engine"),SCPC:gettext("Storage Service"),SPAM:gettext("Email Filtering"),SWNM:gettext("SD-WAN Monitoring"),SWNO:gettext("SD-WAN Overlay Controller"),VMDB:gettext("FortiGuard Vulnerability Management and Compliance"),ZHVO:gettext("Outbreak Protection"),VMLS:gettext("Virtual Machine License"),VDOM:gettext("Virtual Domain"),SPRT:gettext("Support"),FCSS:gettext("FortiConverter Service"),AVEN:gettext("AV Engine"),IOTH:gettext("IoT Device Identification")},J={[c.USER.DVM.LIC_INVALID]:"ffg ffg-help-solid color-grey",[c.USER.DVM.LIC_VALID]:"ffg ffg-enable color-green",[c.USER.DVM.LIC_EXPIRE_SOON]:"ffg ffg-warning color-orange",[c.USER.DVM.LIC_EXPIRED]:"ffg ffg-warning color-red"},I=String(c.FGD.SUPPORT_LEVEL_TRIAL),z={[c.USER.DVM.LIC_INVALID]:{name:"help-solid",className:"color-grey"},[c.USER.DVM.LIC_VALID]:{name:"enable",className:"color-green"},[c.USER.DVM.LIC_EXPIRE_SOON]:{name:"warning",className:"color-orange"},[c.USER.DVM.LIC_EXPIRED]:{name:"warning",className:"color-red"}};function U(){window.open("http://support.fortinet.com")}function l(){return s}function b(j){return K[j]||""}function M(j){return{ok:"ffg ffg-yes color-green","warning-red":"ffg ffg-warning color-red",disable:"ffg ffg-disable","no-icon":""}[j]||""}const A=j=>{let g="";const o={...j};if(Object.keys(o).length>0)if(o.level-0<=0)g=c.USER.DVM.LIC_INVALID,o.status="not_licensed",o.status_text_short=gettext("Not Licensed"),o.status_text=gettext("Not Licensed");else if(o.time){let d=o.time.match(/^(\d{4})(\d{2})(\d{2})/),h=d[1],O=d[2],L=d[3],te=new Date(h,O-1,L),p=new Date(te.valueOf());p.setMonth(p.getMonth()-1);let B=new Date;if(o.validto=[h,O,L].join("-"),B>te){const q=o.level===I;g=q?c.USER.DVM.LIC_EXPIRE_SOON:c.USER.DVM.LIC_EXPIRED,o.status=q?"not_licensed":"expired",o.status_text_short=q?gettext("Not Licensed"):gettext("Expired"),o.status_text=q?gettext("Not Licensed"):"%s (%s %s)".printf([gettext("Not Licensed"),gettext("Expired"),h+"-"+O+"-"+L])}else B<p?(g=c.USER.DVM.LIC_VALID,o.status="licensed",o.status_text_short=gettext("Licensed"),o.status_text="%s (%s %s)".printf([gettext("Licensed"),gettext("Expires"),h+"-"+O+"-"+L])):(g=c.USER.DVM.LIC_EXPIRE_SOON,o.status="expiring",o.status_text_short=gettext("Expiring"),o.expiring_days=Math.ceil((te-B)/(1e3*60*60*24)),o.status_text=gettext("Expiring in %s days").printf([o.expiring_days]))}else g=c.USER.DVM.LIC_EXPIRED,o.status="expired",o.status_text_short=gettext("Expired"),o.status_text=gettext("Expired");else g=c.USER.DVM.LIC_INVALID,o.status="not_licensed",o.status_text_short=gettext("Not Licensed"),o.status_text=gettext("Not Licensed");return o.status_css=J[g]||"",o.status_icon_props=z[g]||z[c.USER.DVM.LIC_INVALID],o},X=j=>j.map(g=>({...A({...g}),label:g?.type?b(g.type):b(g)})),R=(j,g)=>{j||(j="PBDS");let o={};return g=g||e.fiSysConfig.current(),g.is_ondemand?(o.status="licensed",o.status_text=gettext("Licensed")):(o=g.contracts.find(d=>d.type===j)||{},o=A(o)),o}},56158:(ue,ne,n)=>{n.r(ne),n.d(ne,{Component:()=>B,DvmMain:()=>h});var e=n(27343),c=n(94999),W=n(1250),s=n(98484),K=n(34227),J=n(35008),I=n(58489),z=n(96273),U=n(2912),l=n(87001),b=n(33950),M=n(97769),A=n(30404),X=n(90767),R=n(78638),j=n(21952),g=n(61516),o=n(5554);const d=["/dvm/main/groups","/dvm/main/fazgroups","/dvm/main/cfg"],h=()=>{const H=(0,W.useSelector)(K.hasFmgFeature);(0,R.Dm)(),ee({hasFmgFeature:H}),(0,M.E)(),(0,A.v)();const G=(0,j.t)(),m=()=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(te,{}),(0,e.jsx)(O,{folderViewData:G}),(0,e.jsx)(p,{folderViewData:G})]});return(0,e.jsx)("div",{className:"tw-flex tw-w-full tw-h-full dvm-page",children:m()})},O=({folderViewData:H})=>(0,c.useMemo)(()=>location.pathname.includes("/dvm/main/folder"),[location.pathname])?(0,e.jsx)("div",{className:"module-nav tw-bg-neutral-50 tw-text-neutral-1000",id:"dvm-folder-tree",children:(0,e.jsx)(L,{folderViewData:H})}):null,L=({folderViewData:H})=>{const{rawFolder:G,folderTree:m,setReload:w,selectedFolderPath:_,setSelectedFolderPath:E}=H;return(0,e.jsx)(b.zv,{rawFolder:G,folderTree:m,reload:w,selectedFolderPath:_,setSelectedFolderPath:E})},te=()=>{const H=(0,s.zy)(),G=(0,c.useMemo)(()=>d.some(w=>H.pathname?.includes(w)),[H.pathname]),m=(0,c.useMemo)(()=>X.U.getProps(),[]);return G?(0,e.jsx)("div",{className:"dvm-nav-tree","automation-id":"dvm-nav-tree",children:(0,e.jsx)(J.Gg,{...m})}):null},p=I.ProToolkit.withErrorBoundary(({folderViewData:H})=>(0,e.jsx)("div",{className:"tw-relative tw-z-0 tw-flex-1 tw-w-full tw-h-full tw-min-w-0 page-content-wrapper drawer-container-parent",id:"dvm_groups_ui_wrapper",children:(0,e.jsx)(s.sv,{context:{folderViewData:H}})})),B=h;function q({hasFmgFeature:H,groupId:G,paramsGroupId:m}){const w=useLocation(),_=useDispatch(),E=w.pathname;useEffect(()=>{if(d.some(u=>[u,`${u}/`].includes(E))&&!m){const u=getDvmTablePath(H);_(go({to:`${u}/${G}`}))}},[E,H,G])}function ee({hasFmgFeature:H}){const G=(0,W.useDispatch)();(0,U.S8)(()=>
1{if(["/dvm/main/groups","/dvm/main/fazgroups","/dvm/main/cfg"].some(m=>location.pathname.includes(m))){const m=(0,g.r)(H);G((0,l.go)({to:m}))}z.X.dvmgroup.data(null)},[H])}},57656:(ue,ne,n)=>{n.d(ne,{RevisionHistory:()=>De});var e=n(27343),c=n(94999),W=n(2912),s=n(49366),K=n(58489),J=n(97114),I=n(60987),z=n(66912),U=n(36873),l=n(41406),b=n(16206),M=n(3075),A=n(68044),X=n(91405),R=n(54417),j=n(71255).A;const g=x=>`edit_revision_name:${x}`,o=({$opener:x,title:S=gettext("Edit Revision Tag (name)"),revision:T,device:y})=>{const V=async N=>{const C=I.fiSysConfig.current().username,P=I.fiAdom.current(),{name:t,comment:r}=N,i=await l.Yg.changeRevision(y.oid,C,P.oid,N.rev,t,r);x.resolve(i)};return(0,e.jsx)(X.l1,{initialValues:T,onSubmit:V,children:({initialValues:N,values:C,submitForm:P})=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(s.NwProHeader,{children:S}),(0,e.jsx)(s.NwProBody,{children:(0,e.jsxs)(s.NwProSection,{children:[(0,e.jsx)(s.NwProInputRow,{label:gettext("Current Revision"),children:(0,e.jsx)("span",{children:C.rev})}),(0,e.jsxs)(s.NwProInputRow,{label:gettext("Tag (name)"),children:[(0,e.jsx)(R.lX,{name:"name",automationId:g("name"),maxLength:50,validate:t=>{if(t.length>50)return gettext("Max length is 50.")}}),(0,e.jsx)(R.rD,{name:"name"})]}),(0,e.jsxs)(s.NwProInputRow,{label:gettext("Comments"),children:[(0,e.jsx)(R.nU,{name:"comment",automationId:g("comment"),maxLength:j.DVM.DM_RCS_COMMENT_LEN,validate:t=>{if(t.length>j.DVM.DM_RCS_COMMENT_LEN)return gettext("Max length is %s.").printf([j.DVM.DM_RCS_COMMENT_LEN])}}),(0,e.jsx)(R.rD,{name:"comment"})]})]})}),(0,e.jsxs)(s.NwProFooter,{children:[(0,e.jsx)(s.OkBtn,{automationId:g("ok"),onClick:()=>{P()},disabled:(()=>{const t=N.name!==C.name,r=N.comment!==C.comment;return!(t||r)})(),children:gettext("OK")}),(0,e.jsx)(s.CancelBtn,{automationId:g("cancel"),onClick:()=>{x.reject()},children:gettext("Cancel")})]})]})})},d=x=>`download_revision_config:${x}`,h=({$opener:x,revision:S})=>{const T=async y=>{x.resolve(y)};return(0,e.jsx)(X.l1,{initialValues:{rev:S.rev,enableEncrypted:0,filePassword:""},onSubmit:T,children:({values:y,setFieldValue:V,submitForm:N})=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(s.NwProHeader,{children:gettext("Download Revision %s").printf([S.rev])}),(0,e.jsx)(s.NwProBody,{children:(0,e.jsxs)(s.NwProSection,{children:[(0,e.jsx)(s.NwProInputRow,{label:gettext("Download Type"),children:(0,e.jsx)(R.Vj,{name:"enableEncrypted",automationId:d("enableEncrypted"),choices:[{text:gettext("Regular Download"),id:0},{text:gettext("Encrypted Download"),id:1}],onChange:C=>{C.id===0&&V("filePassword","")}})}),(0,e.jsx)(s.ConditionalComponent,{condition:y.enableEncrypted===1,children:(0,e.jsx)(s.NwProInputRow,{label:gettext("Password"),children:(0,e.jsx)(R.mk,{name:"filePassword",automationId:d("file_password"),isEdit:!1})})})]})}),(0,e.jsxs)(s.NwProFooter,{children:[(0,e.jsx)(s.OkBtn,{automationId:d("ok"),onClick:()=>{N()},children:gettext("OK")}),(0,e.jsx)(s.CancelBtn,{automationId:d("cancel"),onClick:()=>{x.reject()},children:gettext("Cancel")})]})]})})};var O=n(82850);const L=x=>`import_revision:${x}`,te=({$opener:x,device:S,title:T=gettext("Upload Revision File")})=>{const y=({setFieldValue:N})=>C=>{const{file:P,load:t}=C.detail;P instanceof File&&(N("file",P),t(),C.target.pond.removeFiles())},V=async N=>{if(!N.file||!S?.oid)return;let P=`/flatui/api/gui/adoms/${I.fiAdom.current().oid}/devices/${S.oid}/revision/import`;const t=O.UI.create({url:P,data:{user:I.fiSysConfig.current().username,passwd:N.enableEncrypted?N.filePassword:""},key:"filepath",onCompleted:(r,i)=>{let a=i?.result?.[0]?.data||{};a.taskId?x.resolve(a.taskId):z.Y5.show(gettext("Import Revision Failed"),"danger")}});t.removeAll(),t.addFiles([N.file]),t.start()};return(0,e.jsx)(X.l1,{initialValues:{enableEncrypted:0,filePassword:"",file:null},onSubmit:V,children:({values:N,setFieldValue:C,submitForm:P})=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(s.NwProHeader,{children:T}),(0,e.jsx)(s.NwProBody,{children:(0,e.jsxs)(s.NwProSection,{children:[(0,e.jsx)(s.NwProInputRow,{children:(0,e.jsx)(J.Qh,{onNwProcess:y({values:N,setFieldValue:C}),"automation-id":L("uploadFiles"),nwPropAllowMultiple:!1})}),(0,e.jsx)(s.ConditionalComponent,{condition:N.file,children:(0,e.jsx)(s.NwProInputRow,{label:"Uploaded File Name",children:(0,e.jsx)("span",{children:N.file?.name})})}),(0,e.jsx)(s.NwProInputRow,{label:gettext("File is Encrypted"),children:(0,e.jsx)(R.nH,{name:"enableEncrypted",automationId:L("encrypted")})}),(0,e.jsx)(s.ConditionalComponent,{condition:N.enableEncrypted,children:(0,e.jsx)(s.NwProInputRow,{label:gettext("Password"),indent:2,children:(0,e.jsx)(R.mk,{name:"filePassword",automationId:L("password"),isEdit:!1})})})]})}),(0,e.jsxs)(s.NwProFooter,{children:[(0,e.jsx)(s.OkBtn,{automationId:L("ok"),onClick:()=>{P()},children:gettext("OK")}),(0,e.jsx)(s.CancelBtn,{automationId:L("cancel"),onClick:()=>{x.reject()},children:gettext("Cancel")})]})]})})};var p=n(47132),B=n(21745);const q=({filename:x,data:S}
1)=>(0,b.u)(x,S),ee=({filename:x,downloadName:S})=>{O.RP.fileExport({url:"/gui/device/rev/history/export",filename:x,downloadname:S})},H=async({openFn:x=K.ProToolkit.openModal,openProps:S={width:"60vw"},rowData:T,device:y})=>{try{const V={rDS:{func:l.Yg.getDevRevisionContent,parameter:[I.fiAdom.current().oid,y.name,T.rev],allDevices:[{name:y.name,oid:y.oid,vdomName:"root",vdomOid:3}]},rMessage:{title:gettext("View Device %s Config").printf([y.name]),fileName:`${y.name}_conf.txt`},rDownload:!0,isDiffView:!1};return x((0,e.jsx)(A.Z,{...V}),S)}catch(V){console.error(V)}},G=async({openFn:x=K.ProToolkit.openModal,openProps:S={width:"60vw",height:"80vh"},rowData:T,device:y})=>{const V=T.rev,N=await l.Yg.getInstallLog(y.oid,V);return(0,s.openInstallLog)({openFn:x,options:S,props:{title:gettext("View Installation Log of revision %s").printf([T.rev]),fileContent:()=>{const C=(0,B.uz)(N.content,["br"]);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("b",{children:gettext("Version ID: %s").printf([T.rev])}),(0,e.jsx)("pre",{children:(0,e.jsx)("div",{dangerouslySetInnerHTML:{__html:C}})})]})},getAutoId:C=>`revision_install_log:${C}`,getDownloadData:async()=>l.Yg.downloadFileContent(y,V,l.fH.INSTALL_LOG,I.fiSysConfig.current().username,"")}})},m=async({openFn:x,device:S,rowData:T,allRevisions:y})=>{const N=y.map(t=>t.rev).indexOf(T.rev)+1,C=N>y.length-1?null:y[N],P={device:S,currentRevision:T,previousRevision:C,allRevisions:y};try{await x((0,e.jsx)(p.DeviceRevisionDiff,{...P}),{width:"60vw",height:"80vh"}).result}catch(t){console.error(t)}},w=async({device:x,refresh:S=()=>{}})=>{let T=null;try{T=await l.Yg.retrieveRevision(x.oid,I.fiAdom.current().oid)}catch{z.Y5.show(gettext("Can not retrieve revision"),"danger")}if(T)return(0,M.Dr)({taskid:T.task_id,title:gettext("Retrieve Device Revision")},{height:"60vh",width:"60vw",closable:!0}).then(()=>{U.fiDeviceDBFetcher.reloadOneDevice(x.oid,I.fiAdom.current().oid),U.fiDeviceDBFetcher.loadExtraDeviceData(I.fiAdom.current().oid,!0),S()},y=>{console.error(y)})},_=async({device:x,rowData:S,refresh:T})=>{try{const y=await l.Yg.deleteRevision(x.oid,S.rev,I.fiSysConfig.current().username);T();const V=gettext('Delete revision "%s" successfully').printf([y.rev]);z.Y5.show(V,"success",1e3)}catch(y){const V=gettext("Error: %s").printf([y?.result?.[0]?.status?.message||y.message||y]);z.Y5.show(V,"danger")}},E=async({device:x,rowData:S,refresh:T})=>{try{const y=await l.Yg.revertRevision(x.oid,S.rev,I.fiSysConfig.current().username);U.fiDeviceDBFetcher.reloadOneDevice(x.oid,I.fiAdom.current().oid),T();const V=gettext('Revert revision "%s" successfully').printf([y.rev]);z.Y5.show(V,"success",1e3)}catch(y){const V=gettext("Error: %s").printf([y?.result?.[0]?.status?.message||y.message||y]);z.Y5.show(V,"danger")}},u=async({openFn:x=K.ProToolkit.openModal,device:S,rowData:T,refresh:y})=>{try{const V={device:S,revision:T};await x((0,e.jsx)(o,{...V}),{width:"60vw"}).result,y()}catch(V){console.error(V)}},F=async({device:x})=>{try{const S=I.fiSysConfig.current().username,T=await l.Yg.downloadFileContent(x,0,l.fH.FACTORY_SETTING,S,"");if(T)return q(T)}catch(S){console.error(S)}},le=async({openFn:x,device:S,rowData:T})=>{try{const y={revision:T},V=await x((0,e.jsx)(h,{...y}),{width:"60vw"}).result;let N="";const{enableEncrypted:C,filePassword:P}=V;C&&(N=P);const t=await l.Yg.downloadRevisionByForm(S,T.rev,l.fH.CONFIGURATION,I.fiSysConfig.current().username,N);if(t)return ee(t)}catch(y){console.error(y)}},oe=async({openFn:x,device:S,refresh:T})=>{try{const y=await x((0,e.jsx)(te,{device:S}),{width:"60vw"}).result;y&&(await(0,M.Dr)({taskid:y,title:gettext("Import Device Revision")},{height:"60vh",width:"60vw",closable:!1}),U.fiDeviceDBFetcher.reloadOneDevice(S.oid,I.fiAdom.current().oid),T())}catch(y){console.error(y)}},ie=async({rowData:x,device:S,refresh:T})=>{try{const y=I.fiSysConfig.current().username,V=I.fiAdom.current().oid,N=await l.Yg.installRevision(S.oid,V,x.rev,y);N.task_id&&(await(0,M.Dr)({taskid:N.task_id,title:gettext("View Install Revision Task")},{height:"60vh",width:"60vw",closable:!1}),U.fiDeviceDBFetcher.reloadDevices(),T())}catch{z.Y5.show(gettext("Can not install revision"),"danger")}};function me(x){switch(x){case l.W7.NONE:return gettext("None");case l.W7.UNKNOWN:return gettext("Unknown");case l.W7.CHECKED_IN:return gettext("Checked In");case l.W7.INPROGRESS:return gettext("In Progress");case l.W7.INSTALLED:return gettext("Installed");case l.W7.ABORTED:return gettext("Failed");case l.W7.SCHED:return gettext("Scheduled");case l.W7.RETRY:return gettext("Retry");case l.W7.CANCELED:return gettext("Canceled");case l.W7.PENDING:return gettext("Pending");case l.W7.RETRIEVED:return gettext("Retrieved");case l.W7.CHANGED_CONF:return gettext("Changed Configuration");case l.W7.SYNC_FAIL:return gettext("Sync Failed");case l.W7.TIMEOUT:return gettext("Timeout");case l.W7.REV_REVERT:return gettext("Revision Revert");case l.W7.AUTO_UPDATED:return gettext("Auto Updated");case l.W7.MAX:return gettext("Max");default:return""}}var D=n(41712),ce=n(99797),Ee=n(33950),Se=n(71255).A;const ye=x=>`revision_history:${x}`,ge=(x=[])=>`${x.length*Se.USER.SYS.DIV_TABLE.ENTRY_HEIGHT_32+120}px`,Ce=(x,S={})=>x==="-"?"-":S[x],we=(x,S)=>{const T=I.fiSysConfig.current();for(const y of x){if(y==="-")continue;const V=Ee.X1[y.key];V&&V(T,y).process(S)}return x},De=({$opener:x,title:S=gettext("Configuration Revision History"),device:T,isWidget:y=!1})=>{const V=I.fiAdom.current(),{state:N,refresh:C}=(0,W.PX)({defaultValue:[],loader:async()=>l.Yg.getRevisionHistoryById(T.oid)}),{state:P}=(0,W.PX)({defaultValue:{},loader:async()=>ce.D.adminUsersAvatar()}),t=f=>{const v={openFn:x?.open||K.ProToolkit.openDrawer,rowData:f?.[0],device:T,refresh:C,allRevisions:N};return{[D.V.device.revision.viewconfig]:{key:D.V.device.revision.viewconfig,icon:"view-detail",label:gettext("View Config"),disabled:!0,exec:()=>{H({...v})}}
1,[D.V.device.revision.viewlog]:{key:D.V.device.revision.viewlog,icon:"log-view",label:gettext("View Install Log"),disabled:!0,exec:()=>{G({...v})}},[D.V.device.revision.diff]:{key:D.V.device.revision.diff,icon:"diff",label:gettext("Revision Diff"),disabled:!0,exec:()=>{m({...v})}},[D.V.device.revision.retrieve]:{key:D.V.device.revision.retrieve,icon:"reset",label:gettext("Retrieve Config"),disabled:!0,exec:()=>{w({...v})}},[D.V.device.revision.del]:{key:D.V.device.revision.del,icon:"delete",label:gettext("Delete"),disabled:!0,exec:()=>{(0,s.openConfirmModal)({content:gettext("Are you sure you want to delete this record?"),title:gettext("Warning")}).then(()=>{_({...v})})}},[D.V.device.revision.revert]:{key:D.V.device.revision.revert,icon:"reset",label:gettext("Revert"),disabled:!0,exec:()=>{E({...v})}},[D.V.device.revision.rename]:{key:D.V.device.revision.rename,icon:"edit",label:gettext("Rename"),disabled:!0,exec:()=>{u({...v})}},[D.V.device.revision.import]:{key:D.V.device.revision.import,icon:"import",label:gettext("Import Revision"),disabled:!1,exec:()=>{oe({...v})}},[D.V.device.revision.install]:{key:D.V.device.revision.install,icon:"install",label:gettext("Install"),disabled:!1,exec:()=>{ie({...v})}},[D.V.device.revision.factory]:{key:D.V.device.revision.factory,icon:"tools",label:gettext("Download Factory Default"),disabled:!1,exec:()=>{F({...v})}},[D.V.device.revision.download]:{key:D.V.device.revision.download,icon:"download",label:gettext("Download Revision"),disabled:!1,exec:()=>{le({...v})}}}},r=(0,c.useCallback)(f=>{const v=t(f),Z=[D.V.device.revision.viewconfig,D.V.device.revision.viewlog,D.V.device.revision.diff,D.V.device.revision.retrieve],k=[D.V.device.revision.factory,"-",D.V.device.revision.revert,"-",D.V.device.revision.del,D.V.device.revision.rename,"-",D.V.device.revision.import,D.V.device.revision.download],Y=Z.map(Q=>Ce(Q,v)),$=k.map(Q=>Ce(Q,v));return[...we(Y,f),{key:"more",label:gettext("More"),type:"dropdown",icon:{name:"ellipsis-v",library:"fa-solid"},items:[...we($,f)]}]},[N,P]),i=(0,c.useCallback)(f=>{let v=[];V.backup===1?v=[D.V.device.revision.viewconfig,"-",D.V.device.revision.viewlog,D.V.device.revision.diff,D.V.device.revision.install,"-",D.V.device.revision.del,D.V.device.revision.rename,"-",D.V.device.revision.retrieve,D.V.device.revision.download]:v=[D.V.device.revision.viewconfig,"-",D.V.device.revision.viewlog,D.V.device.revision.diff,D.V.device.revision.revert,"-",D.V.device.revision.del,D.V.device.revision.rename,"-",D.V.device.revision.retrieve,D.V.device.revision.import,D.V.device.revision.download];const Z=t(f),k=v.map(Y=>Ce(Y,Z));return[...we(k,f)]},[N,P]),a=[{key:"rev",title:gettext("ID"),cellRenderer:({rowData:f,column:v},Z)=>{let k=Z(f[v.key]);return f.current_rev?(0,e.jsxs)("div",{className:"tw-flex tw-items-center",children:[(0,e.jsx)(J.bQ,{name:"check",className:"tw-mr-1 color-green",label:gettext("Check")}),(0,e.jsx)("span",{children:k})]}):(0,e.jsx)("span",{children:k})}},{key:"modtime",title:gettext("Date & Time")},{key:"name",title:gettext("Name")},{key:"modusr",title:gettext("Created by"),cellRenderer:({rowData:f},v)=>{const Z=ce.D.AVATAR_DATA_PREFIX,k=f.modusr,Y=P[k];return Y?(0,e.jsxs)("div",{className:"tw-flex tw-items-center tw-gap-1",children:[(0,e.jsx)(J.vo,{className:"fi-user-avatar",image:`${Z}${Y}`,initials:k.charAt(0)}),v(k)]}):k?(0,e.jsx)("span",{children:v(k)}):null}},{key:"status_txt",title:gettext("Installation"),dataGetter:({rowData:f})=>me(f.status)},{key:"comment",title:gettext("Comments")}];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(s.NwProHeader,{children:S}),(0,e.jsx)(s.NwProBody,{children:(0,e.jsx)(s.NwProSection,{children:(0,e.jsx)(s.NwProInputRow,{children:(0,e.jsx)("div",{style:{height:ge(N)},children:(0,e.jsx)(K.ProTable.TableView,{tableId:"revision_history_table"+(y?"_widget_table":""),rowKey:"rev",data:N,columns:a,getToolbarItems:r,getContextMenuItems:i,ckColumn:!1,onDoubleClickRow:D.V.device.revision.viewconfig})})})})}),x&&(0,e.jsx)(s.NwProFooter,{children:(0,e.jsx)(s.CancelBtn,{"automation-id":ye("close"),onClick:()=>x.reject(),children:gettext("Close")})})]})}},70301:(ue,ne,n)=>{n.d(ne,{B:()=>K});var e=n(20695),c=n(60987),W=n(33628),s=n.n(W);
1const K={selectRow:I,toggleSelectAll:z,genCheckboxHtml:U,genSelectAllCheckboxHtml:l,genIconTextHtml:b,genIconTextListHtml:M,genLabelHtml:A,genProgressbar:X,genPerDevMappingHtml:R,genPlatformMappingHtml:j,flashDom:g,attachSrcLength:J};function J(o,d){o.attr("data-table-size",(0,W.isArray)(d)?d.length:0)}function I(o,d){d?o.addClass("selected").find(".vu-td.check-box nw-icon").attr("name","check-selected"):o.removeClass("selected").find(".vu-td.check-box nw-icon").attr("name","check-empty")}function z(o){var d=o.attr("name")==="check-empty";return d?o.attr("name","check-selected"):o.attr("name","check-empty"),d}function U(o,d){return`<div class="vu-td fixed-td check-box${d?" disabled":""}">
2              <nw-icon library="fafm" name="${o?"check-selected":"check-empty"}"></nw-icon>
3            </div>`}function l(o=!1,d=!1){return`<div class="vu-th fixed-th check-box unsortable${d?" disabled":""}">
4              <nw-icon library="fafm" name="${o?"check-selected":"check-empty"}"></nw-icon>
5            </div>`}function b(o){let d="",h=(0,e.ZD)(o.title?o.title:"");return o.css&&(d+='<span class="'+o.css+'" title="'+h+'"></span>&nbsp'),(o.txt||o.name)&&(d+='<span title="'+h+'">'+(0,e.ZD)(o.txt||o.name)+"</span>"),d}function M(o){let d="";return o=(0,W.isArray)(o)?o:[],o.forEach(function(h){d+="<div>"+b(h)+"</div>"}),d}function A(o){return'<span class="'+o.css+'">'+(0,e.ZD)(o.label||"")+"</span>"}function X(o,d){let h='<div class="progress"><div class="progress-bar '+o.css+'" role="progressbar"';return h+=' aria-valuenow="'+o.per+'" aria-valuemin="0" aria-valuemax="100" style="width:'+o.per+'%">',h+="<span>"+o.val+"</span>"+d+"</div></div>",h}function R(o){if(o.dynamic_mapping){let d="";return!o.devCollapsed&&o.dynamic_mapping.length>0&&o.dynamic_mapping.forEach(function(h){let O=h.dev;d+='<div class="dev-mapping-entry"><span class="tw-pr-1 '+(h.icon?h.icon:"ffg ffg-empty")+'"></span><span class="entry-text">'+O.name+" ("+O.vdom+"): "+h.details+"</span></div>"}),'<div class="per-dev-mapping-collapse"><div class="pointer-cursor collapsable not-fire-row-selection-event"><span class="tw-pr-1 ffg '+(o.devCollapsed?"ffg-arrow-right":"ffg-arrow-down")+'"></span><span class="amount-info">'+gettext("%(amount)s out of %(total)s").printfd({amount:'<span class="mappings-amount">'+(o.dynamic_mapping.length||0)+"</span>",total:'<span class="total-dev-amount"><span class="ffg ffg-spinner loading"></span></span>'})+"</span></div>"+(o.devCollapsed?"":'<div class="dev-list-container">'+d+"</div>")+"</div>"}else return""}function j(o){if(o.platform_mapping){let d="";return!o.platformCollapsed&&o.platform_mapping.length>0&&o.platform_mapping.forEach(h=>{d+='<div class="platform-mapping-entry"><span class="tw-pr-1 ffg ffg-empty"></span><span class="entry-text">'+h.name+":"+h["intf-zone"]+"</span></div>"}),'<div class="platform-mapping-collapse"><div class="pointer-cursor collapsable not-fire-row-selection-event"><span class="tw-pr-1 ffg '+(o.platformCollapsed?"ffg-arrow-right":"ffg-arrow-down")+'"></span><span class="amount-info">'+gettext("%s Platform Mapping").printf([o.platform_mapping.length])+"</span></div>"+(o.platformCollapsed?"":'<div class="platform-map-list-container">'+d+"</div>")+"</div>"}else return""}function g(o){var d=0,h=0,O=function(L){var te=d%2?0:1;L.animate({opacity:te},{duration:700,done:function(){if(++h>100){console.warn("The entry highlight animation is in dead loop. Abort.");return}d<6&&(d===5&&L.removeClass("highlight"),d++,O(L))},complete:function(){d===6&&L.css("opacity","")}})};o.addClass("highlight"),c.fiSysConfig.current().table_entry_blink&&O(o)}},75759:(ue,ne,n)=>{n.d(ne,{mn:()=>o});var e=n(43912),c=n(13954),W=n(60987),s=n(71255).A;const K={[s.NOTICE.NOTICE_LEVEL_CRITICAL]:"tw-text-danger",[s.NOTICE.NOTICE_LEVEL_ERROR]:"tw-text-warning",[s.NOTICE.NOTICE_LEVEL_WARNING]:"tw-text-warning-200",[s.NOTICE.NOTICE_LEVEL_NOTIFICATION]:"tw-text-info",[s.NOTICE.NOTICE_LEVEL_INFORMATION]:"tw-text-success"},J="scheduled_event",I=[J],z={[J]:g};let U=null,l=null;function b(){return Promise.all({...fiSysConfig.isFaz()?{}:{[J]:R()}})}function M(p){typeof p=="function"&&(U=p),A(),fiWebSocket.addListener("notify",X)}function A(){fiWebSocket.removeListener("notify",X)}function X(p){if(U&&I.indexOf(p.collection)>=0)return U(j(p,p.collection))}function R(){return fiFmgHttp.post({url:"/gui/scheduled/recent",method:"get"}).then(p=>p[0].data.data.map(g))}function j(p,B){const q=z[B];return q?q(p):null}function g(p){const B=gettext('Policy package "%(packageName)s" will be installed at %(dateTime)s in ADOM "%(adomName)s."').printfd({packageName:p.fields.pkgName,dateTime:new Date(p.fields.time*1e3).toLocaleStr
5ing(),adomName:p.fields.adomName});return{type:p.collection,message:B,title:null,css:{name:"clock",library:"fa-solid"},timestamp:p.fields.time,_oData:p}}function o(p,B=[]){return e.fiFmgHttp.query({method:"exec",params:[{url:"faz/cmd/sync/dvmdb",data:{option:["delete device"],dellist:B,adom:p}}]})}function d(){return fiFmgHttp.post({url:"/gui/cloud-notify",method:"get"}).then(p=>p[0].data)}function h(p){return fiFmgHttp.post({url:"/gui/cloud-notify/"+p,method:"ack"})}function O(p){p&&(l=p),L(),fiWebSocket.addListener("notify",te)}function L(){fiWebSocket.removeListener("notify",te)}function te(p){p.collection==="cloud_notification"&&l&&typeof l=="function"&&l(p)}},76225:(ue,ne,n)=>{n.d(ne,{ViewVulnerability:()=>l});var e=n(27343),c=n(58489),W=n(49366),s=n(94999),K=n(73560);const J=({severity:b})=>{const A=[0,2,3,4,5][b||0],X=K.GB[b||0],R={border:"1px solid rgb(var(--nw-color-neutral))",borderRadius:0,padding:1,boxSizing:"border-box",backgroundColor:"none",height:11,width:11,marginRight:1};return(0,e.jsxs)("div",{className:"tw-flex",title:K.W[b||0],children:[[...Array(A)].map((j,g)=>(0,e.jsx)("div",{style:{...R,backgroundColor:`rgb(var(${X}))`,border:`1px solid rgb(var(${X}))`}},g)),[...Array(5-A)].map((j,g)=>(0,e.jsx)("div",{style:R},g))]})};var I=n(62120);const{Header:z,Footer:U}=c.ProForm,l=({$opener:b,deviceData:M})=>{function A({rowData:g}){return!!g.isGroup}const X=(0,s.useMemo)(()=>{const g=(0,I.$r)(M.iot_info).map((o,d)=>({...o,id:d,children:[],isGroup:!0}));return(0,I.$r)(M.iot_vulnerability).forEach((o,d)=>{g[o.iot_info_index||0].children.push({...o,id:`${o.iot_info_index||0}_${d}`,vulnerability_id:o.vulnerability_id||o.vulnerablity_id})}),g},[M]);function R({rowData:g,numOfChildren:o}){return(0,e.jsxs)("div",{className:"tw-flex tw-items-center tw-h-full tw-group","data-column-key":"name",children:[`IoT Application: ${g.vendor} ${g.product} ${g["version-min"]}`,o()]})}const j=[{key:"id",title:gettext("Vulnerability ID"),dataKey:"vulnerability_id"},{key:"severity",title:gettext("Severity"),dataKey:"severity",cellRenderer:({cellData:g})=>(0,e.jsx)(J,{severity:g}),initialSort:-1},{key:"reference",title:gettext("Reference"),dataKey:"reference"},{key:"description",title:gettext("Description"),dataKey:"description"},{key:"date_added",title:gettext("Date Added"),dataKey:"date_added",hidden:!0},{key:"date_updated",title:gettext("Date Updated"),dataKey:"date_updated",hidden:!0},{key:"signature",title:gettext("Signature"),dataKey:"signature",hidden:!0},{key:"type",title:gettext("Type"),dataKey:"type",hidden:!0}];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(z,{children:`View IoT Vulnerabilities for Device ${M.hostname||""}`}),(0,e.jsx)("div",{className:"tw-h-full",children:(0,e.jsx)(c.ProTable.TableView,{tableId:"VulnerabilityTable",rowKey:"id",data:X,columns:j,getToolbarItems:()=>{},getContextMenuItems:()=>{},onDoubleClickRow:"view",isGroupRow:A,groupRowRenderer:R})}),(0,e.jsx)(U,{children:(0,e.jsx)(W.OkBtn,{onClick:()=>b.resolve(),children:"Close"})})]})}},78638:(ue,ne,n)=>{n.d(ne,{Dm:()=>R,cO:()=>g});var e=n(94999),c=n(1250),W=n(98484),s=n(41406),K=n(20225),J=n(1249),I=n(2912),z=n(71022),U=n(10097),l=n(5820),b=n(40916),M=n(21700),A=n(34227),X=n(71255).A;function R(){const o=(0,c.useSelector)(K.getSessionAdomOid),d=(0,c.useSelector)(K.inOthersAdom),h=(0,c.useDispatch)(),{isReady:O}=(0,U.eX)(),{isReady:L,deviceGroups:te,deviceGroupsMemb:p,remoteFAZ:B,defaultGroups:q}=(0,U.cO)(),ee=(0,I.kW)(),H=()=>ee.get("loaded"),G=_=>ee.update("loaded",_),m=j(),w=()=>{d||H()||(h((0,M.H)()),m(),G(!0))};return(0,I.PX)({loader:w,dependencies:[O,d]}),(0,I.S8)(()=>{G(!1),w()}),{adomOid:o,isDevicesReady:O,isDevGrpsReady:L,deviceGroups:te,deviceGroupsMemb:p,remoteFAZ:B,defaultGroups:q}}function j({forceReload:o=!1}={}){const d=(0,c.useSelector)(K.getSessionAdomOid),h=(0,c.useDispatch)(),O=(0,c.useSelector)(l.get_workspace_adoms),L=(0,c.useSelector)(p=>(0,l.get_workspace_adom_devs)(p,d));return(0,e.useCallback)(()=>{(0,A.isFaz)()||((o||(0,z.A_)(O))&&(0,b.load_workspace_adoms)(h),(o||(0,z.A_)(L))&&(0,b.load_workspace_devices)(h,d))},[L])}function g(){const o=(0,W.g)(),d=isNaN(parseInt(o.groupId))?null:o.groupId,h=(0,c.useSelector)(J.getDeviceGroupPath),O=(0,e.useMemo)(()=>parseInt(d||(h?(0,s.c7)(`${h}`):X.DVM.DVM_GRP_MANAGED_OID)),[d,h]);return{paramsGroupId:d,deviceGroupPath:h,groupId:O}}},91663:(ue,ne,n)=>{n.d(ne,{i:()=>U});var e=n(33628),c=n(43912),W=n(21745);const s=/((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,K=/^mailto:/i;function J(b,M,A){if(b==null||b==="")return b;if(!(0,e.isString)(b))return"";let X=(0,e.isFunction)(A)?A:(0,e.isObject)(A)?function(){return A}:function(){return{}},R,j=b,g=[],o,d;for(;R=j.match(s);)o=R[0],!R[2]&&!R[4]&&(o=(R[3]?"http://":"mailto:")+o),d=R.index,h(j.substr(0,d)),O(o,R[0].replace(K,"")),j=j.substring(d+R[0].length);return h(j),(0,e.escape)(g.join(""));function h(L){L&&g.push((0,W.jZ)(L))}function O(L,te){let p,B=X(L);g.push("<a ");for(p in B)g.push(p+'="'+B[p]+'" ');!(0,e.isUndefined)(M)&&!("target"in B)&&g.push('target="',M,'" '),g.push('href="',L.replace(/"/g,"&quot;"),'">'),h(te),g.push("</a>")}}var I=n(28593),z=n.n(I);function U(b,M){const A=new AbortController,X=(0,c.fiHttpPost)(b,M,{signal:A.signal}).then(function(R){return R&&R.Risk&&(R.dispRisk={info:gettext("Low"),low:gettext("Elevated"),medium:gettext("Medium"),high:gettext("High"),critical:gettext("Critical")}
5[R.Risk]),Object.keys(R).forEach(function(j){var g=R[j];if((0,e.isString)(g)){for(var o=(0,W.aj)(g),d=z()("<div>"+o+"</div>")[0].innerText.trim(),h=d.split(/(?:\r\n|\r|\n)/),O=0;O<h.length;++O)h[O]=J(h[O].trim(),"_blank",{rel:"noopener noreferrer"});R[j]=h.join("<br>")}}),R});return{cancel:()=>A.abort(),promise:X}}function l(){return fiHttpGet("/p/fgd/status/?r="+Date.now()).then(function(b){return b?.status})}},98833:(ue,ne,n)=>{n.d(ne,{Dc:()=>e.get_workspace_adom,Hm:()=>e.get_workspace_adom_pkg_children_status,Qb:()=>e.get_workspace_adoms,h5:()=>e.get_workspace_adom_pkgs,qb:()=>e.get_workspace_adom_pkgs_children_status,sz:()=>e.get_workspace_adom_devs});var e=n(5820),c=n(40916)}}]);})();

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.