Skip to content

Commit

Permalink
feature: Changed certificate retrieval and update logic
Browse files Browse the repository at this point in the history
  • Loading branch information
dogukanoksuz committed May 3, 2024
1 parent 2fa0787 commit 08b13f7
Showing 1 changed file with 34 additions and 13 deletions.
47 changes: 34 additions & 13 deletions app/Http/Controllers/API/Settings/CertificateController.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,30 @@ class CertificateController extends Controller
{
public function index()
{
return Certificate::orderBy('updated_at', 'desc')->get();
$certificates = Certificate::orderBy('updated_at', 'desc')->get();

$certificates->map(function ($certificate) {
$certificateFile = Command::runLiman('cat /usr/local/share/ca-certificates/liman-{:ipAddress}_{:port}.crt', [
'ipAddress' => $certificate->server_hostname,
'port' => $certificate->origin,
]);

$certinfo = openssl_x509_parse($certificateFile);

if (! $certinfo) {
// Certificate is not valid
// Remove certificate from system
$certificate->removeFromSystem();
}

$certificate->valid_to =
$certinfo['validTo_time_t'] * 1000;

$certificate->valid_from =
$certinfo['validFrom_time_t'];
});

return $certificates;
}

/**
Expand All @@ -25,14 +48,12 @@ public function create(Request $request)
{
// Check If Certificate Already Added or not.
if (
Certificate::where([
$certificate = Certificate::where([
'server_hostname' => strtolower((string) $request->hostname),
'origin' => $request->port,
])->exists()
])->first()
) {
return response()->json([
'message' => 'Bu sunucu ve port için sertifika zaten eklenmiş.',
], Response::HTTP_CONFLICT);
$certificate->removeFromSystem();
}

[$flag, $message] = retrieveCertificate(
Expand All @@ -52,7 +73,7 @@ public function create(Request $request)
'origin' => $request->port,
]);

$certificate->addToSystem('/tmp/' . $message['path']);
$certificate->addToSystem('/tmp/'.$message['path']);

return response()->json([
'message' => 'Sertifika başarıyla eklendi.',
Expand Down Expand Up @@ -89,7 +110,7 @@ public function delete(Request $request)
/**
* Get certificate details for determined server
*
* @param Request $request
* @param Request $request
* @return JsonResponse|Response
*/
public function information(Certificate $certificate)
Expand Down Expand Up @@ -131,7 +152,7 @@ public function information(Certificate $certificate)
'valid_to' => $certinfo['validTo_time_t'],
'valid_from' => $certinfo['validFrom_time_t'],
'issuer_cn' => $certinfo['issuer']['CN'] ?? '',
'issuer_dc' => implode(".", isset($certinfo['issuer']['DC']) ? $certinfo['issuer']['DC'] : []) ?? '',
'issuer_dc' => implode('.', isset($certinfo['issuer']['DC']) ? $certinfo['issuer']['DC'] : []) ?? '',
'authority_key_identifier' => $certinfo['authorityKeyIdentifier'],
'subject_key_identifier' => $certinfo['subjectKeyIdentifier'],
]);
Expand All @@ -156,15 +177,15 @@ public function retrieve(Request $request)

if (! $flag) {
return response()->json([
'message' => 'Sertifika bilgileri alınamadı.'
'message' => 'Sertifika bilgileri alınamadı.',
], Response::HTTP_INTERNAL_SERVER_ERROR);
}

return response()->json([
'valid_to' => $certinfo['validTo_time_t'],
'valid_from' => $certinfo['validFrom_time_t'],
'issuer_cn' => $certinfo['issuer']['CN'] ?? '',
'issuer_dc' => implode(".", isset($certinfo['issuer']['DC']) ? $certinfo['issuer']['DC'] : []) ?? '',
'issuer_dc' => implode('.', isset($certinfo['issuer']['DC']) ? $certinfo['issuer']['DC'] : []) ?? '',
'authority_key_identifier' => $certinfo['authorityKeyIdentifier'],
'subject_key_identifier' => $certinfo['subjectKeyIdentifier'],
], $flag ? Response::HTTP_OK : Response::HTTP_INTERNAL_SERVER_ERROR);
Expand Down Expand Up @@ -198,7 +219,7 @@ public function update(Request $request)

$certificate->removeFromSystem();

$certificate->addToSystem('/tmp/' . $message['path']);
$certificate->addToSystem('/tmp/'.$message['path']);

return response()->json([
'message' => 'Sertifika başarıyla güncellendi.',
Expand Down

0 comments on commit 08b13f7

Please sign in to comment.