first
This commit is contained in:
60
DCIManager6/dci6-support/server_info_firewalls.go
Normal file
60
DCIManager6/dci6-support/server_info_firewalls.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// для всех обычных фаерволов хватит двух команд
|
||||
// iptables --version если в ответе есть nf_tables (а это почти 100% случаев теперь), то просто команда
|
||||
// nft -j list ruleset
|
||||
// в ином случае можно добавить iptables -L
|
||||
// довольно сложный json, быстро у меня не получится его разоброать. Временно, я заберу просто вывод без json построчно
|
||||
// и так же, построчно отображу в читалке. Там даже в простом варианте из убунты, где их никто не настраивал, 590 строк.
|
||||
// значит пока что структура nfrRuleset
|
||||
// type nftRuleset struct {
|
||||
// Lines []string
|
||||
// }
|
||||
//
|
||||
|
||||
func getNftRuleset(dirName string) (nftRuleset, []error) {
|
||||
var rules nftRuleset
|
||||
var errs []error
|
||||
|
||||
cmd := exec.Command("nft", "list", "ruleset")
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при выполнении команды fmt list ruleset : %v", err)
|
||||
errs = append(errs, err)
|
||||
return rules, errs
|
||||
}
|
||||
i := 0
|
||||
rulesFile, err := os.Create(dirName + "/nftListRuleset.txt")
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка создания файла nftListRuleset.txt : %v", err)
|
||||
errs = append(errs, err)
|
||||
for line := range strings.SplitSeq(string(output), "\n") {
|
||||
line = strconv.Itoa(i) + " " + strings.TrimSpace(line)
|
||||
rules.Lines = append(rules.Lines, line)
|
||||
i += 1
|
||||
}
|
||||
} else {
|
||||
for line := range strings.SplitSeq(string(output), "\n") {
|
||||
line = strings.TrimSpace(line) + "\n"
|
||||
_, err := rulesFile.WriteString(line)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при записи в файл nftListRuleset.txt")
|
||||
errs = append(errs, err)
|
||||
}
|
||||
line = strconv.Itoa(i) + " " + strings.TrimSpace(line)
|
||||
rules.Lines = append(rules.Lines, line)
|
||||
i += 1
|
||||
}
|
||||
}
|
||||
defer rulesFile.Close()
|
||||
return rules, errs
|
||||
}
|
||||
Reference in New Issue
Block a user