diff --git a/slapos/recipe/check_url_available/__init__.py b/slapos/recipe/check_url_available/__init__.py index b49de2ac4a64d1278fb5ef5b87b7d9d54069ca57..bcf7c1c59e75ed2dacb25790f24aa377d4e50668 100644 --- a/slapos/recipe/check_url_available/__init__.py +++ b/slapos/recipe/check_url_available/__init__.py @@ -39,6 +39,9 @@ class Recipe(GenericBaseRecipe): 'curl_path': self.options['curl_path'], 'check_secure': self.options.get('check-secure', 0), 'http_code': self.options.get('http_code', '200'), + 'ca-cert-file': self.options.get('ca-cert-file', ''), + 'cert-file': self.options.get('cert-file', ''), + 'key-file': self.options.get('key-file', ''), } # XXX-Cedric in this script, curl won't check certificate diff --git a/slapos/recipe/check_url_available/template/check_url.in b/slapos/recipe/check_url_available/template/check_url.in index 16518541138b8899c303455e3fead1b5bcdd80e7..b4dbf0c2d684c27f6f20736df46e2868104cac5d 100644 --- a/slapos/recipe/check_url_available/template/check_url.in +++ b/slapos/recipe/check_url_available/template/check_url.in @@ -3,13 +3,31 @@ # BEWARE: It will be overwritten automatically URL="%(url)s" +F_TIMEOUT="%(time_out)s" +TIMEOUT=20 +CA_CERT="%(ca-cert-file)s" +CERT="%(cert-file)s" +KEY="%(key-file)s" if [ -z "$URL" ]; then echo "No URL specified." >&2 exit 3 fi -CODE=$(%(curl_path)s -g -k -sL $URL -w %%{http_code} --max-time 10 -o /dev/null) +if [ -s "$F_TIMEOUT" ]; then + TIMEOUT=$(cat $F_TIMEOUT) + result=$(echo $TIMEOUT | grep -E ^[0-9]+$) + if [ -z $result ]; then + # Not an integer + TIMEOUT=20 + fi +fi + +if [ -z "$CA_CERT" ] || [ -z "$CERT" ] || [ -z "$KEY" ]; then + CODE=$(%(curl_path)s -g -k -sL $URL -w %%{http_code} --max-time $TIMEOUT -o /dev/null) +else + CODE=$(%(curl_path)s -g -k -sL $URL -w %%{http_code} --max-time $TIMEOUT -o /dev/null --cacert $CA_CERT --cert $CERT --key $KEY) +fi if [ $? -eq 3 ]; then echo "URL malformed: $URL." >&2