From 230f5562c789d9f71dba7008d8350bb945e16b7c Mon Sep 17 00:00:00 2001 From: Michael Ortner Date: Mon, 26 May 2025 22:10:28 +0200 Subject: [PATCH 1/7] [ADD] Added the german translation for the strings --- application/src/translations/de/about.ts | 6 +- application/src/translations/de/common.ts | 24 ++-- application/src/translations/de/incident.ts | 101 +++++++------- .../src/translations/de/maintenance.ts | 125 +++++++++--------- application/src/translations/de/services.ts | 2 +- application/src/translations/de/settings.ts | 55 ++++---- application/src/translations/de/ssl.ts | 115 ++++++++-------- 7 files changed, 213 insertions(+), 215 deletions(-) diff --git a/application/src/translations/de/about.ts b/application/src/translations/de/about.ts index 218c972..ba49c4e 100644 --- a/application/src/translations/de/about.ts +++ b/application/src/translations/de/about.ts @@ -12,9 +12,9 @@ export const aboutTranslations: AboutTranslations = { viewDocumentation: "Dokumentation ansehen", followOnX: "Auf X folgen", joinDiscord: "Discord beitreten", - quickActions: "Quick Actions", - quickActionsDescription: "Access common monitoring operations and features quickly. Select an action below to get started.", - quickTips: "Quick Tips", + quickActions: "Schnelle Aktionen", + quickActionsDescription: "Greifen Sie schnell auf gängige Überwachungsvorgänge und -funktionen zu. Wählen Sie unten eine Aktion aus, um loszulegen.", + quickTips: "Schnelle Tipps", }; diff --git a/application/src/translations/de/common.ts b/application/src/translations/de/common.ts index a104def..d872cd2 100644 --- a/application/src/translations/de/common.ts +++ b/application/src/translations/de/common.ts @@ -13,17 +13,17 @@ export const commonTranslations: CommonTranslations = { goodEvening: "Guten Abend", profile: "Profile", settings: "Settings", - documentation: "Documentation", - notifications: "Notifications", - close: "Close", - cancel: "Cancel", - view: "View", - edit: "Edit", - delete: "Delete", + documentation: "Dokumentation", + notifications: "Benachrichtigungen", + close: "Schließen", + cancel: "Abbrechen", + view: "Anzeigen", + edit: "Bearbeiten", + delete: "Löschen", status: "Status", - time: "Time", - title: "Title", - description: "Description", - success: "Success", - error: "Error", + time: "Zeit", + title: "Titel", + description: "Bechreibung", + success: "Erfolg", + error: "Fehler", }; diff --git a/application/src/translations/de/incident.ts b/application/src/translations/de/incident.ts index 461babd..9236dab 100644 --- a/application/src/translations/de/incident.ts +++ b/application/src/translations/de/incident.ts @@ -1,55 +1,54 @@ - import { IncidentTranslations } from '../types/incident'; export const incidentTranslations: IncidentTranslations = { - incidentManagement: 'Incident Management', - incidentsManagementDesc: 'Track and manage service incidents and their resolutions', - unresolvedIncidents: 'Unresolved', - resolvedIncidents: 'Resolved', - activeIncidents: 'Active Incidents', - criticalIssues: 'Critical Issues', - avgResolutionTime: 'Avg. Resolution Time', - noIncidents: 'No Active Incidents', - createIncident: 'Create Incident', - investigating: 'Investigating', - identified: 'Identified', - monitoring: 'Monitoring', - resolved: 'Resolved', - scheduleIncidentManagement: 'Schedule & Incident Management', - incidentName: 'Incident Name', - incidentStatus: 'Incident Status', - highPriority: 'High Priority', - configurationSettings: 'Configuration Settings', - incidentCreatedSuccess: 'Incident created successfully', - basicInfo: 'Basic Information', - serviceId: 'Service ID', - assignedTo: 'Assigned To', - unassigned: 'Unassigned', - timeline: 'Timeline', - incidentTime: 'Incident Time', - resolutionTime: 'Resolution Time', - systems: 'Systems', - noSystems: 'No systems affected', - impactAnalysis: 'Impact Analysis', - rootCause: 'Root Cause', - resolutionSteps: 'Resolution Steps', - lessonsLearned: 'Lessons Learned', - resolutionDetails: 'Resolution Details', - assignment: 'Assignment', - download: 'Download', - downloadPdf: 'Download PDF', - print: 'Print', - confidentialNote: 'This document is confidential and intended for internal use only.', - generatedOn: 'Generated on', - enterResolutionSteps: 'Enter steps taken to resolve the incident', - enterLessonsLearned: 'Enter lessons learned from this incident', - editIncident: 'Edit Incident', - editIncidentDesc: 'Update details for this incident', - updating: 'Updating...', - update: 'Update', - create: 'Create', - creating: 'Creating...', - configuration: 'Configuration', - failedToUpdateStatus: 'Failed to update status', - inProgress: 'In Progress', + incidentManagement: 'Vorfallmanagement', + incidentsManagementDesc: 'Verfolgen und Verwalten von Servicevorfällen und deren Lösungen', + unresolvedIncidents: 'Ungelöst', + resolvedIncidents: 'Gelöst', + activeIncidents: 'Aktive Vorfälle', + criticalIssues: 'Kritische Probleme', + avgResolutionTime: 'Durchschn. Lösungszeit', + noIncidents: 'Keine aktiven Vorfälle', + createIncident: 'Vorfall erstellen', + investigating: 'Untersuchung läuft', + identified: 'Identifiziert', + monitoring: 'Überwachung', + resolved: 'Gelöst', + scheduleIncidentManagement: 'Zeitplanung & Vorfallmanagement', + incidentName: 'Vorfallname', + incidentStatus: 'Vorfallstatus', + highPriority: 'Hohe Priorität', + configurationSettings: 'Konfigurationseinstellungen', + incidentCreatedSuccess: 'Vorfall erfolgreich erstellt', + basicInfo: 'Grundinformationen', + serviceId: 'Service-ID', + assignedTo: 'Zugewiesen an', + unassigned: 'Nicht zugewiesen', + timeline: 'Zeitverlauf', + incidentTime: 'Vorfallszeit', + resolutionTime: 'Lösungszeit', + systems: 'Systeme', + noSystems: 'Keine betroffenen Systeme', + impactAnalysis: 'Auswirkungsanalyse', + rootCause: 'Ursache', + resolutionSteps: 'Lösungsschritte', + lessonsLearned: 'Erkenntnisse', + resolutionDetails: 'Details zur Lösung', + assignment: 'Zuweisung', + download: 'Herunterladen', + downloadPdf: 'PDF herunterladen', + print: 'Drucken', + confidentialNote: 'Dieses Dokument ist vertraulich und nur für den internen Gebrauch bestimmt.', + generatedOn: 'Erstellt am', + enterResolutionSteps: 'Geben Sie die zur Lösung ergriffenen Schritte ein', + enterLessonsLearned: 'Geben Sie die aus diesem Vorfall gewonnenen Erkenntnisse ein', + editIncident: 'Vorfall bearbeiten', + editIncidentDesc: 'Details zu diesem Vorfall aktualisieren', + updating: 'Aktualisiere...', + update: 'Aktualisieren', + create: 'Erstellen', + creating: 'Erstelle...', + configuration: 'Konfiguration', + failedToUpdateStatus: 'Fehler beim Aktualisieren des Status', + inProgress: 'In Bearbeitung', }; diff --git a/application/src/translations/de/maintenance.ts b/application/src/translations/de/maintenance.ts index c056eea..0b7caf3 100644 --- a/application/src/translations/de/maintenance.ts +++ b/application/src/translations/de/maintenance.ts @@ -1,68 +1,67 @@ - import { MaintenanceTranslations } from '../types/maintenance'; export const maintenanceTranslations: MaintenanceTranslations = { - scheduledMaintenance: 'Scheduled Maintenance', - scheduledMaintenanceDesc: 'View and manage planned maintenance windows for your systems and services', - upcomingMaintenance: 'Upcoming', - ongoingMaintenance: 'Ongoing', - completedMaintenance: 'Completed', - createMaintenanceWindow: 'Create Maintenance', - totalScheduledHours: 'Total Scheduled Hours', - maintenanceName: 'Maintenance Name', + scheduledMaintenance: 'Geplante Wartung', + scheduledMaintenanceDesc: 'Anzeigen und Verwalten geplanter Wartungsfenster für Ihre Systeme und Dienste', + upcomingMaintenance: 'Bevorstehend', + ongoingMaintenance: 'Laufend', + completedMaintenance: 'Abgeschlossen', + createMaintenanceWindow: 'Wartung erstellen', + totalScheduledHours: 'Geplante Gesamtstunden', + maintenanceName: 'Wartungsname', maintenanceStatus: 'Status', - scheduledStart: 'Scheduled Start', - scheduledEnd: 'Scheduled End', - affectedServices: 'Affected Services', - impact: 'Impact', - minor: 'Minor', - major: 'Major', - critical: 'Critical', - none: 'None', - actions: 'Actions', - scheduled: 'Scheduled', - inprogress: 'In Progress', - completed: 'Completed', - cancelled: 'Cancelled', - markAsInProgress: 'Mark as In Progress', - markAsCompleted: 'Mark as Completed', - markAsCancelled: 'Mark as Cancelled', - confirmDelete: 'Confirm Delete', - deleteMaintenanceConfirmation: 'Are you sure you want to delete this maintenance window?', - thisActionCannotBeUndone: 'This action cannot be undone.', - maintenanceDeleted: 'Maintenance Deleted', - maintenanceDeletedDesc: 'The maintenance window has been deleted successfully.', - errorDeletingMaintenance: 'There was an error deleting the maintenance window.', - statusUpdated: 'Status Updated', - maintenanceStatusUpdated: 'Maintenance status has been updated successfully.', - errorUpdatingMaintenanceStatus: 'There was an error updating the maintenance status.', - createMaintenance: 'Create Maintenance', - createMaintenanceDesc: 'Schedule a new maintenance window for your services', - enterTitle: 'Enter maintenance title', - enterDescription: 'Enter detailed description of the maintenance', - startTime: 'Start Time', - endTime: 'End Time', - selectDate: 'Select a date', - enterAffectedServices: 'Enter affected services', - separateServicesWithComma: 'Separate multiple services with commas', - priority: 'Priority', - selectPriority: 'Select priority', - selectStatus: 'Select status', - selectImpact: 'Select impact', - notifySubscribers: 'Notify Subscribers', - notifySubscribersDesc: 'Send notifications to all subscribers when this maintenance starts', - maintenanceCreated: 'Maintenance Created', - maintenanceCreatedDesc: 'The maintenance window has been scheduled successfully.', - errorCreatingMaintenance: 'There was an error creating the maintenance window.', - errorFetchingMaintenanceData: 'There was an error fetching maintenance data.', - low: 'Low', - medium: 'Medium', - high: 'High', - created: 'Created', - lastUpdated: 'Last Updated', - subscribersWillBeNotified: 'Subscribers will be notified when maintenance begins', - noNotifications: 'No notifications will be sent', - noScheduledMaintenance: 'No Scheduled Maintenance', - noMaintenanceWindows: 'There are no maintenance windows for this period. Create one by clicking the "Create Maintenance" button.', - maintenanceCreatedSuccess: 'Maintenance window created successfully', + scheduledStart: 'Geplanter Start', + scheduledEnd: 'Geplantes Ende', + affectedServices: 'Betroffene Dienste', + impact: 'Auswirkung', + minor: 'Geringfügig', + major: 'Gravierend', + critical: 'Kritisch', + none: 'Keine', + actions: 'Aktionen', + scheduled: 'Geplant', + inprogress: 'In Bearbeitung', + completed: 'Abgeschlossen', + cancelled: 'Abgebrochen', + markAsInProgress: 'Als in Bearbeitung markieren', + markAsCompleted: 'Als abgeschlossen markieren', + markAsCancelled: 'Als abgebrochen markieren', + confirmDelete: 'Löschen bestätigen', + deleteMaintenanceConfirmation: 'Möchten Sie dieses Wartungsfenster wirklich löschen?', + thisActionCannotBeUndone: 'Diese Aktion kann nicht rückgängig gemacht werden.', + maintenanceDeleted: 'Wartung gelöscht', + maintenanceDeletedDesc: 'Das Wartungsfenster wurde erfolgreich gelöscht.', + errorDeletingMaintenance: 'Fehler beim Löschen des Wartungsfensters.', + statusUpdated: 'Status aktualisiert', + maintenanceStatusUpdated: 'Wartungsstatus wurde erfolgreich aktualisiert.', + errorUpdatingMaintenanceStatus: 'Fehler beim Aktualisieren des Wartungsstatus.', + createMaintenance: 'Wartung erstellen', + createMaintenanceDesc: 'Planen Sie ein neues Wartungsfenster für Ihre Dienste', + enterTitle: 'Wartungstitel eingeben', + enterDescription: 'Geben Sie eine detaillierte Beschreibung der Wartung ein', + startTime: 'Startzeit', + endTime: 'Endzeit', + selectDate: 'Datum auswählen', + enterAffectedServices: 'Betroffene Dienste eingeben', + separateServicesWithComma: 'Mehrere Dienste durch Kommas trennen', + priority: 'Priorität', + selectPriority: 'Priorität auswählen', + selectStatus: 'Status auswählen', + selectImpact: 'Auswirkung auswählen', + notifySubscribers: 'Abonnenten benachrichtigen', + notifySubscribersDesc: 'Beim Start dieser Wartung eine Benachrichtigung an alle Abonnenten senden', + maintenanceCreated: 'Wartung erstellt', + maintenanceCreatedDesc: 'Das Wartungsfenster wurde erfolgreich geplant.', + errorCreatingMaintenance: 'Fehler beim Erstellen des Wartungsfensters.', + errorFetchingMaintenanceData: 'Fehler beim Abrufen der Wartungsdaten.', + low: 'Niedrig', + medium: 'Mittel', + high: 'Hoch', + created: 'Erstellt', + lastUpdated: 'Zuletzt aktualisiert', + subscribersWillBeNotified: 'Abonnenten werden benachrichtigt, wenn die Wartung beginnt', + noNotifications: 'Es werden keine Benachrichtigungen gesendet', + noScheduledMaintenance: 'Keine geplanten Wartungen', + noMaintenanceWindows: 'Für diesen Zeitraum sind keine Wartungsfenster vorhanden. Erstellen Sie eines über die Schaltfläche „Wartung erstellen“.', + maintenanceCreatedSuccess: 'Wartungsfenster erfolgreich erstellt', }; diff --git a/application/src/translations/de/services.ts b/application/src/translations/de/services.ts index 917de48..0dee15a 100644 --- a/application/src/translations/de/services.ts +++ b/application/src/translations/de/services.ts @@ -9,5 +9,5 @@ export const servicesTranslations: ServicesTranslations = { responseTime: "Antwortzeit", uptime: "Betriebszeit", lastChecked: "Zuletzt überprüft", - noServices: "No services match your filter criteria.", + noServices: "Keine Dienste entsprechen Ihren Filterkriterien.", }; diff --git a/application/src/translations/de/settings.ts b/application/src/translations/de/settings.ts index a25746e..0940c78 100644 --- a/application/src/translations/de/settings.ts +++ b/application/src/translations/de/settings.ts @@ -1,35 +1,34 @@ - import { SettingsTranslations } from '../types/settings'; export const settingsTranslations: SettingsTranslations = { // Tabs - systemSettings: "System Settings", - mailSettings: "Mail Settings", - + systemSettings: "Systemeinstellungen", + mailSettings: "E-Mail-Einstellungen", + // System Settings - appName: "Application Name", - appURL: "Application URL", - senderName: "Sender Name", - senderEmail: "Sender Email Address", - hideControls: "Hide Controls", - + appName: "Anwendungsname", + appURL: "Anwendungs-URL", + senderName: "Absendername", + senderEmail: "Absender-E-Mail-Adresse", + hideControls: "Steuerelemente ausblenden", + // Mail Settings - smtpSettings: "SMTP Configuration", - smtpEnabled: "Enable SMTP", - smtpHost: "SMTP Host", - smtpPort: "SMTP Port", - smtpUsername: "SMTP Username", - smtpAuthMethod: "Authentication Method", - enableTLS: "Enable TLS", - localName: "Local Name", - + smtpSettings: "SMTP-Konfiguration", + smtpEnabled: "SMTP aktivieren", + smtpHost: "SMTP-Host", + smtpPort: "SMTP-Port", + smtpUsername: "SMTP-Benutzername", + smtpAuthMethod: "Authentifizierungsmethode", + enableTLS: "TLS aktivieren", + localName: "Lokaler Name", + // Actions and status - save: "Save Changes", - saving: "Saving...", - settingsUpdated: "Settings updated successfully", - errorSavingSettings: "Error saving settings", - testConnection: "Test Connection", - testingConnection: "Testing Connection...", - connectionSuccess: "Connection successful", - connectionFailed: "Connection failed" -}; \ No newline at end of file + save: "Änderungen speichern", + saving: "Speichere...", + settingsUpdated: "Einstellungen erfolgreich aktualisiert", + errorSavingSettings: "Fehler beim Speichern der Einstellungen", + testConnection: "Verbindung testen", + testingConnection: "Verbindung wird getestet...", + connectionSuccess: "Verbindung erfolgreich", + connectionFailed: "Verbindung fehlgeschlagen" +}; diff --git a/application/src/translations/de/ssl.ts b/application/src/translations/de/ssl.ts index d2715b4..7a2f9a2 100644 --- a/application/src/translations/de/ssl.ts +++ b/application/src/translations/de/ssl.ts @@ -43,65 +43,66 @@ export const sslTranslations: SSLTranslations = { expirationDate: "Ablaufdatum", daysLeft: "Verbleibende Tage", status: "Status", - lastNotified: "Last Notified", - actions: "Actions", - validFrom: "Valid From", - validUntil: "Valid Until", - validityDays: "Validity Days", - organization: "Organization", - commonName: "Common Name", - serialNumber: "Serial Number", - algorithm: "Algorithm", - subjectAltNames: "Subject Alternative Names", + lastNotified: "Zuletzt benachrichtigt", + actions: "Aktionen", + validFrom: "Gültig von", + validUntil: "Gültig bis", + validityDays: "Gültigkeitsdauer Tage", + organization: "Organisation", + commonName: "Allgemeiner Name", + serialNumber: "Seriennummer", + algorithm: "Algorithmus", + subjectAltNames: "Thema Alternative Bezeichnungen", // Buttons and actions - addDomain: "Add Domain", - refreshAll: "Refresh All", - cancel: "Cancel", - addCertificate: "Add Certificate", - check: "Check", - view: "View", - edit: "Edit", - delete: "Delete", - close: "Close", - saveChanges: "Save Changes", - updating: "Updating", - + addDomain: "Domain hinzufügen", + refreshAll: "Alle aktualisieren", + cancel: "Abbrechen", + addCertificate: "Zertifikat hinzufügen", + check: "Prüfen", + view: "Ansehen", + edit: "Bearbeiten", + delete: "Löschen", + close: "Schließen", + saveChanges: "Änderungen speichern", + updating: "Aktualisiere", + // Sections in detail view - basicInformation: "Basic Information", - validity: "Validity", - issuerInfo: "Issuer Information", - technicalDetails: "Technical Details", - monitoringConfig: "Monitoring Configuration", - recordInfo: "Record Information", - + basicInformation: "Basisinformationen", + validity: "Gültigkeit", + issuerInfo: "Informationen zum Aussteller", + technicalDetails: "Technische Details", + monitoringConfig: "Monitoring-Konfiguration", + recordInfo: "Aufzeichnungsinformationen", + // Notifications and messages - sslCertificateAdded: "SSL Certificate added successfully", - sslCertificateUpdated: "SSL Certificate updated successfully", - sslCertificateDeleted: "SSL Certificate deleted successfully", - sslCertificateRefreshed: "SSL Certificate for {domain} refreshed successfully", - allCertificatesRefreshed: "All {count} certificates refreshed successfully", - someCertificatesFailed: "{success} certificates refreshed, {failed} failed", - failedToAddCertificate: "Failed to add SSL certificate", - failedToLoadCertificates: "Failed to load SSL certificates", - failedToUpdateCertificate: "Failed to update SSL certificate", - failedToDeleteCertificate: "Failed to delete SSL certificate", - failedToCheckCertificate: "Failed to check SSL certificate", - noCertificatesToRefresh: "No certificates to refresh", - startingRefreshAll: "Starting refresh of {count} certificates", - checkingSSLCertificate: "Checking SSL certificate...", - deleteConfirmation: "Are you sure you want to delete the certificate for", - deleteWarning: "This action cannot be undone. This will permanently delete the certificate.", - + sslCertificateAdded: "SSL-Zertifikat erfolgreich hinzugefügt", + sslCertificateUpdated: "SSL-Zertifikat erfolgreich aktualisiert", + sslCertificateDeleted: "SSL-Zertifikat erfolgreich gelöscht", + sslCertificateRefreshed: "SSL-Zertifikat für {domain} erfolgreich aktualisiert", + allCertificatesRefreshed: "Alle {count} Zertifikate wurden erfolgreich aktualisiert", + someCertificatesFailed: "{success} Zertifikate aktualisiert, {failed} fehlgeschlagen", + failedToAddCertificate: "Fehler beim Hinzufügen des SSL-Zertifikats", + failedToLoadCertificates: "Fehler beim Laden der SSL-Zertifikate", + failedToUpdateCertificate: "Fehler beim Aktualisieren des SSL-Zertifikats", + failedToDeleteCertificate: "Fehler beim Löschen des SSL-Zertifikats", + failedToCheckCertificate: "Fehler beim Prüfen des SSL-Zertifikats", + noCertificatesToRefresh: "Keine Zertifikate zum Aktualisieren vorhanden", + startingRefreshAll: "Starte Aktualisierung von {count} Zertifikaten", + checkingSSLCertificate: "SSL-Zertifikat wird überprüft...", + deleteConfirmation: "Möchten Sie das Zertifikat für wirklich löschen?", + deleteWarning: "Diese Aktion kann nicht rückgängig gemacht werden. Das Zertifikat wird dauerhaft gelöscht.", + // Misc - unknown: "Unknown", - never: "Never", - none: "None", - loadingChannels: "Loading channels...", - noChannelsFound: "No notification channels found", - noSSLCertificates: "No SSL certificates found", - created: "Created", - lastUpdated: "Last Updated", - lastNotification: "Last Notification", - collectionId: "Collection ID" -}; + unknown: "Unbekannt", + never: "Nie", + none: "Keine", + loadingChannels: "Lade Kanäle...", + noChannelsFound: "Keine Benachrichtigungskanäle gefunden", + noSSLCertificates: "Keine SSL-Zertifikate gefunden", + created: "Erstellt", + lastUpdated: "Zuletzt aktualisiert", + lastNotification: "Letzte Benachrichtigung", + collectionId: "Sammlungs-ID" +} + From a1d2f1a9e0560684dcb71f156b34b517c8faee79 Mon Sep 17 00:00:00 2001 From: Michael Ortner <135371107+michaelortnerit@users.noreply.github.com> Date: Tue, 27 May 2025 06:55:40 +0200 Subject: [PATCH 2/7] [FIX] Update common.ts - fixed typo and forogt some transaltions. --- application/src/translations/de/common.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/src/translations/de/common.ts b/application/src/translations/de/common.ts index d872cd2..0e69d07 100644 --- a/application/src/translations/de/common.ts +++ b/application/src/translations/de/common.ts @@ -11,8 +11,8 @@ export const commonTranslations: CommonTranslations = { goodMorning: "Guten Morgen", goodAfternoon: "Guten Nachmittag", goodEvening: "Guten Abend", - profile: "Profile", - settings: "Settings", + profile: "Profil", + settings: "Einstellungen", documentation: "Dokumentation", notifications: "Benachrichtigungen", close: "Schließen", @@ -23,7 +23,7 @@ export const commonTranslations: CommonTranslations = { status: "Status", time: "Zeit", title: "Titel", - description: "Bechreibung", + description: "Beschreibung", success: "Erfolg", error: "Fehler", }; From 9e02eea0d18708957721a63c7e09d3d2887d40f3 Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Tue, 27 May 2025 16:51:45 +0800 Subject: [PATCH 3/7] Updated: one-click installation bash script that includes the output information after the container starts, such as the admin web management URL and default login credentials --- scripts/setup.sh | 111 +++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 67 deletions(-) diff --git a/scripts/setup.sh b/scripts/setup.sh index 5ef28b2..43a9737 100644 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -2,82 +2,59 @@ set -e -echo "🚀 Starting Checkcle Installation..." +REPO_URL="https://github.com/operacle/checkcle.git" +CLONE_DIR="/opt/checkcle" +DATA_DIR="/opt/pb_data" +PORT=8090 -# Check if npm is installed -if ! command -v npm &> /dev/null; then - echo "📦 npm is not installed. Installing Node.js and npm..." - - # Install Node.js and npm (Ubuntu/Debian-based systems) - curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - - sudo apt-get install -y nodejs -fi +echo "🚀 Installing Checkcle from $REPO_URL" -# Clone the repo -if [ ! -d "checkcle" ]; then - echo "📁 Cloning repository..." - git clone https://github.com/operacle/checkcle.git +# Step 1: Check if port 8090 is already in use +if lsof -i :"$PORT" &>/dev/null; then + echo "❗ ERROR: Port $PORT is already in use. Please free the port or change the Docker Compose configuration." + exit 1 fi -cd checkcle - -# Set up paths -PROJECT_DIR=$(pwd) -APP_DIR="$PROJECT_DIR/application" -PB_DIR="$PROJECT_DIR/server" -PB_BINARY="$PB_DIR/pocketbase" - -# Install web dependencies -echo "📦 Installing Web Application dependencies..." -cd "$APP_DIR" -npm install - -# Create systemd service for frontend -echo "🛠️ Setting up systemd service for Web Application..." -sudo tee /etc/systemd/system/checkcle-web.service > /dev/null < /dev/null; then + echo "🔧 Docker not found. Installing Docker..." + curl -fsSL https://get.docker.com | sh +fi -# Create systemd service for PocketBase -echo "🛠️ Setting up systemd service for PocketBase..." -sudo tee /etc/systemd/system/checkcle-pb.service > /dev/null < /dev/null; then + echo "❗ Docker Compose v2 not found. Please install Docker Compose v2 and rerun this script." + exit 1 +fi -[Service] -Type=simple -WorkingDirectory=$PB_DIR -ExecStart=$PB_BINARY serve --dir pb_data -Restart=on-failure -User=$USER +# Step 4: Clone the repository +if [ -d "$CLONE_DIR" ]; then + echo "📁 Directory $CLONE_DIR already exists. Pulling latest changes..." + git -C "$CLONE_DIR" pull +else + echo "📥 Cloning repo to $CLONE_DIR" + git clone "$REPO_URL" "$CLONE_DIR" +fi -[Install] -WantedBy=multi-user.target -EOF +# Step 5: Create data volume directory if it doesn’t exist +if [ ! -d "$DATA_DIR" ]; then + echo "📁 Creating data volume directory at $DATA_DIR" + sudo mkdir -p "$DATA_DIR" + sudo chown "$(whoami)":"$(whoami)" "$DATA_DIR" +fi -# Reload systemd and start services -echo "🔄 Enabling and starting services..." -sudo systemctl daemon-reexec -sudo systemctl daemon-reload -sudo systemctl enable --now checkcle-web -sudo systemctl enable --now checkcle-pb +# Step 6: Start the service +cd "$CLONE_DIR" +echo "📦 Starting Checkcle service with Docker Compose..." +docker compose up -d +# Step 7: Show success output +echo "" +echo "✅ Checkcle has been successfully installed and started." echo "" -echo "✅ All done!" -echo "🌐 Admin Panel: http://0.0.0.0:8090" +echo "🛠️ Admin Web Management" +echo "🔗 Default URL: http://0.0.0.0:$PORT" echo "👤 User: admin@example.com" echo "🔑 Passwd: Admin123456" +echo "" +echo "📌 Make sure port $PORT is accessible from your host system or cloud firewall." From d52842a8ea292bc822aaaab3ba6ff93dbdb136fc Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Tue, 27 May 2025 23:38:02 +0800 Subject: [PATCH 4/7] Refactor: Remove settings fields Remove "Hide Controls", "Sender Name", and "Sender Email Address" from the System Settings tab in General Settings. --- .../settings/general/SystemSettingsTab.tsx | 69 +------------------ 1 file changed, 1 insertion(+), 68 deletions(-) diff --git a/application/src/components/settings/general/SystemSettingsTab.tsx b/application/src/components/settings/general/SystemSettingsTab.tsx index 1f16f23..c48a5e7 100644 --- a/application/src/components/settings/general/SystemSettingsTab.tsx +++ b/application/src/components/settings/general/SystemSettingsTab.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { Input } from "@/components/ui/input"; -import { Switch } from "@/components/ui/switch"; import { FormControl, FormField, FormItem, FormLabel } from "@/components/ui/form"; import { useLanguage } from "@/contexts/LanguageContext"; import { SettingsTabProps } from "./types"; @@ -48,7 +47,7 @@ const SystemSettingsTab: React.FC = ({ form, isEditing, settin @@ -57,72 +56,6 @@ const SystemSettingsTab: React.FC = ({ form, isEditing, settin /> - -
- ( - - - {t("senderName", "settings")} - - - - - - )} - /> -
- -
- ( - - - {t("senderEmail", "settings")} - - - - - - )} - /> -
- -
- ( - - - - - - {t("hideControls", "settings")} - - - )} - /> -
); }; From 4ad001b5609460a86ec85ee917a6f4bd7d85bf07 Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Wed, 28 May 2025 15:08:39 +0800 Subject: [PATCH 5/7] feat: Auto logout after password change Automatically log the user out after a successful password change in the user profile dashboard. --- .../components/profile/ChangePasswordForm.tsx | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/application/src/components/profile/ChangePasswordForm.tsx b/application/src/components/profile/ChangePasswordForm.tsx index 41ccb45..5e84220 100644 --- a/application/src/components/profile/ChangePasswordForm.tsx +++ b/application/src/components/profile/ChangePasswordForm.tsx @@ -1,4 +1,3 @@ - import { useState } from "react"; import { z } from "zod"; import { useForm } from "react-hook-form"; @@ -10,6 +9,7 @@ import { useToast } from "@/hooks/use-toast"; import { Eye, EyeOff } from "lucide-react"; import { pb } from "@/lib/pocketbase"; import { authService } from "@/services/authService"; +import { useNavigate } from "react-router-dom"; // Password change form schema const passwordFormSchema = z.object({ @@ -34,6 +34,7 @@ export function ChangePasswordForm({ userId }: ChangePasswordFormProps) { const [showConfirmPassword, setShowConfirmPassword] = useState(false); const { toast } = useToast(); + const navigate = useNavigate(); const form = useForm({ resolver: zodResolver(passwordFormSchema), @@ -44,12 +45,35 @@ export function ChangePasswordForm({ userId }: ChangePasswordFormProps) { }, }); + // Function to determine which collection the user belongs to + const getUserCollection = async (userId: string): Promise => { + try { + // First try to find the user in the regular users collection + await pb.collection('users').getOne(userId); + return 'users'; + } catch (error) { + try { + // If not found, try the superadmin collection + await pb.collection('_superusers').getOne(userId); + return '_superusers'; + } catch (error) { + throw new Error('User not found in any collection'); + } + } + }; + async function onSubmit(data: PasswordFormValues) { setIsSubmitting(true); try { + console.log("Starting password change for user:", userId); + + // Determine which collection the user belongs to + const collection = await getUserCollection(userId); + console.log("User found in collection:", collection); + // PocketBase requires the old password along with the new one - await pb.collection('users').update(userId, { + await pb.collection(collection).update(userId, { oldPassword: data.currentPassword, password: data.newPassword, passwordConfirm: data.confirmPassword, @@ -60,17 +84,31 @@ export function ChangePasswordForm({ userId }: ChangePasswordFormProps) { toast({ title: "Password updated", - description: "Your password has been changed successfully.", + description: "Your password has been changed successfully. You will be logged out in 3 seconds for security.", }); // Reset the form form.reset(); + + // Auto logout after successful password change + setTimeout(() => { + console.log("Auto logout after password change"); + authService.logout(); + navigate("/login"); + }, 3000); + } catch (error) { console.error("Password change error:", error); let errorMessage = "Failed to update password. Please try again."; if (error instanceof Error) { - errorMessage = error.message; + if (error.message.includes("Failed to authenticate")) { + errorMessage = "Current password is incorrect. Please try again."; + } else if (error.message.includes("User not found")) { + errorMessage = "User account not found. Please contact your administrator."; + } else { + errorMessage = error.message; + } } toast({ @@ -188,4 +226,4 @@ export function ChangePasswordForm({ userId }: ChangePasswordFormProps) { ); -} +} \ No newline at end of file From c7846a2fedee7ac8a2e98e2722a4920143d668f7 Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Wed, 28 May 2025 15:11:06 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=F0=9F=93=96=20Updated=20Project=20Developm?= =?UTF-8?q?ent=20Roadmap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 022a873..3db7fe4 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,8 @@ services: - [ ] Infrastructure Server Monitoring - [ ] Operational Status / Public Status Pages - [ ] Uptime monitoring (TCP, PING, DNS) -- [ ] User Permission Roles & Service Group +- [x] System Setting Panel and Mail Settings +- [x] User Permission Roles - [ ] Notifications (Email/Slack/Discord/Signal) - [x] Open-source release with full documentation @@ -122,4 +123,8 @@ CheckCle is released under the MIT License. --- +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=operacle/checkcle&type=Date)](https://www.star-history.com/#operacle/checkcle&Date) + Stay informed, stay online, with CheckCle! 🌐 From a5ad5eef42ecd6f8efc577a0439df2d8f12dca44 Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Wed, 28 May 2025 15:19:25 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E2=9B=81=20Updated=20Default=20User?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/pb_data/auxiliary.db-shm | Bin 131072 -> 131072 bytes server/pb_data/auxiliary.db-wal | Bin 60601112 -> 63163752 bytes server/pb_data/data.db | Bin 1056768 -> 1056768 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/server/pb_data/auxiliary.db-shm b/server/pb_data/auxiliary.db-shm index fcd9ec8ad3cb01b9c3d19e481559dd99da71332e..7d723da5e77e65e931670bdc19272ca149b63b4a 100644 GIT binary patch delta 5374 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 UGDEe%&+#A*p!K8&l)}XS04&~!od5s; delta 1783 zcmcgsYfw~W7(UOQ%N`VU*~N7wBB0eV5JPerbEw%tWy;j794~okqR|YE94|#TS!}{| zoQB~zyxQ2L%y=26%xs+Xhf`34I4H(VS_K7!2*nFG#So?UJBJSO_wgdrPp}<_a;F zq+*n!996hT5ijE@Bj2aFev-0nd2)>Qh5a}CtNJ>O#qMy2}kxZvfW4>6WP-+Tl!OY|t!!7C zmDyT@=CUufx6zM5yi2X+a0rYv%CA9c*!R*#{S&=Xm)PA!U!BD+Ivzx}TB8hT3yrrL z$IGMj9^si3cEr}B99DZ(Hy?eHA}g3S<0Md41){_%nNC(NelR-b1LC8_Xtvew7lt=0ILWe%sz8aRb(23@H^JXLpL8cnN3nvv1yq%Uic!N+4rzrf_!wm^jILxcz= zQCX`l)2MkKlMkzoHSHPj9HFaHBSGw*16HV7vpx@l#Qi59GKQeF_X zBB2>{>LS9;txFf-6`YpS8<#M}l-bx<@3a?5X|}QQB%@?S94Ynekz0co>1aK&jG}ZW zO=(~zX62ig2gRptEhY!1T*d}O440xLt>ZP+THCec7!sBI>;b1}0uKEf_N zV{^zG<R$UXeU#AXc{i)_mqyr1vDPD*)zd=6za-Mhgx%QvUWhxAgjsHpO$Rgk_>Ps{JgBbDizUz=)A z6hzFyK-stOP;gj8=WY+n;;_$F?`X$$N9dqJ`#OisBLcBqaDXX9(VT9~wF!dg(sNPoJ*JAB^?2C2P>}hY$P{WJiM4$FxG-E}gOpwl@m|mpwcQpBX zEh(qdnO>G^xEj0f@I+=ke6;s2clOlHJUXKLtWeWwQy*rqzlTouA;!wNDO>uzM@qW$ z-jKC06BENf$Loq;IjK(24roTM&lC9iZ|sKIL9^~Z;&YrTM`9!<((VDw;bR`^ oAAp0~HW2;*N6nF#qApQasq4)lE2bx<4I(-`RBPg&G6zxk4=z-zp#T5? diff --git a/server/pb_data/auxiliary.db-wal b/server/pb_data/auxiliary.db-wal index bd7c60cd306031f8c7287c7be735a481081271b3..55633bf56c4fe3cb607b1cbc2add92fae1482107 100644 GIT binary patch delta 213751 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 delta 2525 zcmV~$2N)0n6ot|6-X~NtQc6o!B_g3M*|SI`A+jm7r%+skpKO)vy+^j}z4zWLdu4Cu zd@+AcySa;(w3!*jsVtQSSvt#P*)&X}G|qBqlI62PR?JFinw8Tm&9h2cq-9o3tF%s= zv`xFLmiAdaYh=x=m9^6$9n&f6q;uBIdg+q&vq8FM!*t6=**Ke|dwQg2dZl;zq;ED& zzigKN**sfh%WRdcvrV?mcG*5VWXJ530U4N`vr7hL*9^{(49#vCmfbTvdt}e-l@ZxH z`($MH&3@TG2jsvUl!J3f4$Y{H&S5z`M`TRKW?aT+LMCQXCTB{fW?H7_$jr!5IXcH= zW@hEs9GB$yoRAYUJ16DjoDyFzvj36otC^C;#TZ*+Rmi z#8RSxSXwM2mK6;}BhgqaCz^=m#R_6Yv65&iRu;`fbFqqOAzF%6MJv%-v=MDZJF%K* zFIE?8h&9DpVr|hubQGP$I-;{!SF9(xi1oz=qN~_YbQ2qijm0LSyXYZ$ie93(=p*`y zO+`PkndmPz7h8xe#a3c#v5nYPY$vuCJBS^{PGW!jl6oQODHoFGmVv&Bi`WO0f>oGMNebHwT53~{D7 zOPnpv5$B5Y#9T2?%opd21>yp6p}0s~EG`k3ip#|1;tFx4xJq0tt`XOY>%{fq263af zN!%=M5x0tk;x=)+xI^42?h<#4d&IqBk+@IXFCGvNiigC*;t}zvcuYJlo)Axpr^M6Z z8S$)mPCPGO5HE_C#LMCp@v3-Dye{4lZ;H3X+u|MZu6R$pFFp_-ijTy{;uG~Vu|=k{49PEzlz_)@8S>fr}#_!E&dVzivKj*$k>!w z$}})bn`O+hrlDzM8k^-z6SKTo!K`RjGEL3OrkQDORxvG1OS7tJWm=myrmbmbRx|C* z>ShhIrdi9ZZ915arjuF6bT;dn^-LGDzS+QZH5;04W+St)*~D}=Jxov2%k(yVOkcC9 z>1Q@G{mtfP3$vx!%4}`6G25E$%=Tsnv!mI`3@`)D&Sn=g$n0tcn;~YX+06_yyPM%= z53{G)%ZxC4n|;hkv#;6D>~9V*2bzP-!R8Qis2OEOo5RfE<_I&!j5XuTcr(FFG?UC^ zGsR3b)68^pq?uukGDn+Z%uF-O9BYmvWnZ@RF z^M(1+d}Y2i-lIy!^@|OPuEmB$w_>AW<6@Jdd(orlS@bG; z7k!Gp#im8SVzZ)uv3apYv1PGUv30Rcv2C$kv3;>av174QF`yV&>|E?p3@Ual1{Xt$ zp~Y^+uwwUOc(F&ZXR%i?qS(9Grx;o6TkKctUmQ>zSR7OwTpUsyT8t`27l##x7e^Fh zim}DGVtg^7m{?3ICKpqRsl~KndU0eiqd2NKx;UnoS}(TF`BB>ng;Ef3Z@aWmO1ImVw%azb zr6&_FdfSTz&&Gp^hI)|1#Iy2Wa6{vbn+_03XySonKBqU|`M&Rav-35y!_FrF3cVc1 z0lvX?JO!}scLBdsXo5jM2_PJlP!M536=mmj6ATAwUc%*+LUo-WL$8aZKxHjz8-7cECHH?`qun_7dD5>UWQN zyWT$&?sNP;|E1IS3LN|Su8_`~CI~p(7!&!o{ zZDw%7jAZk)iVRgvDVm)jdNipaBi~R~kx^Bwtf<0_(&+p-0GXjy(U`C`tG;N)XN;xN z>bfS+)~4r4-QF-K4ZKznmMSw*L3(7D>s!$n+LFfeByxGTi!*~L2#J6sMe7{?0^#{# z)iXNK?kPU-44hy5w@wHJjAW<%6WnffO{Hw*^bxF&AUINfIyJ5ekwjctC~oF$Gb}9T z>~tilE>u*>h?gsmPLXw@EYiur0 z$BHo`+etB1lAhptnrh-;RsK(V+DR*WA=huddvkjU*AM>TWu2<>$)DhEa2$WgAAGzS zde1wbEtk-L$E|u#ymIOMhG1=Phc=!cTP}v1afQ*txXS2dco<%Wk8zFB$GFb$caAOI G^WiV2(+*+) delta 992 zcmb7?&rcIU6vua3v4FrT2{Fb9)o_xq&d=THCK{*+6+&Bn724ajyM--Xwq2}cn`q%g z;ze&gc)&lvgGNI=n#fhTdi2D>m>6%|bbx@d7sJeaF7saIz4^ZH=Espuaoz(^3iTAF zVD|xNwwFM@Cm?M%N>4$*Ov8}tgzFG0jMGfx+YSipwB&F%hj7^|n#gCA_>ZZ-Zd*0% zyODJaF&l<#7^`6z(J|Gbs%V5~wzh(ujVE=`-{`A@RPRYt6A22WB(oI^9R+XHks3xs z$4qCcf-%kTEQ1yyl;#OHvuc)W5tC8InTqq8Y2{W*2CTRY+7ZuieB@MCZR&U?SK&$| zf=-)heYI1Pq@cVf$zSCk@}Agl#l_KTUfTpOWx3^xjZe?P?SbGBXsH%Dd522!hD@7X zFTi1s+#<)ZWDT+do;Ca(aO>v({uA1L1wP-wD%0l1Dye8XYSpZnwM7)?<5L>+jM3af z6&WRn^Z9s|pamDkw53N;M4P|&!OB1#7ID5f?oIkDleKE0M$$%hCarKMhhs^VDa&!f zE9>?`d8rVKF5A`Rv0{4FKYz7TVNa&a#Kbg(5t3;h`~(jYb<{C*b*rs>xBdEAA_-%t z6L>sVVF$-IOvheBBbH;>MJ4AtEy9f%rs)r2V-Uf?nd-C`w`M&$PYVUlP3N*!b|Ycg z(=$$DZmN)^vzb&iov_{7{KR}U5l`8LvgTCpqZrTf1>#N3Pef8IiKe+TR)I9>r<0>t zg=IABOfIga;izGvL^MjynicNkIwd+%6~f4Av%4dKU&0&z`h7PU_#)psf2||yNS7r^ z{x0voyE5`xZhUY9O0N(i&=*7