#!/bin/bash
# -*- coding: utf-8 -*-
email="support@anfci.fr"

cd ~/public_html/Sites
dossiers=$(find . -maxdepth 1 -mindepth 1 -type d)

# VERIFIER QUE LE SITE NE RENVOI PAS UNE PAGE BLANCHE
for dossier in $dossiers; do
    nom_domaine=$(basename "$dossier")
    for i in {1..3}; do
        css_response_code=$(curl -s -o /dev/null -w "%{http_code}" -m 30 -L "https://$nom_domaine/wp-content/themes/Divi%20Child/style.css")
        if [ "$css_response_code" == "200" ]; then
            break
        fi
        sleep 5
    done
    if [ "$css_response_code" != "200" ]; then
        if [ "$css_response_code" != "500" ]; then
            echo "La feuille de style du site $nom_domaine est inaccessible" | mail -s "Feuille de style inaccessible - $nom_domaine" "$email"
        fi
    fi
done

# VERIFIER LA PRESENCE DU THEME
for dossier in $dossiers; do
    nom_domaine=$(basename "$dossier")
    if [ ! -d "$dossier/wp-content/themes/Divi" ]; then
        echo "Le theme est manquant ou n'est pas au bon endroit sur le site $nom_domaine" | mail -s "Theme manquant - $nom_domaine" "$email"
    fi
done

# VERIFICATION D'ERREUR 500
for dossier in $dossiers; do
    nom_domaine=$(basename "$dossier")
    response_code=$(curl -s -o /dev/null -w "%{http_code}" -L "http://$nom_domaine")
    if [[ "$response_code" != "200" && "$response_code" != "301" && "$response_code" != "302" && "$response_code" != "401" && "$response_code" != "404" ]]; then
        wp_content=$(curl -s -L "http://$nom_domaine")
        if ! grep -qE "Erreur d’établissement d’une connexion à la base de données|Error establishing a database connection" <<< "$wp_content"; then
            echo "Le site $nom_domaine est inaccessible (code de reponse : $response_code)" | mail -s "Erreur 500 - $nom_domaine" "$email"
        fi
    fi
done

# VERIFICATION D'ERREUR CRITIQUE
for dossier in $dossiers; do
    nom_domaine=$(basename "$dossier")
    wp_content=$(curl -s -L "http://$nom_domaine")
    if grep -qE "There has been a critical error on this site|Il y a eu une erreur critique sur ce site" <<< "$wp_content"; then
        echo "Le site $nom_domaine presente une erreur critique" | mail -s "Erreur critique - $nom_domaine" "$email"
    fi
done

# VERIFIER LA LIAISON AVEC LA BDD
for dossier in $dossiers; do
    nom_domaine=$(basename "$dossier")
    wp_content=$(curl -s -L "http://$nom_domaine")
    if grep -qE "Erreur d’établissement d’une connexion à la base de données|Error establishing a database connection|Erreur de connexion à la base de données" <<< "$wp_content"; then
        echo "Le site $nom_domaine presente une erreur de liaison avec la base de donnees" | mail -s "Erreur de BDD - $nom_domaine" "$email"
    fi
done

# VERIFICATION DU CERTIFICAT SSL
for dossier in $dossiers; do
    nom_domaine=$(basename "$dossier")
    echo | openssl s_client -servername "$nom_domaine" -connect "$nom_domaine":443 2>&1 | openssl x509 -noout -checkend 86400 > /dev/null
    if [ $? != 0 ]; then
        echo "Le certificat SSL du site $nom_domaine non valide" | mail -s "Erreur SSL - $nom_domaine" "$email"
    fi
done