GetSSLDaysController.php 1.3 KB

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