gistfile1.txt
· 2.0 KiB · Text
原始文件
ef rule_inspect(rules_dir, rule_name):
"""Show inheritance tree for a rule"""
try:
rule_file = find_rule_file(rules_dir, rule_name)
with open(rule_file) as f:
rule = json.load(f)
resolved = _rule_resolve_internal(rules_dir, rule_name)
# Output format: section|key|value
# Own rules
for ip in rule.get('allow_ips', []):
print(f"own|allow_ip|{ip}")
for p in rule.get('allow_ports', []):
print(f"own|allow_port|{p}")
for ip in rule.get('block_ips', []):
print(f"own|block_ip|{ip}")
for p in rule.get('block_ports', []):
print(f"own|block_port|{p}")
if rule.get('dns_redirect'):
print(f"own|dns_redirect|true")
# Inherited rules per base
for base_name in rule.get('extends', []):
base = _rule_resolve_internal(rules_dir, base_name)
for ip in base.get('allow_ips', []):
print(f"inherited:{base_name}|allow_ip|{ip}")
for p in base.get('allow_ports', []):
print(f"inherited:{base_name}|allow_port|{p}")
for ip in base.get('block_ips', []):
print(f"inherited:{base_name}|block_ip|{ip}")
for p in base.get('block_ports', []):
print(f"inherited:{base_name}|block_port|{p}")
if base.get('dns_redirect'):
print(f"inherited:{base_name}|dns_redirect|true")
# Resolved summary
for ip in resolved.get('allow_ips', []):
print(f"resolved|allow_ip|{ip}")
for p in resolved.get('allow_ports', []):
print(f"resolved|allow_port|{p}")
for ip in resolved.get('block_ips', []):
print(f"resolved|block_ip|{ip}")
for p in resolved.get('block_ports', []):
print(f"resolved|block_port|{p}")
if resolved.get('dns_redirect'):
print(f"resolved|dns_redirect|true")
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
| 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) |