From ea50bd86139d259ce91f5a10668007b6deb252d6 Mon Sep 17 00:00:00 2001 From: Bruno21 Date: Sat, 2 Nov 2024 11:09:42 +0100 Subject: [PATCH] Anonymise validity.sh -put variables in $HOME/.env -put list of domains in an validity_domains.txt file --- README.md | 25 +++++++++++++++++++++++++ validity.sh | 52 +++++++++++++++++++++++++--------------------------- 2 files changed, 50 insertions(+), 27 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..9428cc6 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# certificate + +Bash scripts to check whether a site is available or not, and whether the certificate is valid or not. + + + +#### 1) urls_check.sh + +Usage: urls_check.sh + + + +#### 2) validity.sh + +Usage: ./validity.sh + +Check whether the certificate is valid or not. + +Required the validity_domains.txt file that contain a list of domains: + +```bash +domain1.com +domain2.fr +``` + diff --git a/validity.sh b/validity.sh index bfb86de..12b2c8c 100755 --- a/validity.sh +++ b/validity.sh @@ -3,7 +3,7 @@ # # Run: ./validity.sh -VERSION="v0.9" +VERSION="v1.0" red="\033[1;31m" greenbold="\033[1;32m" @@ -16,7 +16,6 @@ italic="\033[3m" underline="\033[4m" reset="\033[0m" -#echo | openssl s_client -servername maboiteverte.fr -connect maboiteverte.fr:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates #export PATH="/usr/local/bin:$PATH" # run by cron $PATH=/usr/bin:/bin @@ -30,31 +29,43 @@ if [ $? -eq 1 ]; then exit 1 fi -hosts=("maboiteverte.fr" "sur-le-sentier.fr" "photos-nas.ovh" "clicclac.info") -#hosts=("maboiteverte.fr") -port=443 -# Days left before notification -nday=15 -# Choose the notification -notif="pushover" - dotenv () { set -a # shellcheck disable=SC1091 [ -f "$HOME/.env" ] && . "$HOME/.env" || echo -e "${red}\nNo .env file found ! No token for gotify.${reset}" set +a + # + # Gotify: $GOTIFY_SERVER (server url), $GOTIFY_BASH (token) + # Pushover: $USER_KEY$ (user) $BASH_APP (token) } dotenv +### Variables for self updating +ScriptArgs=( "$@" ) +ScriptPath="$(readlink -f "$0")" # /Users/bruno/Documents/Scripts/bashbirds/bashbirds.sh +ScriptWorkDir="$(dirname "$ScriptPath")" # /Users/bruno/Documents/Scripts/bashbirds + +# Domains to check +#hosts=("domain.com") +if [ -f "$ScriptWorkDir/validity_domains.txt" ]; then + readarray -t hosts < "$ScriptWorkDir/validity_domains.txt" +else echo -e "${red}No domain to check !${reset}" +fi +port=443 +# Days left before notification +nday=15 +# Choose the notification (pushover or gotify) +notif="pushover" + send_gotify_notification() { # Enabled HSTS & created default WebSocket records in the DSM 7.2 reverse proxy window and it solved itself. now=$(date +"%d-%m-%Y %T") - gotify_server="https://gotify.maboiteverte.fr" + gotify_server="$GOTIFY_SERVER" gotify_token="$GOTIFY_BASH" TITLE="$1" - MESSAGE="**A new version of Pi-hole is available:**\n\n $msg_md\n\n $infos\n\n Please run *pihole -up* on $host to update !" + MESSAGE="$2" PRIORITY=8 URL="$gotify_server/message?token=$gotify_token&?format=markdown" @@ -84,7 +95,7 @@ send_pushover_notification() { for host in "${hosts[@]}"; do - if command -v showcertif >/dev/null 2>&1; then + if command -v showcert >/dev/null 2>&1; then cert=$(showcert $host) ip=$(echo "$cert" | grep IP | awk -F": " '{print $2}') @@ -94,14 +105,6 @@ for host in "${hosts[@]}"; do end=$(echo "$cert" | grep notAfter | awk -F": " '{print $2}') left=$(echo "$end" | awk -F" " '{split($3, arr, "[()]"); print arr[2]}') - # maboiteverte.fr - # IP: 212.227.191.167 - # Names: *.maboiteverte.fr maboiteverte.fr - # notBefore: 2024-01-08 00:00:00 (298 days old) - # notAfter: 2025-01-27 23:59:59 (87 days left) - # Issuer: C=US O=DigiCert Inc OU=www.digicert.com CN=Encryption Everywhere DV TLS CA - G2 - # Tags: [CHAIN-VERIFIED] - h="$host ($ip)" n="Names: $names" i="Issuer: $issuer" @@ -121,13 +124,8 @@ for host in "${hosts[@]}"; do timestamp_current=$(date +"%s") timestamp_end=$(date --date="$end" +"%s") left=$(($((timestamp_end - timestamp_current))/(60*60*24))) - end="$end ($left days left)" - + end="$end ($left days left)" ip=$(dig +short $host) - # issuer=C=US, O=DigiCert Inc, OU=www.digicert.com, CN=Encryption Everywhere DV TLS CA - G2 - # subject=CN=*.maboiteverte.fr - # notBefore=Jan 8 00:00:00 2024 GMT - # notAfter=Jan 27 23:59:59 2025 GMT h="$host ($ip)" n="Subject: $subject"