75 lines
2.7 KiB
Go
75 lines
2.7 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
|
||
"fyne.io/fyne/v2"
|
||
"fyne.io/fyne/v2/container"
|
||
"fyne.io/fyne/v2/widget"
|
||
)
|
||
|
||
func createNetworkTab(server outputStruct) *container.AppTabs {
|
||
etcHostsList := widget.NewList(
|
||
func() int {
|
||
return len(server.NetworkConfig.EtcHosts)
|
||
},
|
||
func() fyne.CanvasObject {
|
||
return container.NewHBox(
|
||
widget.NewLabel("etc hosts"),
|
||
)
|
||
},
|
||
func(id widget.ListItemID, obj fyne.CanvasObject) {
|
||
hbox := obj.(*fyne.Container)
|
||
line := server.NetworkConfig.EtcHosts[id]
|
||
lineLabel := hbox.Objects[0].(*widget.Label)
|
||
lineLabel.SetText(line)
|
||
},
|
||
)
|
||
|
||
netInterfacesList := widget.NewList(
|
||
//TODO тут всё может упасть. В NetInterfaces лежит структура, в которой есть список ip адресов
|
||
// обычно их не очень много, но в крайних случаях их может быть 100500 на сетевом интерфейсе
|
||
// и гуй этому не обрадуется. Пока фигачим всё одной строкой
|
||
func() int {
|
||
return len(server.NetworkConfig.NetInterfaces)
|
||
},
|
||
func() fyne.CanvasObject {
|
||
return container.NewHBox(
|
||
widget.NewLabel("интерфейс"),
|
||
)
|
||
},
|
||
func(id widget.ListItemID, obj fyne.CanvasObject) {
|
||
hbox := obj.(*fyne.Container)
|
||
iface := server.NetworkConfig.NetInterfaces[id]
|
||
ifaceLabel := hbox.Objects[0].(*widget.Label)
|
||
|
||
ifaceLabel.SetText(fmt.Sprintf("%s, флаги: %s, мак: %s, ip: %s, index: %s, MTU: %s", iface.Device, iface.Flags, iface.HwAddr, iface.IpAddr, iface.Index, iface.MTU))
|
||
},
|
||
)
|
||
|
||
networkManagerConnList := widget.NewList(
|
||
func() int {
|
||
return len(server.NetworkConfig.NetworkManagerConn)
|
||
},
|
||
func() fyne.CanvasObject {
|
||
return container.NewHBox(
|
||
widget.NewLabel("соединение"),
|
||
)
|
||
},
|
||
func(id widget.ListItemID, obj fyne.CanvasObject) {
|
||
hbox := obj.(*fyne.Container)
|
||
conn := server.NetworkConfig.NetworkManagerConn[id]
|
||
connLabel := hbox.Objects[0].(*widget.Label)
|
||
connLabel.SetText(conn)
|
||
},
|
||
)
|
||
networkAppTabs := container.NewAppTabs()
|
||
networkAppTabs.Append(container.NewTabItem("etc/hosts", container.NewScroll(etcHostsList)))
|
||
networkAppTabs.Append(container.NewTabItem("Список сетевых интерфейсов", container.NewScroll(netInterfacesList)))
|
||
networkAppTabs.Append(container.NewTabItem("nmcli c s", container.NewScroll(networkManagerConnList)))
|
||
networkAppTabs.Append(container.NewTabItem("NetworkManager", widget.NewLabel(fmt.Sprintf("Включен: %s", server.NetworkConfig.NetworkManager))))
|
||
networkAppTabs.Append(container.NewTabItem("Networking", widget.NewLabel(fmt.Sprintf("Включен: %s", server.NetworkConfig.Networking))))
|
||
|
||
return networkAppTabs
|
||
}
|