MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / SaveRulesToFile

Function SaveRulesToFile

agent/utils/firewall/client/iptables/persistence.go:26–62  ·  view source on GitHub ↗
(tab, chain, fileName string)

Source from the content-addressed store, hash-verified

24)
25
26func SaveRulesToFile(tab, chain, fileName string) error {
27 rulesFile := path.Join(global.Dir.FirewallDir, fileName)
28
29 stdout, err := RunWithStd(tab, "-S", chain)
30 if err != nil {
31 return fmt.Errorf("failed to list %s rules: %w", chain, err)
32 }
33 var rules []string
34 lines := strings.Split(stdout, "\n")
35 for _, line := range lines {
36 line = strings.TrimSpace(line)
37 if strings.HasPrefix(line, fmt.Sprintf("-A %s", chain)) {
38 rules = append(rules, line)
39 }
40 }
41
42 file, err := os.Create(rulesFile)
43 if err != nil {
44 return fmt.Errorf("failed to create rules file: %w", err)
45 }
46 defer file.Close()
47
48 writer := bufio.NewWriter(file)
49 for _, rule := range rules {
50 _, err := writer.WriteString(rule + "\n")
51 if err != nil {
52 return fmt.Errorf("failed to write rule to file: %w", err)
53 }
54 }
55
56 if err := writer.Flush(); err != nil {
57 return fmt.Errorf("failed to flush rules to file: %w", err)
58 }
59
60 global.LOG.Infof("persistence rules to %s successful", rulesFile)
61 return nil
62}
63
64func LoadRulesFromFile(tab, chain, fileName string) error {
65 if err := AddChain(tab, chain); err != nil {

Callers

nothing calls this directly

Calls 4

RunWithStdFunction · 0.85
CreateMethod · 0.65
CloseMethod · 0.65
FlushMethod · 0.45

Tested by

no test coverage detected