<div dir="ltr"><div>Greetings,</div><div><br></div><div>I'm trying to use the Python module to generate NAPTR responses.  Starting with the unmodified resgen.py example script, it correctly responds to A type queries, but when trying NAPTR, it does not work.</div>
<div><br></div><div>I've made the following changes to the script:</div><div><br></div><div><div> def operate(id, event, qstate, qdata):</div><div>     if (event == MODULE_EVENT_NEW) or (event == MODULE_EVENT_PASS):</div>
<div>-        if (qstate.qinfo.qname_str.endswith(".localdomain.")): #query name ends with localdomain</div><div>+        if (qstate.qinfo.qname_str.endswith(".example.e164.arpa.")): #query name ends with example.e164.arpa</div>
<div>             #create instance of DNS message (packet) with given parameters</div><div>-            msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA)</div><div>+            msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_NAPTR, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA)</div>
<div>             #append RR</div><div>-            if (qstate.qinfo.qtype == RR_TYPE_A) or (qstate.qinfo.qtype == RR_TYPE_ANY):</div><div>-                msg.answer.append("%s 10 IN A 127.0.0.1" % qstate.qinfo.qname_str)</div>
<div>+            if (qstate.qinfo.qtype == RR_TYPE_NAPTR):</div><div>+                log_info("pythonmod: Got NAPTR request")</div><div>+                response = "5 IN NAPTR 5 10 \"u\" \"E2U+sip\" \"!^(.*)$!sip:\\\\<a href="mailto:1@99.99.99.99">1@99.99.99.99</a>!\""</div>
<div>+                msg.answer.append("%s %s" % (qstate.qinfo.qname_str,response))</div><div>             #set qstate.return_msg </div><div>             if not msg.set_return_msg(qstate):</div><div>                 qstate.ext_state[id] = MODULE_ERROR </div>
<div>@@ -55,6 +22,7 @@</div><div>             #we don't need validation, result is valid</div><div>             qstate.return_msg.rep.security = 2</div><div> </div><div>+            log_info("pythonmod:  Returning answer")</div>
<div>             qstate.return_rcode = RCODE_NOERROR</div><div>             qstate.ext_state[id] = MODULE_FINISHED </div><div>             return True</div></div><div><br></div><div><div>    </div></div><div>This is the log for a test query:</div>
<div><br></div><div><div>Oct 29 10:28:03 chai unbound: [3598:0] info: 192.168.50.2 0.9.8.7.6.5.4.3.2.1.1.example.e164.arpa. NAPTR IN</div><div>Oct 29 10:28:03 chai unbound: [3598:0] info: pythonmod: Got NAPTR request</div>
<div>Oct 29 10:28:03 chai unbound: [3598:0] info: storeResponse: packet: ;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 0#012;; flags: qr aa ra ; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 #012;; QUESTION SECTION:#012;; 0.9.8.7.6.5.4.3.2.1.1.example.e164.arpa #011IN#011NAPTR#012#012;; ANSWER SECTION:#012#012;; AUTHORITY SECTION:#012#012;; ADDITIONAL SECTION:#012#012;; Query time: 0 msec#012;; WHEN: Thu Jan  1 00:00:00 1970#012;; MSG SIZE  rcvd: 47</div>
<div>Oct 29 10:28:03 chai unbound: [3598:0] info: pythonmod:  Returning answer</div><div>Oct 29 10:28:03 chai unbound: [3598:0] info: mesh_run: end 0 recursion states (0 with reply, 0 detached), 0 waiting replies, 1 recursion replies sent, 0 replies dropped, 0 states jostled out</div>
<div>Oct 29 10:28:03 chai unbound: [3598:0] info: average recursion processing time 0.000000 sec</div><div>Oct 29 10:28:03 chai unbound: [3598:0] info: histogram of recursion processing times</div><div>Oct 29 10:28:03 chai unbound: [3598:0] info: [25%]=0 median[50%]=0 [75%]=0</div>
<div>Oct 29 10:28:03 chai unbound: [3598:0] info: lower(secs) upper(secs) recursions</div><div>Oct 29 10:28:03 chai unbound: [3598:0] info:    0.000000    0.000001 1</div></div><div><br></div><div>And the output from dig:</div>
<div><br></div><div><div>dig -p 5353 @<a href="http://192.168.50.2">192.168.50.2</a> IN NAPTR 0.9.8.7.6.5.4.3.2.1.1.example.e164.arpa</div><div><br></div><div>; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.3 <<>> -p 5353 @<a href="http://192.168.50.2">192.168.50.2</a> IN NAPTR 0.9.8.7.6.5.4.3.2.1.1.example.e164.arpa</div>
<div>; (1 server found)</div><div>;; global options: +cmd</div><div>;; Got answer:</div><div>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19201</div><div>;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0</div>
<div><br></div><div>;; QUESTION SECTION:</div><div>; 0.9.8.7.6.5.4.3.2.1.1.example.e164.arpa.<span class="" style="white-space:pre">      </span>IN<span class="" style="white-space:pre">        </span>NAPTR</div><div><br></div><div>;; Query time: 0 msec</div>
<div>;; SERVER: 192.168.50.2#5353(192.168.50.2)</div><div>;; WHEN: Tue Oct 29 17:28:03 2013</div><div>;; MSG SIZE  rcvd: 47</div></div><div><br></div><div><br></div><div><br></div>-- <br><span style="border-collapse:separate"><span style="border-collapse:separate"><div style="word-wrap:break-word">
<span style="border-collapse:separate"><font face="Verdana, Geneva, sans-serif"><span style="font-size:12px"><b>Jeremy Shaffner</b></span></font><font face="Helvetica" size="3"> </font><br><span style="font-family:Verdana,Geneva,sans-serif;font-style:italic;color:rgb(153,153,153);font-size:12px">Director of Information Technology</span><font face="Helvetica" size="3"> </font><br>
<div style="font-family:Helvetica;font-size:medium;border-top-style:dotted;border-top-color:rgb(238,238,238);width:687px;padding-bottom:5px;border-top-width:1px"></div><font color="#69ab39" face="Verdana, Geneva, sans-serif" size="1"><b>cell/text</b></font><font face="Helvetica" size="3"> </font><font face="Verdana, Geneva, sans-serif"><span style="font-size:11px">925.480.7770</span></font></span></div>
<div style="word-wrap:break-word"><div style="word-wrap:break-word"><span style="border-collapse:separate"><font color="#69ab39" face="Verdana, Geneva, sans-serif" size="1"><b>Convo #</b></font><font face="Helvetica" size="3"> </font><font face="Verdana, Geneva, sans-serif"><span style="font-size:11px">240.751.4749</span></font></span><span style="font-family:Helvetica;font-size:medium"> </span><span style="font-family:Helvetica;font-size:medium"> </span></div>
</div><div style="word-wrap:break-word"><span style="border-collapse:separate"><font color="#69ab39" face="Verdana, Geneva, sans-serif" size="1"><b>email/iChat/FaceTime/Google</b></font><font face="Helvetica" size="3"> </font><font face="Verdana, Geneva, sans-serif"><span style="font-size:11px"><a href="mailto:jeremy@convorelay.com" target="_blank">jeremy@convorelay.com</a></span></font><font face="Helvetica" size="3"> <u></u></font><br>
<font face="Helvetica" size="3"><u></u><u></u></font><div style="font-family:Helvetica;font-size:medium;float:left"><u></u><span style="font-family:Verdana,Geneva,sans-serif;color:rgb(105,171,57);font-size:12px"><a href="http://media.convorelay.com/brand/email_sig/website.html?utm_campaign=sent-mail&utm_medium=email&utm_source=website" style="color:rgb(105,171,57);text-decoration:none" target="_blank">Convo™</a></span> <span style="font-family:Verdana,Geneva,sans-serif;color:rgb(236,236,236);font-size:10px">|</span> <u></u><u></u><a href="http://media.convorelay.com/brand/email_sig/website.html?utm_campaign=sent-mail&utm_medium=email&utm_source=website" style="color:rgb(153,153,153);font-family:Verdana,Geneva,sans-serif;font-size:11px;text-decoration:none" target="_blank">convorelay.com</a> <font color="#ececec" face="Verdana, Geneva, sans-serif">|</font><u></u></div>
<div style="font-family:Helvetica;font-size:medium;float:left"><u></u><font color="#ececec" face="Verdana, Geneva, sans-serif"><br></font><u></u></div><div style="font-family:Helvetica;font-size:medium;float:left"><u></u><font color="#ececec" face="Verdana, Geneva, sans-serif"><br>
</font><u></u></div></span></div></span></span><br>
</div>