1313010Sdes# $OpenBSD: cfginclude.sh,v 1.2 2016/05/03 15:30:46 dtucker Exp $ 2313010Sdes# Placed in the Public Domain. 3313010Sdes 4313010Sdestid="config include" 5313010Sdes 6313010Sdes# to appease StrictModes 7313010Sdesumask 022 8313010Sdes 9313010Sdescat > $OBJ/ssh_config.i << _EOF 10313010SdesMatch host a 11313010Sdes Hostname aa 12313010Sdes 13313010SdesMatch host b 14313010Sdes Hostname bb 15313010Sdes Include $OBJ/ssh_config.i.* 16313010Sdes 17313010SdesMatch host c 18313010Sdes Include $OBJ/ssh_config.i.* 19313010Sdes Hostname cc 20313010Sdes 21313010SdesMatch host m 22313010Sdes Include $OBJ/ssh_config.i.* 23313010Sdes 24313010SdesHost d 25313010Sdes Hostname dd 26313010Sdes 27313010SdesHost e 28313010Sdes Hostname ee 29313010Sdes Include $OBJ/ssh_config.i.* 30313010Sdes 31313010SdesHost f 32313010Sdes Include $OBJ/ssh_config.i.* 33313010Sdes Hostname ff 34313010Sdes 35313010SdesHost n 36313010Sdes Include $OBJ/ssh_config.i.* 37313010Sdes_EOF 38313010Sdes 39313010Sdescat > $OBJ/ssh_config.i.0 << _EOF 40313010SdesMatch host xxxxxx 41313010Sdes_EOF 42313010Sdes 43313010Sdescat > $OBJ/ssh_config.i.1 << _EOF 44313010SdesMatch host a 45313010Sdes Hostname aaa 46313010Sdes 47313010SdesMatch host b 48313010Sdes Hostname bbb 49313010Sdes 50313010SdesMatch host c 51313010Sdes Hostname ccc 52313010Sdes 53313010SdesHost d 54313010Sdes Hostname ddd 55313010Sdes 56313010SdesHost e 57313010Sdes Hostname eee 58313010Sdes 59313010SdesHost f 60313010Sdes Hostname fff 61313010Sdes_EOF 62313010Sdes 63313010Sdescat > $OBJ/ssh_config.i.2 << _EOF 64313010SdesMatch host a 65313010Sdes Hostname aaaa 66313010Sdes 67313010SdesMatch host b 68313010Sdes Hostname bbbb 69313010Sdes 70313010SdesMatch host c 71313010Sdes Hostname cccc 72313010Sdes 73313010SdesHost d 74313010Sdes Hostname dddd 75313010Sdes 76313010SdesHost e 77313010Sdes Hostname eeee 78313010Sdes 79313010SdesHost f 80313010Sdes Hostname ffff 81313010Sdes 82313010SdesMatch all 83313010Sdes Hostname xxxx 84313010Sdes_EOF 85313010Sdes 86313010Sdestrial() { 87313010Sdes _host="$1" 88313010Sdes _exp="$2" 89313010Sdes ${REAL_SSH} -F $OBJ/ssh_config.i -G "$_host" > $OBJ/ssh_config.out || 90313010Sdes fatal "ssh config parse failed" 91313010Sdes _got=`grep -i '^hostname ' $OBJ/ssh_config.out | awk '{print $2}'` 92313010Sdes if test "x$_exp" != "x$_got" ; then 93313010Sdes fail "host $_host include fail: expected $_exp got $_got" 94313010Sdes fi 95313010Sdes} 96313010Sdes 97313010Sdestrial a aa 98313010Sdestrial b bb 99313010Sdestrial c ccc 100313010Sdestrial d dd 101313010Sdestrial e ee 102313010Sdestrial f fff 103313010Sdestrial m xxxx 104313010Sdestrial n xxxx 105313010Sdestrial x x 106313010Sdes 107313010Sdes# Prepare an included config with an error. 108313010Sdes 109313010Sdescat > $OBJ/ssh_config.i.3 << _EOF 110313010SdesHostname xxxx 111313010Sdes Junk 112313010Sdes_EOF 113313010Sdes 114313010Sdes${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \ 115313010Sdes fail "ssh include allowed invalid config" 116313010Sdes 117313010Sdes${REAL_SSH} -F $OBJ/ssh_config.i -G x 2>/dev/null && \ 118313010Sdes fail "ssh include allowed invalid config" 119313010Sdes 120313010Sdesrm -f $OBJ/ssh_config.i.* 121313010Sdes 122313010Sdes# Ensure that a missing include is not fatal. 123313010Sdescat > $OBJ/ssh_config.i << _EOF 124313010SdesInclude $OBJ/ssh_config.i.* 125313010SdesHostname aa 126313010Sdes_EOF 127313010Sdes 128313010Sdestrial a aa 129313010Sdes 130313010Sdes# Ensure that Match/Host in an included config does not affect parent. 131313010Sdescat > $OBJ/ssh_config.i.x << _EOF 132313010SdesMatch host x 133313010Sdes_EOF 134313010Sdes 135313010Sdestrial a aa 136313010Sdes 137313010Sdescat > $OBJ/ssh_config.i.x << _EOF 138313010SdesHost x 139313010Sdes_EOF 140313010Sdes 141313010Sdestrial a aa 142313010Sdes 143313010Sdes# cleanup 144313010Sdesrm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out 145313010Sdes# $OpenBSD: cfginclude.sh,v 1.2 2016/05/03 15:30:46 dtucker Exp $ 146313010Sdes# Placed in the Public Domain. 147313010Sdes 148313010Sdestid="config include" 149313010Sdes 150313010Sdescat > $OBJ/ssh_config.i << _EOF 151313010SdesMatch host a 152313010Sdes Hostname aa 153313010Sdes 154313010SdesMatch host b 155313010Sdes Hostname bb 156313010Sdes Include $OBJ/ssh_config.i.* 157313010Sdes 158313010SdesMatch host c 159313010Sdes Include $OBJ/ssh_config.i.* 160313010Sdes Hostname cc 161313010Sdes 162313010SdesMatch host m 163313010Sdes Include $OBJ/ssh_config.i.* 164313010Sdes 165313010SdesHost d 166313010Sdes Hostname dd 167313010Sdes 168313010SdesHost e 169313010Sdes Hostname ee 170313010Sdes Include $OBJ/ssh_config.i.* 171313010Sdes 172313010SdesHost f 173313010Sdes Include $OBJ/ssh_config.i.* 174313010Sdes Hostname ff 175313010Sdes 176313010SdesHost n 177313010Sdes Include $OBJ/ssh_config.i.* 178313010Sdes_EOF 179313010Sdes 180313010Sdescat > $OBJ/ssh_config.i.0 << _EOF 181313010SdesMatch host xxxxxx 182313010Sdes_EOF 183313010Sdes 184313010Sdescat > $OBJ/ssh_config.i.1 << _EOF 185313010SdesMatch host a 186313010Sdes Hostname aaa 187313010Sdes 188313010SdesMatch host b 189313010Sdes Hostname bbb 190313010Sdes 191313010SdesMatch host c 192313010Sdes Hostname ccc 193313010Sdes 194313010SdesHost d 195313010Sdes Hostname ddd 196313010Sdes 197313010SdesHost e 198313010Sdes Hostname eee 199313010Sdes 200313010SdesHost f 201313010Sdes Hostname fff 202313010Sdes_EOF 203313010Sdes 204313010Sdescat > $OBJ/ssh_config.i.2 << _EOF 205313010SdesMatch host a 206313010Sdes Hostname aaaa 207313010Sdes 208313010SdesMatch host b 209313010Sdes Hostname bbbb 210313010Sdes 211313010SdesMatch host c 212313010Sdes Hostname cccc 213313010Sdes 214313010SdesHost d 215313010Sdes Hostname dddd 216313010Sdes 217313010SdesHost e 218313010Sdes Hostname eeee 219313010Sdes 220313010SdesHost f 221313010Sdes Hostname ffff 222313010Sdes 223313010SdesMatch all 224313010Sdes Hostname xxxx 225313010Sdes_EOF 226313010Sdes 227313010Sdestrial() { 228313010Sdes _host="$1" 229313010Sdes _exp="$2" 230313010Sdes ${REAL_SSH} -F $OBJ/ssh_config.i -G "$_host" > $OBJ/ssh_config.out || 231313010Sdes fatal "ssh config parse failed" 232313010Sdes _got=`grep -i '^hostname ' $OBJ/ssh_config.out | awk '{print $2}'` 233313010Sdes if test "x$_exp" != "x$_got" ; then 234313010Sdes fail "host $_host include fail: expected $_exp got $_got" 235313010Sdes fi 236313010Sdes} 237313010Sdes 238313010Sdestrial a aa 239313010Sdestrial b bb 240313010Sdestrial c ccc 241313010Sdestrial d dd 242313010Sdestrial e ee 243313010Sdestrial f fff 244313010Sdestrial m xxxx 245313010Sdestrial n xxxx 246313010Sdestrial x x 247313010Sdes 248313010Sdes# Prepare an included config with an error. 249313010Sdes 250313010Sdescat > $OBJ/ssh_config.i.3 << _EOF 251313010SdesHostname xxxx 252313010Sdes Junk 253313010Sdes_EOF 254313010Sdes 255313010Sdes${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \ 256313010Sdes fail "ssh include allowed invalid config" 257313010Sdes 258313010Sdes${REAL_SSH} -F $OBJ/ssh_config.i -G x 2>/dev/null && \ 259313010Sdes fail "ssh include allowed invalid config" 260313010Sdes 261313010Sdesrm -f $OBJ/ssh_config.i.* 262313010Sdes 263313010Sdes# Ensure that a missing include is not fatal. 264313010Sdescat > $OBJ/ssh_config.i << _EOF 265313010SdesInclude $OBJ/ssh_config.i.* 266313010SdesHostname aa 267313010Sdes_EOF 268313010Sdes 269313010Sdestrial a aa 270313010Sdes 271313010Sdes# Ensure that Match/Host in an included config does not affect parent. 272313010Sdescat > $OBJ/ssh_config.i.x << _EOF 273313010SdesMatch host x 274313010Sdes_EOF 275313010Sdes 276313010Sdestrial a aa 277313010Sdes 278313010Sdescat > $OBJ/ssh_config.i.x << _EOF 279313010SdesHost x 280313010Sdes_EOF 281313010Sdes 282313010Sdestrial a aa 283313010Sdes 284313010Sdes# Ensure that recursive includes are bounded. 285313010Sdescat > $OBJ/ssh_config.i << _EOF 286313010SdesInclude $OBJ/ssh_config.i 287313010Sdes_EOF 288313010Sdes 289313010Sdes${REAL_SSH} -F $OBJ/ssh_config.i -G a 2>/dev/null && \ 290313010Sdes fail "ssh include allowed infinite recursion?" # or hang... 291313010Sdes 292313010Sdes# cleanup 293313010Sdesrm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out 294