This commit is contained in:
riglen
2026-03-31 18:20:47 +08:00
parent 5447805cb0
commit 1789c65121

View File

@@ -48,16 +48,26 @@ def _render_payload_line(payload_line: str, behavior: str) -> str:
return payload_line return payload_line
def _attach_policy(rendered_line: str, target: str, append_no_resolve: bool) -> str:
parts = [part.strip() for part in rendered_line.split(",")]
if parts and parts[-1] == "no-resolve":
parts.insert(len(parts) - 1, target)
line = ",".join(parts)
else:
line = f"{rendered_line},{target}"
if append_no_resolve:
line += ",no-resolve"
return line
def _resolve_rule_lines(rule_name: str, app_config: AppConfig, client: ClientConfig) -> list[str]: def _resolve_rule_lines(rule_name: str, app_config: AppConfig, client: ClientConfig) -> list[str]:
rule = app_config.rules[rule_name] rule = app_config.rules[rule_name]
target = resolve_policy(rule.policy, client) target = resolve_policy(rule.policy, client)
lines: list[str] = [] lines: list[str] = []
for payload_line in rule.payload: for payload_line in rule.payload:
line = f"{payload_line},{target}" rendered = _render_payload_line(payload_line, rule.behavior)
if rule.no_resolve: lines.append(_attach_policy(rendered, target, rule.no_resolve))
line += ",no-resolve"
lines.append(line)
if rule.file: if rule.file:
line = f"RULE-SET,{rule_name},{target}" line = f"RULE-SET,{rule_name},{target}"
@@ -108,9 +118,6 @@ def build_inline_rules(app_config: AppConfig, client: ClientConfig) -> list[str]
target = resolve_policy(rule.policy, client) target = resolve_policy(rule.policy, client)
for payload_line in load_rule_payload(path): for payload_line in load_rule_payload(path):
rendered = _render_payload_line(payload_line, rule.behavior) rendered = _render_payload_line(payload_line, rule.behavior)
line = f"{rendered},{target}" lines.append(_attach_policy(rendered, target, rule.no_resolve))
if rule.no_resolve:
line += ",no-resolve"
lines.append(line)
lines.append(f"MATCH,{client.main_policy}") lines.append(f"MATCH,{client.main_policy}")
return lines return lines