xref: /freebsd/crypto/openssh/regress/cfginclude.sh (revision 19261079b74319502c6ffa1249920079f0f69a72)
1*19261079SEd Maste#	$OpenBSD: cfginclude.sh,v 1.3 2021/06/08 06:52:43 djm Exp $
2076ad2f8SDag-Erling Smørgrav#	Placed in the Public Domain.
3076ad2f8SDag-Erling Smørgrav
4076ad2f8SDag-Erling Smørgravtid="config include"
5076ad2f8SDag-Erling Smørgrav
6076ad2f8SDag-Erling Smørgrav# to appease StrictModes
7076ad2f8SDag-Erling Smørgravumask 022
8076ad2f8SDag-Erling Smørgrav
9076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
10076ad2f8SDag-Erling SmørgravMatch host a
11076ad2f8SDag-Erling Smørgrav	Hostname aa
12076ad2f8SDag-Erling Smørgrav
13*19261079SEd MasteMatch host b # comment
14076ad2f8SDag-Erling Smørgrav	Hostname bb
15076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
16076ad2f8SDag-Erling Smørgrav
17076ad2f8SDag-Erling SmørgravMatch host c
18076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
19076ad2f8SDag-Erling Smørgrav	Hostname cc
20076ad2f8SDag-Erling Smørgrav
21076ad2f8SDag-Erling SmørgravMatch host m
22*19261079SEd Maste	Include $OBJ/ssh_config.i.* # comment
23076ad2f8SDag-Erling Smørgrav
24076ad2f8SDag-Erling SmørgravHost d
25*19261079SEd Maste	Hostname dd # comment
26076ad2f8SDag-Erling Smørgrav
27076ad2f8SDag-Erling SmørgravHost e
28076ad2f8SDag-Erling Smørgrav	Hostname ee
29076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
30076ad2f8SDag-Erling Smørgrav
31076ad2f8SDag-Erling SmørgravHost f
32076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
33076ad2f8SDag-Erling Smørgrav	Hostname ff
34076ad2f8SDag-Erling Smørgrav
35076ad2f8SDag-Erling SmørgravHost n
36076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
37076ad2f8SDag-Erling Smørgrav_EOF
38076ad2f8SDag-Erling Smørgrav
39076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.0 << _EOF
40076ad2f8SDag-Erling SmørgravMatch host xxxxxx
41076ad2f8SDag-Erling Smørgrav_EOF
42076ad2f8SDag-Erling Smørgrav
43076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.1 << _EOF
44076ad2f8SDag-Erling SmørgravMatch host a
45076ad2f8SDag-Erling Smørgrav	Hostname aaa
46076ad2f8SDag-Erling Smørgrav
47076ad2f8SDag-Erling SmørgravMatch host b
48076ad2f8SDag-Erling Smørgrav	Hostname bbb
49076ad2f8SDag-Erling Smørgrav
50*19261079SEd MasteMatch host c # comment
51076ad2f8SDag-Erling Smørgrav	Hostname ccc
52076ad2f8SDag-Erling Smørgrav
53*19261079SEd MasteHost d # comment
54076ad2f8SDag-Erling Smørgrav	Hostname ddd
55076ad2f8SDag-Erling Smørgrav
56076ad2f8SDag-Erling SmørgravHost e
57076ad2f8SDag-Erling Smørgrav	Hostname eee
58076ad2f8SDag-Erling Smørgrav
59076ad2f8SDag-Erling SmørgravHost f
60*19261079SEd Maste	Hostname fff # comment
61076ad2f8SDag-Erling Smørgrav_EOF
62076ad2f8SDag-Erling Smørgrav
63076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.2 << _EOF
64076ad2f8SDag-Erling SmørgravMatch host a
65076ad2f8SDag-Erling Smørgrav	Hostname aaaa
66076ad2f8SDag-Erling Smørgrav
67076ad2f8SDag-Erling SmørgravMatch host b
68076ad2f8SDag-Erling Smørgrav	Hostname bbbb
69076ad2f8SDag-Erling Smørgrav
70076ad2f8SDag-Erling SmørgravMatch host c
71076ad2f8SDag-Erling Smørgrav	Hostname cccc
72076ad2f8SDag-Erling Smørgrav
73076ad2f8SDag-Erling SmørgravHost d
74076ad2f8SDag-Erling Smørgrav	Hostname dddd
75076ad2f8SDag-Erling Smørgrav
76076ad2f8SDag-Erling SmørgravHost e
77076ad2f8SDag-Erling Smørgrav	Hostname eeee
78076ad2f8SDag-Erling Smørgrav
79076ad2f8SDag-Erling SmørgravHost f
80076ad2f8SDag-Erling Smørgrav	Hostname ffff
81076ad2f8SDag-Erling Smørgrav
82076ad2f8SDag-Erling SmørgravMatch all
83076ad2f8SDag-Erling Smørgrav	Hostname xxxx
84076ad2f8SDag-Erling Smørgrav_EOF
85076ad2f8SDag-Erling Smørgrav
86076ad2f8SDag-Erling Smørgravtrial() {
87076ad2f8SDag-Erling Smørgrav	_host="$1"
88076ad2f8SDag-Erling Smørgrav	_exp="$2"
89076ad2f8SDag-Erling Smørgrav	${REAL_SSH} -F $OBJ/ssh_config.i -G "$_host" > $OBJ/ssh_config.out ||
90076ad2f8SDag-Erling Smørgrav		fatal "ssh config parse failed"
91076ad2f8SDag-Erling Smørgrav	_got=`grep -i '^hostname ' $OBJ/ssh_config.out | awk '{print $2}'`
92076ad2f8SDag-Erling Smørgrav	if test "x$_exp" != "x$_got" ; then
93076ad2f8SDag-Erling Smørgrav		fail "host $_host include fail: expected $_exp got $_got"
94076ad2f8SDag-Erling Smørgrav	fi
95076ad2f8SDag-Erling Smørgrav}
96076ad2f8SDag-Erling Smørgrav
97076ad2f8SDag-Erling Smørgravtrial a aa
98076ad2f8SDag-Erling Smørgravtrial b bb
99076ad2f8SDag-Erling Smørgravtrial c ccc
100076ad2f8SDag-Erling Smørgravtrial d dd
101076ad2f8SDag-Erling Smørgravtrial e ee
102076ad2f8SDag-Erling Smørgravtrial f fff
103076ad2f8SDag-Erling Smørgravtrial m xxxx
104076ad2f8SDag-Erling Smørgravtrial n xxxx
105076ad2f8SDag-Erling Smørgravtrial x x
106076ad2f8SDag-Erling Smørgrav
107076ad2f8SDag-Erling Smørgrav# Prepare an included config with an error.
108076ad2f8SDag-Erling Smørgrav
109076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.3 << _EOF
110076ad2f8SDag-Erling SmørgravHostname xxxx
111076ad2f8SDag-Erling Smørgrav	Junk
112076ad2f8SDag-Erling Smørgrav_EOF
113076ad2f8SDag-Erling Smørgrav
114076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \
115076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
116076ad2f8SDag-Erling Smørgrav
117076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G x 2>/dev/null && \
118076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
119076ad2f8SDag-Erling Smørgrav
120076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i.*
121076ad2f8SDag-Erling Smørgrav
122076ad2f8SDag-Erling Smørgrav# Ensure that a missing include is not fatal.
123076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
124076ad2f8SDag-Erling SmørgravInclude $OBJ/ssh_config.i.*
125076ad2f8SDag-Erling SmørgravHostname aa
126076ad2f8SDag-Erling Smørgrav_EOF
127076ad2f8SDag-Erling Smørgrav
128076ad2f8SDag-Erling Smørgravtrial a aa
129076ad2f8SDag-Erling Smørgrav
130076ad2f8SDag-Erling Smørgrav# Ensure that Match/Host in an included config does not affect parent.
131076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
132076ad2f8SDag-Erling SmørgravMatch host x
133076ad2f8SDag-Erling Smørgrav_EOF
134076ad2f8SDag-Erling Smørgrav
135076ad2f8SDag-Erling Smørgravtrial a aa
136076ad2f8SDag-Erling Smørgrav
137076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
138076ad2f8SDag-Erling SmørgravHost x
139076ad2f8SDag-Erling Smørgrav_EOF
140076ad2f8SDag-Erling Smørgrav
141076ad2f8SDag-Erling Smørgravtrial a aa
142076ad2f8SDag-Erling Smørgrav
143076ad2f8SDag-Erling Smørgrav# cleanup
144076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out
145*19261079SEd Maste#	$OpenBSD: cfginclude.sh,v 1.3 2021/06/08 06:52:43 djm Exp $
146076ad2f8SDag-Erling Smørgrav#	Placed in the Public Domain.
147076ad2f8SDag-Erling Smørgrav
148076ad2f8SDag-Erling Smørgravtid="config include"
149076ad2f8SDag-Erling Smørgrav
150076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
151076ad2f8SDag-Erling SmørgravMatch host a
152076ad2f8SDag-Erling Smørgrav	Hostname aa
153076ad2f8SDag-Erling Smørgrav
154076ad2f8SDag-Erling SmørgravMatch host b
155076ad2f8SDag-Erling Smørgrav	Hostname bb
156076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
157076ad2f8SDag-Erling Smørgrav
158076ad2f8SDag-Erling SmørgravMatch host c
159076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
160076ad2f8SDag-Erling Smørgrav	Hostname cc
161076ad2f8SDag-Erling Smørgrav
162076ad2f8SDag-Erling SmørgravMatch host m
163076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
164076ad2f8SDag-Erling Smørgrav
165076ad2f8SDag-Erling SmørgravHost d
166076ad2f8SDag-Erling Smørgrav	Hostname dd
167076ad2f8SDag-Erling Smørgrav
168076ad2f8SDag-Erling SmørgravHost e
169076ad2f8SDag-Erling Smørgrav	Hostname ee
170076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
171076ad2f8SDag-Erling Smørgrav
172076ad2f8SDag-Erling SmørgravHost f
173076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
174076ad2f8SDag-Erling Smørgrav	Hostname ff
175076ad2f8SDag-Erling Smørgrav
176076ad2f8SDag-Erling SmørgravHost n
177076ad2f8SDag-Erling Smørgrav	Include $OBJ/ssh_config.i.*
178076ad2f8SDag-Erling Smørgrav_EOF
179076ad2f8SDag-Erling Smørgrav
180076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.0 << _EOF
181076ad2f8SDag-Erling SmørgravMatch host xxxxxx
182076ad2f8SDag-Erling Smørgrav_EOF
183076ad2f8SDag-Erling Smørgrav
184076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.1 << _EOF
185076ad2f8SDag-Erling SmørgravMatch host a
186076ad2f8SDag-Erling Smørgrav	Hostname aaa
187076ad2f8SDag-Erling Smørgrav
188*19261079SEd MasteMatch host b # comment
189076ad2f8SDag-Erling Smørgrav	Hostname bbb
190076ad2f8SDag-Erling Smørgrav
191076ad2f8SDag-Erling SmørgravMatch host c
192*19261079SEd Maste	Hostname ccc # comment
193076ad2f8SDag-Erling Smørgrav
194076ad2f8SDag-Erling SmørgravHost d
195076ad2f8SDag-Erling Smørgrav	Hostname ddd
196076ad2f8SDag-Erling Smørgrav
197076ad2f8SDag-Erling SmørgravHost e
198076ad2f8SDag-Erling Smørgrav	Hostname eee
199076ad2f8SDag-Erling Smørgrav
200076ad2f8SDag-Erling SmørgravHost f
201076ad2f8SDag-Erling Smørgrav	Hostname fff
202076ad2f8SDag-Erling Smørgrav_EOF
203076ad2f8SDag-Erling Smørgrav
204076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.2 << _EOF
205076ad2f8SDag-Erling SmørgravMatch host a
206076ad2f8SDag-Erling Smørgrav	Hostname aaaa
207076ad2f8SDag-Erling Smørgrav
208076ad2f8SDag-Erling SmørgravMatch host b
209076ad2f8SDag-Erling Smørgrav	Hostname bbbb
210076ad2f8SDag-Erling Smørgrav
211076ad2f8SDag-Erling SmørgravMatch host c
212076ad2f8SDag-Erling Smørgrav	Hostname cccc
213076ad2f8SDag-Erling Smørgrav
214076ad2f8SDag-Erling SmørgravHost d
215076ad2f8SDag-Erling Smørgrav	Hostname dddd
216076ad2f8SDag-Erling Smørgrav
217076ad2f8SDag-Erling SmørgravHost e
218076ad2f8SDag-Erling Smørgrav	Hostname eeee
219076ad2f8SDag-Erling Smørgrav
220076ad2f8SDag-Erling SmørgravHost f
221076ad2f8SDag-Erling Smørgrav	Hostname ffff
222076ad2f8SDag-Erling Smørgrav
223*19261079SEd MasteMatch all # comment
224*19261079SEd Maste	Hostname xxxx # comment
225076ad2f8SDag-Erling Smørgrav_EOF
226076ad2f8SDag-Erling Smørgrav
227076ad2f8SDag-Erling Smørgravtrial() {
228076ad2f8SDag-Erling Smørgrav	_host="$1"
229076ad2f8SDag-Erling Smørgrav	_exp="$2"
230076ad2f8SDag-Erling Smørgrav	${REAL_SSH} -F $OBJ/ssh_config.i -G "$_host" > $OBJ/ssh_config.out ||
231076ad2f8SDag-Erling Smørgrav		fatal "ssh config parse failed"
232076ad2f8SDag-Erling Smørgrav	_got=`grep -i '^hostname ' $OBJ/ssh_config.out | awk '{print $2}'`
233076ad2f8SDag-Erling Smørgrav	if test "x$_exp" != "x$_got" ; then
234076ad2f8SDag-Erling Smørgrav		fail "host $_host include fail: expected $_exp got $_got"
235076ad2f8SDag-Erling Smørgrav	fi
236076ad2f8SDag-Erling Smørgrav}
237076ad2f8SDag-Erling Smørgrav
238076ad2f8SDag-Erling Smørgravtrial a aa
239076ad2f8SDag-Erling Smørgravtrial b bb
240076ad2f8SDag-Erling Smørgravtrial c ccc
241076ad2f8SDag-Erling Smørgravtrial d dd
242076ad2f8SDag-Erling Smørgravtrial e ee
243076ad2f8SDag-Erling Smørgravtrial f fff
244076ad2f8SDag-Erling Smørgravtrial m xxxx
245076ad2f8SDag-Erling Smørgravtrial n xxxx
246076ad2f8SDag-Erling Smørgravtrial x x
247076ad2f8SDag-Erling Smørgrav
248076ad2f8SDag-Erling Smørgrav# Prepare an included config with an error.
249076ad2f8SDag-Erling Smørgrav
250076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.3 << _EOF
251076ad2f8SDag-Erling SmørgravHostname xxxx
252076ad2f8SDag-Erling Smørgrav	Junk
253076ad2f8SDag-Erling Smørgrav_EOF
254076ad2f8SDag-Erling Smørgrav
255076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \
256076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
257076ad2f8SDag-Erling Smørgrav
258076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G x 2>/dev/null && \
259076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed invalid config"
260076ad2f8SDag-Erling Smørgrav
261076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i.*
262076ad2f8SDag-Erling Smørgrav
263076ad2f8SDag-Erling Smørgrav# Ensure that a missing include is not fatal.
264076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
265076ad2f8SDag-Erling SmørgravInclude $OBJ/ssh_config.i.*
266076ad2f8SDag-Erling SmørgravHostname aa
267076ad2f8SDag-Erling Smørgrav_EOF
268076ad2f8SDag-Erling Smørgrav
269076ad2f8SDag-Erling Smørgravtrial a aa
270076ad2f8SDag-Erling Smørgrav
271076ad2f8SDag-Erling Smørgrav# Ensure that Match/Host in an included config does not affect parent.
272076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
273076ad2f8SDag-Erling SmørgravMatch host x
274076ad2f8SDag-Erling Smørgrav_EOF
275076ad2f8SDag-Erling Smørgrav
276076ad2f8SDag-Erling Smørgravtrial a aa
277076ad2f8SDag-Erling Smørgrav
278076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i.x << _EOF
279076ad2f8SDag-Erling SmørgravHost x
280076ad2f8SDag-Erling Smørgrav_EOF
281076ad2f8SDag-Erling Smørgrav
282076ad2f8SDag-Erling Smørgravtrial a aa
283076ad2f8SDag-Erling Smørgrav
284076ad2f8SDag-Erling Smørgrav# Ensure that recursive includes are bounded.
285076ad2f8SDag-Erling Smørgravcat > $OBJ/ssh_config.i << _EOF
286076ad2f8SDag-Erling SmørgravInclude $OBJ/ssh_config.i
287076ad2f8SDag-Erling Smørgrav_EOF
288076ad2f8SDag-Erling Smørgrav
289076ad2f8SDag-Erling Smørgrav${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \
290076ad2f8SDag-Erling Smørgrav	fail "ssh include allowed infinite recursion?" # or hang...
291076ad2f8SDag-Erling Smørgrav
292076ad2f8SDag-Erling Smørgrav# cleanup
293076ad2f8SDag-Erling Smørgravrm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out
294