1
0
Fork 0
mirror of https://github.com/NeoCloud/NeoNetwork synced 2024-12-26 00:29:23 +08:00
NeoNetwork/scripts/rfc2317.py

29 lines
1 KiB
Python
Executable file

#!/usr/bin/env python3
import ipaddress
ZONE = '.127.10.in-addr.arpa'
def truncate(rev: str) -> str:
assert rev.endswith(ZONE)
rev = rev[:-len(ZONE)]
return rev
def gen_reverse_pointers(network: str, ns: list, ds: list = [], ttl: int = -1) -> list:
ttl = f"{ttl} " if 900 <= ttl <= 86400 else ""
buf = list()
net = ipaddress.IPv4Network(network, strict=True)
assert net.prefixlen > 24
netrev = truncate(net.reverse_pointer)
for _ns in ns:
buf.append(f"{netrev} {ttl}IN NS {_ns}")
for _ds in ds:
buf.append(f"{netrev} {ttl}IN DS {_ds}")
for addr in net:
cnamefr = truncate(addr.reverse_pointer)
cnameto = f"{int.from_bytes(addr.packed, byteorder='big', signed=False) & 0xff}.{netrev}"
buf.append(f"{cnamefr} {ttl}IN CNAME {cnameto}")
return buf
if __name__ == "__main__":
print("\n".join(gen_reverse_pointers('10.127.8.64/26', ['ns1.jerry.neo.'], ['18792 13 2 2F335456EEE70FC4833886E5EEDC28E7195E90E2A337860B3E805D5EB9F3A804'], ttl=1500)))