import hashlib def rule_id(service_name: str, kind: str) -> int: h = hashlib.sha1(f"{service_name}:{kind}".encode()).hexdigest() return(int(h[:4], 16)) # here's hoping def build_nat_rules(services, cfg): rules = [] for s in services: rid_wan = rule_id(s.name, "dnat_wan") rid_hairpin = rule_id(s.name, "dnat_hairpin") rules.append({ "id": rid_wan, "service": s, "cfg": cfg, "kind": "dnat_wan", }) if "nat" in s.exposure: rules.append({ "id": rid_hairpin, "service": s, "cfg": cfg, "kind": "dnat_hairpin", }) return(rules)