#!/bin/sh

# external.test

SCRIPT_DIR="$(dirname "$0")"

server=www.wolfssl.com
ca=./certs/wolfssl-website-ca.pem

[ ! -x ./examples/client/client ] && echo -e "\n\nClient doesn't exist" && exit 1

# www.wolfssl.com isn't using RFC 8446 yet but the draft instead.
./examples/client/client -v 3 2>&1 | grep -- 'Bad SSL version'
if [ $? -ne 0 ]; then

    # cloudflare seems to change CAs quickly, disabled by default
    if test -n "$WOLFSSL_EXTERNAL_TEST"; then

	BUILD_FLAGS="$(./examples/client/client '-#')"
	if echo "$BUILD_FLAGS" | fgrep -q -e ' -DWOLFSSL_SNIFFER '; then
	    echo 'skipping WOLFSSL_EXTERNAL_TEST because -DWOLFSSL_SNIFFER configuration of build is incompatible.'
	    exit 0
	fi

	if echo "$BUILD_FLAGS" | fgrep -v -q -e ' -DHAVE_ECC '; then
	    echo 'skipping WOLFSSL_EXTERNAL_TEST because -UHAVE_ECC configuration of build is incompatible.'
	    exit 0
	fi

        echo "WOLFSSL_EXTERNAL_TEST set, running test..."
    else
        echo "WOLFSSL_EXTERNAL_TEST NOT set, won't run"
        exit 0
    fi

    # is our desired server there?
    ${SCRIPT_DIR}/ping.test $server 2
    RESULT=$?
    [ $RESULT -ne 0 ] && exit 0

    # client test against the server
    ./examples/client/client -X -C -h $server -p 443 -g -A $ca
    RESULT=$?
    [ $RESULT -ne 0 ] && echo -e "\n\nClient connection failed" && exit 1

fi

exit 0
