rule opt
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user