87 lines
1.7 KiB
Bash
87 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# Using `+e` so that all checks are run and we get a complete report (even if some checks failed).
|
|
set +e -u -o pipefail
|
|
|
|
|
|
# Variables
|
|
exitCode=0
|
|
|
|
|
|
# Helpers
|
|
function checkCert {
|
|
local certPath=$1
|
|
|
|
if [[ ! -f "$certPath" ]]; then
|
|
echo "Certificate '$certPath' does not exist. Skipping expiration check..."
|
|
return
|
|
fi
|
|
|
|
openssl x509 -checkend 0 -in "$certPath" -noout > /dev/null
|
|
reportStatus "Certificate '$certPath'"
|
|
|
|
if [[ $? -ne 0 ]]; then
|
|
echo " [WARN]"
|
|
echo " If you did not provide the certificate explicitly, try running the"
|
|
echo " 'docker build' command again with the '--no-cache' option to generate"
|
|
echo " a new self-signed certificate."
|
|
fi
|
|
}
|
|
|
|
function reportStatus {
|
|
local lastExitCode=$?
|
|
|
|
echo "$1: $([[ $lastExitCode -eq 0 ]] && echo OK || echo NOT OK)"
|
|
[[ $lastExitCode -eq 0 ]] || exitCode=1
|
|
|
|
return $lastExitCode
|
|
}
|
|
|
|
|
|
# Check services
|
|
services=(
|
|
rsyslog
|
|
cron
|
|
nginx
|
|
pm2-root
|
|
)
|
|
for s in ${services[@]}; do
|
|
service $s status > /dev/null
|
|
reportStatus "Service '$s'"
|
|
done
|
|
|
|
|
|
# Check SSL/TLS certificates expiration
|
|
certs=(
|
|
"$AIO_LOCALCERTS_DIR/$AIO_DOMAIN_NAME.crt"
|
|
"$TEST_AIO_LOCALCERTS_DIR/$TEST_AIO_DOMAIN_NAME.crt"
|
|
)
|
|
for c in ${certs[@]}; do
|
|
checkCert $c
|
|
done
|
|
|
|
|
|
# Check servers
|
|
origins=(
|
|
http://$AIO_PREVIEW_SERVER_HOSTNAME:$AIO_PREVIEW_SERVER_PORT
|
|
http://$AIO_NGINX_HOSTNAME:$AIO_NGINX_PORT_HTTP
|
|
https://$AIO_NGINX_HOSTNAME:$AIO_NGINX_PORT_HTTPS
|
|
)
|
|
for o in ${origins[@]}; do
|
|
curl --fail --silent $o/health-check > /dev/null
|
|
reportStatus "Server '$o'"
|
|
done
|
|
|
|
|
|
# Check resolution of external URLs
|
|
origins=(
|
|
https://google.com
|
|
)
|
|
for o in ${origins[@]}; do
|
|
curl --fail --silent $o > /dev/null
|
|
reportStatus "External URL '$o'"
|
|
done
|
|
|
|
|
|
# Exit
|
|
exit $exitCode
|