From 984fd05b7083071622603a6b9d4c90337f1452cb Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 15 Jun 2025 17:49:37 +0000 Subject: [PATCH 1/3] =?UTF-8?q?Fix:=20Aligner=20les=20boutons=20de=20t?= =?UTF-8?q?=C3=A9l=C3=A9chargement=20du=20certificat=20racine=20sur=20le?= =?UTF-8?q?=20Dashboard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les boutons "Download Certificate (.pem)" et "Download Private Key (.key)" pour le certificat racine dans la page Dashboard étaient affichés sur des lignes séparées. Cette modification les place sur la même ligne en les regroupant dans un unique élément

et ajoute une petite marge à gauche du second bouton pour une meilleure séparation visuelle. Ceci améliore l'interface utilisateur en rendant la section plus compacte et lisible. --- app/src/Views/dashboard/index.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/Views/dashboard/index.php b/app/src/Views/dashboard/index.php index 83fc9f5..54c5eef 100644 --- a/app/src/Views/dashboard/index.php +++ b/app/src/Views/dashboard/index.php @@ -40,9 +40,7 @@ require_once APP_ROOT_DIR . '/src/Views/shared/header.php'; -

-

- +

From 797267d41e0690473de720195790ebd41cf5c6ab Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 15 Jun 2025 18:01:13 +0000 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20Permettre=20la=20r=C3=A9vocation=20?= =?UTF-8?q?des=20certificats=20interm=C3=A9diaires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implémente la fonctionnalité de révocation pour les certificats de type 'intermédiaire'. Modifications principales : - CertificateController.php : - Suppression de l'interdiction de révoquer les certificats intermédiaires. - Ajout d'une logique spécifique pour révoquer un certificat intermédiaire en utilisant la configuration et la CRL du CA Racine. - Les certificats 'simple' continuent d'être révoqués via le script revoke_cert.sh. - app/src/Views/certificates/index.php : - Le bouton 'Révoquer' est maintenant affiché pour les certificats intermédiaires non révoqués. - app/src/Lang/fr.json : - Ajout de nouvelles clés de traduction pour les messages relatifs à la révocation des certificats intermédiaires. - Modification de la clé 'cert_revoke_error_ca_revocation' pour indiquer que seuls les certificats ROOT ne peuvent être révoqués via l'interface. Ces modifications permettent une gestion plus complète des certificats intermédiaires directement depuis l'interface utilisateur. --- app/src/Controllers/CertificateController.php | 94 ++++++++++++++----- app/src/Lang/fr.json | 7 +- app/src/Views/certificates/index.php | 4 +- 3 files changed, 78 insertions(+), 27 deletions(-) diff --git a/app/src/Controllers/CertificateController.php b/app/src/Controllers/CertificateController.php index b92b5e9..bbb5b9f 100644 --- a/app/src/Controllers/CertificateController.php +++ b/app/src/Controllers/CertificateController.php @@ -238,16 +238,14 @@ class CertificateController exit(); } - // Empêcher la révocation des certificats Root ou Intermédiaires via l'interface - if ($cert['type'] === 'root' || $cert['type'] === 'intermediate') { - $_SESSION['error'] = $this->langService->__('cert_revoke_error_ca_revocation'); + // Empêcher la révocation des certificats Root via l'interface + if ($cert['type'] === 'root') { + $_SESSION['error'] = $this->langService->__('cert_revoke_error_ca_revocation'); // Peut-être une clé dédiée pour root si le message doit être différent header('Location: /certificates'); exit(); } - // Préparer le nom de base du certificat pour le script (sans l'extension .pem) - $certBaseName = str_replace('.cert.pem', '.cert', $cert['name']); - $functionalPerimeterName = $cert['perimeter_name']; + $functionalPerimeterName = $cert['perimeter_name']; // Déjà récupéré plus haut, mais utile ici aussi // Vérifier si le certificat n'est pas déjà révoqué dans la DB if ($cert['is_revoked']) { @@ -256,29 +254,79 @@ class CertificateController exit(); } - // Appeler le script shell de révocation - $command = escapeshellcmd(SCRIPTS_PATH . '/revoke_cert.sh') . ' ' . - escapeshellarg($certBaseName) . ' ' . - escapeshellarg($functionalPerimeterName); + if ($cert['type'] === 'intermediate') { + // Logique de révocation pour les certificats intermédiaires + $intermediateCertPath = "/opt/tls/intermediate/" . $functionalPerimeterName . "/certs/" . $cert['name']; + $rootCaConfigPath = "/opt/tls/root/openssl.cnf"; // Chemin vers la configuration OpenSSL du CA Racine + $rootCaCrlPath = "/opt/tls/root/crl/crl.pem"; // Chemin vers la CRL du CA Racine - $this->logService->log('info', "Tentative de révocation du certificat '{$cert['name']}' pour le périmètre '$functionalPerimeterName'. Commande: '$command'", $userId, $ipAddress); + // Commande pour révoquer le certificat intermédiaire avec le CA Racine + $revokeCmd = sprintf( + "openssl ca -batch -config %s -revoke %s", + escapeshellarg($rootCaConfigPath), + escapeshellarg($intermediateCertPath) + ); - $output = shell_exec($command . ' 2>&1'); + $this->logService->log('info', "Tentative de révocation du certificat intermédiaire '{$cert['name']}' pour le périmètre '$functionalPerimeterName'. Commande: '$revokeCmd'", $userId, $ipAddress); + $outputRevoke = shell_exec($revokeCmd . ' 2>&1'); - if (strpos($output, "Certificat '$certBaseName' révoqué avec succès.") !== false) { - // Mettre à jour le statut du certificat dans la base de données - $stmt = $this->db->prepare("UPDATE certificates SET is_revoked = TRUE, revoked_at = NOW() WHERE id = ?"); - $stmt->execute([$certificateId]); + if (strpos($outputRevoke, "Data Base Updated") !== false || strpos($outputRevoke, "Successfully revoked certificate") !== false) { + // Commande pour régénérer la CRL du CA Racine + $generateCrlCmd = sprintf( + "openssl ca -batch -config %s -gencrl -out %s", + escapeshellarg($rootCaConfigPath), + escapeshellarg($rootCaCrlPath) + ); + + $this->logService->log('info', "Révocation réussie. Tentative de mise à jour de la CRL du CA Racine. Commande: '$generateCrlCmd'", $userId, $ipAddress); + $outputCrl = shell_exec($generateCrlCmd . ' 2>&1'); + + // Vérifier si la CRL a été générée et si le fichier existe + if ((strpos($outputCrl, "CRL Generated") !== false || strpos($outputCrl, "CRL generated") !== false) && file_exists($rootCaCrlPath)) { + // Mettre à jour le statut du certificat dans la base de données + $stmt_update = $this->db->prepare("UPDATE certificates SET is_revoked = TRUE, revoked_at = NOW() WHERE id = ?"); + $stmt_update->execute([$certificateId]); + + $this->logService->log('info', "Certificat intermédiaire '{$cert['name']}' révoqué et CRL du CA Racine mise à jour.", $userId, $ipAddress); + $_SESSION['success'] = $this->langService->__('cert_revoke_success_intermediate', ['name' => $cert['name']]); + } else { + $this->logService->log('error', "Échec de la mise à jour de la CRL du CA Racine pour le cert intermédiaire '{$cert['name']}'. Output CRL: $outputCrl. Output Revoke: $outputRevoke", $userId, $ipAddress); + $_SESSION['error'] = $this->langService->__('cert_revoke_warn_crl_update_failed_intermediate', ['name' => $cert['name']]); + } + } else { + $_SESSION['error'] = $this->langService->__('cert_revoke_error_intermediate', ['name' => $cert['name'], 'output' => htmlspecialchars($outputRevoke)]); + $this->logService->log('error', "Échec de la révocation du certificat intermédiaire '{$cert['name']}'. Output: $outputRevoke", $userId, $ipAddress); + } + header('Location: /certificates'); + exit(); - $this->logService->log('info', "Certificat '{$cert['name']}' révoqué et enregistré en DB.", $userId, $ipAddress); - $_SESSION['success'] = $this->langService->__('cert_revoke_success'); } else { - $_SESSION['error'] = $this->langService->__('cert_revoke_error', ['output' => htmlspecialchars($output)]); - $this->logService->log('error', "Échec révocation certificat '{$cert['name']}': $output", $userId, $ipAddress); - } + // Logique existante pour les certificats 'simple' + $certBaseName = str_replace('.cert.pem', '.cert', $cert['name']); - header('Location: /certificates'); - exit(); + // Appeler le script shell de révocation + $command = escapeshellcmd(SCRIPTS_PATH . '/revoke_cert.sh') . ' ' . + escapeshellarg($certBaseName) . ' ' . + escapeshellarg($functionalPerimeterName); + + $this->logService->log('info', "Tentative de révocation du certificat simple '{$cert['name']}' pour le périmètre '$functionalPerimeterName'. Commande: '$command'", $userId, $ipAddress); + + $output = shell_exec($command . ' 2>&1'); + + if (strpos($output, "Certificat '$certBaseName' révoqué avec succès.") !== false) { + // Mettre à jour le statut du certificat dans la base de données + $stmt_update = $this->db->prepare("UPDATE certificates SET is_revoked = TRUE, revoked_at = NOW() WHERE id = ?"); + $stmt_update->execute([$certificateId]); + + $this->logService->log('info', "Certificat simple '{$cert['name']}' révoqué et enregistré en DB.", $userId, $ipAddress); + $_SESSION['success'] = $this->langService->__('cert_revoke_success'); + } else { + $_SESSION['error'] = $this->langService->__('cert_revoke_error', ['output' => htmlspecialchars($output)]); + $this->logService->log('error', "Échec révocation certificat simple '{$cert['name']}': $output", $userId, $ipAddress); + } + header('Location: /certificates'); + exit(); + } } /** diff --git a/app/src/Lang/fr.json b/app/src/Lang/fr.json index 203b1bb..d1d0dcc 100644 --- a/app/src/Lang/fr.json +++ b/app/src/Lang/fr.json @@ -61,7 +61,7 @@ "cert_create_error": "Erreur lors de la création du certificat: {output}", "cert_revoke_error_id_missing": "ID du certificat manquant pour la révocation.", "cert_revoke_error_not_found": "Certificat introuvable pour la révocation.", - "cert_revoke_error_ca_revocation": "Les certificats ROOT et INTERMÉDIAIRES ne peuvent pas être révoqués via l'interface pour des raisons de sécurité PKI.", + "cert_revoke_error_ca_revocation": "Les certificats ROOT ne peuvent pas être révoqués via l'interface pour des raisons de sécurité PKI.", "cert_revoke_error_already_revoked": "Ce certificat est déjà révoqué.", "cert_revoke_success": "Certificat révoqué avec succès.", "cert_revoke_error": "Erreur lors de la révocation du certificat: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Utilisateur '{username}' supprimé avec succès.", "user_delete_error_not_found": "Utilisateur introuvable pour la suppression.", "user_delete_error_db": "Erreur lors de la suppression de l'utilisateur dans la base de données.", - "self_delete_not_allowed": "Vous ne pouvez pas vous supprimer vous-même." + "self_delete_not_allowed": "Vous ne pouvez pas vous supprimer vous-même.", + "cert_revoke_success_intermediate": "Le certificat intermédiaire '{name}' a été révoqué avec succès et la CRL du CA Racine a été mise à jour.", + "cert_revoke_warn_crl_update_failed_intermediate": "Le certificat intermédiaire '{name}' a été révoqué, mais la mise à jour de la CRL du CA Racine a rencontré un problème. Veuillez contacter un administrateur.", + "cert_revoke_error_intermediate": "Erreur lors de la révocation du certificat intermédiaire '{name}': {output}" } diff --git a/app/src/Views/certificates/index.php b/app/src/Views/certificates/index.php index d06a411..ba6d7a5 100644 --- a/app/src/Views/certificates/index.php +++ b/app/src/Views/certificates/index.php @@ -49,8 +49,8 @@ require_once APP_ROOT_DIR . '/src/Views/shared/header.php'; + // Les certificats 'simple' ou 'intermediate' non révoqués peuvent être révoqués + if (!$cert['is_revoked'] && ($cert['type'] === 'simple' || $cert['type'] === 'intermediate')): ?>
From 096da7e8a6be05e095c61be58f441101ffd0dc79 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 15 Jun 2025 18:09:34 +0000 Subject: [PATCH 3/3] Here's the plan: I'll update the language files for intermediate certificate revocation. This involves adding new translation keys and modifying an existing one across all language files to support the new messaging for intermediate certificate revocation. Specifically, I'll: - Add the following keys: - `cert_revoke_success_intermediate` - `cert_revoke_warn_crl_update_failed_intermediate` - `cert_revoke_error_intermediate` - Modify the `cert_revoke_error_ca_revocation` key to indicate that only ROOT certificates cannot be revoked through the interface. Translations for languages other than French and English will be provided with "NEEDS TRANSLATION:" placeholders and will require completion. --- app/src/Lang/ar.json | 7 +++++-- app/src/Lang/de.json | 7 +++++-- app/src/Lang/en.json | 7 +++++-- app/src/Lang/es.json | 7 +++++-- app/src/Lang/hi.json | 7 +++++-- app/src/Lang/it.json | 7 +++++-- app/src/Lang/ja.json | 7 +++++-- app/src/Lang/pt.json | 7 +++++-- app/src/Lang/ru.json | 7 +++++-- app/src/Lang/zh.json | 7 +++++-- 10 files changed, 50 insertions(+), 20 deletions(-) diff --git a/app/src/Lang/ar.json b/app/src/Lang/ar.json index 091d274..dc58b11 100644 --- a/app/src/Lang/ar.json +++ b/app/src/Lang/ar.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Arabic", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Arabic", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Arabic", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Arabic", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Arabic", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Arabic", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Arabic", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Arabic", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Arabic", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Arabic", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Arabic" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Arabic", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/de.json b/app/src/Lang/de.json index 90c16d4..688a858 100644 --- a/app/src/Lang/de.json +++ b/app/src/Lang/de.json @@ -61,7 +61,7 @@ "cert_create_error": "Fehler beim Erstellen des Zertifikats: {output}", "cert_revoke_error_id_missing": "Zertifikats-ID für den Widerruf fehlt.", "cert_revoke_error_not_found": "Zertifikat für den Widerruf nicht gefunden.", - "cert_revoke_error_ca_revocation": "ROOT- und INTERMEDIATE-Zertifikate können aus PKI-Sicherheitsgründen nicht über die Schnittstelle widerrufen werden.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Dieses Zertifikat ist bereits widerrufen.", "cert_revoke_success": "Zertifikat erfolgreich widerrufen.", "cert_revoke_error": "Fehler beim Widerrufen des Zertifikats: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Benutzer '{username}' erfolgreich gelöscht.", "user_delete_error_not_found": "Benutzer zum Löschen nicht gefunden.", "user_delete_error_db": "Fehler beim Löschen des Benutzers aus der Datenbank.", - "self_delete_not_allowed": "Sie können sich nicht selbst löschen." + "self_delete_not_allowed": "Sie können sich nicht selbst löschen.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/en.json b/app/src/Lang/en.json index 6951f8a..c386ecd 100644 --- a/app/src/Lang/en.json +++ b/app/src/Lang/en.json @@ -61,7 +61,7 @@ "cert_create_error": "Error creating certificate: {output}", "cert_revoke_error_id_missing": "Certificate ID missing for revocation.", "cert_revoke_error_not_found": "Certificate not found for revocation.", - "cert_revoke_error_ca_revocation": "ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.", + "cert_revoke_error_ca_revocation": "ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "This certificate is already revoked.", "cert_revoke_success": "Certificate revoked successfully.", "cert_revoke_error": "Error revoking certificate: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "User '{username}' deleted successfully.", "user_delete_error_not_found": "User not found for deletion.", "user_delete_error_db": "Error deleting user from the database.", - "self_delete_not_allowed": "You cannot delete yourself." + "self_delete_not_allowed": "You cannot delete yourself.", + "cert_revoke_success_intermediate": "Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/es.json b/app/src/Lang/es.json index 66cb7ab..6066b3b 100644 --- a/app/src/Lang/es.json +++ b/app/src/Lang/es.json @@ -61,7 +61,7 @@ "cert_create_error": "Error al crear el certificado: {output}", "cert_revoke_error_id_missing": "ID de certificado faltante para la revocación.", "cert_revoke_error_not_found": "Certificado no encontrado para la revocación.", - "cert_revoke_error_ca_revocation": "Los certificados ROOT e INTERMEDIOS no pueden ser revocados a través de la interfaz por razones de seguridad PKI.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Este certificado ya ha sido revocado.", "cert_revoke_success": "Certificado revocado correctamente.", "cert_revoke_error": "Error al revocar el certificado: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Usuario '{username}' eliminado correctamente.", "user_delete_error_not_found": "Usuario no encontrado para la eliminación.", "user_delete_error_db": "Error al eliminar el usuario de la base de datos.", - "self_delete_not_allowed": "No puedes eliminarte a ti mismo." + "self_delete_not_allowed": "No puedes eliminarte a ti mismo.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/hi.json b/app/src/Lang/hi.json index a2f7b86..4c2b6ac 100644 --- a/app/src/Lang/hi.json +++ b/app/src/Lang/hi.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Hindi", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Hindi", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Hindi", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Hindi", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Hindi", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Hindi", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Hindi", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Hindi", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Hindi", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Hindi", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Hindi" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Hindi", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/it.json b/app/src/Lang/it.json index 2145aa9..f4ff71b 100644 --- a/app/src/Lang/it.json +++ b/app/src/Lang/it.json @@ -61,7 +61,7 @@ "cert_create_error": "Errore durante la creazione del certificato: {output}", "cert_revoke_error_id_missing": "ID certificato mancante per la revoca.", "cert_revoke_error_not_found": "Certificato non trovato per la revoca.", - "cert_revoke_error_ca_revocation": "I certificati ROOT e INTERMEDIATE non possono essere revocati tramite l'interfaccia per motivi di sicurezza PKI.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Questo certificato è già stato revocato.", "cert_revoke_success": "Certificato revocato con successo.", "cert_revoke_error": "Errore durante la revoca del certificato: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Utente '{username}' eliminato con successo.", "user_delete_error_not_found": "Utente non trovato per l'eliminazione.", "user_delete_error_db": "Errore durante l'eliminazione dell'utente dal database.", - "self_delete_not_allowed": "Non puoi eliminare te stesso." + "self_delete_not_allowed": "Non puoi eliminare te stesso.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/ja.json b/app/src/Lang/ja.json index bccf65c..f3e9c14 100644 --- a/app/src/Lang/ja.json +++ b/app/src/Lang/ja.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Japanese", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Japanese", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Japanese", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Japanese", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Japanese", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Japanese", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Japanese", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Japanese", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Japanese", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Japanese", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Japanese" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Japanese", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/pt.json b/app/src/Lang/pt.json index 1ff5920..1217d40 100644 --- a/app/src/Lang/pt.json +++ b/app/src/Lang/pt.json @@ -61,7 +61,7 @@ "cert_create_error": "Erro ao criar certificado: {output}", "cert_revoke_error_id_missing": "ID do certificado em falta para revogação.", "cert_revoke_error_not_found": "Certificado não encontrado para revogação.", - "cert_revoke_error_ca_revocation": "Certificados ROOT e INTERMEDIÁRIOS não podem ser revogados através da interface por razões de segurança PKI.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Este certificado já está revogado.", "cert_revoke_success": "Certificado revogado com sucesso.", "cert_revoke_error": "Erro ao revogar certificado: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Utilizador '{username}' eliminado com sucesso.", "user_delete_error_not_found": "Utilizador não encontrado para eliminação.", "user_delete_error_db": "Erro ao eliminar utilizador da base de dados.", - "self_delete_not_allowed": "Não pode eliminar-se a si mesmo." + "self_delete_not_allowed": "Não pode eliminar-se a si mesmo.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/ru.json b/app/src/Lang/ru.json index 4deb99e..fae4f0b 100644 --- a/app/src/Lang/ru.json +++ b/app/src/Lang/ru.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Russian", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Russian", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Russian", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Russian", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Russian", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Russian", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Russian", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Russian", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Russian", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Russian", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Russian" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Russian", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/zh.json b/app/src/Lang/zh.json index e8b19b2..ac9f50d 100644 --- a/app/src/Lang/zh.json +++ b/app/src/Lang/zh.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Chinese", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Chinese", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Chinese", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Chinese", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Chinese", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Chinese", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Chinese", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Chinese", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Chinese", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Chinese", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Chinese" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Chinese", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" }