Feature #9251 ยป netflix-no-aaaa.py
1 |
def init(id, cfg): |
---|---|
2 |
return True |
3 |
|
4 |
def deinit(id): |
5 |
return True |
6 |
|
7 |
def inform_super(id, qstate, superqstate, qdata): |
8 |
return True |
9 |
|
10 |
domains = [ |
11 |
"netflix.com.", |
12 |
"nflxso.net.", |
13 |
]
|
14 |
|
15 |
def operate(id, event, qstate, qdata): |
16 |
if event == MODULE_EVENT_NEW or event == MODULE_EVENT_PASS: |
17 |
if qstate.qinfo.qtype != RR_TYPE_AAAA: |
18 |
qstate.ext_state[id] = MODULE_WAIT_MODULE |
19 |
return True |
20 |
|
21 |
for domain in domains: |
22 |
if qstate.qinfo.qname_str == domain or qstate.qinfo.qname_str.endswith("." + domain): |
23 |
msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA) |
24 |
if not msg.set_return_msg(qstate): |
25 |
qstate.ext_state[id] = MODULE_ERROR |
26 |
return True |
27 |
# We don't need validation, result is valid
|
28 |
qstate.return_msg.rep.security = 2 |
29 |
qstate.return_rcode = RCODE_NOERROR |
30 |
qstate.ext_state[id] = MODULE_FINISHED |
31 |
log_info("no-aaaa: blocking AAAA request for %s" % qstate.qinfo.qname_str) |
32 |
return True |
33 |
|
34 |
qstate.ext_state[id] = MODULE_WAIT_MODULE |
35 |
return True |
36 |
|
37 |
if event == MODULE_EVENT_MODDONE: |
38 |
qstate.ext_state[id] = MODULE_FINISHED |
39 |
return True |
40 |
|
41 |
qstate.ext_state[id] = MODULE_ERROR |
42 |
return True |
43 |
|
44 |
log_info("pythonmod: script loaded") |
45 |
|