GetSSLDaysController.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace application\controllers;
  3. class GetSSLDaysController {
  4. public static function getSSLDays($data): void {
  5. $domain = $data['domain'] ?? '';
  6. error_log("data: " . print_r($data));
  7. if (empty($domain)) {
  8. http_response_code(400);
  9. echo json_encode(['error' => 'Missing required parameter: domain']);
  10. return;
  11. }
  12. $certFile = "/etc/letsencrypt/live/$domain/fullchain.pem";
  13. if (!file_exists($certFile)) {
  14. http_response_code(404);
  15. echo json_encode(['error' => 'SSL certificate not found']);
  16. return;
  17. }
  18. $certData = openssl_x509_parse(file_get_contents($certFile));
  19. if (!$certData || !isset($certData['validTo_time_t'])) {
  20. http_response_code(500);
  21. echo json_encode(['error' => 'Failed to parse SSL certificate']);
  22. return;
  23. }
  24. $expiryTimestamp = $certData['validTo_time_t'];
  25. $expiryDate = date('Y-m-d', $expiryTimestamp);
  26. $daysRemaining = ceil(($expiryTimestamp - time()) / 86400);
  27. echo json_encode([
  28. 'ssl_expiry' => $expiryDate,
  29. 'ssl_remaining' => $daysRemaining
  30. ]);
  31. }
  32. }