Остання активність 1 month ago

nuno ревизій цього gist 1 month ago. До ревизії

1 file changed, 49 insertions

gistfile1.txt(файл створено)

@@ -0,0 +1,49 @@
1 + ef rule_inspect(rules_dir, rule_name):
2 + """Show inheritance tree for a rule"""
3 + try:
4 + rule_file = find_rule_file(rules_dir, rule_name)
5 + with open(rule_file) as f:
6 + rule = json.load(f)
7 + resolved = _rule_resolve_internal(rules_dir, rule_name)
8 +
9 + # Output format: section|key|value
10 + # Own rules
11 + for ip in rule.get('allow_ips', []):
12 + print(f"own|allow_ip|{ip}")
13 + for p in rule.get('allow_ports', []):
14 + print(f"own|allow_port|{p}")
15 + for ip in rule.get('block_ips', []):
16 + print(f"own|block_ip|{ip}")
17 + for p in rule.get('block_ports', []):
18 + print(f"own|block_port|{p}")
19 + if rule.get('dns_redirect'):
20 + print(f"own|dns_redirect|true")
21 +
22 + # Inherited rules per base
23 + for base_name in rule.get('extends', []):
24 + base = _rule_resolve_internal(rules_dir, base_name)
25 + for ip in base.get('allow_ips', []):
26 + print(f"inherited:{base_name}|allow_ip|{ip}")
27 + for p in base.get('allow_ports', []):
28 + print(f"inherited:{base_name}|allow_port|{p}")
29 + for ip in base.get('block_ips', []):
30 + print(f"inherited:{base_name}|block_ip|{ip}")
31 + for p in base.get('block_ports', []):
32 + print(f"inherited:{base_name}|block_port|{p}")
33 + if base.get('dns_redirect'):
34 + print(f"inherited:{base_name}|dns_redirect|true")
35 +
36 + # Resolved summary
37 + for ip in resolved.get('allow_ips', []):
38 + print(f"resolved|allow_ip|{ip}")
39 + for p in resolved.get('allow_ports', []):
40 + print(f"resolved|allow_port|{p}")
41 + for ip in resolved.get('block_ips', []):
42 + print(f"resolved|block_ip|{ip}")
43 + for p in resolved.get('block_ports', []):
44 + print(f"resolved|block_port|{p}")
45 + if resolved.get('dns_redirect'):
46 + print(f"resolved|dns_redirect|true")
47 + except Exception as e:
48 + print(f"Error: {e}", file=sys.stderr)
49 + sys.exit(1)
Новіше Пізніше