Add test condition when there are no errors

Also log unjoinable instances
This commit is contained in:
Benoit S 2022-04-21 22:15:32 +09:00
parent 90f231e59f
commit d5c632e74f

View file

@ -40,52 +40,68 @@ accounts_cull() {
# Remove instances that have an expired certificate from more than # Remove instances that have an expired certificate from more than
# TLS_EXPIRED_MAX_SEC # TLS_EXPIRED_MAX_SEC
grep 'certificate has expired' "$CULL_LOG" \ if grep -q 'certificate has expired' "$CULL_LOG"; then
| awk '{print $NF}' \ grep 'certificate has expired' "$CULL_LOG" \
| cut -d'/' -f3 \ | awk '{print $NF}' \
| sort -u \ | cut -d'/' -f3 \
> "$TLS_EXPIRED_LOG" | sort -u \
> "$TLS_EXPIRED_LOG"
while read -r instance; do while read -r instance; do
TLS_EXPIRED_TS=$( TLS_EXPIRED_TS=$(
date -d "$( date -d "$(
echo Q \ echo Q \
| openssl s_client \ | openssl s_client \
-servername "$instance" \ -servername "$instance" \
-connect "${instance}":443 \ -connect "${instance}":443 \
2>/dev/null \ 2>/dev/null \
| openssl x509 -noout -dates \ | openssl x509 -noout -dates \
| grep 'notAfter' \ | grep 'notAfter' \
| cut -d'=' -f2 | cut -d'=' -f2
)" +%s )" +%s
) )
DATE_DIFF=$(($(date +%s) - TLS_EXPIRED_TS)) DATE_DIFF=$(($(date +%s) - TLS_EXPIRED_TS))
if [[ $DATE_DIFF -gt $TLS_EXPIRED_MAX_SEC ]]; then if [[ $DATE_DIFF -gt $TLS_EXPIRED_MAX_SEC ]]; then
echo "${instance} has a certificate expired for more than TLS_EXPIRED_MAX_SEC, purging..." echo "${instance} has a certificate expired for more than TLS_EXPIRED_MAX_SEC, purging..."
$DRY_RUN \ $DRY_RUN \
&& $TOOTCTL domains purge \ && $TOOTCTL domains purge \
--concurrency "$DB_POOL" \ --concurrency "$DB_POOL" \
--dry-run \ --dry-run \
"$instance" "$instance"
$DRY_RUN \ $DRY_RUN \
|| $TOOTCTL domains purge \ || $TOOTCTL domains purge \
--concurrency "$DB_POOL" \ --concurrency "$DB_POOL" \
"$instance" "$instance"
fi fi
done < "$TLS_EXPIRED_LOG" done < "$TLS_EXPIRED_LOG"
fi
# Log other instances errors, then if they were already in the log, purge # Log other instances errors, then if they were already in the log, purge them
# them if grep -q 'https' "$CULL_LOG"; then
grep \ grep \
-e 'certificate verify failed' \ -e 'certificate verify failed' \
-e 'timed out' \ -e 'timed out' \
-e 'sslv3 alert handshake failure' \ -e 'sslv3 alert handshake failure' \
-e 'TooManyRedirectsError' \ -e 'TooManyRedirectsError' \
"$CULL_LOG" \ -e 'EndlessRedirectError' \
| awk '{print $NF}' \ -e 'HostValidationError' \
| cut -d'/' -f3 \ "$CULL_LOG" \
| sort -u \ | awk '{print $NF}' \
> "$OTHER_ERRORS_LOG" | cut -d'/' -f3 \
| sort -u \
> "$OTHER_ERRORS_LOG"
fi
# Log unjoinable instances, then if they were already in the log, purge them
if grep -q 'not available during the check:' "$CULL_LOG"; then
grep \
-A 9999 \
'not available during the check:' \
"$CULL_LOG" \
| tail -n +2 \
| sed -E 's/\s+//' \
> "$OTHER_ERRORS_LOG"
fi
test -f $PREV_ERRORS_LOG || touch $PREV_ERRORS_LOG test -f $PREV_ERRORS_LOG || touch $PREV_ERRORS_LOG
while read -r instance; do while read -r instance; do