mirror of
https://github.com/cytopia/devilbox.git
synced 2025-03-22 03:55:21 +00:00
Harden linkcheck
This commit is contained in:
parent
56538c10d8
commit
88ab56c617
@ -1,19 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
setval() {
|
||||
printf -v "$1" "%s" "$(cat)";
|
||||
declare -p "$1";
|
||||
}
|
||||
|
||||
RETURN=0
|
||||
|
||||
for url in $(find _includes/ -name \*.rst -exec grep -Eo 'http(s)?://[-?:,._a/#-Z0-9]+' {} \; | sort -u ); do
|
||||
|
||||
header="$( curl -I "${url}" 2>/dev/null )"
|
||||
line="$( echo "${header}" | grep -E '^HTTP/(1|2)' )"
|
||||
stat="$( echo "${line}" | awk '{print $2}' )"
|
||||
# Try to curl multiple times in case host is currently not reachable
|
||||
max=60; i=0; fail=0
|
||||
eval "$( curl -SsI "${url}" 2> >(setval errval) > >(setval header); <<<"$?" setval retval; )"
|
||||
while [ "${retval}" != "0" ] ; do
|
||||
#while ! header="$( curl -I "${url}" 2>/dev/null )"; do
|
||||
i=$(( i + 1 ))
|
||||
sleep 2
|
||||
if [ "${i}" -gt "${max}" ]; then
|
||||
fail=1
|
||||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${stat}" != "200" ]; then
|
||||
printf "\e[0;31m[ERR]\e[0m %s %s\n" "${url}" "${line}"
|
||||
RETURN=1
|
||||
# Curl request failed
|
||||
if [ "${fail}" = "1" ]; then
|
||||
printf "\e[0;31m[FAIL]\e[0m %s %s\n" "${url}" "${errval}"
|
||||
|
||||
# Curl request succeeded
|
||||
else
|
||||
printf "\e[0;32m[OK]\e[0m %s\n" "${url}"
|
||||
line="$( echo "${header}" | grep -E '^HTTP/(1|2)' )"
|
||||
stat="$( echo "${line}" | awk '{print $2}' )"
|
||||
|
||||
if [ "${stat}" != "200" ]; then
|
||||
printf "\e[0;31m[ERR]\e[0m %s %s\n" "${url}" "${line}"
|
||||
RETURN=1
|
||||
else
|
||||
printf "\e[0;32m[OK]\e[0m %s\n" "${url}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user