Skip to content

Instantly share code, notes, and snippets.

@felddy
Forked from FiloSottile/no-aaaa.py
Last active August 9, 2023 23:56
Show Gist options
  • Save felddy/f0a71757714636120daf02aecb127a42 to your computer and use it in GitHub Desktop.
Save felddy/f0a71757714636120daf02aecb127a42 to your computer and use it in GitHub Desktop.
Unbound python-script to block AAAA records of Netflix domains.
def init(id, cfg):
return True
def deinit(id):
return True
def inform_super(id, qstate, superqstate, qdata):
return True
domains = [
"netflix.com.",
"nflxext.com.",
"nflximg.com.",
"nflxso.net.",
"nflxso.net.",
"nflxvideo.net."
]
def operate(id, event, qstate, qdata):
if event == MODULE_EVENT_NEW or event == MODULE_EVENT_PASS:
if qstate.qinfo.qtype != RR_TYPE_AAAA:
qstate.ext_state[id] = MODULE_WAIT_MODULE
return True
for domain in domains:
if qstate.qinfo.qname_str == domain or qstate.qinfo.qname_str.endswith("." + domain):
msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA)
if not msg.set_return_msg(qstate):
qstate.ext_state[id] = MODULE_ERROR
return True
# We don't need validation, result is valid
qstate.return_msg.rep.security = 2
qstate.return_rcode = RCODE_NOERROR
qstate.ext_state[id] = MODULE_FINISHED
log_info("no-aaaa: blocking AAAA request for %s" % qstate.qinfo.qname_str)
return True
qstate.ext_state[id] = MODULE_WAIT_MODULE
return True
if event == MODULE_EVENT_MODDONE:
qstate.ext_state[id] = MODULE_FINISHED
return True
qstate.ext_state[id] = MODULE_ERROR
return True
log_info("pythonmod: script loaded")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment