Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.145.125.13
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
snap /
lxd /
33085 /
share /
lxd-ui /
assets /
[ HOME SHELL ]
Name
Size
Permission
Action
font
[ DIR ]
drwxr-xr-x
img
[ DIR ]
drwxr-xr-x
js
[ DIR ]
drwxr-xr-x
scripts
[ DIR ]
drwxr-xr-x
AutoExpandingTextArea-BXFyAEiG...
151
B
-rw-r--r--
BaseLayout-CiF2D8RH.js
280
B
-rw-r--r--
BulkDeleteButton-B-fvVwh0.js
1.08
KB
-rw-r--r--
CancelOperationBtn-BW2TAzI_.js
1.08
KB
-rw-r--r--
CertificateAdd-BGVwf-VB.js
2.84
KB
-rw-r--r--
CertificateGenerate-bNGS6BFl.j...
9.87
KB
-rw-r--r--
ClusterGroupForm-BiXmM-NU.js
3.25
KB
-rw-r--r--
ClusterList-CZFDB46f.js
5.17
KB
-rw-r--r--
ClusterMemberSelector-B2lzDpCI...
3.71
KB
-rw-r--r--
ClusterSpecificInput-BdiLVA9B....
1.97
KB
-rw-r--r--
ClusterSpecificSelect-DrKUzNev...
2.2
KB
-rw-r--r--
ConfigFieldDescription-BnRkdbo...
335
B
-rw-r--r--
CreateClusterGroup-C6s3qbZf.js
463
B
-rw-r--r--
CreateInstance-BXX4Xa4W.js
27.97
KB
-rw-r--r--
CreateInstanceFromImageBtn-BiE...
527
B
-rw-r--r--
CreateNetwork-BQw2A27w.js
2.88
KB
-rw-r--r--
CreateNetworkForward-BgZF8duA....
1.71
KB
-rw-r--r--
CreateProfile-CCJYKSCK.js
4.04
KB
-rw-r--r--
CreateProject-DTBqJzUb.js
2.83
KB
-rw-r--r--
CreateStoragePool-CuOutvs3.js
2.46
KB
-rw-r--r--
CreateStorageVolume-B0HvyGnH.j...
2.47
KB
-rw-r--r--
CustomIsoList-CQVv4whx.js
5.48
KB
-rw-r--r--
DeleteStoragePoolBtn-BeXLuEnA....
1.62
KB
-rw-r--r--
DeleteStorageVolumeBtn-DIIVYGa...
1.88
KB
-rw-r--r--
DiskSizeSelector-IT5APek6.js
1010
B
-rw-r--r--
EditClusterGroup-DiNIL0Lx.js
761
B
-rw-r--r--
EditNetworkForward-DtcWepYC.js
1.99
KB
-rw-r--r--
ExpandableList-EDeaeb6c.js
323
B
-rw-r--r--
FormEditButton-Cs2eW7Js.js
278
B
-rw-r--r--
FormFooterLayout-B3kcadYt.js
738
B
-rw-r--r--
FormLink-BaU-zsbe.js
879
B
-rw-r--r--
FormMenuItem-ChXfQsFA.js
2.23
MB
-rw-r--r--
FormMenuItem-DyX1CsEw.css
66.66
KB
-rw-r--r--
GroupOrIdentityChangesTable-DQ...
5.11
KB
-rw-r--r--
GroupSelectionActions-Dq47oQd-...
3.18
KB
-rw-r--r--
HelpLink-4LTOsqZO.js
294
B
-rw-r--r--
ImageList-yKBGTFZU.js
11.7
KB
-rw-r--r--
InstanceDetail-BV9hr65t.js
481.49
KB
-rw-r--r--
InstanceDetail-Beg8tuEN.css
3.88
KB
-rw-r--r--
InstanceLinkChip-DfVC8U01.js
4.24
KB
-rw-r--r--
InstanceList-CTEYE5e7.js
24.67
KB
-rw-r--r--
ItemName-DSOx0T0r.js
185
B
-rw-r--r--
Login-CsUYa7ns.js
1.41
KB
-rw-r--r--
Meter-BsdJ73XW.js
487
B
-rw-r--r--
NetworkDetail-RgSS_6Vw.js
12.8
KB
-rw-r--r--
NetworkForwardForm-C18aehvo.js
6.49
KB
-rw-r--r--
NetworkList-B4gWmGGm.js
6.32
KB
-rw-r--r--
NetworkListTable-Ba2LzF-J.js
3.31
KB
-rw-r--r--
NotificationRow-CotZPNAQ.js
157
B
-rw-r--r--
OperationList-D4--05cO.js
3.35
KB
-rw-r--r--
PageHeader-CExPjRLH.js
549
B
-rw-r--r--
PermissionGroups-CkGxgQmn.js
30.89
KB
-rw-r--r--
PermissionIdentities-DDmb7V-C....
12.93
KB
-rw-r--r--
PermissionIdpGroups-yggiVbcG.j...
13.38
KB
-rw-r--r--
ProfileDetail-CQHhNWwW.js
10.94
KB
-rw-r--r--
ProfileDetailsForm-C-rMcUGO.js
2.45
KB
-rw-r--r--
ProfileInstances-DeravO8Q.js
1.46
KB
-rw-r--r--
ProfileList-C7yC3g6E.js
7.11
KB
-rw-r--r--
ProgressBar-CQ2HKUqQ.js
170
B
-rw-r--r--
ProjectConfiguration-rKP8dZtz....
9.04
KB
-rw-r--r--
ProjectForm-GhClr0iv.js
15.12
KB
-rw-r--r--
ProtectedRoute-DYKGChU3.js
214
B
-rw-r--r--
ProxyDeviceForm-B5UDgi1V.js
38.9
KB
-rw-r--r--
RenameHeader-fmgiouA6.js
13.29
KB
-rw-r--r--
ResourceIcon-DZQOrBLA.js
532
B
-rw-r--r--
ResourceLabel-PzB_6v5p.js
317
B
-rw-r--r--
ResourceLink-CS7mH0C3.js
302
B
-rw-r--r--
ScrollableContainer-MJpEXCww.j...
646
B
-rw-r--r--
ScrollableTable-DWT33Lms.js
561
B
-rw-r--r--
SelectableMainTable-C8l8QdDe.j...
2.21
KB
-rw-r--r--
SelectedTableNotification-2DZb...
974
B
-rw-r--r--
Settings-BYi8qROs.js
9.75
KB
-rw-r--r--
SidePanel-DNeaRMst.js
2.84
KB
-rw-r--r--
SnapshotForm-DF9sGEzn.js
1.49
KB
-rw-r--r--
StoragePoolDetail-DT58PBIr.js
6.45
KB
-rw-r--r--
StoragePoolForm-Z62B6Fuh.js
17.07
KB
-rw-r--r--
StoragePoolSelectTable-CXuxJSN...
1.61
KB
-rw-r--r--
StoragePoolSelector-DEvMjaMu.j...
1.48
KB
-rw-r--r--
StoragePoolSize-DyBNKBKy.js
467
B
-rw-r--r--
StoragePools-DK0Gkjq9.js
3.99
KB
-rw-r--r--
StorageUsedBy-sdKGRlgM.js
2.12
KB
-rw-r--r--
StorageVolumeDetail-fQzbPWNW.j...
24.87
KB
-rw-r--r--
StorageVolumeForm-ZPfwK39D.js
8.42
KB
-rw-r--r--
StorageVolumes-DPotlIN6.js
7.26
KB
-rw-r--r--
StorageVolumesFilter-B7pR3OeF....
1.01
KB
-rw-r--r--
TabLinks-BIG_Rdvk.js
360
B
-rw-r--r--
UploadCustomIso-DG12FhN0.js
2.83
KB
-rw-r--r--
UsedByItem-VHA3kVFG.js
945
B
-rw-r--r--
VolumeAddSnapshotBtn-8Qz9xFE-....
4.87
KB
-rw-r--r--
WarningList-DZNTQSpg.js
1.99
KB
-rw-r--r--
YamlNotification-BnmI52ws.js
634
B
-rw-r--r--
YamlSwitch-BXLuxWUh.js
40.62
KB
-rw-r--r--
certificate-kcThcTS9.js
279.99
KB
-rw-r--r--
clusterGroups-BWQNdGSD.js
3.63
KB
-rw-r--r--
images-Du2fhDUO.js
1.22
KB
-rw-r--r--
index-BeIaaTgz.css
661.94
KB
-rw-r--r--
index-BkTFFYvy.js
690.52
KB
-rw-r--r--
index-DW_MHI2K.js
34.19
KB
-rw-r--r--
index.esm-auJ3G_FM.js
38.36
KB
-rw-r--r--
instanceDelete-Bn3xn_NE.js
12.2
KB
-rw-r--r--
instanceOptions-BuFjjn-P.js
1.19
KB
-rw-r--r--
network-forwards-B-h1Yzp9.js
856
B
-rw-r--r--
operations-DIvBacJG.js
757
B
-rw-r--r--
projects-CvA2zMPN.js
789
B
-rw-r--r--
scroll-DPmbgfny.js
26.97
KB
-rw-r--r--
searchAndFilter-DtC_P-vv.js
361
B
-rw-r--r--
snapshots-CEDJtMaf.js
670
B
-rw-r--r--
storage-volumes-tfXkh9eB.js
2.46
KB
-rw-r--r--
useGroups-CCX3qCzO.js
2.91
KB
-rw-r--r--
useImages-LgCYWVgs.js
1.64
KB
-rw-r--r--
useNetworks-D3nHf8AE.js
3.63
KB
-rw-r--r--
useSmallScreen-BvsjT919.js
169
B
-rw-r--r--
useSortTableData-BoXaK1oA.js
393
B
-rw-r--r--
useVolumes-BvpfNVaA.js
1.27
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : NetworkDetail-RgSS_6Vw.js
import{aC as a,b as W,a4 as P,f as I,d as o,k as E,A as X,I as j,r as v,l as K,K as Z,M as H,c as V,q as y,j as t,y as ee,o as O,e as T,n as te,g as se,L as Q,C as ae}from"./index-BkTFFYvy.js";import{N as ne}from"./NotificationRow-CotZPNAQ.js";import{c as U,a as q}from"./index.esm-auJ3G_FM.js";import{b as ie,d as re,e as oe,f as ce,r as le,u as de}from"./useNetworks-D3nHf8AE.js";import{C as ue,t as me,s as pe,N as fe,G as D,Y as $,i as ge}from"./scroll-DPmbgfny.js";import{y as he,d as ye,c as _e}from"./YamlSwitch-BXLuxWUh.js";import{F as be}from"./FormFooterLayout-B3kcadYt.js";import{F as ve,R as Ne}from"./RenameHeader-fmgiouA6.js";import{R as A}from"./ResourceLink-CS7mH0C3.js";import{I as xe}from"./ItemName-DSOx0T0r.js";import{R as je}from"./ResourceLabel-PzB_6v5p.js";import{u as we}from"./useSmallScreen-BvsjT919.js";import{T as Ce}from"./TabLinks-BIG_Rdvk.js";import{d as Se,a as Fe}from"./network-forwards-B-h1Yzp9.js";import{E as Le}from"./ExpandableList-EDeaeb6c.js";import{S as $e}from"./ScrollableTable-DWT33Lms.js";import"./FormMenuItem-ChXfQsFA.js";import"./instanceOptions-BuFjjn-P.js";import"./ConfigFieldDescription-BnRkdboG.js";import"./AutoExpandingTextArea-BXFyAEiG.js";import"./snapshots-CEDJtMaf.js";import"./ClusterSpecificSelect-DrKUzNev.js";import"./FormEditButton-Cs2eW7Js.js";import"./UsedByItem-VHA3kVFG.js";import"./useImages-LgCYWVgs.js";import"./index-DW_MHI2K.js";import"./YamlNotification-BnmI52ws.js";import"./ScrollableContainer-MJpEXCww.js";import"./ResourceIcon-DZQOrBLA.js";const R=(e,s,i)=>{const n={};return s==null||s.forEach(c=>n[c.memberName]=c.config.parent??""),{readOnly:!0,isCreating:!1,name:e.name,description:e.description,networkType:e.type,bridge_driver:e.config[a("bridge_driver")],bridge_hwaddr:e.config[a("bridge_hwaddr")],bridge_mtu:e.config[a("bridge_mtu")],dns_domain:e.config[a("dns_domain")],dns_mode:e.config[a("dns_mode")],dns_nameservers:e.config[a("dns_nameservers")],dns_search:e.config[a("dns_search")],ipv4_address:e.config[a("ipv4_address")],ipv4_dhcp:e.config[a("ipv4_dhcp")],ipv4_dhcp_expiry:e.config[a("ipv4_dhcp_expiry")],ipv4_dhcp_ranges:e.config[a("ipv4_dhcp_ranges")],ipv4_l3only:e.config[a("ipv4_l3only")],ipv4_nat:e.config[a("ipv4_nat")],ipv4_nat_address:e.config[a("ipv4_nat_address")],ipv4_ovn_ranges:e.config[a("ipv4_ovn_ranges")],ipv4_gateway:e.config[a("ipv4_gateway")],ipv4_routes:e.config[a("ipv4_routes")],ipv4_routes_anycast:e.config[a("ipv4_routes_anycast")],ipv6_address:e.config[a("ipv6_address")],ipv6_dhcp:e.config[a("ipv6_dhcp")],ipv6_dhcp_expiry:e.config[a("ipv6_dhcp_expiry")],ipv6_dhcp_ranges:e.config[a("ipv6_dhcp_ranges")],ipv6_dhcp_stateful:e.config[a("ipv6_dhcp_stateful")],ipv6_l3only:e.config[a("ipv6_l3only")],ipv6_nat:e.config[a("ipv6_nat")],ipv6_nat_address:e.config[a("ipv6_nat_address")],ipv6_ovn_ranges:e.config[a("ipv6_ovn_ranges")],ipv6_gateway:e.config[a("ipv6_gateway")],ipv6_routes:e.config[a("ipv6_routes")],ipv6_routes_anycast:e.config[a("ipv6_routes_anycast")],ovn_ingress_mode:e.config[a("ovn_ingress_mode")],network:e.config.network,parent:e.config.parent,parentPerClusterMember:n,entityType:"network",bareNetwork:e,editRestriction:i}},F=()=>{const{isFineGrained:e}=W();return{canDeleteNetwork:n=>P(e,"can_delete",n==null?void 0:n.access_entitlements),canEditNetwork:n=>P(e,"can_edit",n==null?void 0:n.access_entitlements)}},Ee=({network:e,project:s})=>{const i=I(),n=o.useNotify(),c=E(),{hash:r}=X(),d=r?r.substring(1):j(ue),[m,p]=v.useState(d),h=K(),l=v.useState(null),[u,b]=v.useState(0),{data:C=[]}=Z(),{canEditNetwork:x}=F(),f=e.managed&&e.type==="physical",{data:N=[],error:k}=ie(e.name,s,f);v.useEffect(()=>{k&&n.failure("Loading network from cluster members failed",k)},[k]);const G=U().shape({name:q().test("deduplicate","A network with this name already exists",async g=>g===e.name||H(g,s,l,"networks")).required("Network name is required"),network:q().test("required","Uplink network is required",(g,w)=>w.parent.networkType!=="ovn"||!!g)}),z=x(e)?void 0:"You do not have permission to edit this network",_=V({initialValues:R(e,N,z),validationSchema:G,enableReinitialize:!0,onSubmit:g=>{const w=g.yaml?g.yaml:B(),S=he(w),Y={...S,etag:e.etag};(async L=>L.parentPerClusterMember?re(Y,s,L.parentPerClusterMember):oe(Y,s))(g).then(()=>{_.resetForm({values:R(S,N)}),h.invalidateQueries({queryKey:[y.projects,s,y.networks,e.name]}),h.invalidateQueries({queryKey:[y.projects,s,y.networks,e.name,y.cluster]}),c.success(t.jsxs(t.Fragment,{children:["Network","",t.jsx(A,{type:"network",value:e.name,to:`/ui/project/${s}/network/${e.name}`})," ","updated."]}))}).catch(L=>{n.failure("Network update failed",L)}).finally(()=>{_.setSubmitting(!1)})}}),B=()=>ye(me(_.values));v.useEffect(()=>{pe(d),p(d)},[d]);const M=(g,w)=>{if(!(w==="scroll"&&m===j($))){if(w==="click"){const S=`/ui/project/${s}/network/${e.name}`;i(g===D?S:`${S}/#${j(g)}`)}p(j(g))}},J=_.values.readOnly;return t.jsxs(t.Fragment,{children:[t.jsx(fe,{formik:_,getYaml:B,project:s,section:m??j(D),setSection:M,version:u},e.name),t.jsxs(be,{children:[t.jsx(_e,{formik:_,section:m,setSection:()=>{M(m===j($)?D:$,"click")},disableReason:_.values.name?void 0:"Please enter a network name to enable this section"}),J?null:t.jsxs(t.Fragment,{children:[t.jsx(o.Button,{appearance:"base",onClick:()=>{b(g=>g+1),_.setValues(R(e,N))},children:"Cancel"}),t.jsx(ve,{formik:_,isYaml:m===j($),disabled:ge(_,C)})]})]})]})},ke=({network:e,project:s})=>{var x;const i=o.useNotify(),n=E(),c=K(),[r,d]=v.useState(!1),m=I(),p=we(),{canDeleteNetwork:h}=F(),l=()=>{d(!0),ce(e.name,s).then(()=>{c.invalidateQueries({predicate:f=>f.queryKey[0]===y.projects&&f.queryKey[1]===s&&f.queryKey[2]===y.networks}),m(`/ui/project/${s}/networks`),n.success(t.jsxs(t.Fragment,{children:["Network ",t.jsx(je,{bold:!0,type:"network",value:e.name})," ","deleted."]}))}).catch(f=>{d(!1),i.failure("Network deletion failed",f)})},u=(((x=e.used_by)==null?void 0:x.length)??0)>0,b=e.managed,C=()=>h(e)?b?u?"Can not delete, network is currently in use":"":"Can not delete, network is not managed":"You do not have permission to delete this network";return t.jsxs(o.ConfirmationButton,{onHoverText:C(),confirmationModalProps:{title:"Confirm delete",confirmButtonAppearance:"negative",confirmButtonLabel:"Delete",children:t.jsxs("p",{children:["Are you sure you want to delete the network"," ",t.jsx(xe,{item:e,bold:!0}),"?",t.jsx("br",{}),"This action cannot be undone, and can result in data loss."]}),onConfirm:l},className:ee("u-no-margin--bottom",{"has-icon":!p}),loading:r,disabled:!h(e)||u||!b,shiftClickEnabled:!0,showShiftClickHint:!0,children:[!p&&t.jsx(o.Icon,{name:"delete"}),t.jsx("span",{children:"Delete network"})]})},De=({name:e,network:s,project:i})=>{var x;const{member:n}=O(),c=I(),r=o.useNotify(),d=E(),m=v.useState(null),{canEditNetwork:p}=F(),h=U().shape({name:q().test("deduplicate","A network with this name already exists",async f=>(s==null?void 0:s.name)===f||H(f,i,m,"networks")).required("Network name is required")}),l=V({initialValues:{name:e,isRenaming:!1},validationSchema:h,onSubmit:f=>{if(e===f.name){l.setFieldValue("isRenaming",!1),l.setSubmitting(!1);return}le(e,f.name,i).then(()=>{const N=`/ui/project/${i}/network/${f.name}`;c(N),d.success(t.jsxs(t.Fragment,{children:["Network ",t.jsx("strong",{children:e})," renamed to"," ",t.jsx(A,{type:"network",value:f.name,to:N}),"."]})),l.setFieldValue("isRenaming",!1)}).catch(N=>{r.failure("Renaming failed",N)}).finally(()=>{l.setSubmitting(!1)})}}),u=(((x=s==null?void 0:s.used_by)==null?void 0:x.length)??0)>0,b=s==null?void 0:s.managed,C=()=>{if(!p(s))return"You do not have permission to rename this network";if(!b)return"Can not rename, network is not managed";if(u)return"Can not rename, network is currently in use."};return t.jsx(Ne,{name:e,relatedChip:n&&t.jsx(A,{type:"cluster-member",value:n,to:`/ui/project/${i}/networks?member=${n}`}),parentItems:[t.jsx(T,{to:`/ui/project/${i}/networks`,children:"Networks"},1)],renameDisabledReason:C(),controls:s&&t.jsx(ke,{network:s,project:i}),isLoaded:!!s,formik:l})},Re=({network:e,forward:s,project:i})=>{const n=o.useNotify(),c=E(),r=K(),[d,m]=v.useState(!1),{canEditNetwork:p}=F(),h=()=>{m(!0),Se(e,s,i).then(()=>{c.success(`Network forward for ${s.listen_address} deleted`),r.invalidateQueries({predicate:l=>l.queryKey[0]===y.projects&&l.queryKey[1]===i&&l.queryKey[2]===y.networks&&l.queryKey[3]===e.name})}).catch(l=>{m(!1),n.failure("Network forward deletion failed",l)})};return t.jsx(o.ConfirmationButton,{appearance:"base",onHoverText:p(e)?"Delete network forward":"You do not have permission to delete this network forward",confirmationModalProps:{title:"Confirm delete",confirmButtonAppearance:"negative",confirmButtonLabel:"Delete",children:t.jsxs("p",{children:["Are you sure you want to delete the network forward with listen address ",s.listen_address,"?",t.jsx("br",{})]}),onConfirm:h},className:"u-no-margin--bottom has-icon",loading:d,shiftClickEnabled:!0,showShiftClickHint:!0,disabled:!p(e),children:t.jsx(o.Icon,{name:"delete"})})},Te=({port:e})=>{const s=e.target_port&&e.target_port.length>0?e.target_port:e.listen_port,n=`:${e.listen_port} → ${e.target_address}:${s} (${e.protocol})`;return t.jsx("div",{className:"u-truncate",title:n,children:n})},qe=({network:e,project:s})=>{const i=te(),n=o.useNotify(),{canEditNetwork:c}=F(),{data:r=[],error:d,isLoading:m}=se({queryKey:[y.projects,s,y.networks,e.name,y.forwards],queryFn:async()=>Fe(e.name,s)});d&&n.failure("Loading network forwards failed",d);const p=r.length>0,h=[{content:"Listen address",sortKey:"listenAddress"},{content:"Description",sortKey:"description"},{content:"Default target address",sortKey:"defaultTarget"},{content:"Ports"},{"aria-label":"Actions",className:"u-align--right actions"}],l=r.map(u=>({key:u.listen_address,columns:[{content:u.listen_address,role:"cell","aria-label":"Listen address"},{content:u.description,role:"cell","aria-label":"Description"},{content:u.config.target_address,role:"cell","aria-label":"Default target address"},{content:t.jsx(Le,{items:u.ports.map(b=>t.jsx(Te,{port:b},b.listen_port))}),role:"cell","aria-label":"Forwarded ports"},{content:t.jsxs(t.Fragment,{children:[c(e)&&t.jsx(T,{className:"p-button--base u-no-margin--bottom has-icon",to:`/ui/project/${s}/network/${e.name}/forwards/${u.listen_address}/edit`,title:"Edit network forward",children:t.jsx(o.Icon,{name:"edit"})}),!c(e)&&t.jsx(o.Button,{appearance:"base",className:"u-no-margin--bottom",dense:!0,hasIcon:!0,type:"button",title:"You do not have permission to edit forwards for this network",disabled:!0,children:t.jsx(o.Icon,{name:"edit"})},"edit"),t.jsx(Re,{network:e,forward:u,project:s},u.listen_address)]}),role:"rowheader",className:"u-align--right actions","aria-label":"Actions"}],sortData:{listenAddress:u.listen_address,description:u.description,defaultTarget:u.config.target_address??""}}));return m?t.jsx(Q,{}):t.jsxs(t.Fragment,{children:[c(e)&&t.jsx(T,{className:"p-button--positive u-no-margin--bottom u-float-right",to:`/ui/project/${s}/network/${e.name}/forwards/create`,children:"Create forward"}),!c(e)&&t.jsx(o.Button,{appearance:"positive",className:"u-float-right u-no-margin--bottom",disabled:!0,title:"You do not have permission to create network forwards for this network",children:t.jsx("span",{children:"Create forward"})}),t.jsxs(o.Row,{children:[p&&t.jsx($e,{dependencies:r,tableId:"network-forwards-table",belowIds:["status-bar"],children:t.jsx(o.MainTable,{id:"network-forwards-table",headers:h,expanding:!0,rows:l,paginate:30,sortable:!0,defaultSort:"listenAddress",defaultSortDirection:"ascending",className:"u-table-layout--auto network-forwards-table",emptyStateMsg:"No data to display"})}),!m&&!p&&t.jsxs(o.EmptyState,{className:"empty-state",image:t.jsx(o.Icon,{className:"empty-state-icon",name:"exposed"}),title:"No network forwards found",children:[t.jsx("p",{children:"There are no network forwards in this project."}),t.jsx("p",{children:t.jsxs("a",{href:`${i}/howto/network_forwards/`,target:"_blank",rel:"noopener noreferrer",children:["Learn more about network forwards",t.jsx(o.Icon,{className:"external-link-icon",name:"external-link"})]})})]})]})]})},mt=()=>{const e=o.useNotify(),{name:s,project:i,member:n,activeTab:c}=O();if(!s)return t.jsx(t.Fragment,{children:"Missing name"});if(!i)return t.jsx(t.Fragment,{children:"Missing project"});const{data:r,error:d,isLoading:m}=de(s,i,n);if(v.useEffect(()=>{d&&e.failure("Loading network failed",d)},[d]),m)return t.jsx(Q,{});const p=r==null?void 0:r.managed,h=()=>((r==null?void 0:r.type)??"")==="physical"||!p?["Configuration"]:["Configuration","Forwards"];return t.jsx(ae,{header:t.jsx(De,{network:r,project:i,name:s}),contentClassName:"edit-network",children:t.jsxs(o.Row,{children:[t.jsx(Ce,{tabs:h(),activeTab:c,tabUrl:`/ui/project/${i}/network/${s}`}),t.jsx(ne,{}),!c&&t.jsx("div",{role:"tabpanel","aria-labelledby":"configuration",children:r&&t.jsx(Ee,{network:r,project:i})}),c==="forwards"&&t.jsx("div",{role:"tabpanel","aria-labelledby":"forwards",children:r&&t.jsx(qe,{network:r,project:i})})]})})};export{mt as default};
Close