xref: /freebsd/crypto/openssh/regress/cfginclude.sh (revision 076ad2f836d5f49dc1375f1677335a48fe0d4b82)
1*076ad2f8SDag-Erling Smørgrav#	$OpenBSD: cfginclude.sh,v 1.2 2016/05/03 15:30:46 dtucker Exp $
2*076ad2f8SDag-Erling Smørgrav#	Placed in the Public Domain.
3*076ad2f8SDag-Erling Smørgrav
4*076ad2f8SDag-Erling Smørgravtid="config include"
5*076ad2f8SDag-Erling Smørgrav
6*076ad2f8SDag-Erling Smørgrav# to appease StrictModes
7*076ad2f8SDag-Erling Smørgravumask 022
8*076ad2f8SDag-Erling Smørgrav
9*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
10*076ad2f8SDag-Erling SmørgravMatch host a
11*076ad2f8SDag-Erling Smørgrav	Hostname aa
12*076ad2f8SDag-Erling Smørgrav
13*076ad2f8SDag-Erling SmørgravMatch host b
14*076ad2f8SDag-Erling Smørgrav	Hostname bb
15*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
16*076ad2f8SDag-Erling Smørgrav
17*076ad2f8SDag-Erling SmørgravMatch host c
18*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
19*076ad2f8SDag-Erling Smørgrav	Hostname cc
20*076ad2f8SDag-Erling Smørgrav
21*076ad2f8SDag-Erling SmørgravMatch host m
22*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
23*076ad2f8SDag-Erling Smørgrav
24*076ad2f8SDag-Erling SmørgravHost d
25*076ad2f8SDag-Erling Smørgrav	Hostname dd
26*076ad2f8SDag-Erling Smørgrav
27*076ad2f8SDag-Erling SmørgravHost e
28*076ad2f8SDag-Erling Smørgrav	Hostname ee
29*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
30*076ad2f8SDag-Erling Smørgrav
31*076ad2f8SDag-Erling SmørgravHost f
32*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
33*076ad2f8SDag-Erling Smørgrav	Hostname ff
34*076ad2f8SDag-Erling Smørgrav
35*076ad2f8SDag-Erling SmørgravHost n
36*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
37*076ad2f8SDag-Erling Smørgrav_EOF
38*076ad2f8SDag-Erling Smørgrav
39*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.0 << _EOF
40*076ad2f8SDag-Erling SmørgravMatch host xxxxxx
41*076ad2f8SDag-Erling Smørgrav_EOF
42*076ad2f8SDag-Erling Smørgrav
43*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.1 << _EOF
44*076ad2f8SDag-Erling SmørgravMatch host a
45*076ad2f8SDag-Erling Smørgrav	Hostname aaa
46*076ad2f8SDag-Erling Smørgrav
47*076ad2f8SDag-Erling SmørgravMatch host b
48*076ad2f8SDag-Erling Smørgrav	Hostname bbb
49*076ad2f8SDag-Erling Smørgrav
50*076ad2f8SDag-Erling SmørgravMatch host c
51*076ad2f8SDag-Erling Smørgrav	Hostname ccc
52*076ad2f8SDag-Erling Smørgrav
53*076ad2f8SDag-Erling SmørgravHost d
54*076ad2f8SDag-Erling Smørgrav	Hostname ddd
55*076ad2f8SDag-Erling Smørgrav
56*076ad2f8SDag-Erling SmørgravHost e
57*076ad2f8SDag-Erling Smørgrav	Hostname eee
58*076ad2f8SDag-Erling Smørgrav
59*076ad2f8SDag-Erling SmørgravHost f
60*076ad2f8SDag-Erling Smørgrav	Hostname fff
61*076ad2f8SDag-Erling Smørgrav_EOF
62*076ad2f8SDag-Erling Smørgrav
63*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.2 << _EOF
64*076ad2f8SDag-Erling SmørgravMatch host a
65*076ad2f8SDag-Erling Smørgrav	Hostname aaaa
66*076ad2f8SDag-Erling Smørgrav
67*076ad2f8SDag-Erling SmørgravMatch host b
68*076ad2f8SDag-Erling Smørgrav	Hostname bbbb
69*076ad2f8SDag-Erling Smørgrav
70*076ad2f8SDag-Erling SmørgravMatch host c
71*076ad2f8SDag-Erling Smørgrav	Hostname cccc
72*076ad2f8SDag-Erling Smørgrav
73*076ad2f8SDag-Erling SmørgravHost d
74*076ad2f8SDag-Erling Smørgrav	Hostname dddd
75*076ad2f8SDag-Erling Smørgrav
76*076ad2f8SDag-Erling SmørgravHost e
77*076ad2f8SDag-Erling Smørgrav	Hostname eeee
78*076ad2f8SDag-Erling Smørgrav
79*076ad2f8SDag-Erling SmørgravHost f
80*076ad2f8SDag-Erling Smørgrav	Hostname ffff
81*076ad2f8SDag-Erling Smørgrav
82*076ad2f8SDag-Erling SmørgravMatch all
83*076ad2f8SDag-Erling Smørgrav	Hostname xxxx
84*076ad2f8SDag-Erling Smørgrav_EOF
85*076ad2f8SDag-Erling Smørgrav
86*076ad2f8SDag-Erling Smørgravtrial() {
87*076ad2f8SDag-Erling Smørgrav	_host="$1"
88*076ad2f8SDag-Erling Smørgrav	_exp="$2"
89*076ad2f8SDag-Erling Smørgrav	${REAL_SSH} -F $OBJ/ssh_config.i -G "$_host" > $OBJ/ssh_config.out ||
90*076ad2f8SDag-Erling Smørgrav		fatal "ssh config parse failed"
91*076ad2f8SDag-Erling Smørgrav	_got=`grep -i '^hostname ' $OBJ/ssh_config.out | awk '{print $2}'`
92*076ad2f8SDag-Erling Smørgrav	if test "x$_exp" != "x$_got" ; then
93*076ad2f8SDag-Erling Smørgrav		fail "host $_host include fail: expected $_exp got $_got"
94*076ad2f8SDag-Erling Smørgrav	fi
95*076ad2f8SDag-Erling Smørgrav}
96*076ad2f8SDag-Erling Smørgrav
97*076ad2f8SDag-Erling Smørgravtrial a aa
98*076ad2f8SDag-Erling Smørgravtrial b bb
99*076ad2f8SDag-Erling Smørgravtrial c ccc
100*076ad2f8SDag-Erling Smørgravtrial d dd
101*076ad2f8SDag-Erling Smørgravtrial e ee
102*076ad2f8SDag-Erling Smørgravtrial f fff
103*076ad2f8SDag-Erling Smørgravtrial m xxxx
104*076ad2f8SDag-Erling Smørgravtrial n xxxx
105*076ad2f8SDag-Erling Smørgravtrial x x
106*076ad2f8SDag-Erling Smørgrav
107*076ad2f8SDag-Erling Smørgrav# Prepare an included config with an error.
108*076ad2f8SDag-Erling Smørgrav
109*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.3 << _EOF
110*076ad2f8SDag-Erling SmørgravHostname xxxx
111*076ad2f8SDag-Erling Smørgrav	Junk
112*076ad2f8SDag-Erling Smørgrav_EOF
113*076ad2f8SDag-Erling Smørgrav
114*076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \
115*076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
116*076ad2f8SDag-Erling Smørgrav
117*076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G x 2>/dev/null && \
118*076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
119*076ad2f8SDag-Erling Smørgrav
120*076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i.*
121*076ad2f8SDag-Erling Smørgrav
122*076ad2f8SDag-Erling Smørgrav# Ensure that a missing include is not fatal.
123*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
124*076ad2f8SDag-Erling SmørgravInclude $OBJ/ssh_config.i.*
125*076ad2f8SDag-Erling SmørgravHostname aa
126*076ad2f8SDag-Erling Smørgrav_EOF
127*076ad2f8SDag-Erling Smørgrav
128*076ad2f8SDag-Erling Smørgravtrial a aa
129*076ad2f8SDag-Erling Smørgrav
130*076ad2f8SDag-Erling Smørgrav# Ensure that Match/Host in an included config does not affect parent.
131*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
132*076ad2f8SDag-Erling SmørgravMatch host x
133*076ad2f8SDag-Erling Smørgrav_EOF
134*076ad2f8SDag-Erling Smørgrav
135*076ad2f8SDag-Erling Smørgravtrial a aa
136*076ad2f8SDag-Erling Smørgrav
137*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
138*076ad2f8SDag-Erling SmørgravHost x
139*076ad2f8SDag-Erling Smørgrav_EOF
140*076ad2f8SDag-Erling Smørgrav
141*076ad2f8SDag-Erling Smørgravtrial a aa
142*076ad2f8SDag-Erling Smørgrav
143*076ad2f8SDag-Erling Smørgrav# cleanup
144*076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out
145*076ad2f8SDag-Erling Smørgrav#	$OpenBSD: cfginclude.sh,v 1.2 2016/05/03 15:30:46 dtucker Exp $
146*076ad2f8SDag-Erling Smørgrav#	Placed in the Public Domain.
147*076ad2f8SDag-Erling Smørgrav
148*076ad2f8SDag-Erling Smørgravtid="config include"
149*076ad2f8SDag-Erling Smørgrav
150*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
151*076ad2f8SDag-Erling SmørgravMatch host a
152*076ad2f8SDag-Erling Smørgrav	Hostname aa
153*076ad2f8SDag-Erling Smørgrav
154*076ad2f8SDag-Erling SmørgravMatch host b
155*076ad2f8SDag-Erling Smørgrav	Hostname bb
156*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
157*076ad2f8SDag-Erling Smørgrav
158*076ad2f8SDag-Erling SmørgravMatch host c
159*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
160*076ad2f8SDag-Erling Smørgrav	Hostname cc
161*076ad2f8SDag-Erling Smørgrav
162*076ad2f8SDag-Erling SmørgravMatch host m
163*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
164*076ad2f8SDag-Erling Smørgrav
165*076ad2f8SDag-Erling SmørgravHost d
166*076ad2f8SDag-Erling Smørgrav	Hostname dd
167*076ad2f8SDag-Erling Smørgrav
168*076ad2f8SDag-Erling SmørgravHost e
169*076ad2f8SDag-Erling Smørgrav	Hostname ee
170*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
171*076ad2f8SDag-Erling Smørgrav
172*076ad2f8SDag-Erling SmørgravHost f
173*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
174*076ad2f8SDag-Erling Smørgrav	Hostname ff
175*076ad2f8SDag-Erling Smørgrav
176*076ad2f8SDag-Erling SmørgravHost n
177*076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
178*076ad2f8SDag-Erling Smørgrav_EOF
179*076ad2f8SDag-Erling Smørgrav
180*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.0 << _EOF
181*076ad2f8SDag-Erling SmørgravMatch host xxxxxx
182*076ad2f8SDag-Erling Smørgrav_EOF
183*076ad2f8SDag-Erling Smørgrav
184*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.1 << _EOF
185*076ad2f8SDag-Erling SmørgravMatch host a
186*076ad2f8SDag-Erling Smørgrav	Hostname aaa
187*076ad2f8SDag-Erling Smørgrav
188*076ad2f8SDag-Erling SmørgravMatch host b
189*076ad2f8SDag-Erling Smørgrav	Hostname bbb
190*076ad2f8SDag-Erling Smørgrav
191*076ad2f8SDag-Erling SmørgravMatch host c
192*076ad2f8SDag-Erling Smørgrav	Hostname ccc
193*076ad2f8SDag-Erling Smørgrav
194*076ad2f8SDag-Erling SmørgravHost d
195*076ad2f8SDag-Erling Smørgrav	Hostname ddd
196*076ad2f8SDag-Erling Smørgrav
197*076ad2f8SDag-Erling SmørgravHost e
198*076ad2f8SDag-Erling Smørgrav	Hostname eee
199*076ad2f8SDag-Erling Smørgrav
200*076ad2f8SDag-Erling SmørgravHost f
201*076ad2f8SDag-Erling Smørgrav	Hostname fff
202*076ad2f8SDag-Erling Smørgrav_EOF
203*076ad2f8SDag-Erling Smørgrav
204*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.2 << _EOF
205*076ad2f8SDag-Erling SmørgravMatch host a
206*076ad2f8SDag-Erling Smørgrav	Hostname aaaa
207*076ad2f8SDag-Erling Smørgrav
208*076ad2f8SDag-Erling SmørgravMatch host b
209*076ad2f8SDag-Erling Smørgrav	Hostname bbbb
210*076ad2f8SDag-Erling Smørgrav
211*076ad2f8SDag-Erling SmørgravMatch host c
212*076ad2f8SDag-Erling Smørgrav	Hostname cccc
213*076ad2f8SDag-Erling Smørgrav
214*076ad2f8SDag-Erling SmørgravHost d
215*076ad2f8SDag-Erling Smørgrav	Hostname dddd
216*076ad2f8SDag-Erling Smørgrav
217*076ad2f8SDag-Erling SmørgravHost e
218*076ad2f8SDag-Erling Smørgrav	Hostname eeee
219*076ad2f8SDag-Erling Smørgrav
220*076ad2f8SDag-Erling SmørgravHost f
221*076ad2f8SDag-Erling Smørgrav	Hostname ffff
222*076ad2f8SDag-Erling Smørgrav
223*076ad2f8SDag-Erling SmørgravMatch all
224*076ad2f8SDag-Erling Smørgrav	Hostname xxxx
225*076ad2f8SDag-Erling Smørgrav_EOF
226*076ad2f8SDag-Erling Smørgrav
227*076ad2f8SDag-Erling Smørgravtrial() {
228*076ad2f8SDag-Erling Smørgrav	_host="$1"
229*076ad2f8SDag-Erling Smørgrav	_exp="$2"
230*076ad2f8SDag-Erling Smørgrav	${REAL_SSH} -F $OBJ/ssh_config.i -G "$_host" > $OBJ/ssh_config.out ||
231*076ad2f8SDag-Erling Smørgrav		fatal "ssh config parse failed"
232*076ad2f8SDag-Erling Smørgrav	_got=`grep -i '^hostname ' $OBJ/ssh_config.out | awk '{print $2}'`
233*076ad2f8SDag-Erling Smørgrav	if test "x$_exp" != "x$_got" ; then
234*076ad2f8SDag-Erling Smørgrav		fail "host $_host include fail: expected $_exp got $_got"
235*076ad2f8SDag-Erling Smørgrav	fi
236*076ad2f8SDag-Erling Smørgrav}
237*076ad2f8SDag-Erling Smørgrav
238*076ad2f8SDag-Erling Smørgravtrial a aa
239*076ad2f8SDag-Erling Smørgravtrial b bb
240*076ad2f8SDag-Erling Smørgravtrial c ccc
241*076ad2f8SDag-Erling Smørgravtrial d dd
242*076ad2f8SDag-Erling Smørgravtrial e ee
243*076ad2f8SDag-Erling Smørgravtrial f fff
244*076ad2f8SDag-Erling Smørgravtrial m xxxx
245*076ad2f8SDag-Erling Smørgravtrial n xxxx
246*076ad2f8SDag-Erling Smørgravtrial x x
247*076ad2f8SDag-Erling Smørgrav
248*076ad2f8SDag-Erling Smørgrav# Prepare an included config with an error.
249*076ad2f8SDag-Erling Smørgrav
250*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.3 << _EOF
251*076ad2f8SDag-Erling SmørgravHostname xxxx
252*076ad2f8SDag-Erling Smørgrav	Junk
253*076ad2f8SDag-Erling Smørgrav_EOF
254*076ad2f8SDag-Erling Smørgrav
255*076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \
256*076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
257*076ad2f8SDag-Erling Smørgrav
258*076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G x 2>/dev/null && \
259*076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
260*076ad2f8SDag-Erling Smørgrav
261*076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i.*
262*076ad2f8SDag-Erling Smørgrav
263*076ad2f8SDag-Erling Smørgrav# Ensure that a missing include is not fatal.
264*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
265*076ad2f8SDag-Erling SmørgravInclude $OBJ/ssh_config.i.*
266*076ad2f8SDag-Erling SmørgravHostname aa
267*076ad2f8SDag-Erling Smørgrav_EOF
268*076ad2f8SDag-Erling Smørgrav
269*076ad2f8SDag-Erling Smørgravtrial a aa
270*076ad2f8SDag-Erling Smørgrav
271*076ad2f8SDag-Erling Smørgrav# Ensure that Match/Host in an included config does not affect parent.
272*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
273*076ad2f8SDag-Erling SmørgravMatch host x
274*076ad2f8SDag-Erling Smørgrav_EOF
275*076ad2f8SDag-Erling Smørgrav
276*076ad2f8SDag-Erling Smørgravtrial a aa
277*076ad2f8SDag-Erling Smørgrav
278*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
279*076ad2f8SDag-Erling SmørgravHost x
280*076ad2f8SDag-Erling Smørgrav_EOF
281*076ad2f8SDag-Erling Smørgrav
282*076ad2f8SDag-Erling Smørgravtrial a aa
283*076ad2f8SDag-Erling Smørgrav
284*076ad2f8SDag-Erling Smørgrav# Ensure that recursive includes are bounded.
285*076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
286*076ad2f8SDag-Erling SmørgravInclude $OBJ/ssh_config.i
287*076ad2f8SDag-Erling Smørgrav_EOF
288*076ad2f8SDag-Erling Smørgrav
289*076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \
290*076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed infinite recursion?" # or hang...
291*076ad2f8SDag-Erling Smørgrav
292*076ad2f8SDag-Erling Smørgrav# cleanup
293*076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out
294