| Current Path : /snap/lxd/38450/share/lxd-ui/assets/ |
| Current File : //snap/lxd/38450/share/lxd-ui/assets/NetworkForwardForm-D9GKhsgS.js |
import{j as e,d as s,f as u,ar as x,h as d,as as h,at as g,t as P,ab as v,r as j,ac as I,p as F,a3 as A}from"./index-BsQN_SZU.js";import{S as N,f}from"./formFields-DzJouV_d.js";import{C as y}from"./ClusterMemberSelector-o7hg9ebZ.js";const $=({formik:t,network:a})=>e.jsxs("table",{className:"u-no-margin--bottom forward-ports",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"listen-port",children:e.jsx(s.Label,{required:!0,forId:"ports.0.listenPort",className:"u-no-margin--bottom",children:"Listen port"})}),e.jsx("th",{className:"protocol",children:e.jsx(s.Label,{required:!0,forId:"ports.0.protocol",className:"u-no-margin--bottom",children:"Protocol"})}),e.jsx("th",{className:"target-address",children:e.jsx(s.Label,{required:!0,forId:"ports.0.targetAddress",className:"u-no-margin--bottom",children:"Target address"})}),e.jsx("th",{className:"target-port",children:e.jsx(s.Label,{forId:"ports.0.targetPort",className:"u-no-margin--bottom",children:"Target port"})}),e.jsx("th",{className:"u-off-screen",children:"Actions"})]})}),e.jsx("tbody",{children:t.values.ports.map((o,r)=>{const l=t.errors.ports?.[r];return e.jsxs("tr",{children:[e.jsx("td",{className:"listen-port",children:e.jsx(s.Input,{...t.getFieldProps(`ports.${r}.listenPort`),id:`ports.${r}.listenPort`,type:"text","aria-label":`Port ${r} listen port`,placeholder:"Port number(s)",help:r===t.values.ports.length-1&&e.jsx(e.Fragment,{children:"e.g. 80,90-99."}),error:t.touched.ports?.[r]?.listenPort?l?.listenPort:void 0})}),e.jsx("td",{className:"protocol",children:e.jsx(s.Select,{...t.getFieldProps(`ports.${r}.protocol`),id:`ports.${r}.protocol`,options:[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"}],"aria-label":`Port ${r} protocol`})}),e.jsx("td",{className:"target-address",children:e.jsx(s.Input,{...t.getFieldProps(`ports.${r}.targetAddress`),id:`ports.${r}.targetAddress`,type:"text","aria-label":`Port ${r} target address`,placeholder:"Enter IP address",help:r===t.values.ports.length-1&&e.jsxs(e.Fragment,{children:["Must be from the network ",e.jsx("b",{children:a?.name}),"."]}),error:t.touched.ports?.[r]?.targetAddress?l?.targetAddress:void 0})}),e.jsx("td",{className:"target-port",children:e.jsx(s.Input,{...t.getFieldProps(`ports.${r}.targetPort`),id:`ports.${r}.targetPort`,type:"text","aria-label":`Port ${r} target port`,placeholder:"Port number(s)",help:r===t.values.ports.length-1&&"Same as listen port if empty",error:t.touched.ports?.[r]?.targetPort?l?.targetPort:void 0})}),e.jsx("td",{children:e.jsx(s.Button,{onClick:async()=>t.setFieldValue("ports",[...t.values.ports.slice(0,r),...t.values.ports.slice(r+1)]),hasIcon:!0,className:"u-no-margin--bottom",type:"button","aria-label":`Delete port ${r}`,children:e.jsx(s.Icon,{name:"delete"})})})]},r)})})]}),q=t=>({listen_address:t.listenAddress,description:t.description,config:{target_address:t.defaultTargetAddress},ports:t.ports.map(a=>({listen_port:a.listenPort?.toString(),protocol:a.protocol,target_address:a.targetAddress?.toString(),target_port:a.targetPort?.toString()})),location:t.location}),S=u().shape({listenAddress:d().test("valid-ip","Invalid IP address",g).required("Listen address is required"),ports:x().of(u().shape({listenPort:d().test("valid-port","Invalid port number",h).required("Listen port required"),protocol:d().required("Protocol is required"),targetAddress:d().test("valid-ip","Invalid IP address",g).required("Target address is required"),targetPort:d().nullable().test("valid-port","Invalid port number",h)}))}),T=({formik:t,isEdit:a,network:o})=>{const r=s.useNotify(),{data:l=[]}=P(),n=l.length>0&&o?.type===v;j.useEffect(()=>{n&&!t.values.location&&t.setFieldValue("location",l[0].server_name)},[l]);const i=()=>{A("form-contents","p-bottom-controls")};j.useEffect(i,[r.notification?.message]),s.useListener(window,i,"resize",!0);const b=()=>{t.setFieldValue("ports",[...t.values.ports,{protocol:"tcp"}]);const m=`ports.${t.values.ports.length}.listenPort`;f(m)},c=I(o),p=!c||!["0.0.0.0","::"].includes(t.values.listenAddress);return e.jsx(s.Form,{className:"form network-forwards-form",onSubmit:t.handleSubmit,children:e.jsx(s.Row,{className:"form-contents",children:e.jsx(s.Col,{size:12,children:e.jsxs(N,{children:[e.jsx(s.Input,{type:"submit",hidden:!0,value:"Hidden input"}),e.jsxs(s.Row,{className:"p-form__group p-form-validation",children:[e.jsx(F,{}),e.jsxs(s.Notification,{severity:"information",title:"Network information",titleElement:"h2",children:["Name: ",o?.name,e.jsx("br",{}),o?.config["ipv4.address"]&&e.jsxs(e.Fragment,{children:["IPv4: ",o?.config["ipv4.address"],e.jsx("br",{})]}),o?.config["ipv6.address"]&&e.jsxs(e.Fragment,{children:["IPv6: ",o?.config["ipv6.address"]]})]})]}),e.jsxs(s.Row,{children:[e.jsx(s.Col,{size:4,children:e.jsx(s.Label,{forId:"listenAddress",children:"Listen address"})}),e.jsxs(s.Col,{size:8,children:[c&&!a&&e.jsxs(e.Fragment,{children:[o?.config["ipv4.address"]!=="none"&&e.jsx(s.RadioInput,{label:"Auto-assign IPv4 address",checked:t.values.listenAddress==="0.0.0.0",onChange:()=>{t.setFieldValue("listenAddress","0.0.0.0")}}),o?.config["ipv6.address"]!=="none"&&e.jsx(s.RadioInput,{label:"Auto-assign IPv6 address",checked:t.values.listenAddress==="::",onChange:()=>{t.setFieldValue("listenAddress","::")}}),e.jsx(s.RadioInput,{label:"Manually enter address",checked:p,onChange:()=>{t.setFieldValue("listenAddress","")}})]}),e.jsx(s.Input,{...t.getFieldProps("listenAddress"),id:"listenAddress",type:"text",placeholder:"Enter IP address",autoFocus:!0,required:!0,disabled:a||!p,help:a?"Listen address can't be changed after creation.":"Any address routed to LXD.",error:t.touched.listenAddress?t.errors.listenAddress:void 0})]})]}),e.jsx(s.Input,{...t.getFieldProps("defaultTargetAddress"),id:"defaultTargetAddress",type:"text",label:"Default target address",help:e.jsxs(e.Fragment,{children:["Fallback target for traffic that does not match a port specified below.",e.jsx("br",{}),"Must be from the network ",e.jsx("b",{children:o?.name}),"."]}),placeholder:"Enter IP address",stacked:!0}),n&&e.jsx(y,{...t.getFieldProps("location"),id:"location",label:"Location",help:a?"Location can't be changed after creation.":"Cluster member to create the forward on.",disabled:a,stacked:!0}),e.jsx(s.Input,{...t.getFieldProps("description"),id:"description",type:"text",label:"Description",placeholder:"Enter description",stacked:!0}),t.values.ports.length>0&&e.jsx($,{formik:t,network:o}),e.jsxs(s.Button,{hasIcon:!0,onClick:b,type:"button",children:[e.jsx(s.Icon,{name:"plus"}),e.jsx("span",{children:"Add port"})]})]})})})})};export{S as N,T as a,q as t};