From 6a7451de83113b335bfaa51907272ff8095795ce Mon Sep 17 00:00:00 2001 From: laci Date: Wed, 7 May 2025 11:09:37 +0000 Subject: [PATCH] letsencrypt request --- Dockerfile | 13 ++++--------- common.js | 22 ++++++++++++++++++++++ functions.php | 15 +++++++++++++-- manage2.html | 2 +- scan.php | 34 +++++++++++++++++++++++++--------- 5 files changed, 65 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index c3c9ce7..49d4838 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,15 +71,10 @@ RUN apk --no-cache add php${PHP_VERSION} \ COPY nginx.conf /etc/nginx/nginx.conf RUN mkdir -p /usr/share/nginx/html -COPY index.html /usr/share/nginx/html -COPY scan.html /usr/share/nginx/html -COPY manage.html /usr/share/nginx/html -COPY scan.php /usr/share/nginx/html -COPY letsencrypt_log.php /usr/share/nginx/html -COPY functions.php /usr/share/nginx/html -COPY install.html /usr/share/nginx/html -COPY install.php /usr/share/nginx/html -COPY installer.css /usr/share/nginx/html +COPY *.html /usr/share/nginx/html +COPY *.php /usr/share/nginx/html +COPY *.css /usr/share/nginx/html +COPY *.js /usr/share/nginx/html RUN chown -R nginx:nginx /usr/share/nginx/html RUN mkdir -p /usr/share/nginx/html/shared diff --git a/common.js b/common.js index 325835d..87d21ef 100644 --- a/common.js +++ b/common.js @@ -258,6 +258,28 @@ function confirm_uninstall(additional) { }); } +function request_letsencrypt(domain) { + var url = 'scan.php?op=letsencrypt&domain='+domain; + jQuery.get(url, function(data) { + console.log('letsencrypt '+domain); + if (data!="") { + jQuery("#letsencrypt").html(data); + } + setTimeout(check_letsencrypt, 2000, domain); + }); +} + +function check_letsencrypt(domain) { + var url = 'scan.php?op=check_letsencrypt&domain='+domain; + jQuery.get(url, function(data) { + console.log('check_letsencrypt '+domain); + if (data!="") { + jQuery("#letsencrypt").html(data); + } + //setTimeout(check_letsencrypt, 1500, domain); + }); +} + function check_deployment(additional) { var url = 'scan.php?op=check_deployment&additional='+additional; jQuery.get(url, function(data) { diff --git a/functions.php b/functions.php index 690472e..319de95 100644 --- a/functions.php +++ b/functions.php @@ -305,6 +305,18 @@ function check_files($dir,$key) { return $result; } +function show_letsencrypt($letsencrypt, $domain) { + if (!empty($letsencrypt[$domain])) { + echo "LETSENCRYPT: ".$letsencrypt[$domain]["status"]." - ".$letsencrypt[$domain]["date"]; + echo " - LOG"; + if (date("Y-m-d",time()-60*24*3600)>substr($letsencrypt[$domain]["date"],0,10) || $letsencrypt[$domain]["status"]=="failed") { + echo " - Request new certificate"; + } + echo "

"; + } + else echo "LETSENCRYPT in progress for {$domain}."; +} + function check_letsencrypt() { global $SHARED_DIR; @@ -314,8 +326,7 @@ function check_letsencrypt() { $json_data = file_get_contents($input_file); $data = json_decode($json_data,true); if ($data === null) { - echo "JSON read error..."; - // TODO json error + return "ERROR"; } else { foreach ($data as $domain => $domain_data) { diff --git a/manage2.html b/manage2.html index c649a45..4591aa1 100644 --- a/manage2.html +++ b/manage2.html @@ -562,6 +562,6 @@ - + diff --git a/scan.php b/scan.php index a108cd4..d03e70a 100644 --- a/scan.php +++ b/scan.php @@ -179,22 +179,21 @@ switch ($_GET["op"]) { if ($data["STATUS"]=="0") { // ask $template = json_decode(base64_decode($data["TEMPLATE"])); echo "
name}_form\">
"; + echo '
'; if ($reinstall) { - //var_dump($template); + //var_dump($template); $letsencrypt = check_letsencrypt(); - if (empty($letsencrypt)) echo "LETSENCRYPT in progress..."; + if (empty($letsencrypt)) echo "LETSENCRYPT file doesn't exists..."; + elseif ($letsencrypt=="ERROR") echo "LETSENCRYPT file: read JSON error..."; else { + $domain = ""; foreach ($template->fields as $field) { - if ($field->key=="DOMAIN") { - if (!empty($letsencrypt[$field->value])) { - echo "LETSENCRYPT: ".$letsencrypt[$field->value]["status"]." - ".$letsencrypt[$field->value]["date"]; - echo " - value}\" target=\"_blank\">LOG

"; - } - else echo "LETSENCRYPT in progress for {$field->value}."; - } + if ($field->key=="DOMAIN") $domain = $field->value; } + if (!empty($domain)) show_letsencrypt($letsencrypt, $domain); } } + echo '
'; foreach ($template->fields as $field) { if (isset($field->generated)) { echo "generated}\" name=\"{$field->key}\" id=\"{$template->name}_{$field->key}\" class=\"additional_{$template->name}\">"; @@ -264,6 +263,23 @@ switch ($_GET["op"]) { else echo ""; // no deployment, finished } break; + case "letsencrypt": + $domain = $_GET["domain"]; + $arr = array($domain => array("status" => "requested")); + $json = json_encode($arr, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT); + + if (set_output("letsencrypt2",$json)) echo "LETSENCRYPT in progress for {$domain}.

"; + else echo "ERROR"; + break; + case "check_letsencrypt": + $domain = $_GET["domain"]; + $letsencrypt = check_letsencrypt(); + if (empty($letsencrypt)) echo "LETSENCRYPT file doesn't exists..."; + elseif ($letsencrypt=="ERROR") echo "LETSENCRYPT file: read JSON error..."; + else { + show_letsencrypt($letsencrypt, $domain); + } + break; case "redeploy": case "deploy": if ($key=check_deploy($_GET["additional"])) {