| [1] | 1 | #! /bin/sh
 | 
|---|
 | 2 | 
 | 
|---|
| [27] | 3 | #
 | 
|---|
 | 4 | # Copyright Rainer Wichmann (2006)
 | 
|---|
 | 5 | #
 | 
|---|
 | 6 | # License Information:
 | 
|---|
 | 7 | # This program is free software; you can redistribute it and/or modify
 | 
|---|
 | 8 | # it under the terms of the GNU General Public License as published by
 | 
|---|
 | 9 | # the Free Software Foundation; either version 2 of the License, or
 | 
|---|
 | 10 | # (at your option) any later version.
 | 
|---|
 | 11 | #
 | 
|---|
 | 12 | # This program is distributed in the hope that it will be useful,
 | 
|---|
 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|---|
 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|---|
 | 15 | # GNU General Public License for more details.
 | 
|---|
 | 16 | #
 | 
|---|
 | 17 | # You should have received a copy of the GNU General Public License
 | 
|---|
 | 18 | # along with this program; if not, write to the Free Software
 | 
|---|
 | 19 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
|---|
 | 20 | #
 | 
|---|
 | 21 | 
 | 
|---|
| [19] | 22 | LOGFILE="$PW_DIR/.samhain_log"; export LOGFILE
 | 
|---|
 | 23 | RCFILE="$PW_DIR/testrc_2";  export RCFILE
 | 
|---|
| [1] | 24 | 
 | 
|---|
| [172] | 25 | SERVER_BUILDOPTS="--quiet  $TRUST --enable-network=server --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=${SH_LOCALHOST}  --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export SERVER_BUILDOPTS
 | 
|---|
| [1] | 26 | 
 | 
|---|
| [172] | 27 | CLIENT_BUILDOPTS="--quiet  $TRUST --enable-network=client --enable-srp --prefix=$PW_DIR --with-tmp-dir=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$RCFILE --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=localhost  --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock --enable-suidcheck"; export CLIENT_BUILDOPTS
 | 
|---|
| [1] | 28 | 
 | 
|---|
| [19] | 29 | do_test_1_a () {
 | 
|---|
| [1] | 30 | 
 | 
|---|
| [19] | 31 |         [ -z "$verbose" ] || { 
 | 
|---|
 | 32 |             echo; 
 | 
|---|
 | 33 |             echo "${S}Start Server${E}: ./yule -l info -p none &"; 
 | 
|---|
 | 34 |             echo; 
 | 
|---|
 | 35 |         }
 | 
|---|
| [22] | 36 |         rm -f test_log_valgrind
 | 
|---|
 | 37 | 
 | 
|---|
 | 38 |         ${VALGRIND} ./yule -l info -p none >/dev/null 2>>test_log_valgrind &
 | 
|---|
| [19] | 39 |         PROC_Y=$!
 | 
|---|
| [51] | 40 |         five_sec_sleep
 | 
|---|
| [1] | 41 | 
 | 
|---|
| [19] | 42 |         [ -z "$verbose" ] || { 
 | 
|---|
 | 43 |             echo; 
 | 
|---|
 | 44 |             echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check"; 
 | 
|---|
 | 45 |             echo; 
 | 
|---|
 | 46 |         }
 | 
|---|
 | 47 | 
 | 
|---|
| [22] | 48 |         ${VALGRIND} ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>>test_log_valgrind
 | 
|---|
| [19] | 49 |         if test x$? = x0; then
 | 
|---|
 | 50 |             [ -z "$verbose" ] || log_msg_ok    "samhain.new -t check";
 | 
|---|
| [1] | 51 |         else
 | 
|---|
| [19] | 52 |             [ -z "$quiet" ]   && log_msg_fail  "samhain.new -t check";
 | 
|---|
 | 53 |             kill $PROC_Y
 | 
|---|
 | 54 |             return 1
 | 
|---|
| [1] | 55 |         fi
 | 
|---|
 | 56 | 
 | 
|---|
| [19] | 57 |         kill $PROC_Y
 | 
|---|
| [51] | 58 |         five_sec_sleep
 | 
|---|
| [1] | 59 | 
 | 
|---|
| [19] | 60 |         egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1
 | 
|---|
 | 61 |         if [ $? -ne 0 ]; then
 | 
|---|
 | 62 |             [ -z "$verbose" ] || log_msg_fail "Server start";
 | 
|---|
 | 63 |             return 1
 | 
|---|
 | 64 |         fi
 | 
|---|
 | 65 |         egrep "NEW CLIENT" $LOGFILE >/dev/null 2>&1
 | 
|---|
 | 66 |         if [ $? -ne 0 ]; then
 | 
|---|
 | 67 |             [ -z "$verbose" ] || log_msg_fail "Client connect";
 | 
|---|
 | 68 |             return 1
 | 
|---|
 | 69 |         fi
 | 
|---|
 | 70 |         egrep "Checking.*/etc" $LOGFILE >/dev/null 2>&1
 | 
|---|
 | 71 |         if [ $? -ne 0 ]; then
 | 
|---|
 | 72 |             [ -z "$verbose" ] || log_msg_fail "Client file check";
 | 
|---|
 | 73 |             return 1
 | 
|---|
 | 74 |         fi
 | 
|---|
 | 75 |         egrep "EXIT.*Samhain" $LOGFILE >/dev/null 2>&1
 | 
|---|
 | 76 |         if [ $? -ne 0 ]; then
 | 
|---|
 | 77 |             [ -z "$verbose" ] || log_msg_fail "Client exit";
 | 
|---|
 | 78 |             return 1
 | 
|---|
 | 79 |         fi
 | 
|---|
 | 80 |         egrep "EXIT.*Yule.*SIGTERM" $LOGFILE >/dev/null 2>&1
 | 
|---|
 | 81 |         if [ $? -ne 0 ]; then
 | 
|---|
 | 82 |             [ -z "$verbose" ] || log_msg_fail "Server exit";
 | 
|---|
 | 83 |             return 1
 | 
|---|
 | 84 |         fi
 | 
|---|
 | 85 |         
 | 
|---|
| [22] | 86 |         [ -z "$VALGRIND" ] || {
 | 
|---|
 | 87 |             tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
 | 
|---|
 | 88 |             if [ $tmp -ne 0 ]; then
 | 
|---|
 | 89 |                 [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
 | 
|---|
 | 90 |                 cat test_log_valgrind
 | 
|---|
 | 91 |                 return 1;
 | 
|---|
 | 92 |             fi;
 | 
|---|
 | 93 |         }
 | 
|---|
| [1] | 94 | 
 | 
|---|
| [19] | 95 |         return 0
 | 
|---|
 | 96 | }
 | 
|---|
| [1] | 97 | 
 | 
|---|
| [19] | 98 | testrun2a_internal ()
 | 
|---|
| [1] | 99 | {
 | 
|---|
| [19] | 100 |         [ -z "$verbose" ] || { 
 | 
|---|
 | 101 |             echo; 
 | 
|---|
 | 102 |             echo Working directory: $PW_DIR; echo MAKE is $MAKE; 
 | 
|---|
 | 103 |             echo; 
 | 
|---|
 | 104 |         }
 | 
|---|
| [1] | 105 |         #
 | 
|---|
 | 106 |         #
 | 
|---|
| [19] | 107 |         [ -z "$verbose" ] || { echo; echo "${S}Building client and server${E}"; echo; }
 | 
|---|
| [1] | 108 |         #
 | 
|---|
 | 109 |         if test -r "Makefile"; then
 | 
|---|
 | 110 |                 $MAKE distclean
 | 
|---|
 | 111 |         fi
 | 
|---|
 | 112 |         #
 | 
|---|
| [19] | 113 |         ${TOP_SRCDIR}/configure ${CLIENT_BUILDOPTS}
 | 
|---|
| [1] | 114 |         #
 | 
|---|
| [44] | 115 |         # Limit suid check
 | 
|---|
 | 116 |         #
 | 
|---|
 | 117 |         BASE="${PW_DIR}"; export BASE
 | 
|---|
 | 118 |         #
 | 
|---|
| [1] | 119 |         if test x$? = x0; then
 | 
|---|
| [19] | 120 |                 [ -z "$verbose" ] ||     log_msg_ok "configure..."; 
 | 
|---|
| [44] | 121 |                 $MAKE  'DBGDEF=-DSH_SUIDTESTDIR=\"${BASE}\"' > /dev/null 2>>test_log
 | 
|---|
| [1] | 122 |                 if test x$? = x0; then
 | 
|---|
| [19] | 123 |                     [ -z "$verbose" ] || log_msg_ok "make..."; 
 | 
|---|
| [1] | 124 |                 else
 | 
|---|
| [19] | 125 |                     [ -z "$quiet" ] &&   log_msg_fail "make..."; 
 | 
|---|
 | 126 |                     return 1
 | 
|---|
| [1] | 127 |                 fi
 | 
|---|
 | 128 | 
 | 
|---|
 | 129 |         else
 | 
|---|
| [19] | 130 |                 [ -z "$quiet" ] &&       log_msg_fail "configure...";
 | 
|---|
 | 131 |                 return 1
 | 
|---|
| [1] | 132 |         fi
 | 
|---|
 | 133 | 
 | 
|---|
 | 134 |         # save binary and build server
 | 
|---|
 | 135 |         #
 | 
|---|
| [19] | 136 |         cp samhain samhain.build || return 1
 | 
|---|
| [30] | 137 |         $MAKE clean >/dev/null || return 1
 | 
|---|
| [1] | 138 | 
 | 
|---|
| [19] | 139 |         ${TOP_SRCDIR}/configure ${SERVER_BUILDOPTS}
 | 
|---|
| [1] | 140 |         #
 | 
|---|
 | 141 |         if test x$? = x0; then
 | 
|---|
| [19] | 142 |                 [ -z "$verbose" ] ||     log_msg_ok "configure..."; 
 | 
|---|
 | 143 |                 $MAKE  > /dev/null 2>>test_log
 | 
|---|
| [1] | 144 |                 if test x$? = x0; then
 | 
|---|
| [19] | 145 |                     [ -z "$verbose" ] || log_msg_ok "make..."; 
 | 
|---|
| [1] | 146 |                 else
 | 
|---|
| [19] | 147 |                     [ -z "$quiet" ] &&   log_msg_fail "make..."; 
 | 
|---|
 | 148 |                     return 1
 | 
|---|
| [1] | 149 |                 fi
 | 
|---|
 | 150 | 
 | 
|---|
 | 151 |         else
 | 
|---|
| [19] | 152 |                 [ -z "$quiet" ] &&       log_msg_fail "configure...";
 | 
|---|
 | 153 |                 return 1
 | 
|---|
| [1] | 154 |         fi
 | 
|---|
 | 155 | 
 | 
|---|
 | 156 | 
 | 
|---|
| [19] | 157 |         #####################################################################
 | 
|---|
 | 158 |         #
 | 
|---|
 | 159 |         #
 | 
|---|
| [1] | 160 |         rm -f ./.samhain_file
 | 
|---|
 | 161 |         rm -f ./.samhain_log
 | 
|---|
 | 162 |         rm -f ./.samhain_lock
 | 
|---|
 | 163 |         rm -f ./rc.${SH_LOCALHOST}
 | 
|---|
 | 164 |         rm -f ./file.${SH_LOCALHOST}
 | 
|---|
| [25] | 165 |         rm -f  "./rc.${ALTHOST}"
 | 
|---|
 | 166 |         rm -f  "./file.${ALTHOST}"
 | 
|---|
| [1] | 167 | 
 | 
|---|
 | 168 |         cp ${SCRIPTDIR}/testrc_2.in testrc_2
 | 
|---|
 | 169 | 
 | 
|---|
| [19] | 170 |         ./samhain.build -t init -p none
 | 
|---|
| [1] | 171 | 
 | 
|---|
| [19] | 172 |         if test x$? = x0; then
 | 
|---|
 | 173 |             [ -z "$verbose" ] || log_msg_ok    "init...";
 | 
|---|
 | 174 |         else
 | 
|---|
 | 175 |             [ -z "$quiet" ]   && log_msg_fail  "init...";
 | 
|---|
 | 176 |             return 1
 | 
|---|
 | 177 |         fi
 | 
|---|
| [1] | 178 | 
 | 
|---|
 | 179 |         # Create a password
 | 
|---|
 | 180 | 
 | 
|---|
 | 181 |         SHPW=`./yule -G`
 | 
|---|
 | 182 |         if test x"$SHPW" = x; then
 | 
|---|
| [19] | 183 |             [ -z "$quiet" ]   && log_msg_fail  "password not generated -- aborting"
 | 
|---|
 | 184 |             return 1
 | 
|---|
| [1] | 185 |         fi
 | 
|---|
 | 186 | 
 | 
|---|
 | 187 |         # Set in client
 | 
|---|
 | 188 | 
 | 
|---|
| [19] | 189 |         ./samhain_setpwd samhain.build new $SHPW >/dev/null
 | 
|---|
| [1] | 190 | 
 | 
|---|
| [19] | 191 |         if test x$? = x0; then
 | 
|---|
 | 192 |             [ -z "$verbose" ] || log_msg_ok    "./samhain_setpwd samhain.build new $SHPW";
 | 
|---|
 | 193 |         else
 | 
|---|
 | 194 |             [ -z "$quiet" ]   && log_msg_fail  "./samhain_setpwd samhain.build new $SHPW";
 | 
|---|
 | 195 |             return 1
 | 
|---|
 | 196 |         fi
 | 
|---|
| [1] | 197 | 
 | 
|---|
| [19] | 198 |         mv samhain.build.new  samhain.new || return 1
 | 
|---|
 | 199 | 
 | 
|---|
 | 200 |         rm -f ./.samhain_log*
 | 
|---|
| [1] | 201 |         rm -f ./.samhain_lock
 | 
|---|
 | 202 | 
 | 
|---|
| [29] | 203 |         SHCLT=`./yule -P $SHPW`
 | 
|---|
| [1] | 204 | 
 | 
|---|
| [19] | 205 |         if test x$? = x0; then
 | 
|---|
 | 206 |             [ -z "$verbose" ] || log_msg_ok    "yule -P $SHPW";
 | 
|---|
 | 207 |         else
 | 
|---|
 | 208 |             [ -z "$quiet" ]   && log_msg_fail  "yule -P $SHPW";
 | 
|---|
 | 209 |             return 1
 | 
|---|
 | 210 |         fi
 | 
|---|
 | 211 | 
 | 
|---|
| [29] | 212 |         SHCLT1=`echo "${SHCLT}"  | sed s%HOSTNAME%${SH_LOCALHOST}%`
 | 
|---|
 | 213 |         AHOST=`find_hostname`
 | 
|---|
 | 214 |         SHCLT2=`echo "${SHCLT}"  | sed s%HOSTNAME%${AHOST}%`
 | 
|---|
 | 215 |         
 | 
|---|
| [1] | 216 | 
 | 
|---|
| [29] | 217 |         echo $SHCLT1 >> testrc_2
 | 
|---|
 | 218 |         echo $SHCLT2 >> testrc_2
 | 
|---|
 | 219 | 
 | 
|---|
 | 220 | 
 | 
|---|
| [19] | 221 |         cp    ./testrc_2       ./rc.${SH_LOCALHOST}
 | 
|---|
 | 222 |         mv    ./.samhain_file  ./file.${SH_LOCALHOST}
 | 
|---|
| [207] | 223 |         chmod 644 ./rc.${SH_LOCALHOST}
 | 
|---|
 | 224 |         chmod 644 ./file.${SH_LOCALHOST}
 | 
|---|
| [1] | 225 | 
 | 
|---|
| [19] | 226 |         ALTHOST=`find_hostname`
 | 
|---|
 | 227 |         cp    ./testrc_2       "./rc.${ALTHOST}"
 | 
|---|
 | 228 |         cp    ./file.${SH_LOCALHOST} "./file.${ALTHOST}" 2>/dev/null
 | 
|---|
| [207] | 229 |         chmod 644 ./rc.${ALTHOST}
 | 
|---|
 | 230 |         chmod 644 ./file.${ALTHOST}
 | 
|---|
| [1] | 231 | }
 | 
|---|
 | 232 | 
 | 
|---|
| [25] | 233 | MAXTEST=5; export MAXTEST
 | 
|---|
| [19] | 234 | 
 | 
|---|
 | 235 | testrun2a ()
 | 
|---|
 | 236 | {
 | 
|---|
 | 237 |     log_start "RUN FULL CLIENT/SERVER";
 | 
|---|
 | 238 |     #
 | 
|---|
 | 239 |     if [ x"$1" = x ]; then
 | 
|---|
 | 240 |         [ -z "$quiet" ] && log_msg_fail "Missing hostname"
 | 
|---|
| [1] | 241 |     fi
 | 
|---|
| [19] | 242 |     #
 | 
|---|
| [1] | 243 |     SH_LOCALHOST=$1; export SH_LOCALHOST
 | 
|---|
| [19] | 244 |     #
 | 
|---|
 | 245 |     testrun2a_internal
 | 
|---|
 | 246 |     do_test_1_a
 | 
|---|
 | 247 |     if [ $? -eq 0 ]; then
 | 
|---|
 | 248 |         [ -z "$quiet" ] && log_ok   1 ${MAXTEST} "Client download+logging";
 | 
|---|
 | 249 |     else
 | 
|---|
 | 250 |         [ -z "$quiet" ] && log_fail 1 ${MAXTEST} "Client download+logging";
 | 
|---|
 | 251 |     fi
 | 
|---|
 | 252 |     #
 | 
|---|
| [25] | 253 |     SERVER_BUILDOPTS_ORIG="${SERVER_BUILDOPTS}"
 | 
|---|
 | 254 |     CLIENT_BUILDOPTS_ORIG="${CLIENT_BUILDOPTS}"
 | 
|---|
 | 255 |     #
 | 
|---|
| [172] | 256 |     SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG} --disable-srp"; export SERVER_BUILDOPTS
 | 
|---|
 | 257 |     CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --disable-srp"; export CLIENT_BUILDOPTS
 | 
|---|
| [25] | 258 |     #
 | 
|---|
 | 259 |     testrun2a_internal
 | 
|---|
 | 260 |     do_test_1_a
 | 
|---|
 | 261 |     if [ $? -eq 0 ]; then
 | 
|---|
 | 262 |         [ -z "$quiet" ] && log_ok   2 ${MAXTEST} "SRP disabled";
 | 
|---|
 | 263 |     else
 | 
|---|
 | 264 |         [ -z "$quiet" ] && log_fail 2 ${MAXTEST} "SRP disabled";
 | 
|---|
 | 265 |     fi
 | 
|---|
 | 266 |     #
 | 
|---|
| [172] | 267 |     SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG} --disable-encrypt"; export SERVER_BUILDOPTS
 | 
|---|
 | 268 |     CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --disable-encrypt"; export CLIENT_BUILDOPTS
 | 
|---|
| [25] | 269 |     #
 | 
|---|
 | 270 |     testrun2a_internal
 | 
|---|
 | 271 |     do_test_1_a
 | 
|---|
 | 272 |     if [ $? -eq 0 ]; then
 | 
|---|
 | 273 |         [ -z "$quiet" ] && log_ok   3 ${MAXTEST} "Encryption disabled";
 | 
|---|
 | 274 |     else
 | 
|---|
 | 275 |         [ -z "$quiet" ] && log_fail 3 ${MAXTEST} "Encryption disabled";
 | 
|---|
 | 276 |     fi
 | 
|---|
 | 277 |     #
 | 
|---|
| [172] | 278 |     SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG} --enable-encrypt=1"; export SERVER_BUILDOPTS
 | 
|---|
 | 279 |     CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --enable-encrypt=1"; export CLIENT_BUILDOPTS
 | 
|---|
| [25] | 280 |     #
 | 
|---|
 | 281 |     testrun2a_internal
 | 
|---|
 | 282 |     do_test_1_a
 | 
|---|
 | 283 |     if [ $? -eq 0 ]; then
 | 
|---|
 | 284 |         [ -z "$quiet" ] && log_ok   4 ${MAXTEST} "Encryption (v1)";
 | 
|---|
 | 285 |     else
 | 
|---|
 | 286 |         [ -z "$quiet" ] && log_fail 4 ${MAXTEST} "Encryption (v1)";
 | 
|---|
 | 287 |     fi
 | 
|---|
 | 288 |     #
 | 
|---|
| [172] | 289 |     SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG}"; export SERVER_BUILDOPTS
 | 
|---|
 | 290 |     CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --enable-encrypt=1"; export CLIENT_BUILDOPTS
 | 
|---|
| [25] | 291 |     #
 | 
|---|
 | 292 |     testrun2a_internal
 | 
|---|
 | 293 |     do_test_1_a
 | 
|---|
 | 294 |     if [ $? -eq 0 ]; then
 | 
|---|
 | 295 |         [ -z "$quiet" ] && log_ok   5 ${MAXTEST} "Encryption backward compat";
 | 
|---|
 | 296 |     else
 | 
|---|
 | 297 |         [ -z "$quiet" ] && log_fail 5 ${MAXTEST} "Encryption backward compat";
 | 
|---|
 | 298 |     fi
 | 
|---|
 | 299 |     #
 | 
|---|
| [19] | 300 |     if [ -n "$cleanup" ]; then
 | 
|---|
 | 301 |         rm -f ./rc.${SH_LOCALHOST}
 | 
|---|
 | 302 |         rm -f ./file.${SH_LOCALHOST}
 | 
|---|
 | 303 |         ALTHOST=`find_hostname`
 | 
|---|
 | 304 |         rm -f "./file.${ALTHOST}"
 | 
|---|
 | 305 |         rm -f "./rc.${ALTHOST}"
 | 
|---|
 | 306 |     fi
 | 
|---|
 | 307 |     #
 | 
|---|
 | 308 |     log_end "RUN FULL CLIENT/SERVER"
 | 
|---|
 | 309 | }
 | 
|---|
| [1] | 310 | 
 | 
|---|