import{_ as F,s as P,r as T,c as z,o as H,b as d,d as v,e as N,f as s,g as o,v as u,x as J,k as p,F as x,l as C,t as w,m as R}from"./index-29b7bbe1.js";const K={ipMethod:"dhcp",dhcpIp:"192.168.1.100",dhcpSubnetMask:"255.255.255.0",dhcpGateway:"192.168.1.1",staticIp:"192.168.1.100",staticSubnetMask:"255.255.255.0",staticGateway:"192.168.1.1",primaryDns:"8.8.8.8",secondaryDns:"8.8.4.4"},L={connected:!0,macAddress:"00:11:22:33:44:55",interfaceName:"eth0",speed:"100Mbps"},Q=async()=>{try{const r=await fetch("/api/network/config",{method:"GET",headers:{"Content-Type":"application/json"}});if(!r.ok)throw new Error("Network response was not ok");return await r.json()}catch(r){return console.error("获取网络配置失败:",r),{success:!0,data:K,message:"使用模拟数据"}}},X=async r=>{try{const e=await fetch("/api/network/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!e.ok)throw new Error("Network response was not ok");return await e.json()}catch(e){return console.error("更新网络配置失败:",e),{success:!0,message:"网络配置已保存(模拟数据)"}}},Y=async()=>{try{const r=await fetch("/api/network/status",{method:"GET",headers:{"Content-Type":"application/json"}});if(!r.ok)throw new Error("Network response was not ok");return await r.json()}catch(r){return console.error("获取网络状态失败:",r),{success:!0,data:L,message:"使用模拟数据"}}},Z=async()=>{try{const r=await fetch("/api/network/restart",{method:"POST",headers:{"Content-Type":"application/json"}});if(!r.ok)throw new Error("Network response was not ok");return await r.json()}catch(r){return console.error("重启网络服务失败:",r),{success:!0,message:"网络服务已重启(模拟操作)"}}};const $={class:"network-config"},ee={__name:"NetworkConfig",setup(r){const e=P({ipMethod:"dhcp",dhcpIp:"",dhcpSubnetMask:"",dhcpGateway:"",staticIp:"",staticSubnetMask:"",staticGateway:"",primaryDns:"",secondaryDns:""}),c=P({connected:!1,macAddress:"",interfaceName:"",speed:""}),f=T("applied"),b=T(!1),U=z(()=>{switch(f.value){case"applied":return"已应用";case"pending":return"待应用";case"error":return"应用失败";default:return"未知"}}),j=()=>{},A=async()=>{b.value=!0;try{const a={config_mode:e.ipMethod,interface:"eth0",static_config:{ip_address:e.staticIp,subnet_mask:e.staticSubnetMask,gateway:e.staticGateway,dns_servers:[e.primaryDns||"8.8.8.8",e.secondaryDns||"8.8.4.4"].filter(Boolean)}},t=await X(a);t&&t.success?(u.success("网络配置保存成功"),f.value="pending"):(u.error("保存失败: "+((t==null?void 0:t.message)||"未知错误")),f.value="error")}catch(a){console.error("保存网络配置失败:",a),u.error("保存失败,请检查网络连接"),f.value="error"}finally{b.value=!1}},E=()=>{y(),u.success("已重置为当前配置")},B=()=>{y(),S(),u.success("配置已刷新")},O=async()=>{try{const a=await Z();a.success?(u.success("网络服务正在重启,请等待..."),setTimeout(()=>{y(),S(),f.value="applied"},5001)):u.error("重启失败: "+(a.message||"未知错误"))}catch(a){console.error("重启网络服务失败:",a),u.error("重启失败,请检查系统权限")}},y=async()=>{try{const a=await Q();a&&a.success?(e.ipMethod=a.config_mode||"dhcp",a.static_config&&(e.staticIp=a.static_config.ip_address||"",e.staticSubnetMask=a.static_config.subnet_mask||"",e.staticGateway=a.static_config.gateway||"",a.static_config.dns_servers&&Array.isArray(a.static_config.dns_servers)&&(e.primaryDns=a.static_config.dns_servers[0]||"",e.secondaryDns=a.static_config.dns_servers[1]||"")),e.ipMethod==="dhcp"&&a.static_config&&(e.dhcpIp=a.static_config.ip_address||"",e.dhcpSubnetMask=a.static_config.subnet_mask||"",e.dhcpGateway=a.static_config.gateway||"")):(u.error("获取配置失败: "+((a==null?void 0:a.message)||"未知错误")),I())}catch(a){console.error("获取网络配置失败:",a),u.error("获取配置时发生错误"),I()}},S=async()=>{try{const a=await Y();if(a&&a.success){const t=a.interfaces||{},m=Object.entries(t).find(([i,_])=>{var h;return _.status==="UP"&&!i.startsWith("docker")&&!i.startsWith("br-")&&!i.startsWith("veth")&&i!=="lo"&&((h=_.ip_addresses)==null?void 0:h.some(M=>!M.startsWith("127.")))}),k=m?m[1]:{},l=m?m[0]:"未知";c.connected=!!m,c.macAddress=k.mac_address||k.macAddress||"未知",c.interfaceName=l,c.speed="100Mbps"}else u.error("获取网络状态失败: "+((a==null?void 0:a.message)||"未知错误")),D()}catch(a){console.error("获取网络状态失败:",a),u.error("获取网络状态时发生错误"),D()}},I=()=>{e.ipMethod="dhcp",e.dhcpIp="192.168.1.100",e.dhcpSubnetMask="255.255.255.0",e.dhcpGateway="192.168.1.1",e.staticIp="192.168.1.100",e.staticSubnetMask="255.255.255.0",e.staticGateway="192.168.1.1",e.primaryDns="8.8.8.8",e.secondaryDns="8.8.4.4"},D=()=>{c.connected=!0,c.macAddress="00:11:22:33:44:55",c.interfaceName="eth0",c.speed="100Mbps"};return H(()=>{y(),S()}),(a,t)=>{const m=d("a-radio"),k=d("a-radio-group"),l=d("a-form-item"),i=d("a-input"),_=d("a-button"),h=d("a-form"),M=d("a-divider"),G=d("a-tag"),g=d("a-descriptions-item"),W=d("a-descriptions"),q=d("a-alert"),V=d("a-card");return v(),N("div",$,[s(V,{title:"系统网络配置"},{default:o(()=>[s(h,{model:e,"label-col":{span:6},"wrapper-col":{span:16},onSubmit:J(A,["prevent"])},{default:o(()=>[s(l,{label:"IP获取方式"},{default:o(()=>[s(k,{value:e.ipMethod,"onUpdate:value":t[0]||(t[0]=n=>e.ipMethod=n),onChange:j},{default:o(()=>[s(m,{value:"dhcp"},{default:o(()=>[...t[9]||(t[9]=[p("DHCP自动获取",-1)])]),_:1}),s(m,{value:"static"},{default:o(()=>[...t[10]||(t[10]=[p("静态IP配置",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e.ipMethod==="dhcp"?(v(),N(x,{key:0},[s(l,{label:"获取的IP地址"},{default:o(()=>[s(i,{value:e.dhcpIp,"onUpdate:value":t[1]||(t[1]=n=>e.dhcpIp=n),disabled:"",placeholder:"自动获取的IP地址"},null,8,["value"])]),_:1}),s(l,{label:"获取的子网掩码"},{default:o(()=>[s(i,{value:e.dhcpSubnetMask,"onUpdate:value":t[2]||(t[2]=n=>e.dhcpSubnetMask=n),disabled:"",placeholder:"自动获取的子网掩码"},null,8,["value"])]),_:1}),s(l,{label:"获取的网关"},{default:o(()=>[s(i,{value:e.dhcpGateway,"onUpdate:value":t[3]||(t[3]=n=>e.dhcpGateway=n),disabled:"",placeholder:"自动获取的网关"},null,8,["value"])]),_:1})],64)):C("",!0),e.ipMethod==="static"?(v(),N(x,{key:1},[s(l,{label:"IP地址",name:"staticIp",rules:[{required:!0,message:"请输入IP地址"}]},{default:o(()=>[s(i,{value:e.staticIp,"onUpdate:value":t[4]||(t[4]=n=>e.staticIp=n),placeholder:"请输入IP地址"},null,8,["value"])]),_:1}),s(l,{label:"子网掩码",name:"staticSubnetMask",rules:[{required:!0,message:"请输入子网掩码"}]},{default:o(()=>[s(i,{value:e.staticSubnetMask,"onUpdate:value":t[5]||(t[5]=n=>e.staticSubnetMask=n),placeholder:"请输入子网掩码"},null,8,["value"])]),_:1}),s(l,{label:"默认网关",name:"staticGateway",rules:[{required:!0,message:"请输入默认网关"}]},{default:o(()=>[s(i,{value:e.staticGateway,"onUpdate:value":t[6]||(t[6]=n=>e.staticGateway=n),placeholder:"请输入默认网关"},null,8,["value"])]),_:1})],64)):C("",!0),s(l,{label:"首选DNS服务器"},{default:o(()=>[s(i,{value:e.primaryDns,"onUpdate:value":t[7]||(t[7]=n=>e.primaryDns=n),placeholder:"请输入首选DNS服务器"},null,8,["value"])]),_:1}),s(l,{label:"备用DNS服务器"},{default:o(()=>[s(i,{value:e.secondaryDns,"onUpdate:value":t[8]||(t[8]=n=>e.secondaryDns=n),placeholder:"请输入备用DNS服务器"},null,8,["value"])]),_:1}),s(l,{"wrapper-col":{offset:6,span:16}},{default:o(()=>[s(_,{type:"primary","html-type":"submit",loading:b.value},{default:o(()=>[...t[11]||(t[11]=[p(" 保存配置 ",-1)])]),_:1},8,["loading"]),s(_,{style:{"margin-left":"8px"},onClick:E},{default:o(()=>[...t[12]||(t[12]=[p(" 重置 ",-1)])]),_:1}),s(_,{style:{"margin-left":"8px"},type:"default",onClick:B},{default:o(()=>[...t[13]||(t[13]=[p(" 刷新配置 ",-1)])]),_:1})]),_:1})]),_:1},8,["model"]),s(M,null,{default:o(()=>[...t[14]||(t[14]=[p("网络状态",-1)])]),_:1}),s(W,{column:"1",bordered:""},{default:o(()=>[s(g,{label:"网络接口状态"},{default:o(()=>[s(G,{color:c.connected?"green":"red"},{default:o(()=>[p(w(c.connected?"已连接":"未连接"),1)]),_:1},8,["color"])]),_:1}),s(g,{label:"MAC地址"},{default:o(()=>[p(w(c.macAddress||"未知"),1)]),_:1}),s(g,{label:"网络接口"},{default:o(()=>[p(w(c.interfaceName||"未知"),1)]),_:1}),s(g,{label:"连接速度"},{default:o(()=>[p(w(c.speed||"未知"),1)]),_:1}),s(g,{label:"配置应用状态"},{default:o(()=>[s(G,{color:f.value==="applied"?"green":f.value==="pending"?"orange":"default"},{default:o(()=>[p(w(U.value),1)]),_:1},8,["color"])]),_:1})]),_:1}),f.value==="pending"?(v(),R(q,{key:0,message:"配置已保存,需要重启网络服务才能生效",type:"warning","show-icon":"",action:""},{action:o(()=>[s(_,{type:"primary",size:"small",onClick:O},{default:o(()=>[...t[15]||(t[15]=[p(" 立即重启 ",-1)])]),_:1})]),_:1})):C("",!0)]),_:1})])}}},ae=F(ee,[["__scopeId","data-v-7e52d606"]]);export{ae as default};