xref: /aosp_15_r20/external/curl/tests/ech_tests.sh (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker#!/bin/bash
2*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
3*6236dae4SAndroid Build Coastguard Worker#                                  _   _ ____  _
4*6236dae4SAndroid Build Coastguard Worker#  Project                     ___| | | |  _ \| |
5*6236dae4SAndroid Build Coastguard Worker#                             / __| | | | |_) | |
6*6236dae4SAndroid Build Coastguard Worker#                            | (__| |_| |  _ <| |___
7*6236dae4SAndroid Build Coastguard Worker#                             \___|\___/|_| \_\_____|
8*6236dae4SAndroid Build Coastguard Worker#
9*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
10*6236dae4SAndroid Build Coastguard Worker#
11*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which
12*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms
13*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html.
14*6236dae4SAndroid Build Coastguard Worker#
15*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell
16*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is
17*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file.
18*6236dae4SAndroid Build Coastguard Worker#
19*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied.
21*6236dae4SAndroid Build Coastguard Worker#
22*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl
23*6236dae4SAndroid Build Coastguard Worker#
24*6236dae4SAndroid Build Coastguard Worker###########################################################################
25*6236dae4SAndroid Build Coastguard Worker#
26*6236dae4SAndroid Build Coastguard Worker
27*6236dae4SAndroid Build Coastguard Worker# Run some tests against servers we know to support ECH (CF, defo.ie, etc.).
28*6236dae4SAndroid Build Coastguard Worker# as well as some we know don't do ECH but have an HTTPS RR, and finally some
29*6236dae4SAndroid Build Coastguard Worker# for which neither is the case.
30*6236dae4SAndroid Build Coastguard Worker
31*6236dae4SAndroid Build Coastguard Worker# TODO: Translate this into something that approximates a valid curl test:-)
32*6236dae4SAndroid Build Coastguard Worker# Should be useful though even before such translation and a pile less work
33*6236dae4SAndroid Build Coastguard Worker# to do this than that.  The pile of work required would include making an
34*6236dae4SAndroid Build Coastguard Worker# ECH-enabled server and a DoH server. For now, this is just run manually.
35*6236dae4SAndroid Build Coastguard Worker#
36*6236dae4SAndroid Build Coastguard Worker
37*6236dae4SAndroid Build Coastguard Worker# set -x
38*6236dae4SAndroid Build Coastguard Worker
39*6236dae4SAndroid Build Coastguard Worker# Exit with an error if there's an active ech stanza in ~/.curlrc
40*6236dae4SAndroid Build Coastguard Worker# as that'd likely skew some results (e.g. turning a fail into a
41*6236dae4SAndroid Build Coastguard Worker# success or vice versa)
42*6236dae4SAndroid Build Coastguard Worker: "${CURL_CFG_FILE=$HOME/.curlrc}"
43*6236dae4SAndroid Build Coastguard Workeractive_ech=$(grep ech "$CURL_CFG_FILE" | grep -v "#.*ech")
44*6236dae4SAndroid Build Coastguard Workerif [[ "$active_ech" != "" ]]
45*6236dae4SAndroid Build Coastguard Workerthen
46*6236dae4SAndroid Build Coastguard Worker    echo "You seem to have an active ECH setting in $CURL_CFG_FILE"
47*6236dae4SAndroid Build Coastguard Worker    echo "That might affect results so please remove that or comment"
48*6236dae4SAndroid Build Coastguard Worker    echo "it out - exiting."
49*6236dae4SAndroid Build Coastguard Worker    exit 1
50*6236dae4SAndroid Build Coastguard Workerfi
51*6236dae4SAndroid Build Coastguard Worker
52*6236dae4SAndroid Build Coastguard Worker
53*6236dae4SAndroid Build Coastguard Worker# Targets we expect to be ECH-enabled servers
54*6236dae4SAndroid Build Coastguard Worker# for which an HTTPS RR is published.
55*6236dae4SAndroid Build Coastguard Worker# structure is host:port mapped to pathname
56*6236dae4SAndroid Build Coastguard Worker# TODO: add negative tests for these
57*6236dae4SAndroid Build Coastguard Workerdeclare -A ech_targets=(
58*6236dae4SAndroid Build Coastguard Worker    [my-own.net]="ech-check.php"
59*6236dae4SAndroid Build Coastguard Worker    [my-own.net:8443]="ech-check.php"
60*6236dae4SAndroid Build Coastguard Worker    [defo.ie]="ech-check.php"
61*6236dae4SAndroid Build Coastguard Worker    [cover.defo.ie]=""
62*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:8413]="stats"
63*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:8414]="stats"
64*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:9413]=""
65*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:10413]=""
66*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:11413]=""
67*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:12413]=""
68*6236dae4SAndroid Build Coastguard Worker    [draft-13.esni.defo.ie:12414]=""
69*6236dae4SAndroid Build Coastguard Worker    [crypto.cloudflare.com]="cdn-cgi/trace"
70*6236dae4SAndroid Build Coastguard Worker    [tls-ech.dev]=""
71*6236dae4SAndroid Build Coastguard Worker    # this one's gone away for now (possibly temporarily)
72*6236dae4SAndroid Build Coastguard Worker    # [epochbelt.com]=""
73*6236dae4SAndroid Build Coastguard Worker)
74*6236dae4SAndroid Build Coastguard Worker
75*6236dae4SAndroid Build Coastguard Worker# Targets we expect not to be ECH-enabled servers
76*6236dae4SAndroid Build Coastguard Worker# but for which an HTTPS RR is published.
77*6236dae4SAndroid Build Coastguard Workerdeclare -A httpsrr_targets=(
78*6236dae4SAndroid Build Coastguard Worker    [ietf.org]=""
79*6236dae4SAndroid Build Coastguard Worker    [rte.ie]=""
80*6236dae4SAndroid Build Coastguard Worker)
81*6236dae4SAndroid Build Coastguard Worker
82*6236dae4SAndroid Build Coastguard Worker# Targets we expect not to be ECH-enabled servers
83*6236dae4SAndroid Build Coastguard Worker# and for which no HTTPS RR is published.
84*6236dae4SAndroid Build Coastguard Workerdeclare -A neither_targets=(
85*6236dae4SAndroid Build Coastguard Worker    [www.tcd.ie]=""
86*6236dae4SAndroid Build Coastguard Worker    [jell.ie]=""
87*6236dae4SAndroid Build Coastguard Worker)
88*6236dae4SAndroid Build Coastguard Worker
89*6236dae4SAndroid Build Coastguard Worker#
90*6236dae4SAndroid Build Coastguard Worker# Variables that can be over-ridden from environment
91*6236dae4SAndroid Build Coastguard Worker#
92*6236dae4SAndroid Build Coastguard Worker
93*6236dae4SAndroid Build Coastguard Worker# Top of curl test tree, assume we're there
94*6236dae4SAndroid Build Coastguard Worker: "${CTOP:=.}"
95*6236dae4SAndroid Build Coastguard Worker
96*6236dae4SAndroid Build Coastguard Worker# Place to put test log output
97*6236dae4SAndroid Build Coastguard Worker: "${LTOP:=$CTOP/tests/ech-log/}"
98*6236dae4SAndroid Build Coastguard Worker
99*6236dae4SAndroid Build Coastguard Worker# Place to stash outputs when things go wrong
100*6236dae4SAndroid Build Coastguard Worker: "${BTOP:=$LTOP}"
101*6236dae4SAndroid Build Coastguard Worker
102*6236dae4SAndroid Build Coastguard Worker# Time to wait for a remote access to work, 10 seconds
103*6236dae4SAndroid Build Coastguard Worker: "${tout:=10s}"
104*6236dae4SAndroid Build Coastguard Worker
105*6236dae4SAndroid Build Coastguard Worker# Where we find OpenSSL .so's
106*6236dae4SAndroid Build Coastguard Worker: "${OSSL:=$HOME/code/openssl-local-inst}"
107*6236dae4SAndroid Build Coastguard Worker
108*6236dae4SAndroid Build Coastguard Worker# Where we find wolfSSL .so's
109*6236dae4SAndroid Build Coastguard Worker: "${WSSL:=$HOME/code/wolfssl/inst/lib}"
110*6236dae4SAndroid Build Coastguard Worker
111*6236dae4SAndroid Build Coastguard Worker# Where we find BoringSSL .so's
112*6236dae4SAndroid Build Coastguard Worker: "${BSSL:=$HOME/code/boringssl/inst/lib}"
113*6236dae4SAndroid Build Coastguard Worker
114*6236dae4SAndroid Build Coastguard Worker# Where we send DoH queries when using kdig or curl
115*6236dae4SAndroid Build Coastguard Worker: "${DOHSERVER:=one.one.one.one}"
116*6236dae4SAndroid Build Coastguard Worker: "${DOHPATH:=dns-query}"
117*6236dae4SAndroid Build Coastguard Worker
118*6236dae4SAndroid Build Coastguard Worker# Whether to send mail when bad things happen (mostly for cronjob)
119*6236dae4SAndroid Build Coastguard Worker: "${DOMAIL:=no}"
120*6236dae4SAndroid Build Coastguard Worker
121*6236dae4SAndroid Build Coastguard Worker# Misc vars and functions
122*6236dae4SAndroid Build Coastguard Worker
123*6236dae4SAndroid Build Coastguard WorkerDEFPORT=443
124*6236dae4SAndroid Build Coastguard Worker
125*6236dae4SAndroid Build Coastguard Workerfunction whenisitagain()
126*6236dae4SAndroid Build Coastguard Worker{
127*6236dae4SAndroid Build Coastguard Worker    /bin/date -u +%Y%m%d-%H%M%S
128*6236dae4SAndroid Build Coastguard Worker}
129*6236dae4SAndroid Build Coastguard Worker
130*6236dae4SAndroid Build Coastguard Workerfunction fileage()
131*6236dae4SAndroid Build Coastguard Worker{
132*6236dae4SAndroid Build Coastguard Worker    echo $(($(date +%s) - $(date +%s -r "$1")))
133*6236dae4SAndroid Build Coastguard Worker}
134*6236dae4SAndroid Build Coastguard Worker
135*6236dae4SAndroid Build Coastguard Workerfunction hostport2host()
136*6236dae4SAndroid Build Coastguard Worker{
137*6236dae4SAndroid Build Coastguard Worker    case $1 in
138*6236dae4SAndroid Build Coastguard Worker      *:*) host=${1%:*} port=${1##*:};;
139*6236dae4SAndroid Build Coastguard Worker        *) host=$1      port=$DEFPORT;;
140*6236dae4SAndroid Build Coastguard Worker    esac
141*6236dae4SAndroid Build Coastguard Worker    echo "$host"
142*6236dae4SAndroid Build Coastguard Worker}
143*6236dae4SAndroid Build Coastguard Worker
144*6236dae4SAndroid Build Coastguard Workerfunction hostport2port()
145*6236dae4SAndroid Build Coastguard Worker{
146*6236dae4SAndroid Build Coastguard Worker    case $1 in
147*6236dae4SAndroid Build Coastguard Worker      *:*) host=${1%:*} port=${1##*:};;
148*6236dae4SAndroid Build Coastguard Worker        *) host=$1      port=$DEFPORT;;
149*6236dae4SAndroid Build Coastguard Worker    esac
150*6236dae4SAndroid Build Coastguard Worker    echo "$port"
151*6236dae4SAndroid Build Coastguard Worker}
152*6236dae4SAndroid Build Coastguard Worker
153*6236dae4SAndroid Build Coastguard Workerfunction cli_test()
154*6236dae4SAndroid Build Coastguard Worker{
155*6236dae4SAndroid Build Coastguard Worker    # 1st param is target URL
156*6236dae4SAndroid Build Coastguard Worker    turl=$1
157*6236dae4SAndroid Build Coastguard Worker    # 2nd param is 0 if we expect curl to not work or 1 if we expect it
158*6236dae4SAndroid Build Coastguard Worker    # to have worked
159*6236dae4SAndroid Build Coastguard Worker    curl_winorlose=$2
160*6236dae4SAndroid Build Coastguard Worker    # 3rd param is 0 if we expect ECH to not work or 1 if we expect it
161*6236dae4SAndroid Build Coastguard Worker    # to have worked
162*6236dae4SAndroid Build Coastguard Worker    ech_winorlose=$3
163*6236dae4SAndroid Build Coastguard Worker    # remaining params are passed to command line
164*6236dae4SAndroid Build Coastguard Worker    # echparms=(${@:4})
165*6236dae4SAndroid Build Coastguard Worker    IFS=" " read -r -a echparms <<< "${@:4}"
166*6236dae4SAndroid Build Coastguard Worker
167*6236dae4SAndroid Build Coastguard Worker    TMPF=$(mktemp)
168*6236dae4SAndroid Build Coastguard Worker    cmd="timeout $tout $CURL ${CURL_PARAMS[*]} ${echparms[*]} $turl >$TMPF 2>&1"
169*6236dae4SAndroid Build Coastguard Worker    echo "cli_test: $cmd " >> "$logfile"
170*6236dae4SAndroid Build Coastguard Worker    timeout "$tout" "$CURL" "${CURL_PARAMS[@]}" "${echparms[@]}" "$turl" >"$TMPF" 2>&1
171*6236dae4SAndroid Build Coastguard Worker    eres=$?
172*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" == "124" ]]
173*6236dae4SAndroid Build Coastguard Worker    then
174*6236dae4SAndroid Build Coastguard Worker        allgood="no"
175*6236dae4SAndroid Build Coastguard Worker        echo "cli_test: Timeout running $cmd"
176*6236dae4SAndroid Build Coastguard Worker        cat "$TMPF" >> "$logfile"
177*6236dae4SAndroid Build Coastguard Worker        echo "cli_test: Timeout running $cmd" >> "$logfile"
178*6236dae4SAndroid Build Coastguard Worker    fi
179*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" != "0" && "$curl_winorlose" == "1" ]]
180*6236dae4SAndroid Build Coastguard Worker    then
181*6236dae4SAndroid Build Coastguard Worker        allgood="no"
182*6236dae4SAndroid Build Coastguard Worker        echo "cli_test: curl failure running $cmd"
183*6236dae4SAndroid Build Coastguard Worker        cat "$TMPF" >> "$logfile"
184*6236dae4SAndroid Build Coastguard Worker        echo "cli_test: curl failure running $cmd" >> "$logfile"
185*6236dae4SAndroid Build Coastguard Worker    fi
186*6236dae4SAndroid Build Coastguard Worker    ech_success=$(grep -c "ECH: result: status is succeeded" "$TMPF")
187*6236dae4SAndroid Build Coastguard Worker    if [[ "$ech_success" == "$ech_winorlose" ]]
188*6236dae4SAndroid Build Coastguard Worker    then
189*6236dae4SAndroid Build Coastguard Worker        echo "cli_test ok for ${echparms[*]}"
190*6236dae4SAndroid Build Coastguard Worker    else
191*6236dae4SAndroid Build Coastguard Worker        allgood="no"
192*6236dae4SAndroid Build Coastguard Worker        echo "cli_test: ECH failure running $cmd"
193*6236dae4SAndroid Build Coastguard Worker        cat "$TMPF" >> "$logfile"
194*6236dae4SAndroid Build Coastguard Worker        echo "cli_test: ECH failure running $cmd" >> "$logfile"
195*6236dae4SAndroid Build Coastguard Worker    fi
196*6236dae4SAndroid Build Coastguard Worker    rm -f "$TMPF"
197*6236dae4SAndroid Build Coastguard Worker}
198*6236dae4SAndroid Build Coastguard Worker
199*6236dae4SAndroid Build Coastguard Workerfunction get_ech_configlist()
200*6236dae4SAndroid Build Coastguard Worker{
201*6236dae4SAndroid Build Coastguard Worker    domain=$1
202*6236dae4SAndroid Build Coastguard Worker    ecl=$(dig +short https "$domain" | grep "ech=" | sed -e 's/^.*ech=//' | sed -e 's/ .*//')
203*6236dae4SAndroid Build Coastguard Worker    echo "$ecl"
204*6236dae4SAndroid Build Coastguard Worker}
205*6236dae4SAndroid Build Coastguard Worker
206*6236dae4SAndroid Build Coastguard Worker# start of main script
207*6236dae4SAndroid Build Coastguard Worker
208*6236dae4SAndroid Build Coastguard Worker# start by assuming we have nothing we need...
209*6236dae4SAndroid Build Coastguard Workerhave_ossl="no"
210*6236dae4SAndroid Build Coastguard Workerhave_wolf="no"
211*6236dae4SAndroid Build Coastguard Workerhave_bssl="no"
212*6236dae4SAndroid Build Coastguard Workerusing_ossl="no"
213*6236dae4SAndroid Build Coastguard Workerusing_wolf="no"
214*6236dae4SAndroid Build Coastguard Workerusing_bssl="no"
215*6236dae4SAndroid Build Coastguard Workerhave_curl="no"
216*6236dae4SAndroid Build Coastguard Workerhave_dig="no"
217*6236dae4SAndroid Build Coastguard Workerhave_kdig="no"
218*6236dae4SAndroid Build Coastguard Workerhave_presout="no"
219*6236dae4SAndroid Build Coastguard Workerhave_portsblocked="no"
220*6236dae4SAndroid Build Coastguard Worker
221*6236dae4SAndroid Build Coastguard Worker# setup logging
222*6236dae4SAndroid Build Coastguard WorkerNOW=$(whenisitagain)
223*6236dae4SAndroid Build Coastguard WorkerBINNAME=$(basename "$0" .sh)
224*6236dae4SAndroid Build Coastguard Workerif [ ! -d "$LTOP" ]
225*6236dae4SAndroid Build Coastguard Workerthen
226*6236dae4SAndroid Build Coastguard Worker    mkdir -p "$LTOP"
227*6236dae4SAndroid Build Coastguard Workerfi
228*6236dae4SAndroid Build Coastguard Workerif [ ! -d "$LTOP" ]
229*6236dae4SAndroid Build Coastguard Workerthen
230*6236dae4SAndroid Build Coastguard Worker    echo "Can't see $LTOP for logs - exiting"
231*6236dae4SAndroid Build Coastguard Worker    exit 1
232*6236dae4SAndroid Build Coastguard Workerfi
233*6236dae4SAndroid Build Coastguard Workerlogfile=$LTOP/${BINNAME}_$NOW.log
234*6236dae4SAndroid Build Coastguard Worker
235*6236dae4SAndroid Build Coastguard Workerecho "-----" > "$logfile"
236*6236dae4SAndroid Build Coastguard Workerecho "Running $0 at $NOW"  >> "$logfile"
237*6236dae4SAndroid Build Coastguard Workerecho "Running $0 at $NOW"
238*6236dae4SAndroid Build Coastguard Worker
239*6236dae4SAndroid Build Coastguard Worker# check we have the binaries needed and which TLS library we'll be using
240*6236dae4SAndroid Build Coastguard Workerif [ -f "$OSSL"/libssl.so ]
241*6236dae4SAndroid Build Coastguard Workerthen
242*6236dae4SAndroid Build Coastguard Worker    have_ossl="yes"
243*6236dae4SAndroid Build Coastguard Workerfi
244*6236dae4SAndroid Build Coastguard Workerif [ -f "$WSSL"/libwolfssl.so ]
245*6236dae4SAndroid Build Coastguard Workerthen
246*6236dae4SAndroid Build Coastguard Worker    have_wolf="yes"
247*6236dae4SAndroid Build Coastguard Workerfi
248*6236dae4SAndroid Build Coastguard Workerif [ -f "$BSSL"/libssl.so ]
249*6236dae4SAndroid Build Coastguard Workerthen
250*6236dae4SAndroid Build Coastguard Worker    have_bssl="yes"
251*6236dae4SAndroid Build Coastguard Workerfi
252*6236dae4SAndroid Build Coastguard WorkerCURL="$CTOP/src/curl"
253*6236dae4SAndroid Build Coastguard WorkerCURL_PARAMS=(-vvv --doh-url https://one.one.one.one/dns-query)
254*6236dae4SAndroid Build Coastguard Workerif [ -f "$CTOP"/src/curl ]
255*6236dae4SAndroid Build Coastguard Workerthen
256*6236dae4SAndroid Build Coastguard Worker    have_curl="yes"
257*6236dae4SAndroid Build Coastguard Workerfi
258*6236dae4SAndroid Build Coastguard Workerossl_cnt=$(LD_LIBRARY_PATH=$OSSL $CURL "${CURL_PARAMS[@]}" -V 2> /dev/null | grep -c OpenSSL)
259*6236dae4SAndroid Build Coastguard Workerif ((ossl_cnt == 1))
260*6236dae4SAndroid Build Coastguard Workerthen
261*6236dae4SAndroid Build Coastguard Worker    using_ossl="yes"
262*6236dae4SAndroid Build Coastguard Worker    # setup access to our .so
263*6236dae4SAndroid Build Coastguard Worker    export LD_LIBRARY_PATH=$OSSL
264*6236dae4SAndroid Build Coastguard Workerfi
265*6236dae4SAndroid Build Coastguard Workerbssl_cnt=$(LD_LIBRARY_PATH=$BSSL $CURL "${CURL_PARAMS[@]}" -V 2> /dev/null | grep -c BoringSSL)
266*6236dae4SAndroid Build Coastguard Workerif ((bssl_cnt == 1))
267*6236dae4SAndroid Build Coastguard Workerthen
268*6236dae4SAndroid Build Coastguard Worker    using_bssl="yes"
269*6236dae4SAndroid Build Coastguard Worker    # setup access to our .so
270*6236dae4SAndroid Build Coastguard Worker    export LD_LIBRARY_PATH=$BSSL
271*6236dae4SAndroid Build Coastguard Workerfi
272*6236dae4SAndroid Build Coastguard Workerwolf_cnt=$($CURL "${CURL_PARAMS[@]}" -V 2> /dev/null | grep -c wolfSSL)
273*6236dae4SAndroid Build Coastguard Workerif ((wolf_cnt == 1))
274*6236dae4SAndroid Build Coastguard Workerthen
275*6236dae4SAndroid Build Coastguard Worker    using_wolf="yes"
276*6236dae4SAndroid Build Coastguard Worker    # for some reason curl+wolfSSL dislikes certs that are ok
277*6236dae4SAndroid Build Coastguard Worker    # for browsers, so we'll test using "insecure" mode (-k)
278*6236dae4SAndroid Build Coastguard Worker    # but that's ok here as we're only interested in ECH testing
279*6236dae4SAndroid Build Coastguard Worker    CURL_PARAMS+=(-k)
280*6236dae4SAndroid Build Coastguard Workerfi
281*6236dae4SAndroid Build Coastguard Worker# check if we have dig and it knows https or not
282*6236dae4SAndroid Build Coastguard Workerdigcmd="dig +short"
283*6236dae4SAndroid Build Coastguard Workerwdig=$(type -p dig)
284*6236dae4SAndroid Build Coastguard Workerif [[ "$wdig" != "" ]]
285*6236dae4SAndroid Build Coastguard Workerthen
286*6236dae4SAndroid Build Coastguard Worker    have_dig="yes"
287*6236dae4SAndroid Build Coastguard Workerfi
288*6236dae4SAndroid Build Coastguard Workerwkdig=$(type -p kdig)
289*6236dae4SAndroid Build Coastguard Workerif [[ "$wkdig" != "" ]]
290*6236dae4SAndroid Build Coastguard Workerthen
291*6236dae4SAndroid Build Coastguard Worker    have_kdig="yes"
292*6236dae4SAndroid Build Coastguard Worker    digcmd="kdig @$DOHSERVER +https +short"
293*6236dae4SAndroid Build Coastguard Workerfi
294*6236dae4SAndroid Build Coastguard Worker# see if our dig version knows HTTPS
295*6236dae4SAndroid Build Coastguard Workerdout=$($digcmd https defo.ie)
296*6236dae4SAndroid Build Coastguard Workerif [[ $dout != "1 . "* ]]
297*6236dae4SAndroid Build Coastguard Workerthen
298*6236dae4SAndroid Build Coastguard Worker    dout=$($digcmd -t TYPE65 defo.ie)
299*6236dae4SAndroid Build Coastguard Worker    if [[ $dout == "1 . "* ]]
300*6236dae4SAndroid Build Coastguard Worker    then
301*6236dae4SAndroid Build Coastguard Worker        # we're good
302*6236dae4SAndroid Build Coastguard Worker        have_presout="yes"
303*6236dae4SAndroid Build Coastguard Worker    fi
304*6236dae4SAndroid Build Coastguard Workerelse
305*6236dae4SAndroid Build Coastguard Worker    have_presout="yes"
306*6236dae4SAndroid Build Coastguard Workerfi
307*6236dae4SAndroid Build Coastguard Worker
308*6236dae4SAndroid Build Coastguard Worker# Check if ports other than 443 are blocked from this
309*6236dae4SAndroid Build Coastguard Worker# vantage point (I run tests in a n/w where that's
310*6236dae4SAndroid Build Coastguard Worker# sadly true sometimes;-)
311*6236dae4SAndroid Build Coastguard Worker# echo "Checking if ports other than 443 are maybe blocked"
312*6236dae4SAndroid Build Coastguard Workernot443testurl="https://draft-13.esni.defo.ie:9413/"
313*6236dae4SAndroid Build Coastguard Workertimeout "$tout" "$CURL" "${CURL_PARAMS[@]}" "$not443testurl" >/dev/null 2>&1
314*6236dae4SAndroid Build Coastguard Workereres=$?
315*6236dae4SAndroid Build Coastguard Workerif [[ "$eres" == "124" ]]
316*6236dae4SAndroid Build Coastguard Workerthen
317*6236dae4SAndroid Build Coastguard Worker    echo "Timeout running curl for $not443testurl" >> "$logfile"
318*6236dae4SAndroid Build Coastguard Worker    echo "Timeout running curl for $not443testurl"
319*6236dae4SAndroid Build Coastguard Worker    have_portsblocked="yes"
320*6236dae4SAndroid Build Coastguard Workerfi
321*6236dae4SAndroid Build Coastguard Worker
322*6236dae4SAndroid Build Coastguard Worker{
323*6236dae4SAndroid Build Coastguard Worker    echo "have_ossl: $have_ossl"
324*6236dae4SAndroid Build Coastguard Worker    echo "have_wolf: $have_wolf"
325*6236dae4SAndroid Build Coastguard Worker    echo "have_bssl: $have_bssl"
326*6236dae4SAndroid Build Coastguard Worker    echo "using_ossl: $using_ossl"
327*6236dae4SAndroid Build Coastguard Worker    echo "using_wolf: $using_wolf"
328*6236dae4SAndroid Build Coastguard Worker    echo "using_bssl: $using_bssl"
329*6236dae4SAndroid Build Coastguard Worker    echo "have_curl: $have_curl"
330*6236dae4SAndroid Build Coastguard Worker    echo "have_dig: $have_dig"
331*6236dae4SAndroid Build Coastguard Worker    echo "have_kdig: $have_kdig"
332*6236dae4SAndroid Build Coastguard Worker    echo "have_presout: $have_presout"
333*6236dae4SAndroid Build Coastguard Worker    echo "have_portsblocked: $have_portsblocked"
334*6236dae4SAndroid Build Coastguard Worker} >> "$logfile"
335*6236dae4SAndroid Build Coastguard Worker
336*6236dae4SAndroid Build Coastguard Workerecho "curl: have $have_curl, cURL command: |$CURL ${CURL_PARAMS[*]}|"
337*6236dae4SAndroid Build Coastguard Workerecho "ossl: have: $have_ossl, using: $using_ossl"
338*6236dae4SAndroid Build Coastguard Workerecho "wolf: have: $have_wolf, using: $using_wolf"
339*6236dae4SAndroid Build Coastguard Workerecho "bssl: have: $have_bssl, using: $using_bssl"
340*6236dae4SAndroid Build Coastguard Workerecho "dig: $have_dig, kdig: $have_kdig, HTTPS pres format: $have_presout"
341*6236dae4SAndroid Build Coastguard Workerecho "dig command: |$digcmd|"
342*6236dae4SAndroid Build Coastguard Workerecho "ports != 443 blocked: $have_portsblocked"
343*6236dae4SAndroid Build Coastguard Worker
344*6236dae4SAndroid Build Coastguard Workerif [[ "$have_curl" == "no" ]]
345*6236dae4SAndroid Build Coastguard Workerthen
346*6236dae4SAndroid Build Coastguard Worker    echo "Can't proceed without curl - exiting"
347*6236dae4SAndroid Build Coastguard Worker    exit 32
348*6236dae4SAndroid Build Coastguard Workerfi
349*6236dae4SAndroid Build Coastguard Worker
350*6236dae4SAndroid Build Coastguard Workerallgood="yes"
351*6236dae4SAndroid Build Coastguard Worker
352*6236dae4SAndroid Build Coastguard Workerskip="false"
353*6236dae4SAndroid Build Coastguard Worker
354*6236dae4SAndroid Build Coastguard Workerif [[ "$skip" != "true" ]]
355*6236dae4SAndroid Build Coastguard Workerthen
356*6236dae4SAndroid Build Coastguard Worker
357*6236dae4SAndroid Build Coastguard Worker# basic ECH good/bad
358*6236dae4SAndroid Build Coastguard Workerfor targ in "${!ech_targets[@]}"
359*6236dae4SAndroid Build Coastguard Workerdo
360*6236dae4SAndroid Build Coastguard Worker    if [[ "$using_wolf" == "yes" ]]
361*6236dae4SAndroid Build Coastguard Worker    then
362*6236dae4SAndroid Build Coastguard Worker        case $targ in
363*6236dae4SAndroid Build Coastguard Worker            "draft-13.esni.defo.ie:8414" | "tls-ech.dev" | \
364*6236dae4SAndroid Build Coastguard Worker            "crypto.cloudflare.com" | "epochbelt.com")
365*6236dae4SAndroid Build Coastguard Worker                echo "Skipping $targ 'cause wolf"; continue;;
366*6236dae4SAndroid Build Coastguard Worker            *)
367*6236dae4SAndroid Build Coastguard Worker                ;;
368*6236dae4SAndroid Build Coastguard Worker        esac
369*6236dae4SAndroid Build Coastguard Worker    fi
370*6236dae4SAndroid Build Coastguard Worker    host=$(hostport2host "$targ")
371*6236dae4SAndroid Build Coastguard Worker    port=$(hostport2port "$targ")
372*6236dae4SAndroid Build Coastguard Worker    if [[ "$port" != "443" && "$have_portsblocked" == "yes" ]]
373*6236dae4SAndroid Build Coastguard Worker    then
374*6236dae4SAndroid Build Coastguard Worker        echo "Skipping $targ as ports != 443 seem blocked"
375*6236dae4SAndroid Build Coastguard Worker        continue
376*6236dae4SAndroid Build Coastguard Worker    fi
377*6236dae4SAndroid Build Coastguard Worker    path=${ech_targets[$targ]}
378*6236dae4SAndroid Build Coastguard Worker    turl="https://$host:$port/$path"
379*6236dae4SAndroid Build Coastguard Worker    echo "ECH check for $turl"
380*6236dae4SAndroid Build Coastguard Worker    {
381*6236dae4SAndroid Build Coastguard Worker        echo ""
382*6236dae4SAndroid Build Coastguard Worker        echo "ECH check for $turl"
383*6236dae4SAndroid Build Coastguard Worker    } >> "$logfile"
384*6236dae4SAndroid Build Coastguard Worker    timeout "$tout" "$CURL" "${CURL_PARAMS[@]}" --ech hard "$turl" >> "$logfile" 2>&1
385*6236dae4SAndroid Build Coastguard Worker    eres=$?
386*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" == "124" ]]
387*6236dae4SAndroid Build Coastguard Worker    then
388*6236dae4SAndroid Build Coastguard Worker        allgood="no"
389*6236dae4SAndroid Build Coastguard Worker        {
390*6236dae4SAndroid Build Coastguard Worker            echo "Timeout for $turl"
391*6236dae4SAndroid Build Coastguard Worker            echo -e "\tTimeout for $turl"
392*6236dae4SAndroid Build Coastguard Worker            echo "Timeout running curl for $host:$port/$path"
393*6236dae4SAndroid Build Coastguard Worker        } >> "$logfile"
394*6236dae4SAndroid Build Coastguard Worker    fi
395*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" != "0" ]]
396*6236dae4SAndroid Build Coastguard Worker    then
397*6236dae4SAndroid Build Coastguard Worker        allgood="no"
398*6236dae4SAndroid Build Coastguard Worker        echo "Error ($eres) for $turl" >> "$logfile"
399*6236dae4SAndroid Build Coastguard Worker        echo -e "\tError ($eres) for $turl"
400*6236dae4SAndroid Build Coastguard Worker    fi
401*6236dae4SAndroid Build Coastguard Worker    echo "" >> "$logfile"
402*6236dae4SAndroid Build Coastguard Workerdone
403*6236dae4SAndroid Build Coastguard Worker
404*6236dae4SAndroid Build Coastguard Worker# check if public_name override works (OpenSSL only)
405*6236dae4SAndroid Build Coastguard Workerif [[ "$using_ossl" == "yes" ]]
406*6236dae4SAndroid Build Coastguard Workerthen
407*6236dae4SAndroid Build Coastguard Worker    for targ in "${!ech_targets[@]}"
408*6236dae4SAndroid Build Coastguard Worker    do
409*6236dae4SAndroid Build Coastguard Worker        host=$(hostport2host "$targ")
410*6236dae4SAndroid Build Coastguard Worker        port=$(hostport2port "$targ")
411*6236dae4SAndroid Build Coastguard Worker        if [[ "$port" != "443" && "$have_portsblocked" == "yes" ]]
412*6236dae4SAndroid Build Coastguard Worker        then
413*6236dae4SAndroid Build Coastguard Worker            echo "Skipping $targ as ports != 443 seem blocked"
414*6236dae4SAndroid Build Coastguard Worker            continue
415*6236dae4SAndroid Build Coastguard Worker        fi
416*6236dae4SAndroid Build Coastguard Worker        if [[ "$host" == "crypto.cloudflare.com" ]]
417*6236dae4SAndroid Build Coastguard Worker        then
418*6236dae4SAndroid Build Coastguard Worker            echo "Skipping $host as they've blocked PN override"
419*6236dae4SAndroid Build Coastguard Worker            continue
420*6236dae4SAndroid Build Coastguard Worker        fi
421*6236dae4SAndroid Build Coastguard Worker        path=${ech_targets[$targ]}
422*6236dae4SAndroid Build Coastguard Worker        turl="https://$host:$port/$path"
423*6236dae4SAndroid Build Coastguard Worker        echo "PN override check for $turl"
424*6236dae4SAndroid Build Coastguard Worker        {
425*6236dae4SAndroid Build Coastguard Worker            echo ""
426*6236dae4SAndroid Build Coastguard Worker            echo "PN override check for $turl"
427*6236dae4SAndroid Build Coastguard Worker        } >> "$logfile"
428*6236dae4SAndroid Build Coastguard Worker        timeout "$tout" "$CURL" "${CURL_PARAMS[@]}" --ech pn:override --ech hard "$turl" >> "$logfile" 2>&1
429*6236dae4SAndroid Build Coastguard Worker        eres=$?
430*6236dae4SAndroid Build Coastguard Worker        if [[ "$eres" == "124" ]]
431*6236dae4SAndroid Build Coastguard Worker        then
432*6236dae4SAndroid Build Coastguard Worker            allgood="no"
433*6236dae4SAndroid Build Coastguard Worker            {
434*6236dae4SAndroid Build Coastguard Worker                echo "Timeout for $turl"
435*6236dae4SAndroid Build Coastguard Worker                echo -e "\tTimeout for $turl"
436*6236dae4SAndroid Build Coastguard Worker                echo "Timeout running curl for $host:$port/$path"
437*6236dae4SAndroid Build Coastguard Worker            } >> "$logfile"
438*6236dae4SAndroid Build Coastguard Worker        fi
439*6236dae4SAndroid Build Coastguard Worker        if [[ "$eres" != "0" ]]
440*6236dae4SAndroid Build Coastguard Worker        then
441*6236dae4SAndroid Build Coastguard Worker            allgood="no"
442*6236dae4SAndroid Build Coastguard Worker            echo "PN override Error ($eres) for $turl" >> "$logfile"
443*6236dae4SAndroid Build Coastguard Worker            echo -e "\tPN override Error ($eres) for $turl"
444*6236dae4SAndroid Build Coastguard Worker        fi
445*6236dae4SAndroid Build Coastguard Worker        echo "" >> "$logfile"
446*6236dae4SAndroid Build Coastguard Worker    done
447*6236dae4SAndroid Build Coastguard Workerfi
448*6236dae4SAndroid Build Coastguard Worker
449*6236dae4SAndroid Build Coastguard Workerfor targ in "${!httpsrr_targets[@]}"
450*6236dae4SAndroid Build Coastguard Workerdo
451*6236dae4SAndroid Build Coastguard Worker    host=$(hostport2host "$targ")
452*6236dae4SAndroid Build Coastguard Worker    port=$(hostport2port "$targ")
453*6236dae4SAndroid Build Coastguard Worker    if [[ "$port" != "443" && "$have_portsblocked" == "yes" ]]
454*6236dae4SAndroid Build Coastguard Worker    then
455*6236dae4SAndroid Build Coastguard Worker        echo "Skipping $targ as ports != 443 seem blocked"
456*6236dae4SAndroid Build Coastguard Worker        continue
457*6236dae4SAndroid Build Coastguard Worker    fi
458*6236dae4SAndroid Build Coastguard Worker    path=${httpsrr_targets[$targ]}
459*6236dae4SAndroid Build Coastguard Worker    turl="https://$host:$port/$path"
460*6236dae4SAndroid Build Coastguard Worker    echo "HTTPS RR but no ECHConfig check for $turl"
461*6236dae4SAndroid Build Coastguard Worker    {
462*6236dae4SAndroid Build Coastguard Worker        echo ""
463*6236dae4SAndroid Build Coastguard Worker        echo "HTTPS RR but no ECHConfig check for $turl"
464*6236dae4SAndroid Build Coastguard Worker    } >> "$logfile"
465*6236dae4SAndroid Build Coastguard Worker    timeout "$tout" "$CURL" "${CURL_PARAMS[@]}" --ech true "$turl" >> "$logfile" 2>&1
466*6236dae4SAndroid Build Coastguard Worker    eres=$?
467*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" == "124" ]]
468*6236dae4SAndroid Build Coastguard Worker    then
469*6236dae4SAndroid Build Coastguard Worker        allgood="no"
470*6236dae4SAndroid Build Coastguard Worker        {
471*6236dae4SAndroid Build Coastguard Worker            echo "Timeout for $turl"
472*6236dae4SAndroid Build Coastguard Worker            echo -e "\tTimeout for $turl"
473*6236dae4SAndroid Build Coastguard Worker            echo "Timeout running curl for $host:$port/$path"
474*6236dae4SAndroid Build Coastguard Worker        } >> "$logfile"
475*6236dae4SAndroid Build Coastguard Worker    fi
476*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" != "0" ]]
477*6236dae4SAndroid Build Coastguard Worker    then
478*6236dae4SAndroid Build Coastguard Worker        allgood="no"
479*6236dae4SAndroid Build Coastguard Worker        echo "Error ($eres) for $turl" >> "$logfile"
480*6236dae4SAndroid Build Coastguard Worker        echo -e "\tError ($eres) for $turl"
481*6236dae4SAndroid Build Coastguard Worker    fi
482*6236dae4SAndroid Build Coastguard Worker    echo "" >> "$logfile"
483*6236dae4SAndroid Build Coastguard Workerdone
484*6236dae4SAndroid Build Coastguard Worker
485*6236dae4SAndroid Build Coastguard Workerfor targ in "${!neither_targets[@]}"
486*6236dae4SAndroid Build Coastguard Workerdo
487*6236dae4SAndroid Build Coastguard Worker    host=$(hostport2host "$targ")
488*6236dae4SAndroid Build Coastguard Worker    port=$(hostport2port "$targ")
489*6236dae4SAndroid Build Coastguard Worker    if [[ "$port" != "443" && "$have_portsblocked" == "yes" ]]
490*6236dae4SAndroid Build Coastguard Worker    then
491*6236dae4SAndroid Build Coastguard Worker        echo "Skipping $targ as ports != 443 seem blocked"
492*6236dae4SAndroid Build Coastguard Worker        continue
493*6236dae4SAndroid Build Coastguard Worker    fi
494*6236dae4SAndroid Build Coastguard Worker    path=${neither_targets[$targ]}
495*6236dae4SAndroid Build Coastguard Worker    turl="https://$host:$port/$path"
496*6236dae4SAndroid Build Coastguard Worker    echo "Neither HTTPS nor ECHConfig check for $turl"
497*6236dae4SAndroid Build Coastguard Worker    {
498*6236dae4SAndroid Build Coastguard Worker        echo ""
499*6236dae4SAndroid Build Coastguard Worker        echo "Neither HTTPS nor ECHConfig check for $turl"
500*6236dae4SAndroid Build Coastguard Worker    } >> "$logfile"
501*6236dae4SAndroid Build Coastguard Worker    timeout "$tout" "$CURL" "${CURL_PARAMS[@]}" --ech true "$turl" >> "$logfile" 2>&1
502*6236dae4SAndroid Build Coastguard Worker    eres=$?
503*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" == "124" ]]
504*6236dae4SAndroid Build Coastguard Worker    then
505*6236dae4SAndroid Build Coastguard Worker        allgood="no"
506*6236dae4SAndroid Build Coastguard Worker        {
507*6236dae4SAndroid Build Coastguard Worker            echo "Timeout for $turl"
508*6236dae4SAndroid Build Coastguard Worker            echo -e "\tTimeout for $turl"
509*6236dae4SAndroid Build Coastguard Worker            echo "Timeout running curl for $host:$port/$path"
510*6236dae4SAndroid Build Coastguard Worker        } >> "$logfile"
511*6236dae4SAndroid Build Coastguard Worker    fi
512*6236dae4SAndroid Build Coastguard Worker    if [[ "$eres" != "0" ]]
513*6236dae4SAndroid Build Coastguard Worker    then
514*6236dae4SAndroid Build Coastguard Worker        allgood="no"
515*6236dae4SAndroid Build Coastguard Worker        echo "Error ($eres) for $turl" >> "$logfile"
516*6236dae4SAndroid Build Coastguard Worker        echo -e "\tError ($eres) for $turl"
517*6236dae4SAndroid Build Coastguard Worker    fi
518*6236dae4SAndroid Build Coastguard Worker    echo "" >> "$logfile"
519*6236dae4SAndroid Build Coastguard Workerdone
520*6236dae4SAndroid Build Coastguard Worker
521*6236dae4SAndroid Build Coastguard Worker
522*6236dae4SAndroid Build Coastguard Worker# Check various command line options, if we're good so far
523*6236dae4SAndroid Build Coastguard Workerif [[ "$using_ossl" == "yes" && "$allgood" == "yes" ]]
524*6236dae4SAndroid Build Coastguard Workerthen
525*6236dae4SAndroid Build Coastguard Worker    # use this test URL as it'll tell us if things worked
526*6236dae4SAndroid Build Coastguard Worker    turl="https://defo.ie/ech-check.php"
527*6236dae4SAndroid Build Coastguard Worker    echo "cli_test with $turl"
528*6236dae4SAndroid Build Coastguard Worker    echo "cli_test with $turl" >> "$logfile"
529*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true
530*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false
531*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech true
532*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech true --ech pn:foobar
533*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:foobar --ech true
534*6236dae4SAndroid Build Coastguard Worker    echconfiglist=$(get_ech_configlist defo.ie)
535*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$echconfiglist"
536*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech ecl:
537*6236dae4SAndroid Build Coastguard Workerfi
538*6236dae4SAndroid Build Coastguard Worker
539*6236dae4SAndroid Build Coastguard Workerfi # skip
540*6236dae4SAndroid Build Coastguard Worker
541*6236dae4SAndroid Build Coastguard Worker# Check combinations of command line options, if we're good so far
542*6236dae4SAndroid Build Coastguard Worker# Most of this only works for OpenSSL, which is ok, as we're checking
543*6236dae4SAndroid Build Coastguard Worker# the argument handling here, not the ECH protocol
544*6236dae4SAndroid Build Coastguard Workerif [[ "$using_ossl" == "yes" && "$allgood" == "yes" ]]
545*6236dae4SAndroid Build Coastguard Workerthen
546*6236dae4SAndroid Build Coastguard Worker    # ech can be hard, true, grease or false
547*6236dae4SAndroid Build Coastguard Worker    # ecl:ecl can be correct, incorrect or missing
548*6236dae4SAndroid Build Coastguard Worker    # ech:pn can be correct, incorrect or missing
549*6236dae4SAndroid Build Coastguard Worker    # in all cases the "last" argument provided should "win"
550*6236dae4SAndroid Build Coastguard Worker    # but only one of hard, true, grease or false will apply
551*6236dae4SAndroid Build Coastguard Worker    turl="https://defo.ie/ech-check.php"
552*6236dae4SAndroid Build Coastguard Worker    echconfiglist=$(get_ech_configlist defo.ie)
553*6236dae4SAndroid Build Coastguard Worker    goodecl=$echconfiglist
554*6236dae4SAndroid Build Coastguard Worker    echconfiglist=$(get_ech_configlist hidden.hoba.ie)
555*6236dae4SAndroid Build Coastguard Worker    badecl=$echconfiglist
556*6236dae4SAndroid Build Coastguard Worker    goodpn="cover.defo.ie"
557*6236dae4SAndroid Build Coastguard Worker    badpn="hoba.ie"
558*6236dae4SAndroid Build Coastguard Worker    echo "more cli_test with $turl"
559*6236dae4SAndroid Build Coastguard Worker    echo "more cli_test with $turl" >> "$logfile"
560*6236dae4SAndroid Build Coastguard Worker
561*6236dae4SAndroid Build Coastguard Worker    # The combinatorics here are handled via the tests/ech_combos.py script
562*6236dae4SAndroid Build Coastguard Worker    # which produces all the relevant combinations or inputs and orders
563*6236dae4SAndroid Build Coastguard Worker    # thereof. We have to manually assess whether or not ECH is expected to
564*6236dae4SAndroid Build Coastguard Worker    # work for each case.
565*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0
566*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
567*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl"
568*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
569*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech ecl:"$goodecl"
570*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
571*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech ecl:"$goodecl" --ech pn:"$goodpn"
572*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
573*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard
574*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
575*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl"
576*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
577*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
578*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
579*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech pn:"$goodpn"
580*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
581*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech true
582*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
583*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl"
584*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
585*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
586*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
587*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech true --ech pn:"$goodpn"
588*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
589*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn"
590*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
591*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl"
592*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
593*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
594*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
595*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard
596*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
597*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
598*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
599*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
600*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
601*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
602*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
603*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true
604*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
605*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
606*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
607*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
608*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
609*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
610*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
611*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech pn:"$goodpn"
612*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
613*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true
614*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
615*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
616*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
617*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
618*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
619*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" - 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
620*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
621*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$goodpn"
622*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
623*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech true
624*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
625*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl"
626*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
627*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
628*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
629*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech true --ech pn:"$goodpn"
630*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
631*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$goodecl"
632*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
633*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$goodecl" --ech pn:"$goodpn"
634*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
635*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false
636*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
637*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl"
638*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
639*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech ecl:"$goodecl"
640*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
641*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech ecl:"$goodecl" --ech pn:"$goodpn"
642*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
643*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard
644*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
645*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl"
646*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
647*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
648*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
649*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech pn:"$goodpn"
650*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
651*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech true
652*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
653*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl"
654*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
655*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
656*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
657*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech true --ech pn:"$goodpn"
658*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
659*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn"
660*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
661*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl"
662*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
663*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
664*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
665*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard
666*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
667*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
668*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
669*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
670*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
671*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
672*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
673*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true
674*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
675*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
676*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
677*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
678*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
679*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
680*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
681*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech pn:"$goodpn"
682*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
683*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true
684*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
685*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
686*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
687*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
688*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
689*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
690*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
691*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$badecl" --ech pn:"$goodpn"
692*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
693*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech true
694*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
695*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl"
696*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
697*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
698*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
699*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech true --ech pn:"$goodpn"
700*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
701*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$goodecl"
702*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
703*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech ecl:"$goodecl" --ech pn:"$goodpn"
704*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
705*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard
706*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
707*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech ecl:"$goodecl"
708*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
709*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
710*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
711*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech pn:"$goodpn"
712*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
713*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech true
714*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
715*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech true --ech ecl:"$goodecl"
716*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
717*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
718*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
719*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech hard --ech true --ech pn:"$goodpn"
720*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
721*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech pn:"$badpn"
722*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
723*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech pn:"$badpn" --ech ecl:"$goodecl"
724*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
725*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
726*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
727*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard
728*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
729*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
730*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
731*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
732*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
733*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
734*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
735*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech true
736*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
737*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
738*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
739*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
740*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
741*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
742*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
743*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech pn:"$badpn" --ech pn:"$goodpn"
744*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
745*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech true
746*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
747*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
748*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
749*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
750*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
751*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
752*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
753*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech false --ech pn:"$goodpn"
754*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
755*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech true
756*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
757*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech true --ech ecl:"$goodecl"
758*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
759*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
760*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
761*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech false --ech true --ech pn:"$goodpn"
762*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
763*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard
764*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
765*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech ecl:"$goodecl"
766*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
767*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
768*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
769*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech pn:"$goodpn"
770*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
771*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech true
772*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
773*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech true --ech ecl:"$goodecl"
774*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
775*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
776*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
777*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech hard --ech true --ech pn:"$goodpn"
778*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
779*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech pn:"$badpn"
780*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
781*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech ecl:"$goodecl"
782*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
783*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
784*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
785*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard
786*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
787*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
788*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
789*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
790*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
791*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
792*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
793*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech true
794*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
795*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
796*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
797*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
798*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
799*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
800*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
801*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech pn:"$badpn" --ech pn:"$goodpn"
802*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
803*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech true
804*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
805*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
806*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
807*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
808*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
809*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
810*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
811*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech pn:"$goodpn"
812*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
813*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true
814*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
815*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true --ech ecl:"$goodecl"
816*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
817*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
818*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
819*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true --ech pn:"$goodpn"
820*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
821*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0
822*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
823*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$goodecl"
824*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
825*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech ecl:"$goodecl" --ech pn:"$goodpn"
826*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
827*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0 --ech pn:"$goodpn"
828*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
829*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true
830*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
831*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true --ech ecl:"$goodecl"
832*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
833*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
834*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
835*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 1 --ech true --ech pn:"$goodpn"
836*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
837*6236dae4SAndroid Build Coastguard Worker
838*6236dae4SAndroid Build Coastguard Worker    # a target URL that doesn't support ECH
839*6236dae4SAndroid Build Coastguard Worker    turl="https://tcd.ie"
840*6236dae4SAndroid Build Coastguard Worker    echo "cli_test with $turl"
841*6236dae4SAndroid Build Coastguard Worker    echo "cli_test with $turl" >> "$logfile"
842*6236dae4SAndroid Build Coastguard Worker    # the params below don't matter much here as we'll fail anyway
843*6236dae4SAndroid Build Coastguard Worker    echconfiglist=$(get_ech_configlist defo.ie)
844*6236dae4SAndroid Build Coastguard Worker    goodecl=$echconfiglist
845*6236dae4SAndroid Build Coastguard Worker    badecl="$goodecl"
846*6236dae4SAndroid Build Coastguard Worker    goodpn="tcd.ie"
847*6236dae4SAndroid Build Coastguard Worker    badpn="tcd.ie"
848*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 1 0
849*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
850*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl"
851*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
852*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech ecl:"$goodecl"
853*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
854*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech ecl:"$goodecl" --ech pn:"$goodpn"
855*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
856*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard
857*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
858*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl"
859*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
860*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
861*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
862*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech pn:"$goodpn"
863*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
864*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech true
865*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
866*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl"
867*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
868*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
869*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
870*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech hard --ech true --ech pn:"$goodpn"
871*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
872*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn"
873*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
874*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl"
875*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
876*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
877*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
878*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard
879*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
880*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
881*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
882*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
883*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
884*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
885*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
886*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true
887*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
888*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
889*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
890*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
891*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
892*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
893*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
894*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech pn:"$goodpn"
895*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
896*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true
897*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
898*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
899*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
900*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
901*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
902*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
903*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
904*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech pn:"$goodpn"
905*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
906*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech true
907*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
908*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl"
909*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
910*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
911*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
912*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$badecl" --ech true --ech pn:"$goodpn"
913*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
914*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$goodecl"
915*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
916*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$goodecl" --ech pn:"$goodpn"
917*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
918*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false
919*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
920*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl"
921*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
922*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech ecl:"$goodecl"
923*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
924*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech ecl:"$goodecl" --ech pn:"$goodpn"
925*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
926*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard
927*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
928*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl"
929*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
930*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
931*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
932*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech pn:"$goodpn"
933*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
934*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech true
935*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
936*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl"
937*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
938*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
939*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
940*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech hard --ech true --ech pn:"$goodpn"
941*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
942*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn"
943*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
944*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl"
945*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
946*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
947*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
948*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard
949*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
950*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
951*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
952*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
953*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
954*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
955*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
956*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true
957*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
958*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
959*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
960*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
961*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
962*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
963*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
964*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech pn:"$goodpn"
965*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
966*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true
967*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
968*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
969*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
970*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
971*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
972*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
973*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
974*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech pn:"$goodpn"
975*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
976*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech true
977*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
978*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl"
979*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
980*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
981*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
982*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$badecl" --ech true --ech pn:"$goodpn"
983*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
984*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$goodecl"
985*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
986*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech ecl:"$goodecl" --ech pn:"$goodpn"
987*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
988*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard
989*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
990*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech ecl:"$goodecl"
991*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
992*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
993*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
994*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech pn:"$goodpn"
995*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
996*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech true
997*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
998*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech true --ech ecl:"$goodecl"
999*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1000*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1001*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1002*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech hard --ech true --ech pn:"$goodpn"
1003*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1004*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn"
1005*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1006*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech ecl:"$goodecl"
1007*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1008*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
1009*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1010*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard
1011*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1012*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
1013*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1014*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
1015*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1016*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
1017*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1018*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech true
1019*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1020*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
1021*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1022*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1023*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1024*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
1025*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1026*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech pn:"$goodpn"
1027*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1028*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech true
1029*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1030*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
1031*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1032*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1033*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1034*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
1035*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1036*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech pn:"$goodpn"
1037*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1038*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech true
1039*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1040*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech true --ech ecl:"$goodecl"
1041*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1042*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1043*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1044*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech false --ech true --ech pn:"$goodpn"
1045*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1046*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard
1047*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1048*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech ecl:"$goodecl"
1049*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1050*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
1051*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1052*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech pn:"$goodpn"
1053*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1054*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech true
1055*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1056*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech true --ech ecl:"$goodecl"
1057*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1058*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1059*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1060*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech hard --ech true --ech pn:"$goodpn"
1061*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1062*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn"
1063*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1064*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech ecl:"$goodecl"
1065*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1066*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech ecl:"$goodecl" --ech pn:"$goodpn"
1067*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1068*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard
1069*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1070*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl"
1071*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1072*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech ecl:"$goodecl" --ech pn:"$goodpn"
1073*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1074*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech pn:"$goodpn"
1075*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1076*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech true
1077*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1078*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl"
1079*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1080*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1081*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1082*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech hard --ech true --ech pn:"$goodpn"
1083*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1084*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech pn:"$goodpn"
1085*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1086*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech true
1087*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1088*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech true --ech ecl:"$goodecl"
1089*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1090*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1091*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1092*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$badpn" --ech true --ech pn:"$goodpn"
1093*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1094*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$goodpn"
1095*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1096*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true
1097*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1098*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true --ech ecl:"$goodecl"
1099*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1100*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1101*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1102*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true --ech pn:"$goodpn"
1103*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1104*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0
1105*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1106*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$goodecl"
1107*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1108*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech ecl:"$goodecl" --ech pn:"$goodpn"
1109*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1110*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech pn:"$goodpn"
1111*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1112*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true
1113*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1114*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true --ech ecl:"$goodecl"
1115*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1116*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true --ech ecl:"$goodecl" --ech pn:"$goodpn"
1117*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1118*6236dae4SAndroid Build Coastguard Worker    cli_test "$turl" 0 0 --ech true --ech pn:"$goodpn"
1119*6236dae4SAndroid Build Coastguard Worker    if [[ "$allgood" != "yes" ]]; then echo "$LINENO"; fi
1120*6236dae4SAndroid Build Coastguard Workerfi
1121*6236dae4SAndroid Build Coastguard Worker
1122*6236dae4SAndroid Build Coastguard Worker
1123*6236dae4SAndroid Build Coastguard WorkerEND=$(whenisitagain)
1124*6236dae4SAndroid Build Coastguard Workerecho "Finished $0 at $END"  >> "$logfile"
1125*6236dae4SAndroid Build Coastguard Workerecho "-----" >> "$logfile"
1126*6236dae4SAndroid Build Coastguard Worker
1127*6236dae4SAndroid Build Coastguard Workerif [[ "$allgood" == "yes" ]]
1128*6236dae4SAndroid Build Coastguard Workerthen
1129*6236dae4SAndroid Build Coastguard Worker    echo "Finished $0 at $END"
1130*6236dae4SAndroid Build Coastguard Worker    echo "All good, log in $logfile"
1131*6236dae4SAndroid Build Coastguard Worker    exit 0
1132*6236dae4SAndroid Build Coastguard Workerelse
1133*6236dae4SAndroid Build Coastguard Worker    echo "Finished $0 at $END"
1134*6236dae4SAndroid Build Coastguard Worker    echo "NOT all good, log in $logfile"
1135*6236dae4SAndroid Build Coastguard Workerfi
1136*6236dae4SAndroid Build Coastguard Worker
1137*6236dae4SAndroid Build Coastguard Worker# send a mail to root (will be fwd'd) but just once every 24 hours
1138*6236dae4SAndroid Build Coastguard Worker# 'cause we only really need "new" news
1139*6236dae4SAndroid Build Coastguard Workeritsnews="yes"
1140*6236dae4SAndroid Build Coastguard Workerage_of_news=0
1141*6236dae4SAndroid Build Coastguard Workerif [ -f "$LTOP"/bad_runs ]
1142*6236dae4SAndroid Build Coastguard Workerthen
1143*6236dae4SAndroid Build Coastguard Worker    age_of_news=$(fileage "$LTOP"/bad_runs)
1144*6236dae4SAndroid Build Coastguard Worker    # only consider news "new" if we haven't mailed today
1145*6236dae4SAndroid Build Coastguard Worker    if ((age_of_news < 24*3600))
1146*6236dae4SAndroid Build Coastguard Worker    then
1147*6236dae4SAndroid Build Coastguard Worker        itsnews="no"
1148*6236dae4SAndroid Build Coastguard Worker    fi
1149*6236dae4SAndroid Build Coastguard Workerfi
1150*6236dae4SAndroid Build Coastguard Workerif [[ "$DOMAIL" == "yes" && "$itsnews" == "yes" ]]
1151*6236dae4SAndroid Build Coastguard Workerthen
1152*6236dae4SAndroid Build Coastguard Worker    echo "ECH badness at $NOW" | mail -s "ECH badness at $NOW" root
1153*6236dae4SAndroid Build Coastguard Workerfi
1154*6236dae4SAndroid Build Coastguard Worker# add to list of bad runs (updating file age)
1155*6236dae4SAndroid Build Coastguard Workerecho "ECH badness at $NOW" >>"$LTOP"/bad_runs
1156*6236dae4SAndroid Build Coastguard Workerexit 2
1157