1import{_ as X}from"./LayoutColumn.vue_vue_type_script_setup_true_lang-Bsd5oZGv.js";import{_ as Y}from"./OhButton.vue-Dtzddm6W.js";import{_ as z}from"./OhForm.vue-hzRNQwgr.js";import{_ as J}from"./OhHeader.vue-BxGtEsOa.js";import{_ as Q}from"./OhInput.vue-CF6t5WGy.js";import{_ as W}from"./OhSelect.vue-c12QvHW4.js";import{O as Z}from"./OhTextField.vue-CXNWGUgo.js";import{_ as ee,a as re}from"./useRedirectModal-Dk-J0T8i.js";import{_ as oe}from"./OhCardFooter.vue_vue_type_script_setup_true_lang-0bTDrqXh.js";import{_ as te}from"./OhFlashMessage.vue_vue_type_script_setup_true_lang-DKY8S2bQ.js";import{_ as le}from"./BackLink.vue_vue_type_script_setup_true_lang-Dcy9dVuk.js";import{d as ie,a8 as ae,a as ne,K as se,S as i,A as r,O as s,X as g,Y as pe,P as x,H as ce,L as ue,a9 as P,a4 as R,F as me,r as $,j as c}from"./vendor-i18n-d5NYPexO.js";import{u as de,h as ve,t as fe,a as _e}from"./app-Bjj0N14K.js";import{u as ge}from"./index-Bzx-aT6s.js";import{c as d,f as be,r as b}from"./index-CsuKWVeY.js";import{g as we,u as he}from"./useValidations-yoQVQZkc.js";import{F as Me}from"./useInterfaceNav-HSbGvQp8.js";import{C as Ie}from"./mixpanelEvents-CYVQoDR2.js";import"./OhContainer.vue-Ctid55hm.js";import"./Primitive-coUWhel5.js";import"./navigation-D9FNzxdO.js";import"./GvIcon.vue-XUvgv9OL.js";import"./OhDynamicModal.vue_vue_type_script_setup_true_lang-2VT5f-7-.js";import"./GvTile.vue-DWIdZqZK.js";import"./useZendeskWidget-ZFOaLvLk.js";import"./OhAlert.vue-85f9XDkY.js";import"./useLayout-hW4GckK7.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./OhBadge.vue-DOaHTrjS.js";import"./useHomeRoute-D9gTh57A.js";import"./useInput-BJrhjAsY.js";import"./arrow_forward-CfQEAvCG.js";import"./logout-Bdbk-6q9.js";import"./useSubscription-DdEsf7x6.js";import"./HeaderUnauthenticatedBar-BEl93hiF.js";import"./OhKbd.vue-GXacq41G.js";import"./arrow_back-DMu1enb4.js";const Ve={class:"gv-button-group"},xe={class:"gv-flex"},sr=ie({__name:"Edit",props:{ruleId:{},cloudServer:{},contract:{},rule:{},protocols:{},ipVersions:{}},setup(v){const l=v,{t:o}=ae(),u=$(!1),f=$(""),{isIpCidr:y,portValidation:q}=he(),e=de({direction:l.rule.direction,ethertype:l.rule.etherType,protocol:l.rule.protocolType,remoteIpPrefix:l.rule.remoteIpPrefix,portRangeMin:l.rule.portRangeMin,portRangeMax:l.rule.portRangeMax,securityGroupId:l.rule.securityGroupId,comment:l.rule.comment}),O=["tcp","udp","icmp","ipv6-icmp"],_=c(()=>O.includes(e.protocol));function w(){e.ethertype==="IPv4"&&(f.value=o("cloudserver.firewall.overview.table.remoteIpPrefix.required"),e.protocol=e.protocol==="ipv6-icmp"?"icmp":e.protocol),e.ethertype==="IPv6"&&(f.value=o("cloudserver.firewall.overview.table.remoteIpPrefixIpv6.required"),e.protocol=e.protocol==="icmp"?"ipv6-icmp":e.protocol)}const h=c(()=>`${o("cloudserver.firewall.overview.table.remoteIpPrefix.invalid_ip")} ${f.value}`),S=c(()=>e.protocol==="icmp"||e.protocol==="ipv6-icmp"?o("cloudserver.firewall.overview.table.port.invalid_port_icmp"):o("cloudserver.firewall.overview.table.port.invalid_port")),C=c(()=>e.protocol==="icmp"||e.protocol==="ipv6-icmp"?o("cloudserver.firewall.overview.table.port.required_icmp"):o("cloudserver.firewall.overview.table.port.required")),F=c(()=>e.protocol==="icmp"||e.protocol==="ipv6-icmp"?o("cloudserver.firewall.overview.table.port.label_icmp"):o("cloudserver.firewall.create.port_label")),k=c(()=>e.protocol==="icmp"||e.protocol==="ipv6-icmp"?o("cloudserver.firewall.overview.table.port.required_icmp"):o("cloudserver.firewall.overview.table.port.required")),T=c(()=>({ethertype:{required:d.withMessage(o("cloudserver.firewall.overview.table.ip_version.required"),b)},protocol:{required:d.withMessage(o("cloudserver.firewall.overview.table.protocol.required"),b)},remoteIpPrefix:{required:d.withMessage(h.value,b),isIpCidr:d.withMessage(h.value,y(e.ethertype))},portRangeMin:{required:d.withMessage(C.value,be(_)),portValidation:d.withMessage(S.value,q(e.protocol))}})),a=ge(T,e),B=c(()=>{const p={};return Object.keys(l.protocols).forEach(t=>{(e.ethertype===void 0||e.ethertype==="IPv4"&&t!=="ipv6-icmp"||e.ethertype==="IPv6"&&t!=="icmp")&&(p[t]=t.toLowerCase())}),p});
1function E(){if(l.rule.portRangeMin!==l.rule.portRangeMax){e.portRangeMin=`${l.rule.portRangeMin}-${l.rule.portRangeMax}`;return}e.portRangeMin=l.rule.portRangeMin}async function L(){if(fe(Ie.FirewallRuleEdited,{productType:Me.UnmanagedVps,contractId:l.cloudServer.contract.id},_e().props),!await a.value.$validate())return;let p=null,t=null;if(_.value){const m=we(e.portRangeMin);p=m[0],t=m[1]}e.transform(m=>({...m,portRangeMin:p,portRangeMax:t})).patch(route("servers.firewall.edit.submit",{cloudServer:l.cloudServer.contract.id,ruleId:l.rule.id}),{onStart:()=>{u.value=!0},onSuccess:()=>{u.value=!1},onError:()=>{u.value=!1}})}return ne(()=>{E(),w()}),(p,t)=>{const m=le,U=J,N=te,M=W,I=Q,D=Z,j=re,V=Y,A=oe,G=ee,H=z,K=X;return x(),se(me,null,[i(r(ve),{title:r(o)("cloudserver.firewall.edit.title")},null,8,["title"]),i(K,{navigation:"cloudserver"},{header:s(()=>[i(U,{title:r(o)("cloudserver.firewall.edit.title"),subtitle:v.cloudServer.name},{breadcrumb:s(()=>[i(m,{"back-link":p.route("servers.firewall",{cloudServer:v.cloudServer.contract.id})},null,8,["back-link"])]),_:1},8,["title","subtitle"])]),default:s(()=>[g("main",null,[i(N),i(H,{form:r(e),onSubmit:pe(L,["prevent"])},{default:s(()=>[i(G,null,{default:s(()=>[i(j,{class:"gv-space-y-md"},{default:s(()=>[i(M,{modelValue:r(e).ethertype,"onUpdate:modelValue":t[0]||(t[0]=n=>r(e).ethertype=n),label:r(o)("cloudserver.firewall.overview.table.ip_version.label"),options:v.ipVersions,error:r(a).ethertype.$errors,onChange:w},null,8,["modelValue","label","options","error"]),i(M,{modelValue:r(e).protocol,"onUpdate:modelValue":t[1]||(t[1]=n=>r(e).protocol=n),label:r(o)("cloudserver.firewall.overview.table.protocol.label"),options:r(B),error:r(a).protocol.$errors},null,8,["modelValue","label","options","error"]),i(I,{modelValue:r(e).remoteIpPrefix,"onUpdate:modelValue":t[2]||(t[2]=n=>r(e).remoteIpPrefix=n),label:r(o)("cloudserver.firewall.overview.table.source"),disabled:r(u),error:r(a).remoteIpPrefix.$errors,message:r(a).remoteIpPrefix.$errors.length?"":r(f),onInput:r(a).remoteIpPrefix.$touch},null,8,["modelValue","label","disabled","error","message","onInput"]),r(_)?(x(),ce(I,{key:0,modelValue:r(e).portRangeMin,"onUpdate:modelValue":t[3]||(t[3]=n=>r(e).portRangeMin=n),label:r(F),disabled:r(u),error:r(a).portRangeMin.$errors,message:r(a).portRangeMin.$errors.length?"":r(k),onInput:r(a).portRangeMin.$touch},null,8,["modelValue","label","disabled","error","message","onInput"])):ue("",!0),i(D,{modelValue:r(e).comment,"onUpdate:modelValue":t[4]||(t[4]=n=>r(e).comment=n),label:r(o)("cloudserver.firewall.overview.table.comment"),optional:r(o)("generic.form.optional"),disabled:r(u),error:r(e).errors.comment,"show-char-count":"",max:255},null,8,["modelValue","label","optional","disabled","error"])]),_:1}),i(A,null,{default:s(()=>[g("div",Ve,[g("div",xe,[i(V,{variant:"cancel",href:p.route("servers.firewall",{cloudServer:v.contract.id})},{default:s(()=>[P(R(r(o)("generic.actions.back")),1)]),_:1},8,["href"]),i(V,{type:"submit",class:"gv-ml-sm",loading:r(u)},{default:s(()=>[P(R(r(o)("generic.actions.save")),1)]),_:1},8,["loading"])])])]),_:1})]),_:1})]),_:1},8,["form"])])]),_:1})],64)}}});export{sr 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.