Files
techsuppgetinfo/DCIManager6/dci6-support-reader/server_firewall_tab.go
2026-04-04 00:09:02 +08:00

114 lines
3.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// добавить генерацию файлов с правилами в архив, добавить номера строк, что бы хоть как то ориентироваться и в жопу это
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
}