From d7f0a5e36c0f3cf4bce1696102ea298af9c3b0c8 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Fri, 7 Jun 2019 15:25:15 +0200 Subject: [PATCH] change error handling for let's encrypt checks --- inc/webadmin-letsencrypt.php | 40 ++++++++++++++++++++++++++------ tpl/webadmin-letsencrypt.tpl.php | 32 +++++++------------------ 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/inc/webadmin-letsencrypt.php b/inc/webadmin-letsencrypt.php index a0ba620..2d78300 100644 --- a/inc/webadmin-letsencrypt.php +++ b/inc/webadmin-letsencrypt.php @@ -34,18 +34,44 @@ include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; if (isset($_POST['submit'])) { $letsencrypt = new letsencryt(); + $error_message = ''; - // check HTTP - $checked_domains = $letsencrypt->checkRemoteResourceAvailability($_SESSION['letsencrypt-domains']); - $failed_domains_http = array_diff($_SESSION['letsencrypt-domains'], $checked_domains); + while (true) { + // check domains list + if (empty($_SESSION['letsencrypt-domains'])) { + $error_message = "Erreur : la liste des domaines est vide."; + break; + } + + // check if evoacme is installed + $binaries_installed = $letsencrypt->isEvoacmeInstalled(); + if (!$binaries_installed) { + $error_message = "Erreur : les binaires Evoacme ne sont pas installés. + Veuillez contacter un administrateur."; + break; + } + + // check HTTP + $checked_domains = $letsencrypt->checkRemoteResourceAvailability($_SESSION['letsencrypt-domains']); + $failed_domains = array_diff($_SESSION['letsencrypt-domains'], $checked_domains); + if (!empty($failed_domains)) { + $error_message = "Erreur : Le challenge HTTP a échoué pour le(s) domaine(s) ci-dessous. + Merci de vérifier que le dossier /.well-known/ est accessible."; + break; + } - if (empty($failed_domains_http) && !empty($checked_domains)) { // check DNS $valid_domains = $letsencrypt->checkDNSValidity($checked_domains); - $failed_domains_dns = array_diff($checked_domains, $valid_domains); + $failed_domains = array_diff($checked_domains, $valid_domains); + if (!empty($failed_domains)) { + $error_message = "Erreur : La vérification DNS a échoué pour les domaines ci-dessous. + Merci de vérifier les enregistrements de type A et AAAA."; + break; + } + + break; } -} else { - // page de base } + include_once EVOADMIN_BASE . '../tpl/webadmin-letsencrypt.tpl.php'; include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; diff --git a/tpl/webadmin-letsencrypt.tpl.php b/tpl/webadmin-letsencrypt.tpl.php index 0b3bc43..39a833c 100644 --- a/tpl/webadmin-letsencrypt.tpl.php +++ b/tpl/webadmin-letsencrypt.tpl.php @@ -2,32 +2,18 @@ 0) { - echo '

Erreur HTTP

'; + if (!empty($error_message)) { + echo '' . $error_message . ''; - echo '

'; - echo 'Le challenge HTTP a échoué pour le(s) domaine(s) ci-dessous. - Merci de vérifier que le dossier /.well-known/acme-challenge/ est accessible.'; - echo '

'; - - echo '

'; - foreach ($failed_domains_http as $failed_domain) { - echo $failed_domain . "
"; - } - echo '

'; - } elseif (count($failed_domains_dns) > 0) { - echo '

Erreur DNS

'; - - echo '

'; - echo 'La vérification DNS a échoué pour les domaines ci-dessous. - Merci de vérifier les enregistrements de type A et AAAA.'; - echo '

'; - - foreach ($failed_domains_dns as $failed_domain) { - echo $failed_domain . "
"; + if (count($failed_domains) > 0) { + echo '

'; + foreach ($failed_domains as $failed_domain) { + echo $failed_domain . "
"; + } + echo '

'; } } else { - echo "all checks succeeded"; + echo 'checks succeeded.'; } } else { echo "

Les domaines suivants seront intégrés au certificat :

";