diff --git a/check-domains-url.sh b/check-domains-url.sh index 1cac162..a54c0b6 100755 --- a/check-domains-url.sh +++ b/check-domains-url.sh @@ -21,23 +21,23 @@ results=$(sqlite3 "$database" "$query") update_next_check() { - local id="$1" + local id="$1" - # Récupérer la valeur d'intervalle à partir de la base de données SQLite - interval=$(sqlite3 "$database" "SELECT interval FROM url_check WHERE id = $id;") + # Récupérer la valeur d'intervalle à partir de la base de données SQLite + interval=$(sqlite3 "$database" "SELECT interval FROM url_check WHERE id = $id;") - # Obtenir le timestamp (nombre de secondes depuis l'époque UNIX) pour la date actuelle - current_timestamp=$(date +"%s") + # Obtenir le timestamp (nombre de secondes depuis l'époque UNIX) pour la date actuelle + current_timestamp=$(date +"%s") - # Calculer le nouveau timestamp en ajoutant l'intervalle (en secondes) à la date actuelle - new_timestamp=$((current_timestamp + interval)) + # Calculer le nouveau timestamp en ajoutant l'intervalle (en secondes) à la date actuelle + new_timestamp=$((current_timestamp + interval)) - # Convertir le nouveau timestamp en format de date "YYYY-MM-DD HH:MM:SS" - next_check=$(date -d "@$new_timestamp" +"%Y-%m-%d %H:%M:%S") + # Convertir le nouveau timestamp en format de date "YYYY-MM-DD HH:MM:SS" + next_check=$(date -d "@$new_timestamp" +"%Y-%m-%d %H:%M:%S") - # Mettre à jour la table url_check avec la nouvelle valeur de next_check pour l'ID spécifique - echo " ✨ Mise à jour du next check à $next_check" - sqlite3 "$database" "UPDATE url_check SET next_check = '$next_check' WHERE id = $id;" + # Mettre à jour la table url_check avec la nouvelle valeur de next_check pour l'ID spécifique + echo " ✨ Mise à jour du next check à $next_check" + sqlite3 "$database" "UPDATE url_check SET next_check = '$next_check' WHERE id = $id;" } @@ -45,87 +45,87 @@ update_next_check() { check_status_200() { - local id="$1" - query="SELECT url FROM url_check WHERE id=$id;" + local id="$1" + query="SELECT url FROM url_check WHERE id=$id;" - # Exécution de la commande SQLite et récupération du résultat dans la variable "result" - results=$(sqlite3 "$database" "$query") + # Exécution de la commande SQLite et récupération du résultat dans la variable "result" + results=$(sqlite3 "$database" "$query") - # Vérifier si le résultat n'est pas vide - if [ -n "$results" ]; then - # Parcourir les résultats ligne par ligne et afficher chaque enregistrement - while IFS='|' read -r url; do + # Vérifier si le résultat n'est pas vide + if [ -n "$results" ]; then + # Parcourir les résultats ligne par ligne et afficher chaque enregistrement + while IFS='|' read -r url; do - # Effectuer la requête HTTP GET avec curl et stocker le résultat dans une variable - response=$(timeout 1 curl -A "$userAgent" -s -o /dev/null -w "%{http_code}" "$url") - echo " 🎯 Reponse http : $response" + # Effectuer la requête HTTP GET avec curl et stocker le résultat dans une variable + response=$(timeout 1 curl -A "$userAgent" -s -o /dev/null -w "%{http_code}" "$url") + echo " 🎯 Reponse http : $response" - # Vérifier si le code de statut existe déjà dans la table log_check_url - query="SELECT COUNT(*) FROM log_check_url WHERE id_url = $id AND value = $response AND label='http_code'" - query+=" AND datetime = (SELECT MAX(datetime) FROM log_check_url WHERE id_url = $id AND label='http_code');" - exists=$(sqlite3 "$database" "$query") - if [ -n "$exists" ] && [ "$exists" -eq 0 ]; then - echo " ✨ C'est un nouveau status, je l'inscris dans les logs" - echo " Status $response pour l'url $url" | mail -s " ✨ Nouveau status pour le site $url" "$email" - # Insérer le nouveau statut avec le timestamp actuel dans la table log_check_url - current_timestamp=$(date +"%Y-%m-%d %H:%M:%S") - sqlite3 "$database" "INSERT INTO log_check_url (id_url, label, value, datetime) VALUES ($id, 'http_code', $response, '$current_timestamp');" - fi + # Vérifier si le code de statut existe déjà dans la table log_check_url + query="SELECT COUNT(*) FROM log_check_url WHERE id_url = $id AND value = $response AND label='http_code'" + query+=" AND datetime = (SELECT MAX(datetime) FROM log_check_url WHERE id_url = $id AND label='http_code');" + exists=$(sqlite3 "$database" "$query") + if [ -n "$exists" ] && [ "$exists" -eq 0 ]; then + echo " ✨ C'est un nouveau status, je l'inscris dans les logs" + echo " Status $response pour l'url $url" | mail -s " ✨ Nouveau status pour le site $url" "$email" + # Insérer le nouveau statut avec le timestamp actuel dans la table log_check_url + current_timestamp=$(date +"%Y-%m-%d %H:%M:%S") + sqlite3 "$database" "INSERT INTO log_check_url (id_url, label, value, datetime) VALUES ($id, 'http_code', $response, '$current_timestamp');" + fi - done <<< "$results" - else - echo " 🚫 Aucun résultat trouvé." - fi + done <<< "$results" + else + echo " 🚫 Aucun résultat trouvé." + fi } check_content(){ - local id="$1" - query="SELECT url FROM url_check WHERE id=$id;" + local id="$1" + query="SELECT url FROM url_check WHERE id=$id;" - # Exécution de la commande SQLite et récupération du résultat dans la variable "results" - results=$(sqlite3 "$database" "$query") + # Exécution de la commande SQLite et récupération du résultat dans la variable "results" + results=$(sqlite3 "$database" "$query") - # Vérifier si le résultat n'est pas vide - if [ -n "$results" ]; then - # Parcourir les résultats ligne par ligne et afficher chaque enregistrement - while IFS='|' read -r url; do - # Traitement avec 'string_check' - query="SELECT string_check FROM url_check WHERE id=$id;" - # Exécution de la commande SQLite et récupération du résultat dans la variable "string_check_result" - string_check_result=$(sqlite3 "$database" "$query") + # Vérifier si le résultat n'est pas vide + if [ -n "$results" ]; then + # Parcourir les résultats ligne par ligne et afficher chaque enregistrement + while IFS='|' read -r url; do + # Traitement avec 'string_check' + query="SELECT string_check FROM url_check WHERE id=$id;" + # Exécution de la commande SQLite et récupération du résultat dans la variable "string_check_result" + string_check_result=$(sqlite3 "$database" "$query") - # Vérifier si string_check_result n'est pas vide - if [ -n "$string_check_result" ]; then - # Récupérer le contenu HTML - response=$(curl -A "$userAgent" -s -L "$url" | bash -c "$string_check_result") + # Vérifier si string_check_result n'est pas vide + if [ -n "$string_check_result" ]; then + # Récupérer le contenu HTML + response=$(curl -A "$userAgent" -s -L "$url" | bash -c "$string_check_result") - # Si la variable n'est pas vide, attribuer la valeur à la variable "response" - response_sha1=$(echo -n ${response} | sha1sum | awk '{print $1}') + # Si la variable n'est pas vide, attribuer la valeur à la variable "response" + response_sha1=$(echo -n ${response} | sha1sum | awk '{print $1}') - # Vérifier si le code de statut existe déjà dans la table log_check_url - echo "Vérification du contenu..." - query="SELECT COUNT(*) FROM log_check_url WHERE id_url = $id AND value = '$response_sha1' AND label='html_content_sha1'" - query+=" AND datetime = (SELECT MAX(datetime) FROM log_check_url WHERE id_url = $id AND label='html_content_sha1');" - exists=$(sqlite3 "$database" "$query") - if [ "$exists" -eq 0 ]; then - echo " ✨ C'est du nouveau contenu, je l'inscris dans les logs" - echo -e " Nouveau contenu pour l'url $url\n\n\n ${response:0:1024}" | mail -s " ✨ Nouveau contenu pour le site ${url:0:64}" "$email" - # Insérer le nouveau statut avec le timestamp actuel dans la table log_check_url - current_timestamp=$(date +"%Y-%m-%d %H:%M:%S") - response64=$(echo -n ${response} | base64) - sqlite3 "$database" "INSERT INTO log_check_url (id_url, label, value, datetime) VALUES ($id, 'html_content_sha1', '$response_sha1', '$current_timestamp');" - sqlite3 "$database" "INSERT INTO log_check_url (id_url, label, value, datetime) VALUES ($id, 'html_content', '${response64}', '$current_timestamp');" - echo " ...le nouveau contenu est dans la base." - else - echo " ...rien n'a changé." - fi - fi - done <<< "$results" - else - echo " 🚫 Aucun résultat trouvé." - fi + # Vérifier si le code de statut existe déjà dans la table log_check_url + echo "Vérification du contenu..." + query="SELECT COUNT(*) FROM log_check_url WHERE id_url = $id AND value = '$response_sha1' AND label='html_content_sha1'" + query+=" AND datetime = (SELECT MAX(datetime) FROM log_check_url WHERE id_url = $id AND label='html_content_sha1');" + exists=$(sqlite3 "$database" "$query") + if [ "$exists" -eq 0 ]; then + echo " ✨ C'est du nouveau contenu, je l'inscris dans les logs" + echo -e " Nouveau contenu pour l'url $url\n\n\n ${response:0:1024}" | mail -s " ✨ Nouveau contenu pour le site ${url:0:64}" "$email" + # Insérer le nouveau statut avec le timestamp actuel dans la table log_check_url + current_timestamp=$(date +"%Y-%m-%d %H:%M:%S") + response64=$(echo -n ${response} | base64) + sqlite3 "$database" "INSERT INTO log_check_url (id_url, label, value, datetime) VALUES ($id, 'html_content_sha1', '$response_sha1', '$current_timestamp');" + sqlite3 "$database" "INSERT INTO log_check_url (id_url, label, value, datetime) VALUES ($id, 'html_content', '${response64}', '$current_timestamp');" + echo " ...le nouveau contenu est dans la base." + else + echo " ...rien n'a changé." + fi + fi + done <<< "$results" + else + echo " 🚫 Aucun résultat trouvé." + fi } @@ -133,27 +133,26 @@ check_content(){ # Fonction pour tester le domaine avec le port spécifié check_domain_url() { - local id="$1" + local id="$1" - # Vérifier que 'next_check' soit inférieur ou égal à l'heure actuel sinon arrêter - # ou si next_check est null alors bifurquer sur initCheck + # Vérifier que 'next_check' soit inférieur ou égal à l'heure actuel sinon arrêter + # ou si next_check est null alors bifurquer sur initCheck - # Vérifier le statut 200. - check_status_200 "$id" + # Vérifier le statut 200. + check_status_200 "$id" } # Vérifier si le résultat n'est pas vide if [ -n "$results" ]; then - # Parcourir les résultats ligne par ligne et afficher chaque enregistrement - while IFS='|' read -r id url; do - echo -e "\n\n -- $id - URL testée : $url" - check_domain_url "$id" - update_next_check "$id" - check_content "$id" - done <<< "$results" + # Parcourir les résultats ligne par ligne et afficher chaque enregistrement + while IFS='|' read -r id url; do + echo -e "\n\n -- $id - URL testée : $url" + check_domain_url "$id" + update_next_check "$id" + check_content "$id" + done <<< "$results" else - echo "Aucun résultat trouvé." + echo "Aucun résultat trouvé." fi -