mirror of
https://repo.or.cz/socat.git
synced 2025-07-06 21:16:34 +00:00
Test script socks5server-echo.sh for new tests SOCKS5CONNECT_TCP4 and SOCKS5LISTEN_TCP4
This commit is contained in:
parent
e7df880af5
commit
29f9e4db92
8 changed files with 223 additions and 51 deletions
163
test.sh
163
test.sh
|
@ -66,6 +66,7 @@ VERBOSE=
|
|||
DEBUG=
|
||||
DEFS=
|
||||
INTERNET=
|
||||
EXPERIMENTAL=
|
||||
OPT_EXPECT_FAIL= EXPECT_FAIL=
|
||||
while [ "$1" ]; do
|
||||
case "X$1" in
|
||||
|
@ -4295,46 +4296,62 @@ esac
|
|||
N=$((N+1))
|
||||
|
||||
|
||||
# Test the SOCKS address with IPv4
|
||||
NAME=SOCKS4CONNECT_TCP4
|
||||
case "$TESTS" in
|
||||
*%$N%*|*%functions%*|*%socks%*|*%socks4%*|*%tcp%*|*%tcp4%*|*%ip4%*|*%listen%*|*%$NAME%*)
|
||||
TEST="$NAME: socks4 connect over TCP/IPv4"
|
||||
if ! eval $NUMCOND; then :;
|
||||
elif ! testfeats socks4 >/dev/null; then
|
||||
$PRINTF "test $F_n $TEST... ${YELLOW}SOCKS4 not available${NORMAL}\n" $N
|
||||
cant
|
||||
elif ! testfeats listen tcp ip4 >/dev/null || ! runsip4 >/dev/null; then
|
||||
$PRINTF "test $F_n $TEST... ${YELLOW}TCP/IPv4 not available${NORMAL}\n" $N
|
||||
elif ! cond=$(checkconds \
|
||||
"" \
|
||||
"" \
|
||||
"socks4echo.sh" \
|
||||
"SOCKS4 IP4 TCP LISTEN STDIO" \
|
||||
"TCP4-LISTEN EXEC STDIN SOCKS4" \
|
||||
"so-reuseaddr" \
|
||||
"tcp4" ); then
|
||||
$PRINTF "test $F_n $TEST... ${YELLOW}$cond${NORMAL}\n" $N
|
||||
cant
|
||||
else
|
||||
tf="$td/test$N.stdout"
|
||||
te="$td/test$N.stderr"
|
||||
tdiff="$td/test$N.diff"
|
||||
da="test$N $(date) $RANDOM"; da="$da$($ECHO '\r')"
|
||||
# we have a normal tcp echo listening - so the socks header must appear in answer
|
||||
newport tcp4 # provide free port number in $PORT
|
||||
CMD2="$TRACE $SOCAT $opts TCP4-L:$PORT,$REUSEADDR EXEC:\"./socks4echo.sh\""
|
||||
CMD="$TRACE $SOCAT $opts - SOCKS4:$LOCALHOST:32.98.76.54:32109,pf=ip4,socksport=$PORT",socksuser="nobody"
|
||||
printf "test $F_n $TEST... " $N
|
||||
eval "$CMD2 2>\"${te}1\" &"
|
||||
pid=$! # background process id
|
||||
waittcp4port $PORT 1
|
||||
echo "$da" |$CMD >$tf 2>"${te}2"
|
||||
if ! echo "$da" |diff - "$tf" >"$tdiff"; then
|
||||
$PRINTF "$FAILED: $TRACE $SOCAT:\n"
|
||||
echo "$CMD2 &"
|
||||
echo "$CMD"
|
||||
cat "${te}1"
|
||||
cat "${te}2"
|
||||
cat "$tdiff"
|
||||
failed
|
||||
else
|
||||
$PRINTF "$OK\n"
|
||||
if [ -n "$debug" ]; then cat "${te}1" "${te}2"; fi
|
||||
ok
|
||||
fi
|
||||
kill $pid 2>/dev/null
|
||||
wait
|
||||
tf="$td/test$N.stdout"
|
||||
te="$td/test$N.stderr"
|
||||
tdiff="$td/test$N.diff"
|
||||
da="test$N $(date) $RANDOM"; da="$da$($ECHO '\r')"
|
||||
newport tcp4 # provide free port number in $PORT
|
||||
CMD0="$TRACE $SOCAT $opts TCP4-LISTEN:$PORT,$REUSEADDR EXEC:\"./socks4echo.sh\""
|
||||
CMD1="$TRACE $SOCAT $opts STDIO SOCKS4:$LOCALHOST:32.98.76.54:32109,pf=ip4,socksport=$PORT",socksuser="nobody"
|
||||
printf "test $F_n $TEST... " $N
|
||||
eval "$CMD0 2>\"${te}0\" &"
|
||||
pid0=$! # background process id
|
||||
waittcp4port $PORT 1
|
||||
echo "$da" |$CMD1 >${tf}1 2>"${te}1"
|
||||
rc1=$?
|
||||
kill $pid0 2>/dev/null
|
||||
wait
|
||||
if [ "$rc1" -ne 0 ]; then
|
||||
$PRINTF "$FAILED (rc1=$rc1)\n"
|
||||
echo "$CMD0 &"
|
||||
cat "${te}0" >&2
|
||||
echo "$CMD1"
|
||||
cat "${te}1" >&2
|
||||
failed
|
||||
elif ! echo "$da" |diff - "${tf}1" >"$tdiff"; then
|
||||
$PRINTF "$FAILED (diff)\n"
|
||||
echo "$CMD0 &"
|
||||
cat "${te}0" >&2
|
||||
echo "$CMD1"
|
||||
cat "${te}1" >&2
|
||||
echo "// diff:" >&2
|
||||
cat "$tdiff" >&2
|
||||
failed
|
||||
else
|
||||
$PRINTF "$OK\n"
|
||||
if [ "$VERBOSE" ]; then echo "$CMD0 &"; fi
|
||||
if [ "$DEBUG" ]; then cat "${te}0" >&2; fi
|
||||
if [ "$VERBOSE" ]; then echo "$CMD1 &"; fi
|
||||
if [ "$DEBUG" ]; then cat "${te}1" >&2; fi
|
||||
ok
|
||||
fi
|
||||
fi ;; # NUMCOND, feats
|
||||
esac
|
||||
N=$((N+1))
|
||||
|
@ -19292,6 +19309,86 @@ fi # NUMCOND
|
|||
esac
|
||||
N=$((N+1))
|
||||
|
||||
|
||||
# Above test introduced with 1.8.0.2
|
||||
# Below tests introduced with 1.8.0.3 (or later)
|
||||
|
||||
|
||||
# Test the SOCKS5-CONNECT and SOCKS5-LISTEN addresses with IPv4
|
||||
for SUFFIX in CONNECT LISTEN; do
|
||||
|
||||
suffix=$(tolower $SUFFIX)
|
||||
if [ "$SUFFIX" = LISTEN ]; then
|
||||
test=listen
|
||||
LISTEN=LISTEN
|
||||
listen=listen
|
||||
else
|
||||
test=dont
|
||||
LISTEN=
|
||||
listen=
|
||||
fi
|
||||
NAME=SOCKS5${SUFFIX}_TCP4
|
||||
case "$TESTS" in
|
||||
*%$N%*|*%functions%*|*%socks%*|*%socks5%*|*%tcp%*|*%tcp4%*|*%ip4%*|*%$test%*|*%$NAME%*)
|
||||
TEST="$NAME: SOCKS5-$SUFFIX over TCP/IPv4"
|
||||
if ! eval $NUMCOND; then :;
|
||||
elif ! cond=$(checkconds \
|
||||
"" \
|
||||
"" \
|
||||
"od ./socks5server-echo.sh" \
|
||||
"SOCKS5 IP4 TCP $LISTEN STDIO" \
|
||||
"TCP4-LISTEN EXEC STDIN SOCKS5-$SUFFIX" \
|
||||
"so-reuseaddr readbytes" \
|
||||
"tcp4" ); then
|
||||
$PRINTF "test $F_n $TEST... ${YELLOW}$cond${NORMAL}\n" $N
|
||||
cant
|
||||
else
|
||||
tf="$td/test$N.stdout"
|
||||
te="$td/test$N.stderr"
|
||||
tdiff="$td/test$N.diff"
|
||||
da="test$N $(date) $RANDOM"; da="$da$($ECHO '\r')"
|
||||
newport tcp4 # provide free port number in $PORT
|
||||
CMD0="$TRACE $SOCAT $opts TCP4-LISTEN:$PORT,$REUSEADDR EXEC:\"./socks5server-echo.sh\""
|
||||
CMD1="$TRACE $SOCAT $opts STDIO SOCKS5-$SUFFIX:$LOCALHOST:127.0.0.1:80,pf=ip4,socksport=$PORT"
|
||||
printf "test $F_n $TEST... " $N
|
||||
eval "$CMD0 2>\"${te}0\" &"
|
||||
pid0=$! # background process id
|
||||
waittcp4port $PORT 1
|
||||
echo "$da" |$CMD1 >${tf}1 2>"${te}1"
|
||||
rc1=$?
|
||||
kill $pid0 2>/dev/null
|
||||
wait
|
||||
if [ "$rc1" -ne 0 ]; then
|
||||
$PRINTF "$FAILED (rc1=$rc1)\n"
|
||||
echo "$CMD0 &"
|
||||
cat "${te}0" >&2
|
||||
echo "$CMD1"
|
||||
cat "${te}1" >&2
|
||||
failed
|
||||
elif ! echo "$da" |diff - "${tf}1" >"$tdiff"; then
|
||||
$PRINTF "$FAILED (diff)\n"
|
||||
echo "$CMD0 &"
|
||||
cat "${te}0" >&2
|
||||
echo "$CMD1"
|
||||
cat "${te}1" >&2
|
||||
echo "// diff:" >&2
|
||||
cat "$tdiff" >&2
|
||||
failed
|
||||
else
|
||||
$PRINTF "$OK\n"
|
||||
if [ "$VERBOSE" ]; then echo "$CMD0 &"; fi
|
||||
if [ "$DEBUG" ]; then cat "${te}0" >&2; fi
|
||||
if [ "$VERBOSE" ]; then echo "$CMD1 &"; fi
|
||||
if [ "$DEBUG" ]; then cat "${te}1" >&2; fi
|
||||
ok
|
||||
fi
|
||||
fi ;; # NUMCOND, feats
|
||||
esac
|
||||
N=$((N+1))
|
||||
|
||||
done # CONNECT LISTEN
|
||||
|
||||
|
||||
# end of common tests
|
||||
|
||||
##################################################################################
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue