package app import ( "fmt" "strings" "bee/audit/internal/platform" ) func (a *App) ListInterfaces() ([]platform.InterfaceInfo, error) { return a.network.ListInterfaces() } func (a *App) DefaultRoute() string { return a.network.DefaultRoute() } func (a *App) DHCPOne(iface string) (string, error) { return a.network.DHCPOne(iface) } func (a *App) DHCPOneResult(iface string) (ActionResult, error) { body, err := a.network.DHCPOne(iface) return ActionResult{Title: "DHCP: " + iface, Body: bodyOr(body, "DHCP completed.")}, err } func (a *App) DHCPAll() (string, error) { return a.network.DHCPAll() } func (a *App) DHCPAllResult() (ActionResult, error) { body, err := a.network.DHCPAll() return ActionResult{Title: "DHCP: all interfaces", Body: bodyOr(body, "DHCP completed.")}, err } func (a *App) SetStaticIPv4(cfg platform.StaticIPv4Config) (string, error) { return a.network.SetStaticIPv4(cfg) } func (a *App) SetInterfaceState(iface string, up bool) error { return a.network.SetInterfaceState(iface, up) } func (a *App) GetInterfaceState(iface string) (bool, error) { return a.network.GetInterfaceState(iface) } func (a *App) CaptureNetworkSnapshot() (platform.NetworkSnapshot, error) { return a.network.CaptureNetworkSnapshot() } func (a *App) RestoreNetworkSnapshot(snapshot platform.NetworkSnapshot) error { return a.network.RestoreNetworkSnapshot(snapshot) } func (a *App) SetStaticIPv4Result(cfg platform.StaticIPv4Config) (ActionResult, error) { body, err := a.network.SetStaticIPv4(cfg) return ActionResult{Title: "Static IPv4: " + cfg.Interface, Body: bodyOr(body, "Static IPv4 updated.")}, err } func (a *App) NetworkStatus() (ActionResult, error) { ifaces, err := a.network.ListInterfaces() if err != nil { return ActionResult{Title: "Network status"}, err } if len(ifaces) == 0 { return ActionResult{Title: "Network status", Body: "No physical interfaces found."}, nil } var body strings.Builder for _, iface := range ifaces { ipv4 := "(no IPv4)" if len(iface.IPv4) > 0 { ipv4 = strings.Join(iface.IPv4, ", ") } fmt.Fprintf(&body, "- %s: state=%s ip=%s\n", iface.Name, iface.State, ipv4) } if gw := a.network.DefaultRoute(); gw != "" { fmt.Fprintf(&body, "\nDefault route: %s\n", gw) } return ActionResult{Title: "Network status", Body: strings.TrimSpace(body.String())}, nil } func (a *App) DefaultStaticIPv4FormFields(iface string) []string { return []string{ "", "24", strings.TrimSpace(a.network.DefaultRoute()), "77.88.8.8 77.88.8.1 1.1.1.1 8.8.8.8", } } func (a *App) ParseStaticIPv4Config(iface string, fields []string) platform.StaticIPv4Config { get := func(index int) string { if index >= 0 && index < len(fields) { return strings.TrimSpace(fields[index]) } return "" } return platform.StaticIPv4Config{ Interface: iface, Address: get(0), Prefix: get(1), Gateway: get(2), DNS: strings.Fields(get(3)), } }