release
[hcoop/zz_old/debian/djbdns.git] / rts.tests
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
20 umask 022
21
22 rm -rf rts-tmp
23 service=`pwd`/rts-tmp/service
24
25 mkdir rts-tmp
26 mkdir $service
27
28 echo '
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
36 DNSREWRITEFILE=rts-tmp/rewrite; export DNSREWRITEFILE
37 DNSCACHEIP=127.555.0.1; export DNSCACHEIP
38
39
40 echo '--- dnscache-conf works'
41 dnscache-conf dnscache dnslog $service/dnscache 127.555.0.1
42 echo 127.555.0.2 > $service/dnscache/root/servers/tEST
43 echo 127.555.0.2 > $service/dnscache/root/servers/tEST5
44 echo 127.555.0.4 > $service/dnscache/root/servers/43.127.iN-aDDR.aRPA
45 touch $service/dnscache/root/ip/127.43.0.1
46 supervise $service/dnscache | supervise $service/dnscache/log &
47
48 echo '--- tinydns-conf works'
49 tinydns-conf tinydns dnslog $service/tinydns 127.555.0.2
50 supervise $service/tinydns | supervise $service/tinydns/log &
51
52 echo '--- pickdns-conf works'
53 pickdns-conf pickdns dnslog $service/pickdns 127.555.0.3
54 supervise $service/pickdns | supervise $service/pickdns/log &
55
56 echo '--- walldns-conf works'
57 walldns-conf walldns dnslog $service/walldns 127.555.0.4
58 supervise $service/walldns | supervise $service/walldns/log &
59
60 echo '--- rbldns-conf works'
61 rbldns-conf rbldns dnslog $service/rbldns 127.555.0.5 RbL.TeSt
62 supervise $service/rbldns | supervise $service/rbldns/log &
63
64 echo '--- axfrdns-conf works'
65 axfrdns-conf axfrdns dnslog $service/axfrdns $service/tinydns 127.555.0.2
66 supervise $service/axfrdns | supervise $service/axfrdns/log &
67
68 sleep 1
69
70
71 echo '--- cache handles simple example'
72 cachetest \
73 one two three four five \
74 one:un one two three four five \
75 two:deux one two three four five \
76 three:trois one two three four five \
77 four:quatre one two three four five \
78 five:cinq one two three four five \
79 one:een one two three four five \
80 two:twee one two three four five \
81 three:drie one two three four five \
82 four:vier one two three four five \
83 five:vijf one two three four five
84 echo $?
85
86 echo '--- cache handles overwriting'
87 cachetest \
88 one two three four five \
89 one:un one two three four five \
90 one:een one two three four five \
91 two:deux one two three four five \
92 two:twee one two three four five \
93 three:trois one two three four five \
94 three:drie one two three four five \
95 four:quatre one two three four five \
96 four:vier one two three four five \
97 five:cinq one two three four five \
98 five:vijf one two three four five
99 echo $?
100
101 echo '--- cache handles long chains'
102 cachetest \
103 a:1 a \
104 a:2 a \
105 a:3 a \
106 a:4 a \
107 a:5 a \
108 a:6 a \
109 a:7 a \
110 a:8 a \
111 a:9 a
112 echo $?
113
114
115 echo '--- dnsip finds IP address of network-surveys.cr.yp.to'
116 dnsip network-surveys.cr.yp.to
117 echo $?
118
119 echo '--- dnsip does not find nonexistent.cr.yp.to'
120 dnsip nonexistent.cr.yp.to
121 echo $?
122
123 echo '--- dnsip rejects overly long domain names'
124 dnsip 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
125 echo $?
126
127 echo '--- dnsip handles IP address on input'
128 dnsip 1.2.3.4 127.0.0.1 10.555.678.901 '[010.0555.0678.0901]'
129 echo $?
130
131 echo '--- dnsip allows 0 to be omitted'
132 dnsip 127...1
133 echo $?
134
135 echo '--- dnsip handles multiple IP addresses on input'
136 dnsip 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16
137 echo $?
138
139 echo '--- dnsipq handles simple examples'
140 dnsipq 1.b localhost anything.localhost 5.6.7.8 network-surveys nonexistent
141 echo $?
142
143 echo '--- dnsmx finds MX record for network-surveys.cr.yp.to'
144 dnsmx network-surveys.cr.yp.to
145 echo $?
146
147 echo '--- dnsmx manufactures MX record for nonexistent.cr.yp.to'
148 dnsmx NONexistent.cr.yp.to
149 echo $?
150
151 echo '--- dnsmx rejects overly long domain names'
152 dnsmx 0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789
153 echo $?
154
155 echo '--- dnstxt finds TXT record for leap.yp.to'
156 dnstxt leap.yp.to
157 echo $?
158
159 echo '--- dnstxt does not find nonexistent.cr.yp.to'
160 dnstxt nonexistent.cr.yp.to
161 echo $?
162
163 echo '--- dnstxt rejects overly long domain names'
164 dnstxt 0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789
165 echo $?
166
167 echo '--- dnsname finds host name of 131.193.178.100'
168 dnsname 131.193.178.100
169 echo $?
170
171 echo '--- dnsname does not find 127.5.6.7'
172 dnsname 127.5.6.7
173 echo $?
174
175 echo '--- dnsname rejects misformatted IP addresses'
176 dnsname 1.2.3
177 echo $?
178
179 echo '--- dnsfilter finds some host names'
180 echo '131.193.178.100+one two three
181 127.5.6.7+one two three
182 10+one two three' | dnsfilter
183 echo $?
184
185
186 echo '
187 =movie.edu:1.2.3.4
188 *star
189 ' > rts-tmp/data
190
191 echo '--- tinydns-data complains about unrecognized initial characters'
192 ( cd rts-tmp; tinydns-data; echo $? )
193
194 echo '
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
236 utime rts-tmp/data 987654321
237
238 echo '--- tinydns-data complains if it cannot create data.tmp'
239 rm -f rts-tmp/data.tmp
240 ln -s data.tmp rts-tmp/data.tmp
241 ( cd rts-tmp; tinydns-data; echo $? )
242 rm -f rts-tmp/data.tmp
243
244 echo '--- tinydns-data handles simple example'
245 ( cd rts-tmp; tinydns-data; echo $? )
246
247 echo '--- tinydns-data produces A records'
248 ( cd rts-tmp; tinydns-get 1 wormhole.movie.edu | sort; echo $? )
249
250 echo '--- tinydns-data produces NS records'
251 ( cd rts-tmp; tinydns-get 2 movie.edu; echo $? )
252
253 echo '--- tinydns-data produces SOA records'
254 ( cd rts-tmp; tinydns-get 6 movie.edu; echo $? )
255
256 echo '--- tinydns-data produces PTR records'
257 ( cd rts-tmp; tinydns-get 12 1.253.253.192.in-addr.arpa; echo $? )
258
259 echo '--- tinydns-data produces MX records'
260 ( cd rts-tmp; tinydns-get 15 movie.edu; echo $? )
261
262 echo '--- tinydns-data produces TXT records'
263 ( cd rts-tmp; tinydns-get 16 movie.edu; echo $? )
264
265 echo '--- tinydns-data produces AXFR responses'
266 ( cd rts-tmp; tinydns-get 252 movie.edu; echo $? )
267
268 echo '--- tinydns-data produces ANY responses'
269 ( cd rts-tmp; tinydns-get 255 movie.edu; echo $? )
270
271 echo '--- 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
275 echo '--- tinydns-data produces NODATA responses'
276 ( cd rts-tmp; tinydns-get 54321 movie.edu; echo $? )
277
278 echo '--- tinydns-data produces NXDOMAIN responses'
279 ( cd rts-tmp; tinydns-get 1 this.does.not.exist.movie.edu; echo $? )
280
281 echo '--- tinydns-data produces NXDOMAIN responses for suffixes'
282 ( cd rts-tmp; tinydns-get 1 ns.movie.edu; echo $? )
283
284 echo '--- tinydns-data produces NXDOMAIN ANY responses for suffixes'
285 ( cd rts-tmp; tinydns-get 255 ns.movie.edu; echo $? )
286
287 echo '--- tinydns-data does not produce responses outside its bailiwick'
288 ( cd rts-tmp; tinydns-get 1 edu; echo $? )
289
290 echo '--- tinydns-data does not include TXT in additional sections'
291 ( cd rts-tmp; tinydns-get 1 blah.movie.edu; echo $? )
292
293
294 echo '
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
316 utime rts-tmp/data 0
317
318 echo '--- tinydns-data handles another example'
319 ( cd rts-tmp; tinydns-data; echo $? )
320
321 echo '--- tinydns-data uses serial 1 for mtime 0'
322 ( cd rts-tmp; tinydns-get Any test; echo $? )
323
324 echo '--- tinydns-data does not split size-127 TXT records'
325 ( cd rts-tmp; tinydns-get Txt 127.test; echo $? )
326
327 echo '--- tinydns-data splits size-128 TXT records'
328 ( cd rts-tmp; tinydns-get 16 128.test; echo $? )
329
330 echo '--- tinydns-data splits size-254 TXT records'
331 ( cd rts-tmp; tinydns-get 16 254.test; echo $? )
332
333 echo '--- tinydns-data doubly splits size-255 TXT records'
334 ( cd rts-tmp; tinydns-get 16 255.test; echo $? )
335
336 echo '--- 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
340 echo '--- 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
344 echo '--- tinydns-data handles size-1000 TXT records'
345 ( cd rts-tmp; tinydns-get 16 1000.test; echo $? )
346
347 echo '--- 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
350 echo '--- tinydns-data handles unusual characters in PTR results'
351 ( cd rts-tmp; tinydns-get Ptr 7.6.5.10.in-addr.arpa; echo $? )
352
353 echo '--- 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
359 echo '
360 Ztest: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
369 Cmail.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
374 C*.alias.wild.test:wild.test:50
375 ' > rts-tmp/data
376 utime rts-tmp/data 0
377
378 echo '--- tinydns-data handles another example'
379 ( cd rts-tmp; tinydns-data; echo $? )
380
381 echo '--- 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
386 echo '--- 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
392 echo '--- tinydns-data does not apply wildcard A to base name'
393 ( cd rts-tmp; tinydns-get 1 wild.test; echo $? )
394
395 echo '--- 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
400 echo '--- tinydns-data handles wildcard MX records'
401 ( cd rts-tmp; tinydns-get 255 wild.test; echo $? )
402
403 echo '--- 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
410 echo '--- tinydns-data uses wildcard under base of sub-wildcard'
411 ( cd rts-tmp; tinydns-get 255 alias.wild.test; echo $? )
412
413 echo '--- 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
417 echo '--- tinydns-data lets explicit record override wildcard'
418 ( cd rts-tmp; tinydns-get 255 override.wild.test; echo $? )
419
420 echo '--- tinydns-data handles overrides sanely'
421 ( cd rts-tmp; tinydns-get 255 x.override.wild.test; echo $? )
422
423 echo '--- tinydns-data overrides wildcard with subdomain wildcard'
424 ( cd rts-tmp; tinydns-get 255 x.wild.wild.test; echo $? )
425
426 echo '--- 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
431 echo '
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
441 utime rts-tmp/data 7654321
442
443 echo '--- tinydns-data handles another example'
444 ( cd rts-tmp; tinydns-data; echo $? )
445
446 echo '--- 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
450 echo '--- 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
455 echo '--- tinydns-edit handles simple examples'
456 echo '' > 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 $? )
467 cat rts-tmp/data
468
469 echo '--- 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 $? )
472 cat rts-tmp/data
473
474 echo '--- 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 $? )
476 cat rts-tmp/data
477
478 echo '--- tinydns-edit copies TTLs from previous NS records'
479 echo '.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 $? )
481 cat rts-tmp/data
482
483
484
485 echo '
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
496 C*.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
540 utime $service/tinydns/root/data 987654321
541 ( cd $service/tinydns/root; tinydns-data )
542
543 echo '
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
552 echo '
553 4.0.0.1
554 4.0.0.2/31
555 4.0.0.4/30
556 4.0.0.8/29
557 4.0.0.16/28
558 4.0.0.32/27
559 4.0.0.64/26
560 4.0.0.128/25
561 4.0.1.0/24
562 4.0.2.0/23
563 4.0.4.0/22
564 4.0.8.0/21
565 4.0.16.0/20
566 4.0.32.0/19
567 4.0.64.0/18
568 4.0.128.0/17
569 4.1.0.0/16
570 4.2.0.0/15
571 4.4.0.0/14
572 4.8.0.0/13
573 4.16.0.0/12
574 4.32.0.0/11
575 4.64.0.0/10
576 4.128.0.0/9
577 5.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
582 echo '
583 127.:allow,AXFR="tEsT/TeSt2/TEst5"
584 :deny
585 ' > $service/axfrdns/tcp
586 ( cd $service/axfrdns; tcprules tcp.cdb tcp.tmp < tcp )
587
588
589 echo '--- dnscache handles dotted-decimal names'
590 dnsqr 255 127.43.123.234
591 echo $?
592
593 echo '--- tinydns works'
594 dnsip WWW.TEST | tr ' ' '\012' | sort
595 echo $?
596 dnsmx TEST
597 echo $?
598 dnsq 255 WWW.TEST 127.555.0.2 | sort
599 echo $?
600 dnsq Any TEST 127.555.0.2
601 echo $?
602
603 echo '--- dnscache handles large TXT records'
604 dnstxt BIG.Test
605
606 echo '--- walldns handles in-addr.arpa names'
607 dnsname 127.555.6.7
608 echo $?
609 dnsname 127.555.123.234
610 echo $?
611 dnsip 234.123.43.127.IN-ADDR.ARPA
612 echo $?
613 dnsq 255 234.123.43.127.IN-ADDR.ARPA 127.555.0.4
614 echo $?
615
616 echo '--- walldns handles dotted-decimal names'
617 dnsq 255 127.43.123.234 127.555.0.4
618 echo $?
619
620 echo '--- walldns rejects other names'
621 dnsq 255 BLAH.TEST 127.555.0.4
622 echo $?
623
624 echo '--- rbldns works'
625 dnsip 2.3.4.5.rbl.test
626 echo $?
627 dnstxt 2.3.4.5.rbl.test
628 echo $?
629 dnsq 255 2.3.4.5.rbl.test 127.555.0.5
630 echo $?
631 dnsip 200.255.1.4.rbl.test
632 echo $?
633 dnstxt 200.255.1.4.rbl.test
634 echo $?
635 dnsq 255 200.255.1.4.rbl.test 127.555.0.5
636 echo $?
637 dnsip 200.255.0.4.rbl.test
638 echo $?
639 dnstxt 200.255.0.4.rbl.test
640 echo $?
641 dnsq 255 200.255.0.4.rbl.test 127.555.0.5
642 echo $?
643 dnsip 1.0.0.4.rbl.test
644 echo $?
645 dnstxt 1.0.0.4.rbl.test
646 echo $?
647 dnsq 255 1.0.0.4.rbl.test 127.555.0.5
648 echo $?
649 dnsip 0.0.0.4.rbl.test
650 echo $?
651 dnstxt 0.0.0.4.rbl.test
652 echo $?
653 dnsq 255 0.0.0.4.rbl.test 127.555.0.5
654 echo $?
655
656 echo '--- tinydns handles differentiation'
657 dnsip PICK.TEST5
658 echo $?
659 dnsip PICK2.TEST5
660 echo $?
661 dnsip PICK3.TEST5 | tr ' ' '\012' | sort
662 echo $?
663 dnsip REALLY.WILD.TEST5 | tr ' ' '\012' | sort
664 echo $?
665 dnsq 255 PICK.TEST5 127.555.0.2
666 echo $?
667 dnsq 255 PICK2.TEST5 127.555.0.2
668 echo $?
669 dnsq 255 PICK3.TEST5 127.555.0.2 | sort
670 echo $?
671 dnsq 255 REALLY.WILD.TEST5 127.555.0.2 | sort
672 echo $?
673
674 echo '--- 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
686 echo '--- pickdns works'
687 dnsip PICK.TEST
688 echo $?
689 dnsip PICK2.TEST
690 echo $?
691 dnsq 255 PICK.TEST 127.555.0.3
692 echo $?
693
694 echo '--- pickdns answers MX'
695 dnsmx PICK.TEST
696 echo $?
697
698 echo '--- pickdns rejects queries for unknown information'
699 dnsq 255 PICK11.TEST 127.555.0.3
700 echo $?
701 dnsq Txt PICK2.TEST 127.555.0.3
702 echo $?
703
704 echo '--- axfrdns rejects unauthorized transfer attempts'
705 tcpclient -RHl0 127.43.0.2 53 axfr-get TEST3 rts-tmp/zone rts-tmp/zone.tmp
706 echo $?
707 tcpclient -RHl0 127.43.0.2 53 axfr-get TEST4 rts-tmp/zone2 rts-tmp/zone2.tmp
708 echo $?
709
710 echo '--- axfrdns works'
711 tcpclient -RHl0 127.43.0.2 53 axfr-get TEST rts-tmp/zone rts-tmp/zone.tmp
712 echo $?
713 cat rts-tmp/zone
714
715 echo '--- axfrdns handles differentiation'
716 tcpclient -RHl0 -i 127.43.0.2 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
717 echo $?
718 cat rts-tmp/zone5
719 rm rts-tmp/zone5
720 tcpclient -RHl0 -i 127.43.0.3 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
721 echo $?
722 cat rts-tmp/zone5
723 rm rts-tmp/zone5
724 tcpclient -RHl0 -i 127.43.0.4 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
725 echo $?
726 cat rts-tmp/zone5
727 rm rts-tmp/zone5
728 tcpclient -RHl0 -i 127.43.0.5 127.43.0.2 53 axfr-get TEST5 rts-tmp/zone5 rts-tmp/zone5.tmp
729 echo $?
730 cat rts-tmp/zone5
731
732 echo '--- axfrdns gives authoritative answers'
733 dnsq any Test4 127.43.0.2
734 echo $?
735
736 echo '--- axfrdns handles size-1000 TXT records'
737 dnsq any BIG.TEST 127.43.0.2
738 echo $?
739
740 echo '--- axfr-get handles zones with wildcards'
741 tcpclient -RHl0 127.43.0.2 53 axfr-get TEST2 rts-tmp/zone2 rts-tmp/zone2.tmp
742 echo $?
743 cat rts-tmp/zone2
744
745
746 svc -dx $service/dnscache
747 svc -dx $service/tinydns
748 svc -dx $service/pickdns
749 svc -dx $service/walldns
750 svc -dx $service/rbldns
751 svc -dx $service/axfrdns
752
753 svc -dx $service/dnscache/log
754 svc -dx $service/tinydns/log
755 svc -dx $service/pickdns/log
756 svc -dx $service/walldns/log
757 svc -dx $service/rbldns/log
758 svc -dx $service/axfrdns/log
759
760 wait
761 wait
762 wait
763 wait
764 wait
765 wait
766
767 exit 0