GetSSLDaysController.php 1.1 KB

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