Re: unescaped double quotes in TXT record
Hugo Monteiro <[email protected]> Tue, 25 May 2010 13:36:18 +0100
| Newsgroups | gmane.network.djbdns |
|---|---|
| Message-ID | <[email protected]> |
On 05/25/2010 07:09 AM, Daryl Tester wrote:
> (* Reply to dev null'd *)
>
> Hugo Monteiro wrote:
>
>> It's not a dig-ism. If it was, it would also show up in the dig
>> performed on the named server, right?
>
> Mea culpa - I missed your named setup/response in your initial message.
>
> However, I'm still not sure it's a not a dig-ism (potentially). I
> build a generic record thusly -
>
> # :fqdn:n:rdata:ttl:timestamp:lo
> :hp_4050._ipp._tcp.testernet:16:\160"qtotl=1" "rp=printers/xerox6130n"
> "ty=Xerox Phaser 6130N" "product=(Phaser 6130N)"
> "pdl=application/postscript":86400
>
> I fire off a dig query (response trimmed):
>
> # dig txt hp_4050._ipp._tcp.testernet @127.0.0.1
> ...
> ;; ANSWER SECTION:
> hp_4050._ipp._tcp.testernet. 86400 IN TXT "\"qtotl=1\"
> \"rp=printers/xerox6130n\" \"ty=Xerox Phaser 6130N\" \"product=(Phaser
> 6130N)\" \"pdl=application/postscript\""
>
> I tcpdump the same query:
>
> 15:18:32.775440 IP 127.0.0.1.53 > 127.0.0.1.46418: 2993*- 1/1/1 TXT
> ""qtotl=1" "rp=printers/xerox6130n" "ty=Xerox Phaser 6130N"
> "product=(Phaser 6130N)" "pdl=application/postscript"" (203)
> 0x0000: 4500 00e7 0000 4000 4011 3c04 7f00 0001 E.....@.@.<.....
> 0x0010: 7f00 0001 0035 b552 00d3 fee6 0bb1 8500 .....5.R........
> 0x0020: 0001 0001 0001 0001 0768 705f 3430 3530 .........hp_4050
> 0x0030: 045f 6970 7004 5f74 6370 0974 6573 7465 ._ipp._tcp.teste
> 0x0040: 726e 6574 0000 1000 01c0 0c00 1000 0100 rnet............
> 0x0050: 0151 8000 7170 2271 746f 746c 3d31 2220 .Q..qp"qtotl=1".
> 0x0060: 2272 703d 7072 696e 7465 7273 2f78 6572 "rp=printers/xer
> 0x0070: 6f78 3631 3330 6e22 2022 7479 3d58 6572 ox6130n"."ty=Xer
> 0x0080: 6f78 2050 6861 7365 7220 3631 3330 4e22 ox.Phaser.6130N"
> 0x0090: 2022 7072 6f64 7563 743d 2850 6861 7365 ."product=(Phase
> 0x00a0: 7220 3631 3330 4e29 2220 2270 646c 3d61 r.6130N)"."pdl=a
> 0x00b0: 7070 6c69 6361 7469 6f6e 2f70 6f73 7473 pplication/posts
> 0x00c0: 6372 6970 7422 c01e 0002 0001 0003 f480 cript"..........
> 0x00d0: 0005 026e 73c0 1ec0 b600 0100 0100 03f4 ...ns...........
> 0x00e0: 8000 047f 0000 01 .......
>
> No leading/trailing or backquoted quotes in the hexdumped query
> (you'll note that
> tcpdump also surrounds the text response with quotes). dnsq produces
> the following:
>
> # dnsq txt hp_4050._ipp._tcp.testernet 127.0.0.1
> 16 hp_4050._ipp._tcp.testernet:
> 203 bytes, 1+1+1+1 records, response, authoritative, noerror
> query: 16 hp_4050._ipp._tcp.testernet
> answer: hp_4050._ipp._tcp.testernet 86400 16
> p"qtotl=1"\040"rp=printers/xerox6130n"\040"ty=Xerox\040Phaser\0406130N"\040"product=(Phaser\0406130N)"\040"pdl=application/postscript"
>
>
> Are you using generic records or something else (potentially txt?).
>
Hello Daryl,
I have tried both TXT and generic records and the result was always the
same.
>> also, dnsq response, for the tinydns server is
>>
>> $ dnsq txt hp_4050._ipp._tcp.dev.hmonteiro.net 192.168.56.102
>> 16 hp_4050._ipp._tcp.dev.hmonteiro.net:
>> 252 bytes, 1+1+2+2 records, response, authoritative, noerror
>> query: 16 hp_4050._ipp._tcp.dev.hmonteiro.net
>> answer: hp_4050._ipp._tcp.dev.hmonteiro.net 60 16
>> {"qtotl=1"\040"rp=printers/HP"\040"ty=HP\040LaserJet\0404050\040Series\040PS"\040"product=(HP\040LaserJet\0404050\040Series)"\040"pdl=application/postscript"
>>
>> authority: dev.hmonteiro.net 604800 NS ns1.dev.hmonteiro.net
>> additional: ns1.dev.hmonteiro.net 604800 A 192.168.56.102
>
> Isn't this the correct response you're seeking?
>
>> $ dnsq txt xerox_phaser_6130n._ipp._tcp.dev.hmonteiro.net 192.168.56.103
>> 16 xerox_phaser_6130n._ipp._tcp.dev.hmonteiro.net:
>> 212 bytes, 1+1+1+1 records, response, authoritative, weird ra, noerror
>> query: 16 xerox_phaser_6130n._ipp._tcp.dev.hmonteiro.net
>> answer: xerox_phaser_6130n._ipp._tcp.dev.hmonteiro.net 604800 16
>> \007qtotl=1\026rp=printers/xerox6130n\025ty=Xerox\040Phaser\0406130N\026product=(Phaser\0406130N)\032pdl=application/postscript
>>
>> authority: dev.hmonteiro.net 604800 NS ns2.dev.hmonteiro.net
>> additional: ns2.dev.hmonteiro.net 604800 A 192.168.56.103
>>
>> i'm also finding the bind response weird .. \007 ? \026 ? \025 ?
>
> They look like lengths of the individual text portions - i.e.
>
> 7: qtotl=1
> 22: rp=printers/xerox6130n
> 21: ty=Xerox Phaser 6130N
> etc.
>
> (note octal to decimal conversion).
>
Aye, i missed that one. Good catch.
>> (but IT WORKS)
>
> Hmmm, OK, looking at Section 6 of
> <http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt>
> shows that it's supposed to be in the format that the bind server is
> returning (that is,
> each key/value pair needs to have a length byte preceeding it). I
> suspect the format you're
> feeding into djbdns doesn't have that.
>
I probably should have paid more attention to the contents of the draft.
Indeed you seem to be right.
>
> (And yippee, another protocol overloading the TXT record).
>
Looks like it, but the question now is: Is there any way to solve
this?... probably a well crafted generic record can do it..
I've also started to think about delegating _tcp.dev.hmonteiro.net zone
to a bind server and be done with it, but it sure would feel a lot
better if it could be done using tiny.
Thank you so much for your input and clarifications.
R's,
Hugo Monteiro.
--
fct.unl.pt:~# cat .signature
Hugo Monteiro
Email : [email protected]
Telefone : +351 212948300 Ext.15307
Web : http://hmonteiro.net
Divisão de Informática
Faculdade de Ciências e Tecnologia da
Universidade Nova de Lisboa
Quinta da Torre 2829-516 Caparica Portugal
Telefone: +351 212948596 Fax: +351 212948548
www.fct.unl.pt [email protected]
fct.unl.pt:~# _