first
This commit is contained in:
113
DCIManager6/dci6-support-reader/server_firewall_tab.go
Normal file
113
DCIManager6/dci6-support-reader/server_firewall_tab.go
Normal file
@@ -0,0 +1,113 @@
|
||||
// добавить генерацию файлов с правилами в архив, добавить номера строк, что бы хоть как то ориентироваться и в жопу это
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
// widget.NewLabel(fmt.Sprintf("UFW\t%s\nNftables\t%s\nFirewalld\t%s\nIptables\t%s", server.Firewalls.Ufw, server.Firewalls.Nftables, server.Firewalls.Firewalld, server.Firewalls.Iptables))
|
||||
|
||||
func createFirewallTab(server outputStruct) *container.AppTabs {
|
||||
firewallTabs := container.NewAppTabs()
|
||||
firewallTabs.Append(container.NewTabItem("список фаерволов", createFirewallListTab(server)))
|
||||
firewallTabs.Append(container.NewTabItem("nft list ruleset", createNftListRuleset(server)))
|
||||
return firewallTabs
|
||||
}
|
||||
|
||||
func createFirewallListTab(server outputStruct) *fyne.Container {
|
||||
firewalls := ""
|
||||
if server.Firewalls.Firewalld != "" {
|
||||
firewalls = firewalls + "firewalld"
|
||||
}
|
||||
if server.Firewalls.Nftables != "" {
|
||||
firewalls = firewalls + ", nftables"
|
||||
}
|
||||
if server.Firewalls.Ufw != "" {
|
||||
firewalls = firewalls + ", ufw"
|
||||
}
|
||||
|
||||
tab := container.NewBorder(
|
||||
container.NewVBox(
|
||||
widget.NewSeparator(),
|
||||
widget.NewLabel(fmt.Sprintf("Активные службы фаерволов: %s", firewalls)),
|
||||
), nil, nil, nil,
|
||||
)
|
||||
return tab
|
||||
}
|
||||
|
||||
func createNftListRuleset(server outputStruct) *fyne.Container {
|
||||
searchEntry := widget.NewEntry()
|
||||
searchEntry.SetPlaceHolder("Поиск ...")
|
||||
|
||||
filteredEntries := server.NftRuleset.Lines
|
||||
list := widget.NewList(
|
||||
func() int {
|
||||
return len(filteredEntries)
|
||||
},
|
||||
func() fyne.CanvasObject {
|
||||
return container.NewVBox(
|
||||
widget.NewLabel("fileName"),
|
||||
)
|
||||
},
|
||||
func(id widget.ListItemID, obj fyne.CanvasObject) {
|
||||
box := obj.(*fyne.Container)
|
||||
e := filteredEntries[id]
|
||||
fileName := box.Objects[0].(*widget.Label)
|
||||
|
||||
fileName.SetText(e)
|
||||
fileName.Selectable = true
|
||||
|
||||
},
|
||||
)
|
||||
searchEntry.OnChanged = func(text string) {
|
||||
if text == "" {
|
||||
filteredEntries = server.NftRuleset.Lines
|
||||
} else {
|
||||
var filtered []string
|
||||
lText := strings.ToLower(text)
|
||||
for _, elem := range server.NftRuleset.Lines {
|
||||
if strings.Contains(strings.ToLower(elem), lText) {
|
||||
filtered = append(filtered, elem)
|
||||
}
|
||||
}
|
||||
filteredEntries = filtered
|
||||
}
|
||||
list.Refresh()
|
||||
}
|
||||
// searchEntry.OnChanged = func(text string) {
|
||||
// if text == "" {
|
||||
// // Если поиск пустой - сбрасываем выделение
|
||||
// list.UnselectAll()
|
||||
// return
|
||||
// }
|
||||
|
||||
// lText := strings.ToLower(text)
|
||||
|
||||
// // Ищем первое вхождение
|
||||
// for index, elem := range server.NftRuleset.Lines {
|
||||
// if strings.Contains(strings.ToLower(elem), lText) {
|
||||
// // Выделяем найденный элемент
|
||||
// list.Select(index)
|
||||
// // Прокручиваем к нему
|
||||
// list.ScrollTo(index)
|
||||
// return
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Если ничего не найдено - сбрасываем выделение
|
||||
// list.UnselectAll()
|
||||
// }
|
||||
tab := container.NewBorder(
|
||||
container.NewVBox(
|
||||
searchEntry,
|
||||
widget.NewSeparator(),
|
||||
), nil, nil, nil,
|
||||
container.NewScroll(list),
|
||||
)
|
||||
return tab
|
||||
}
|
||||
Reference in New Issue
Block a user