最后活跃于 1 month ago

修订 2ab8fd11bb8548d1ae9d30c3efd9762f21c7989f

gistfile1.txt 原始文件
1ef 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)