12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # $OpenBSD: cfgparse.sh,v 1.7 2018/05/11 03:51:06 dtucker Exp $
- # Placed in the Public Domain.
- tid="sshd config parse"
- # This is a reasonable proxy for IPv6 support.
- if ! config_defined HAVE_STRUCT_IN6_ADDR; then
- SKIP_IPV6=yes
- fi
- # We need to use the keys generated for the regression test because sshd -T
- # will fail if we're not running with SUDO (no permissions for real keys) or
- # if we are running tests on a system that has never had sshd installed
- # because the keys won't exist.
- grep "HostKey " $OBJ/sshd_config > $OBJ/sshd_config_minimal
- SSHD_KEYS="$(cat $OBJ/sshd_config_minimal)"
- verbose "reparse minimal config"
- ($SUDO ${SSHD} -T -f $OBJ/sshd_config_minimal > $OBJ/sshd_config.1 &&
- $SUDO ${SSHD} -T -f $OBJ/sshd_config.1 > $OBJ/sshd_config.2 &&
- diff $OBJ/sshd_config.1 $OBJ/sshd_config.2) || fail "reparse minimal config"
- verbose "reparse regress config"
- ($SUDO ${SSHD} -T -f $OBJ/sshd_config > $OBJ/sshd_config.1 &&
- $SUDO ${SSHD} -T -f $OBJ/sshd_config.1 > $OBJ/sshd_config.2 &&
- diff $OBJ/sshd_config.1 $OBJ/sshd_config.2) || fail "reparse regress config"
- verbose "listenaddress order"
- # expected output
- cat > $OBJ/sshd_config.0 << EOD
- listenaddress 1.2.3.4:1234
- listenaddress 1.2.3.4:5678
- EOD
- [ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.0 << EOD
- listenaddress [::1]:1234
- listenaddress [::1]:5678
- EOD
- # test input sets. should all result in the output above.
- # test 1: addressfamily and port first
- cat > $OBJ/sshd_config.1 << EOD
- ${SSHD_KEYS}
- addressfamily any
- port 1234
- port 5678
- listenaddress 1.2.3.4
- EOD
- [ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.1 << EOD
- listenaddress ::1
- EOD
- ($SUDO ${SSHD} -T -f $OBJ/sshd_config.1 |
- grep 'listenaddress ' > $OBJ/sshd_config.2 &&
- diff $OBJ/sshd_config.0 $OBJ/sshd_config.2) ||
- fail "listenaddress order 1"
- # test 2: listenaddress first
- cat > $OBJ/sshd_config.1 << EOD
- ${SSHD_KEYS}
- listenaddress 1.2.3.4
- port 1234
- port 5678
- addressfamily any
- EOD
- [ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.1 << EOD
- listenaddress ::1
- EOD
- ($SUDO ${SSHD} -T -f $OBJ/sshd_config.1 |
- grep 'listenaddress ' > $OBJ/sshd_config.2 &&
- diff $OBJ/sshd_config.0 $OBJ/sshd_config.2) ||
- fail "listenaddress order 2"
- # cleanup
- rm -f $OBJ/sshd_config.[012]
|