release
[hcoop/zz_old/debian/djbdns.git] / rts.tests
CommitLineData
dc0d77d7
CE
1# Requirements:
2# You are running as root.
3# You have dns{cache,log}, {tiny,pick,wall,axfr,rbl}dns accounts.
4# You have local IP addresses 127.43.0.{1,2,3,4,5}.
5# You are connected to the Internet.
6#
7# Some features not tested here:
8# dns_random works.
9# random-ip works.
10# dnstrace works.
11# dnstracesort works.
12# dns_resolvconfrewrite rereads after 10 minutes or 10000 uses.
13# dns_resolvconfip rereads after 10 minutes or 10000 uses.
14# /etc/resolv.conf is parsed properly.
15# dns_transmit handles timeouts properly.
16# dns_transmit falls back to TCP properly.
17# dns_transmit handles various strange situations: e.g., NOTIMP.
18
19
20umask 022
21
22rm -rf rts-tmp
23service=`pwd`/rts-tmp/service
24
25mkdir rts-tmp
26mkdir $service
27
28echo '
29*.b:.2.3.4
30=localhost:localhost.
31-.localhost:localhost.
32?:+.yp.to+.cr.yp.to+.whatever.cr.yp.to
33*.:
34' > rts-tmp/rewrite
35
36DNSREWRITEFILE=rts-tmp/rewrite; export DNSREWRITEFILE
37DNSCACHEIP=127.555.0.1; export DNSCACHEIP
38
39
40echo '--- dnscache-conf works'
41dnscache-conf dnscache dnslog $service/dnscache 127.555.0.1
42echo 127.555.0.2 > $service/dnscache/root/servers/tEST
43echo 127.555.0.2 > $service/dnscache/root/servers/tEST5
44echo 127.555.0.4 > $service/dnscache/root/servers/43.127.iN-aDDR.aRPA
45touch $service/dnscache/root/ip/127.43.0.1
46supervise $service/dnscache | supervise $service/dnscache/log &
47
48echo '--- tinydns-conf works'
49tinydns-conf tinydns dnslog $service/tinydns 127.555.0.2
50supervise $service/tinydns | supervise $service/tinydns/log &
51
52echo '--- pickdns-conf works'
53pickdns-conf pickdns dnslog $service/pickdns 127.555.0.3
54supervise $service/pickdns | supervise $service/pickdns/log &
55
56echo '--- walldns-conf works'
57walldns-conf walldns dnslog $service/walldns 127.555.0.4
58supervise $service/walldns | supervise $service/walldns/log &
59
60echo '--- rbldns-conf works'
61rbldns-conf rbldns dnslog $service/rbldns 127.555.0.5 RbL.TeSt
62supervise $service/rbldns | supervise $service/rbldns/log &
63
64echo '--- axfrdns-conf works'
65axfrdns-conf axfrdns dnslog $service/axfrdns $service/tinydns 127.555.0.2
66supervise $service/axfrdns | supervise $service/axfrdns/log &
67
68sleep 1
69
70
71echo '--- cache handles simple example'
72cachetest \
73one two three four five \
74one:un one two three four five \
75two:deux one two three four five \
76three:trois one two three four five \
77four:quatre one two three four five \
78five:cinq one two three four five \
79one:een one two three four five \
80two:twee one two three four five \
81three:drie one two three four five \
82four:vier one two three four five \
83five:vijf one two three four five
84echo $?
85
86echo '--- cache handles overwriting'
87cachetest \
88one two three four five \
89one:un one two three four five \
90one:een one two three four five \
91two:deux one two three four five \
92two:twee one two three four five \
93three:trois one two three four five \
94three:drie one two three four five \
95four:quatre one two three four five \
96four:vier one two three four five \
97five:cinq one two three four five \
98five:vijf one two three four five
99echo $?
100
101echo '--- cache handles long chains'
102cachetest \
103a:1 a \
104a:2 a \
105a:3 a \
106a:4 a \
107a:5 a \
108a:6 a \
109a:7 a \
110a:8 a \
111a:9 a
112echo $?
113
114
115echo '--- dnsip finds IP address of network-surveys.cr.yp.to'
116dnsip network-surveys.cr.yp.to
117echo $?
118
119echo '--- dnsip does not find nonexistent.cr.yp.to'
120dnsip nonexistent.cr.yp.to
121echo $?
122
123echo '--- dnsip rejects overly long domain names'
124dnsip x.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789
125echo $?
126
127echo '--- dnsip handles IP address on input'
128dnsip 1.2.3.4 127.0.0.1 10.555.678.901 '[010.0555.0678.0901]'
129echo $?
130
131echo '--- dnsip allows 0 to be omitted'
132dnsip 127...1
133echo $?
134
135echo '--- dnsip handles multiple IP addresses on input'
136dnsip 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16
137echo $?
138
139echo '--- dnsipq handles simple examples'
140dnsipq 1.b localhost anything.localhost 5.6.7.8 network-surveys nonexistent
141echo $?
142
143echo '--- dnsmx finds MX record for network-surveys.cr.yp.to'
144dnsmx network-surveys.cr.yp.to
145echo $?
146
147echo '--- dnsmx manufactures MX record for nonexistent.cr.yp.to'
148dnsmx NONexistent.cr.yp.to
149echo $?
150
151echo '--- dnsmx rejects overly long domain names'
152dnsmx 0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789
153echo $?
154
155echo '--- dnstxt finds TXT record for leap.yp.to'
156dnstxt leap.yp.to
157echo $?
158
159echo '--- dnstxt does not find nonexistent.cr.yp.to'
160dnstxt nonexistent.cr.yp.to
161echo $?
162
163echo '--- dnstxt rejects overly long domain names'
164dnstxt 0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789
165echo $?
166
167echo '--- dnsname finds host name of 131.193.178.100'
168dnsname 131.193.178.100
169echo $?
170
171echo '--- dnsname does not find 127.5.6.7'
172dnsname 127.5.6.7
173echo $?
174
175echo '--- dnsname rejects misformatted IP addresses'
176dnsname 1.2.3
177echo $?
178
179echo '--- dnsfilter finds some host names'
180echo '131.193.178.100+one two three
181127.5.6.7+one two three
18210+one two three' | dnsfilter
183echo $?
184
185
186echo '
187=movie.edu:1.2.3.4
188*star
189' > rts-tmp/data
190
191echo '--- tinydns-data complains about unrecognized initial characters'
192( cd rts-tmp; tinydns-data; echo $? )
193
194echo '
195.movie.edu:192.249.249.3:a
196.movie.edu::wormhole.movie.edu
197&fx.movie.edu:192.253.254.2:a
198&fx.movie.edu:192.253.254.3:b
199.249.249.192.in-addr.arpa:192.249.249.3:a
200.249.249.192.in-addr.arpa::wormhole.movie.edu
201.253.253.192.in-addr.arpa:192.249.249.3:a
202.253.253.192.in-addr.arpa:192.249.249.1:b
203.253.253.192.in-addr.arpa:192.253.253.1:c
204.254.253.192.in-addr.arpa:192.253.254.2:a
205.254.253.192.in-addr.arpa:192.253.254.3:b
206
207+localhost.movie.edu:127.0.0.1
208
209@movie.edu:192.249.249.1:a
210
211'\''movie.edu:Movie University
212:movie.edu:12345:One
213:movie.edu:12345:Two
214:movie.edu:12346:Three
215:movie.edu:12346:Four
216
217=wormhole.movie.edu:192.249.249.1
218+wh249.movie.edu:192.249.249.1
219=robocop.movie.edu:192.249.249.2
220=terminator.movie.edu:192.249.249.3
221+bigt.movie.edu:192.249.249.3
222=diehard.movie.edu:192.249.294.4
223+dh.movie.edu:192.249.294.4
224
225=wormhole.movie.edu:192.253.253.1
226+wh253.movie.edu:192.253.253.1
227+wh.movie.edu:192.253.253.1
228+wh.movie.edu:192.253.253.1
229=misery.movie.edu:192.253.253.2
230=shining.movie.edu:192.253.253.3
231=carrie.movie.edu:192.253.253.4
232
233.blah.movie.edu:1.2.3.4:blah.movie.edu
234'\''blah.movie.edu:Text
235' > rts-tmp/data
236utime rts-tmp/data 987654321
237
238echo '--- tinydns-data complains if it cannot create data.tmp'
239rm -f rts-tmp/data.tmp
240ln -s data.tmp rts-tmp/data.tmp
241( cd rts-tmp; tinydns-data; echo $? )
242rm -f rts-tmp/data.tmp
243
244echo '--- tinydns-data handles simple example'
245( cd rts-tmp; tinydns-data; echo $? )
246
247echo '--- tinydns-data produces A records'
248( cd rts-tmp; tinydns-get 1 wormhole.movie.edu | sort; echo $? )
249
250echo '--- tinydns-data produces NS records'
251( cd rts-tmp; tinydns-get 2 movie.edu; echo $? )
252
253echo '--- tinydns-data produces SOA records'
254( cd rts-tmp; tinydns-get 6 movie.edu; echo $? )
255
256echo '--- tinydns-data produces PTR records'
257( cd rts-tmp; tinydns-get 12 1.253.253.192.in-addr.arpa; echo $? )
258
259echo '--- tinydns-data produces MX records'
260( cd rts-tmp; tinydns-get 15 movie.edu; echo $? )
261
262echo '--- tinydns-data produces TXT records'
263( cd rts-tmp; tinydns-get 16 movie.edu; echo $? )
264
265echo '--- tinydns-data produces AXFR responses'
266( cd rts-tmp; tinydns-get 252 movie.edu; echo $? )
267
268echo '--- tinydns-data produces ANY responses'
269( cd rts-tmp; tinydns-get 255 movie.edu; echo $? )
270
271echo '--- tinydns-data produces records of any type'
272( cd rts-tmp; tinydns-get 12345 movie.edu; echo $? )
273( cd rts-tmp; tinydns-get 12346 movie.edu; echo $? )
274
275echo '--- tinydns-data produces NODATA responses'
276( cd rts-tmp; tinydns-get 54321 movie.edu; echo $? )
277
278echo '--- tinydns-data produces NXDOMAIN responses'
279( cd rts-tmp; tinydns-get 1 this.does.not.exist.movie.edu; echo $? )
280
281echo '--- tinydns-data produces NXDOMAIN responses for suffixes'
282( cd rts-tmp; tinydns-get 1 ns.movie.edu; echo $? )
283
284echo '--- tinydns-data produces NXDOMAIN ANY responses for suffixes'
285( cd rts-tmp; tinydns-get 255 ns.movie.edu; echo $? )
286
287echo '--- tinydns-data does not produce responses outside its bailiwick'
288( cd rts-tmp; tinydns-get 1 edu; echo $? )
289
290echo '--- tinydns-data does not include TXT in additional sections'
291( cd rts-tmp; tinydns-get 1 blah.movie.edu; echo $? )
292
293
294echo '
295.test:10.2.3.4:a
296+b.ns.test:10.2.3.6:259200
297.test:10.2.3.5:b
298'\''127.test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
299'\''128.test:01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
300'\''254.test:01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
301'\''255.test:012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234
302'\''387.test:012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
303'\''388.test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
304'\''400.test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
305'\''410.test:01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
306'\''420.test:012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
307'\''430.test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
308'\''435.test:012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234
309'\''436.test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
310'\''1000.test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
311=\000\001\177\200\277\.\.\..test:10.5.6.7
312.7.6.5.10.in-addr.arpa:10.5.6.7
313
314&x.\0\1\177\200\277\.\.\..test:10.8.9.10
315' > rts-tmp/data
316utime rts-tmp/data 0
317
318echo '--- tinydns-data handles another example'
319( cd rts-tmp; tinydns-data; echo $? )
320
321echo '--- tinydns-data uses serial 1 for mtime 0'
322( cd rts-tmp; tinydns-get Any test; echo $? )
323
324echo '--- tinydns-data does not split size-127 TXT records'
325( cd rts-tmp; tinydns-get Txt 127.test; echo $? )
326
327echo '--- tinydns-data splits size-128 TXT records'
328( cd rts-tmp; tinydns-get 16 128.test; echo $? )
329
330echo '--- tinydns-data splits size-254 TXT records'
331( cd rts-tmp; tinydns-get 16 254.test; echo $? )
332
333echo '--- tinydns-data doubly splits size-255 TXT records'
334( cd rts-tmp; tinydns-get 16 255.test; echo $? )
335
336echo '--- tinydns-data excludes the additional section if necessary'
337( cd rts-tmp; tinydns-get 16 387.test; echo $? )
338( cd rts-tmp; tinydns-get 16 388.test; echo $? )
339
340echo '--- tinydns-data excludes the authority section if necessary'
341( cd rts-tmp; tinydns-get 16 435.test; echo $? )
342( cd rts-tmp; tinydns-get 16 436.test; echo $? )
343
344echo '--- tinydns-data handles size-1000 TXT records'
345( cd rts-tmp; tinydns-get 16 1000.test; echo $? )
346
347echo '--- tinydns-data handles unusual characters in owner names'
348( cd rts-tmp; tinydns-get A '\0\1\177\200\277\56\56\56.test'; echo $? )
349
350echo '--- tinydns-data handles unusual characters in PTR results'
351( cd rts-tmp; tinydns-get Ptr 7.6.5.10.in-addr.arpa; echo $? )
352
353echo '--- tinydns-data handles delegations'
354( cd rts-tmp; tinydns-get 1 'x.\0\1\177\200\277\56\56\56.test'; echo $? )
355( cd rts-tmp; tinydns-get 1 'ns.x.\0\1\177\200\277\56\56\56.test'; echo $? )
356( cd rts-tmp; tinydns-get 1 'z.y.x.\0\1\177\200\277\56\56\56.test'; echo $? )
357
358
359echo '
360Ztest:Primary.Server:Host.Master:1234567:2345678:3456789:4567890:5678901:98765
361&test:1.2.3.4::37
362@*.wild.test:1.2.3.7:mail.wild.test:54321:46
363&child.test:1.2.3.5::38
364@test:1.2.3.4:::41
365=test:1.2.3.4:39
366+www.test:1.2.3.4:40
367'\''test:Text:42
368:test:12345:Binary:43
369Cmail.test:www.test:44
370+*.wild.test:1.2.3.6:45
371=override.wild.test:1.2.3.8:47
372+*.wild.wild.test:1.2.3.9:48
373&child.wild.test:1.2.3.10:49
374C*.alias.wild.test:wild.test:50
375' > rts-tmp/data
376utime rts-tmp/data 0
377
378echo '--- tinydns-data handles another example'
379( cd rts-tmp; tinydns-data; echo $? )
380
381echo '--- tinydns-data handles TTLs'
382( cd rts-tmp; tinydns-get 255 test; echo $? )
383( cd rts-tmp; tinydns-get 255 www.test; echo $? )
384( cd rts-tmp; tinydns-get 255 child.test; echo $? )
385
386echo '--- tinydns-data handles CNAMEs'
387( cd rts-tmp; tinydns-get 255 mail.test; echo $? )
388( cd rts-tmp; tinydns-get 5 mail.test; echo $? )
389( cd rts-tmp; tinydns-get 1 mail.test; echo $? )
390( cd rts-tmp; tinydns-get 255 foo.mail.test; echo $? )
391
392echo '--- tinydns-data does not apply wildcard A to base name'
393( cd rts-tmp; tinydns-get 1 wild.test; echo $? )
394
395echo '--- tinydns-data handles wildcard A records'
396( cd rts-tmp; tinydns-get 1 x.wild.test; echo $? )
397( cd rts-tmp; tinydns-get 1 xy.wild.test; echo $? )
398( cd rts-tmp; tinydns-get 1 x.z.wild.test; echo $? )
399
400echo '--- tinydns-data handles wildcard MX records'
401( cd rts-tmp; tinydns-get 255 wild.test; echo $? )
402
403echo '--- tinydns-data does not apply wildcard MX to base name'
404( cd rts-tmp; tinydns-get 255 x.wild.test; echo $? )
405( cd rts-tmp; tinydns-get 255 xy.wild.test; echo $? )
406( cd rts-tmp; tinydns-get 15 x.z.wild.test; echo $? )
407( cd rts-tmp; tinydns-get 255 x.z.wild.test; echo $? )
408( cd rts-tmp; tinydns-get 255 '*'.wild.test; echo $? )
409
410echo '--- tinydns-data uses wildcard under base of sub-wildcard'
411( cd rts-tmp; tinydns-get 255 alias.wild.test; echo $? )
412
413echo '--- tinydns-data handles wildcard CNAME records'
414( cd rts-tmp; tinydns-get 255 xyz.alias.wild.test; echo $? )
415( cd rts-tmp; tinydns-get 255 '*'.alias.wild.test; echo $? )
416
417echo '--- tinydns-data lets explicit record override wildcard'
418( cd rts-tmp; tinydns-get 255 override.wild.test; echo $? )
419
420echo '--- tinydns-data handles overrides sanely'
421( cd rts-tmp; tinydns-get 255 x.override.wild.test; echo $? )
422
423echo '--- tinydns-data overrides wildcard with subdomain wildcard'
424( cd rts-tmp; tinydns-get 255 x.wild.wild.test; echo $? )
425
426echo '--- tinydns-data overrides wildcard with delegation'
427( cd rts-tmp; tinydns-get 255 child.wild.test; echo $? )
428( cd rts-tmp; tinydns-get 255 x.child.wild.test; echo $? )
429
430
431echo '
432.four:1.2.3.4::0:30000000fedcba98
433+www.four:1.2.3.4:0:30000000fedcba98
434.five:1.2.3.5:::30000000fedcba98
435+www.five:1.2.3.5::30000000fedcba98
436.six:1.2.3.6::0:50000000fedcba98
437+www.six:1.2.3.6:0:50000000fedcba98
438.seven:1.2.3.7:::50000000fedcba98
439+www.seven:1.2.3.7::50000000fedcba98
440' > rts-tmp/data
441utime rts-tmp/data 7654321
442
443echo '--- tinydns-data handles another example'
444( cd rts-tmp; tinydns-data; echo $? )
445
446echo '--- tinydns-data handles ending time'
447( cd rts-tmp; tinydns-get 255 www.four; echo $? )
448( cd rts-tmp; tinydns-get 255 www.six; echo $? )
449
450echo '--- tinydns-data handles starting time'
451( cd rts-tmp; tinydns-get 255 www.five; echo $? )
452( cd rts-tmp; tinydns-get 255 www.seven; echo $? )
453
454
455echo '--- tinydns-edit handles simple examples'
456echo '' > rts-tmp/data
457( cd rts-tmp; tinydns-edit data data.new add ns heaven.af.mil 1.2.3.5; echo $? )
458( cd rts-tmp; tinydns-edit data data.new add ns heaven.af.mil 1.2.3.6; echo $? )
459( cd rts-tmp; tinydns-edit data data.new add childns sub.heaven.af.mil 1.2.10.11; echo $? )
460( cd rts-tmp; tinydns-edit data data.new add childns sub.heaven.af.mil 1.2.10.12; echo $? )
461( cd rts-tmp; tinydns-edit data data.new add host lion.heaven.af.mil 1.2.3.4; echo $? )
462( cd rts-tmp; tinydns-edit data data.new add host tiger.heaven.af.mil 1.2.3.5; echo $? )
463( cd rts-tmp; tinydns-edit data data.new add host bear.heaven.af.mil 1.2.3.6; echo $? )
464( cd rts-tmp; tinydns-edit data data.new add alias www.heaven.af.mil 1.2.3.4; echo $? )
465( cd rts-tmp; tinydns-edit data data.new add mx heaven.af.mil 1.2.3.4; echo $? )
466( cd rts-tmp; tinydns-edit data data.new add mx heaven.af.mil 1.2.3.7; echo $? )
467cat rts-tmp/data
468
469echo '--- tinydns-edit rejects hosts with old names or IP addresses'
470( cd rts-tmp; tinydns-edit data data.new add host panda.heaven.af.mil 1.2.3.6; echo $? )
471( cd rts-tmp; tinydns-edit data data.new add host bear.heaven.af.mil 1.2.3.8; echo $? )
472cat rts-tmp/data
473
474echo '--- tinydns-edit recognizes alternate forms of host names'
475( cd rts-tmp; tinydns-edit data data.new add host 'BE\101r.Heaven.AF..Mil.' 1.2.3.8; echo $? )
476cat rts-tmp/data
477
478echo '--- tinydns-edit copies TTLs from previous NS records'
479echo '.test:1.2.3.4:a:3600' > rts-tmp/data
480( cd rts-tmp; tinydns-edit data data.new add ns test 1.2.3.5; echo $? )
481cat rts-tmp/data
482
483
484
485echo '
486.Test:127.555.0.2
487=Www.Test:127.555.0.100
488=Www.Test:127.555.0.101
489@Test:127.555.0.100:a:1234
490@Test:127.555.0.101:b:45678
491&Pick.Test:127.555.0.3
492&Pick2.Test:127.555.0.3
493&Rbl.Test:127.555.0.5
494.Test2:127.555.0.2
495+*.Test2:127.555.0.102
496C*.Www.Test2:Www.Test2:5000
497=one.Test2:127.555.0.103::300000003456789a
498=two.Test2:127.555.0.104:0:500000003456789a
499.Test3:127.555.0.2
500=Www.Test3:127.0.0.106
501.Test4:127.555.0.2
502'\''Test4:001234567890123456789012345678901234567890123456789
503'\''Test4:101234567890123456789012345678901234567890123456789
504'\''Test4:201234567890123456789012345678901234567890123456789
505'\''Test4:301234567890123456789012345678901234567890123456789
506'\''Test4:401234567890123456789012345678901234567890123456789
507'\''Test4:501234567890123456789012345678901234567890123456789
508'\''Test4:601234567890123456789012345678901234567890123456789
509'\''Test4:701234567890123456789012345678901234567890123456789
510'\''Test4:801234567890123456789012345678901234567890123456789
511'\''Test4:901234567890123456789012345678901234567890123456789
512'\''Big.Test:0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
513%i3:127.555.0.3
514%i4:127.555.0.4
515%i5:127.555.0.5
516%ME:127
517%EX
518.Test5:127.555.0.2:ex:::EX
519.Test5:127.555.0.2:me:::ME
520.Test5:127.555.0.2:i3:::i3
521.Test5:127.555.0.2:i4:::i4
522.Test5:127.555.0.2:i5:::i5
523-Pick.Test5:127.555.0.100:::EX
524+Pick.Test5:127.555.0.101:::EX
525-Pick2.Test5:127.555.0.102:::ME
526+Pick2.Test5:127.555.0.102:::ME
527+Pick3.Test5:127.555.0.100
528+Pick3.Test5:127.555.0.101:::EX
529+Pick3.Test5:127.555.0.102:::ME
530+Pick3.Test5:127.555.0.103:::i3
531+Pick3.Test5:127.555.0.104:::i4
532+Pick3.Test5:127.555.0.105:::i5
533+*.Wild.Test5:127.555.0.100
534+*.Wild.Test5:127.555.0.101:::EX
535+*.Wild.Test5:127.555.0.102:::ME
536+*.Wild.Test5:127.555.0.103:::i3
537+*.Wild.Test5:127.555.0.104:::i4
538+*.Wild.Test5:127.555.0.105:::i5
539' > $service/tinydns/root/data
540utime $service/tinydns/root/data 987654321
541( cd $service/tinydns/root; tinydns-data )
542
543echo '
544-Pick.Test:127.555.0.100
545+Pick.Test:127.555.0.101
546-Pick2.Test:127.555.0.102:ME
547+Pick2.Test:127.555.0.102:ME
548%ME:127
549' > $service/pickdns/root/data
550( cd $service/pickdns/root; pickdns-data )
551
552echo '
5534.0.0.1
5544.0.0.2/31
5554.0.0.4/30
5564.0.0.8/29
5574.0.0.16/28
5584.0.0.32/27
5594.0.0.64/26
5604.0.0.128/25
5614.0.1.0/24
5624.0.2.0/23
5634.0.4.0/22
5644.0.8.0/21
5654.0.16.0/20
5664.0.32.0/19
5674.0.64.0/18
5684.0.128.0/17
5694.1.0.0/16
5704.2.0.0/15
5714.4.0.0/14
5724.8.0.0/13
5734.16.0.0/12
5744.32.0.0/11
5754.64.0.0/10
5764.128.0.0/9
5775.0.0.0/8
578:127.0.0.3:See http://www.rbl.test/$
579' > $service/rbldns/root/data
580( cd $service/rbldns/root; rbldns-data )
581
582echo '
583127.:allow,AXFR="tEsT/TeSt2/TEst5"
584:deny
585' > $service/axfrdns/tcp
586( cd $service/axfrdns; tcprules tcp.cdb tcp.tmp < tcp )
587
588
589echo '--- dnscache handles dotted-decimal names'
590dnsqr 255 127.43.123.234
591echo $?
592
593echo '--- tinydns works'
594dnsip WWW.TEST | tr ' ' '\012' | sort
595echo $?
596dnsmx TEST
597echo $?
598dnsq 255 WWW.TEST 127.555.0.2 | sort
599echo $?
600dnsq Any TEST 127.555.0.2
601echo $?
602
603echo '--- dnscache handles large TXT records'
604dnstxt BIG.Test
605
606echo '--- walldns handles in-addr.arpa names'
607dnsname 127.555.6.7
608echo $?
609dnsname 127.555.123.234
610echo $?
611dnsip 234.123.43.127.IN-ADDR.ARPA
612echo $?
613dnsq 255 234.123.43.127.IN-ADDR.ARPA 127.555.0.4
614echo $?
615
616echo '--- walldns handles dotted-decimal names'
617dnsq 255 127.43.123.234 127.555.0.4
618echo $?
619
620echo '--- walldns rejects other names'
621dnsq 255 BLAH.TEST 127.555.0.4
622echo $?
623
624echo '--- rbldns works'
625dnsip 2.3.4.5.rbl.test
626echo $?
627dnstxt 2.3.4.5.rbl.test
628echo $?
629dnsq 255 2.3.4.5.rbl.test 127.555.0.5
630echo $?
631dnsip 200.255.1.4.rbl.test
632echo $?
633dnstxt 200.255.1.4.rbl.test
634echo $?
635dnsq 255 200.255.1.4.rbl.test 127.555.0.5
636echo $?
637dnsip 200.255.0.4.rbl.test
638echo $?
639dnstxt 200.255.0.4.rbl.test
640echo $?
641dnsq 255 200.255.0.4.rbl.test 127.555.0.5
642echo $?
643dnsip 1.0.0.4.rbl.test
644echo $?
645dnstxt 1.0.0.4.rbl.test
646echo $?
647dnsq 255 1.0.0.4.rbl.test 127.555.0.5
648echo $?
649dnsip 0.0.0.4.rbl.test
650echo $?
651dnstxt 0.0.0.4.rbl.test
652echo $?
653dnsq 255 0.0.0.4.rbl.test 127.555.0.5
654echo $?
655
656echo '--- tinydns handles differentiation'
657dnsip PICK.TEST5
658echo $?
659dnsip PICK2.TEST5
660echo $?
661dnsip PICK3.TEST5 | tr ' ' '\012' | sort
662echo $?
663dnsip REALLY.WILD.TEST5 | tr ' ' '\012' | sort
664echo $?
665dnsq 255 PICK.TEST5 127.555.0.2
666echo $?
667dnsq 255 PICK2.TEST5 127.555.0.2
668echo $?
669dnsq 255 PICK3.TEST5 127.555.0.2 | sort
670echo $?
671dnsq 255 REALLY.WILD.TEST5 127.555.0.2 | sort
672echo $?
673
674echo '--- tinydns-get handles differentiation'
675( cd rts-tmp/service/tinydns/root
676 tinydns-get 255 PICK.TEST5 1.2.3.4; echo $?
677 tinydns-get 255 PICK2.TEST5 1.2.3.4; echo $?
678 tinydns-get 255 PICK3.TEST5 1.2.3.4 | sort; echo $?
679 tinydns-get 255 REALLY.WILD.TEST5 1.2.3.4 | sort; echo $?
680 tinydns-get 255 PICK.TEST5 127.555.0.4; echo $?
681 tinydns-get 255 PICK2.TEST5 127.555.0.4; echo $?
682 tinydns-get 255 PICK3.TEST5 127.555.0.4 | sort; echo $?
683 tinydns-get 255 REALLY.WILD.TEST5 127.555.0.4 | sort; echo $?
684)
685
686echo '--- pickdns works'
687dnsip PICK.TEST
688echo $?
689dnsip PICK2.TEST
690echo $?
691dnsq 255 PICK.TEST 127.555.0.3
692echo $?
693
694echo '--- pickdns answers MX'
695dnsmx PICK.TEST
696echo $?
697
698echo '--- pickdns rejects queries for unknown information'
699dnsq 255 PICK11.TEST 127.555.0.3
700echo $?
701dnsq Txt PICK2.TEST 127.555.0.3
702echo $?
703
704echo '--- axfrdns rejects unauthorized transfer attempts'
705tcpclient -RHl0 127.43.0.2 53 axfr-get TEST3 rts-tmp/zone rts-tmp/zone.tmp
706echo $?
707tcpclient -RHl0 127.43.0.2 53 axfr-get TEST4 rts-tmp/zone2 rts-tmp/zone2.tmp
708echo $?
709
710echo '--- axfrdns works'
711tcpclient -RHl0 127.43.0.2 53 axfr-get TEST rts-tmp/zone rts-tmp/zone.tmp
712echo $?
713cat rts-tmp/zone
714
715echo '--- axfrdns handles differentiation'
716tcpclient -RHl0 -i 127.43.0.2 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
717echo $?
718cat rts-tmp/zone5
719rm rts-tmp/zone5
720tcpclient -RHl0 -i 127.43.0.3 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
721echo $?
722cat rts-tmp/zone5
723rm rts-tmp/zone5
724tcpclient -RHl0 -i 127.43.0.4 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
725echo $?
726cat rts-tmp/zone5
727rm rts-tmp/zone5
728tcpclient -RHl0 -i 127.43.0.5 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
729echo $?
730cat rts-tmp/zone5
731
732echo '--- axfrdns gives authoritative answers'
733dnsq any Test4 127.43.0.2
734echo $?
735
736echo '--- axfrdns handles size-1000 TXT records'
737dnsq any BIG.TEST 127.43.0.2
738echo $?
739
740echo '--- axfr-get handles zones with wildcards'
741tcpclient -RHl0 127.43.0.2 53 axfr-get TEST2 rts-tmp/zone2 rts-tmp/zone2.tmp
742echo $?
743cat rts-tmp/zone2
744
745
746svc -dx $service/dnscache
747svc -dx $service/tinydns
748svc -dx $service/pickdns
749svc -dx $service/walldns
750svc -dx $service/rbldns
751svc -dx $service/axfrdns
752
753svc -dx $service/dnscache/log
754svc -dx $service/tinydns/log
755svc -dx $service/pickdns/log
756svc -dx $service/walldns/log
757svc -dx $service/rbldns/log
758svc -dx $service/axfrdns/log
759
760wait
761wait
762wait
763wait
764wait
765wait
766
767exit 0