From 839efa6fe90bd43f19c78b90427c9650e427a3cc Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Wed, 10 Jul 2019 16:57:34 +0200 Subject: [PATCH] generateSSLCertificate and setSSLPortVhost methods added --- inc/webadmin-letsencrypt.php | 53 ++++++++++++++++++++++++++++-------- lib/letsencrypt.php | 39 +++++++++++++++++++++++++- 2 files changed, 79 insertions(+), 13 deletions(-) diff --git a/inc/webadmin-letsencrypt.php b/inc/webadmin-letsencrypt.php index ff85b37..598eb01 100644 --- a/inc/webadmin-letsencrypt.php +++ b/inc/webadmin-letsencrypt.php @@ -106,24 +106,53 @@ if (isset($_POST['submit'])) { } // check DNS - $valid_domains = $letsencrypt->checkDNSValidity($checked_domains); - $failed_domains = array_diff($checked_domains, $valid_domains); + $valid_domains = $letsencrypt->checkDNSValidity($_SESSION['letsencrypt-domains']); + + $failed_domains = array_diff($_SESSION['letsencrypt-domains'], $valid_domains); if (!empty($failed_domains)) { - $errorMessage = "Erreur : La vérification DNS a échoué pour les domaines ci-dessous. - Merci de vérifier les enregistrements de type A et AAAA."; + $errorMessage = "Erreur : La vérification DNS a échoué.
+ Merci de vérifier les enregistrements de type A et AAAA pour les domaine(s) suivant(s) :"; + break; + } + + // make csr + $isCsrGenerated = $letsencrypt->makeCsr($params[1], $_SESSION['letsencrypt-domains']); + + if (!$isCsrGenerated) { + $errorMessage = "Erreur : La génération de demande de certificat a échoué.
+ Merci de contacter un administrateur pour continuer."; + break; + } + + // evoacme TEST + $testGenerateCert = $letsencrypt->generateSSLCertificate($params[1]); + + if (!$testGenerateCert) { + $errorMessage = "Erreur : La génération de certificat en mode TEST a échoué.
+ Merci de contacter un administrateur pour continuer."; + break; + } + + // evoacme + // $generateCert = $letsencrypt->generateSSLCertificate($params[1], false); + $generateCert = $letsencrypt->generateSSLCertificate($params[1]); + + if (!$generateCert) { + $errorMessage = "Erreur : La génération de certificat a échoué.
+ Merci de contacter un administrateur pour continuer."; + break; + } + + $updatedVhostConfig = $letsencrypt->setSSLPortVhost($params[1]); + + if (!$updatedVhostConfig) { + $errorMessage = "Erreur : La modification de la configuration de l'hôte virtuel a échoué.
+ Merci de contacter un administrateur pour continuer."; break; } break; } - - // make csr - $isCsrGenerated = $letsencrypt->makeCsr($params[1], $_SESSION['letsencrypt-domains']); - - // evoacme TEST ou DRY RUN - // evoacme - // modifier configuration vhosts - // reload service web } include_once EVOADMIN_BASE . '../tpl/webadmin-letsencrypt.tpl.php'; diff --git a/lib/letsencrypt.php b/lib/letsencrypt.php index 8040441..82e11b4 100644 --- a/lib/letsencrypt.php +++ b/lib/letsencrypt.php @@ -38,7 +38,44 @@ class LetsEncrypt $domains = implode(' ', $domains); $cmd = 'web-add.sh generate-csr ' . $vhost . ' ' . "$domains"; - sudoexec($cmd ,$data_output, $exec_return); + sudoexec($cmd, $data_output, $exec_return); + + if ($exec_return == 0) { + return true; + } + + return false; + } + + /** + * Generate a SSL certificate + * @param string $vhost + * @param boolean $test generate in TEST mode or not + * @return boolean + */ + public function generateSSLCertificate($vhost, $test = true) + { + $cmd = 'web-add.sh generate-ssl-certificate ' . $vhost . ' ' . ($test ? "true" : "false"); + + sudoexec($cmd, $data_output, $exec_return); + + if ($exec_return == 0) { + return true; + } + + return false; + } + + /** + * add the 443 port to the vhost configuration + * @param string $vhost + * @return boolean + */ + public function setSSLPortVhost($vhost) + { + $cmd = 'web-add.sh update-ssl-vhost-configuration ' . $vhost; + + sudoexec($cmd, $data_output, $exec_return); if ($exec_return == 0) { return true;