From d73d8da2fddd8c25922d8f31b7f5e36c585e0b5c Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Thu, 28 May 2020 20:08:49 +0200 Subject: [PATCH] read certificate data folder from acme.sh.env file, fixes #846 Signed-off-by: Michael Kaufmann --- lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php | 26 ++++++++++++++++++-- lib/Froxlor/Domain/Domain.php | 4 +-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php b/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php index 4767732d..677d1cbe 100644 --- a/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php +++ b/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php @@ -6,6 +6,7 @@ use Froxlor\Settings; use Froxlor\Database\Database; use Froxlor\PhpHelper; use Froxlor\Domain\Domain; +use Froxlor\FileDir; /** * This file is part of the Froxlor project. @@ -490,7 +491,7 @@ class AcmeSh extends \Froxlor\Cron\FroxlorCron private static function checkFsFilesAreNewer($domain, $cert_date = 0) { - $certificate_folder = dirname(self::$acmesh) . "/" . $domain; + $certificate_folder = self::getWorkingDirFromEnv($domain); if (Settings::Get('system.leecc') > 0) { $certificate_folder .= "_ecc"; } @@ -506,6 +507,27 @@ class AcmeSh extends \Froxlor\Cron\FroxlorCron return false; } + public static function getWorkingDirFromEnv($domain = "") + { + $env_file = FileDir::makeCorrectFile(dirname(self::$acmesh) . '/acme.sh.env'); + if (file_exists($env_file)) { + $output = []; + $cut = << 0) { $certificate_folder_noecc = \Froxlor\FileDir::makeCorrectDir($certificate_folder); diff --git a/lib/Froxlor/Domain/Domain.php b/lib/Froxlor/Domain/Domain.php index 8072019b..675b897f 100644 --- a/lib/Froxlor/Domain/Domain.php +++ b/lib/Froxlor/Domain/Domain.php @@ -329,9 +329,9 @@ class Domain public static function doLetsEncryptCleanUp($domainname = null) { // @ see \Froxlor\Cron\Http\LetsEncrypt\AcmeSh.php - $acmesh = "/root/.acme.sh/acme.sh"; + $acmesh = \Froxlor\Cron\Http\LetsEncrypt\AcmeSh::getAcmeSh(); if (file_exists($acmesh)) { - $certificate_folder = dirname($acmesh) . "/" . $domainname; + $certificate_folder = \Froxlor\Cron\Http\LetsEncrypt\AcmeSh::getWorkingDirFromEnv($domainname); if (\Froxlor\Settings::Get('system.leecc') > 0) { $certificate_folder .= "_ecc"; }