72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package tui
|
|
|
|
import (
|
|
"strings"
|
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
func (m model) handleNetworkMenu() (tea.Model, tea.Cmd) {
|
|
switch m.cursor {
|
|
case 0:
|
|
m.busy = true
|
|
return m, func() tea.Msg {
|
|
result, err := m.app.NetworkStatus()
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenNetwork}
|
|
}
|
|
case 1:
|
|
m.busy = true
|
|
return m, func() tea.Msg {
|
|
result, err := m.app.DHCPAllResult()
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenNetwork}
|
|
}
|
|
case 2:
|
|
m.pendingAction = actionDHCPOne
|
|
m.busy = true
|
|
return m, func() tea.Msg {
|
|
ifaces, err := m.app.ListInterfaces()
|
|
return interfacesMsg{ifaces: ifaces, err: err}
|
|
}
|
|
case 3:
|
|
m.pendingAction = actionStaticIPv4
|
|
m.busy = true
|
|
return m, func() tea.Msg {
|
|
ifaces, err := m.app.ListInterfaces()
|
|
return interfacesMsg{ifaces: ifaces, err: err}
|
|
}
|
|
case 4:
|
|
m.screen = screenMain
|
|
m.cursor = 0
|
|
return m, nil
|
|
}
|
|
return m, nil
|
|
}
|
|
|
|
func (m model) handleInterfacePickMenu() (tea.Model, tea.Cmd) {
|
|
if len(m.interfaces) == 0 {
|
|
return m, resultCmd("interfaces", "No physical interfaces found", nil, screenNetwork)
|
|
}
|
|
m.selectedIface = m.interfaces[m.cursor].Name
|
|
switch m.pendingAction {
|
|
case actionDHCPOne:
|
|
m.busy = true
|
|
return m, func() tea.Msg {
|
|
result, err := m.app.DHCPOneResult(m.selectedIface)
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenNetwork}
|
|
}
|
|
case actionStaticIPv4:
|
|
defaults := m.app.DefaultStaticIPv4FormFields(m.selectedIface)
|
|
m.formFields = []formField{
|
|
{Label: "IPv4 address", Value: defaults[0]},
|
|
{Label: "Prefix", Value: defaults[1]},
|
|
{Label: "Gateway", Value: strings.TrimSpace(defaults[2])},
|
|
{Label: "DNS (space-separated)", Value: defaults[3]},
|
|
}
|
|
m.formIndex = 0
|
|
m.screen = screenStaticForm
|
|
return m, nil
|
|
default:
|
|
return m, nil
|
|
}
|
|
}
|