Better logs for DNS failures

This commit is contained in:
Hemachandar
2026-02-08 12:23:29 +05:30
parent ba5273872b
commit d505ca6833
2 changed files with 23 additions and 15 deletions
@@ -88,26 +88,30 @@ class Update extends Action
try {
$this->verifyRule($rule, $log);
// Reset logs and status for the rule
$rule = $dbForPlatform->updateDocument('rules', $rule->getId(), new Document([
'logs' => '',
'status' => RULE_STATUS_CERTIFICATE_GENERATING,
]));
$certificateId = $rule->getAttribute('certificateId', '');
// Reset logs for the associated certificate.
if (!empty($certificateId)) {
$certificate = $dbForPlatform->updateDocument('certificates', $certificateId, new Document([
'logs' => '',
]));
}
} catch (Exception $err) {
$date = \date('H:i:s');
$logs = "\033[90m[{$date}] \033[97m" . $err->getMessage() . "\033[0m\n";
$logs .= "\033[90m[{$date}] \033[97mVerify your DNS records are correct and retry.\033[0m\n";
$logs .= "\033[90m[{$date}] \033[97mAlternatively, we'll periodically retry verification.\033[0m\n";
$dbForPlatform->updateDocument('rules', $rule->getId(), new Document([
'$updatedAt' => DateTime::now(),
'logs' => $logs,
]));
throw $err;
}
// Reset logs and status for the rule
$rule = $dbForPlatform->updateDocument('rules', $rule->getId(), new Document([
'logs' => '',
'status' => RULE_STATUS_CERTIFICATE_GENERATING,
]));
$certificateId = $rule->getAttribute('certificateId', '');
// Reset logs for the associated certificate.
if (!empty($certificateId)) {
$certificate = $dbForPlatform->updateDocument('certificates', $certificateId, new Document([
'logs' => '',
]));
}
// Issue a TLS certificate when DNS verification is successful
$queueForCertificates
->setDomain(new Document([
@@ -177,7 +177,11 @@ class Certificates extends Action
Console::success('Domain verification succeeded.');
} catch (AppwriteException $err) {
Console::warning('Domain verification failed: ' . $err->getMessage());
$rule->setAttribute('logs', $err->getMessage());
$date = \date('H:i:s');
$logs = "\033[90m[{$date}] \033[97m" . $err->getMessage() . "\033[0m\n";
$logs .= "\033[90m[{$date}] \033[97mVerify your DNS records are correct and retry.\033[0m\n";
$logs .= "\033[90m[{$date}] \033[97mAlternatively, we'll periodically retry verification and update the status.\033[0m\n";
$rule->setAttribute('logs', $logs);
} finally {
// Update rule and emit events
$this->updateRuleAndSendEvents($rule, $dbForPlatform, $queueForEvents, $queueForWebhooks, $queueForFunctions, $queueForRealtime);