diff --git a/frontend/src/api/modules/cronjob.ts b/frontend/src/api/modules/cronjob.ts index 33cdd07bd..5f3b3f0e7 100644 --- a/frontend/src/api/modules/cronjob.ts +++ b/frontend/src/api/modules/cronjob.ts @@ -47,8 +47,8 @@ export const deleteCronjob = (params: Cronjob.CronjobDelete) => { return http.post(`/cronjobs/del`, params); }; -export const searchRecords = (params: Cronjob.SearchRecord) => { - return http.post>(`cronjobs/search/records`, params); +export const searchRecords = (params: Cronjob.SearchRecord, timeout?: TimeoutEnum) => { + return http.post>(`cronjobs/search/records`, params, timeout); }; export const stopCronjob = (id: number) => { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 43be17eb3..a350d287f 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -4099,6 +4099,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: 'Current service', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4184,6 +4226,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'Threshold {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4199,10 +4242,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4254,6 +4328,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: 'Runtime Resource Health', + checkTime: 'Check Time', + resourceHealthNormalDesc: 'Applications, databases, and containers are currently healthy', + resourceHealthAttentionDesc: + '{0} attention items detected. Prioritize stopped resources and public exposed ports.', + resourceHealthRiskDesc: + '{0} high-risk items detected. Prioritize abnormal containers or failed applications.', + resourceReasonAppFailed: '{0} applications failed to start', + resourceReasonAppStopped: '{0} applications stopped', + resourceReasonContainerAbnormal: '{0} containers are abnormal', + resourceReasonContainerStopped: '{0} containers stopped', + resourceReasonPublicPorts: '{0} public exposed ports', + resourceReasonNormal: 'Applications, databases, and containers are healthy', + viewAbnormalContainers: 'View Abnormal Containers', + viewExposedPorts: 'View Exposed Ports', + viewAppResources: 'View App Resources', + viewRuntimeResources: 'View Runtime Resources', + viewContainerResources: 'View Container Resources', + configuredServices: 'Configured Services', + publicPrivatePorts: '{0} public / {1} private mappings', + currentDisplayTotal: 'Showing {0} of {1}', + reclaimableSpace: 'Reclaimable Space', + estimatedReclaimable: 'Estimated Reclaimable', + unusedImageSpace: 'Unused image space', + stoppedContainerSpace: 'Stopped container space', + unusedVolumeSpace: 'Unused volume space', + buildCacheSpace: 'Docker build cache space', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4270,6 +4371,17 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'Cron Job Health', + cronjobHealthNormalDesc: 'Cron job execution and backup coverage are healthy', + cronjobHealthAttentionDesc: '{0} risk items detected. Prioritize disabled tasks and backup coverage.', + cronjobHealthRiskDesc: '{0} risk items detected. Prioritize failed and disabled tasks.', + cronjobReasonFailed: '{0} failed records', + cronjobReasonDisabled: '{0} tasks disabled', + cronjobReasonLocalOnlyBackup: '{0} local-only backup tasks', + cronjobReasonNormal: 'Cron job execution and backup coverage are normal', + viewFailedRecords: 'View Failed Tasks', + viewCronjobTasks: 'View Cron Jobs', + checkBackupTasks: 'Check Backup Tasks', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4289,6 +4401,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index a03a345d6..fabaef7a6 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -4147,6 +4147,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: 'Servicio actual', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4243,6 +4285,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'Umbral {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4258,10 +4301,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4313,6 +4387,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: 'Estado de recursos en ejecución', + checkTime: 'Hora de comprobación', + resourceHealthNormalDesc: 'Las aplicaciones, bases de datos y contenedores están saludables', + resourceHealthAttentionDesc: + 'Se detectaron {0} elementos de atención. Prioriza recursos detenidos y puertos públicos.', + resourceHealthRiskDesc: + 'Se detectaron {0} elementos de alto riesgo. Prioriza contenedores anómalos o apps fallidas.', + resourceReasonAppFailed: '{0} aplicaciones no iniciaron', + resourceReasonAppStopped: '{0} aplicaciones detenidas', + resourceReasonContainerAbnormal: '{0} contenedores anómalos', + resourceReasonContainerStopped: '{0} contenedores detenidos', + resourceReasonPublicPorts: '{0} puertos expuestos públicamente', + resourceReasonNormal: 'Aplicaciones, bases de datos y contenedores están saludables', + viewAbnormalContainers: 'Ver contenedores anómalos', + viewExposedPorts: 'Ver puertos expuestos', + viewAppResources: 'Ver recursos de apps', + viewRuntimeResources: 'Ver recursos en ejecución', + viewContainerResources: 'Ver recursos de contenedores', + configuredServices: 'Servicios configurados', + publicPrivatePorts: '{0} públicos / {1} mapeos privados', + currentDisplayTotal: 'Mostrando {0} de {1}', + reclaimableSpace: 'Espacio recuperable', + estimatedReclaimable: 'Recuperable estimado', + unusedImageSpace: 'Espacio de imágenes sin usar', + stoppedContainerSpace: 'Espacio de contenedores detenidos', + unusedVolumeSpace: 'Espacio de volúmenes sin usar', + buildCacheSpace: 'Caché de compilación de Docker', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4329,6 +4430,19 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'Estado de tareas programadas', + cronjobHealthNormalDesc: 'La ejecución de tareas y la cobertura de copias están saludables', + cronjobHealthAttentionDesc: + 'Se detectaron {0} elementos de riesgo. Prioriza tareas deshabilitadas y cobertura de copias.', + cronjobHealthRiskDesc: + 'Se detectaron {0} elementos de riesgo. Prioriza tareas fallidas y deshabilitadas.', + cronjobReasonFailed: '{0} registros fallidos', + cronjobReasonDisabled: '{0} tareas deshabilitadas', + cronjobReasonLocalOnlyBackup: '{0} copias solo locales', + cronjobReasonNormal: 'La ejecución de tareas y la cobertura de copias son normales', + viewFailedRecords: 'Ver tareas fallidas', + viewCronjobTasks: 'Ver tareas programadas', + checkBackupTasks: 'Comprobar tareas de copia', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4348,6 +4462,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 6178ecb0c..bc4d86e9f 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -4128,6 +4128,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: '現在のサービス', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4224,6 +4266,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'しきい値 {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4239,10 +4282,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4294,6 +4368,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: '実行リソースの健全性', + checkTime: '検査時刻', + resourceHealthNormalDesc: 'アプリ、データベース、コンテナのリソースは正常です', + resourceHealthAttentionDesc: + '{0} 件の注意項目があります。停止中リソースと公開ポートを優先して確認してください。', + resourceHealthRiskDesc: + '{0} 件の高リスク項目があります。異常コンテナまたは起動失敗アプリを優先して対応してください。', + resourceReasonAppFailed: '{0} 個のアプリが起動に失敗', + resourceReasonAppStopped: '{0} 個のアプリが停止中', + resourceReasonContainerAbnormal: '{0} 個のコンテナが異常', + resourceReasonContainerStopped: '{0} 個のコンテナが停止中', + resourceReasonPublicPorts: '公開ポート {0} 件', + resourceReasonNormal: 'アプリ、データベース、コンテナは正常です', + viewAbnormalContainers: '異常コンテナを表示', + viewExposedPorts: '公開ポートを表示', + viewAppResources: 'アプリリソースを表示', + viewRuntimeResources: '実行リソースを表示', + viewContainerResources: 'コンテナリソースを表示', + configuredServices: '設定済みサービス', + publicPrivatePorts: '公開 {0} 件 / 内部マッピング {1} 件', + currentDisplayTotal: '{1} 件中 {0} 件を表示中', + reclaimableSpace: '回収可能な容量', + estimatedReclaimable: '推定回収可能', + unusedImageSpace: '未使用イメージ容量', + stoppedContainerSpace: '停止コンテナ容量', + unusedVolumeSpace: '未使用ボリューム容量', + buildCacheSpace: 'Docker ビルドキャッシュ容量', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4310,6 +4411,19 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'スケジュールタスクの健全性', + cronjobHealthNormalDesc: 'スケジュールタスクの実行とバックアップ設定は正常です', + cronjobHealthAttentionDesc: + '{0} 件のリスク項目があります。無効なタスクとバックアップ範囲を優先して確認してください。', + cronjobHealthRiskDesc: + '{0} 件のリスク項目があります。失敗タスクと無効なタスクを優先して対応してください。', + cronjobReasonFailed: '失敗記録 {0} 件', + cronjobReasonDisabled: '{0} 件のタスクが無効', + cronjobReasonLocalOnlyBackup: 'ローカルのみのバックアップ {0} 件', + cronjobReasonNormal: 'スケジュールタスクの実行とバックアップ範囲は正常です', + viewFailedRecords: '失敗タスクを表示', + viewCronjobTasks: 'スケジュールタスクを表示', + checkBackupTasks: 'バックアップタスクを確認', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4329,6 +4443,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index df597bd02..14c3e26d5 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -4041,6 +4041,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: '현재 서비스', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4137,6 +4179,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: '임계값 {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4152,10 +4195,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4207,6 +4281,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: '런타임 리소스 상태', + checkTime: '점검 시간', + resourceHealthNormalDesc: '현재 애플리케이션, 데이터베이스, 컨테이너 리소스가 정상입니다', + resourceHealthAttentionDesc: + '{0}개의 주의 항목이 감지되었습니다. 중지된 리소스와 공개 포트를 우선 확인하세요.', + resourceHealthRiskDesc: + '{0}개의 고위험 항목이 감지되었습니다. 비정상 컨테이너 또는 시작 실패 애플리케이션을 우선 처리하세요.', + resourceReasonAppFailed: '애플리케이션 {0}개 시작 실패', + resourceReasonAppStopped: '애플리케이션 {0}개 중지됨', + resourceReasonContainerAbnormal: '컨테이너 {0}개 상태 비정상', + resourceReasonContainerStopped: '컨테이너 {0}개 중지됨', + resourceReasonPublicPorts: '공개 포트 {0}개', + resourceReasonNormal: '애플리케이션, 데이터베이스, 컨테이너 상태가 정상입니다', + viewAbnormalContainers: '비정상 컨테이너 보기', + viewExposedPorts: '노출 포트 보기', + viewAppResources: '앱 리소스 보기', + viewRuntimeResources: '런타임 리소스 보기', + viewContainerResources: '컨테이너 리소스 보기', + configuredServices: '구성된 서비스', + publicPrivatePorts: '공개 {0}개 / 내부 매핑 {1}개', + currentDisplayTotal: '총 {1}개 중 {0}개 표시', + reclaimableSpace: '회수 가능 공간', + estimatedReclaimable: '예상 회수 가능', + unusedImageSpace: '사용하지 않는 이미지 공간', + stoppedContainerSpace: '중지된 컨테이너 공간', + unusedVolumeSpace: '사용하지 않는 볼륨 공간', + buildCacheSpace: 'Docker 빌드 캐시 공간', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4223,6 +4324,18 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: '예약 작업 상태', + cronjobHealthNormalDesc: '예약 작업 실행과 백업 구성이 정상입니다', + cronjobHealthAttentionDesc: + '{0}개의 위험 항목이 감지되었습니다. 비활성 작업과 백업 범위를 우선 확인하세요.', + cronjobHealthRiskDesc: '{0}개의 위험 항목이 감지되었습니다. 실패 작업과 비활성 작업을 우선 처리하세요.', + cronjobReasonFailed: '실패 기록 {0}건', + cronjobReasonDisabled: '{0}개 작업 비활성화', + cronjobReasonLocalOnlyBackup: '로컬 전용 백업 {0}개', + cronjobReasonNormal: '예약 작업 실행과 백업 범위가 정상입니다', + viewFailedRecords: '실패 작업 보기', + viewCronjobTasks: '예약 작업 보기', + checkBackupTasks: '백업 작업 확인', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4242,6 +4355,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 84184de9c..b08afd155 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -4184,6 +4184,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: 'Perkhidmatan semasa', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4280,6 +4322,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'Ambang {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4295,10 +4338,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4350,6 +4424,32 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: 'Kesihatan Sumber Runtime', + checkTime: 'Masa Semakan', + resourceHealthNormalDesc: 'Aplikasi, pangkalan data dan bekas berada dalam keadaan sihat', + resourceHealthAttentionDesc: '{0} item perhatian dikesan. Utamakan sumber terhenti dan port awam.', + resourceHealthRiskDesc: + '{0} item berisiko tinggi dikesan. Utamakan bekas tidak normal atau aplikasi gagal mula.', + resourceReasonAppFailed: '{0} aplikasi gagal dimulakan', + resourceReasonAppStopped: '{0} aplikasi terhenti', + resourceReasonContainerAbnormal: '{0} bekas tidak normal', + resourceReasonContainerStopped: '{0} bekas terhenti', + resourceReasonPublicPorts: '{0} port terdedah awam', + resourceReasonNormal: 'Aplikasi, pangkalan data dan bekas sihat', + viewAbnormalContainers: 'Lihat Bekas Tidak Normal', + viewExposedPorts: 'Lihat Port Terdedah', + viewAppResources: 'Lihat Sumber Aplikasi', + viewRuntimeResources: 'Lihat Sumber Runtime', + viewContainerResources: 'Lihat Sumber Bekas', + configuredServices: 'Perkhidmatan Dikonfigurasi', + publicPrivatePorts: '{0} awam / {1} pemetaan dalaman', + currentDisplayTotal: 'Memaparkan {0} daripada {1}', + reclaimableSpace: 'Ruang Boleh Dituntut Semula', + estimatedReclaimable: 'Anggaran Boleh Dituntut', + unusedImageSpace: 'Ruang imej tidak digunakan', + stoppedContainerSpace: 'Ruang bekas terhenti', + unusedVolumeSpace: 'Ruang volume tidak digunakan', + buildCacheSpace: 'Ruang cache binaan Docker', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4366,6 +4466,17 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'Kesihatan Tugas Berjadual', + cronjobHealthNormalDesc: 'Pelaksanaan tugas dan liputan sandaran berada dalam keadaan sihat', + cronjobHealthAttentionDesc: '{0} item risiko dikesan. Utamakan tugas dilumpuhkan dan liputan sandaran.', + cronjobHealthRiskDesc: '{0} item risiko dikesan. Utamakan tugas gagal dan dilumpuhkan.', + cronjobReasonFailed: '{0} rekod gagal', + cronjobReasonDisabled: '{0} tugas dilumpuhkan', + cronjobReasonLocalOnlyBackup: '{0} tugas sandaran setempat sahaja', + cronjobReasonNormal: 'Pelaksanaan tugas dan liputan sandaran normal', + viewFailedRecords: 'Lihat Tugas Gagal', + viewCronjobTasks: 'Lihat Tugas Berjadual', + checkBackupTasks: 'Semak Tugas Sandaran', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4385,6 +4496,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index bc89f3bf6..1bf49b89b 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -4323,6 +4323,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: 'Serviço atual', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4419,6 +4461,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'Limite {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4434,10 +4477,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4489,6 +4563,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: 'Saúde dos recursos em execução', + checkTime: 'Hora da verificação', + resourceHealthNormalDesc: 'Aplicações, bancos de dados e contêineres estão saudáveis', + resourceHealthAttentionDesc: + '{0} itens de atenção detectados. Priorize recursos parados e portas públicas.', + resourceHealthRiskDesc: + '{0} itens de alto risco detectados. Priorize contêineres anormais ou aplicações com falha.', + resourceReasonAppFailed: '{0} aplicações falharam ao iniciar', + resourceReasonAppStopped: '{0} aplicações paradas', + resourceReasonContainerAbnormal: '{0} contêineres anormais', + resourceReasonContainerStopped: '{0} contêineres parados', + resourceReasonPublicPorts: '{0} portas expostas publicamente', + resourceReasonNormal: 'Aplicações, bancos de dados e contêineres estão saudáveis', + viewAbnormalContainers: 'Ver contêineres anormais', + viewExposedPorts: 'Ver portas expostas', + viewAppResources: 'Ver recursos de apps', + viewRuntimeResources: 'Ver recursos em execução', + viewContainerResources: 'Ver recursos de contêineres', + configuredServices: 'Serviços configurados', + publicPrivatePorts: '{0} públicos / {1} mapeamentos privados', + currentDisplayTotal: 'Exibindo {0} de {1}', + reclaimableSpace: 'Espaço recuperável', + estimatedReclaimable: 'Recuperável estimado', + unusedImageSpace: 'Espaço de imagens não usadas', + stoppedContainerSpace: 'Espaço de contêineres parados', + unusedVolumeSpace: 'Espaço de volumes não usados', + buildCacheSpace: 'Cache de build do Docker', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4505,6 +4606,18 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'Saúde das tarefas agendadas', + cronjobHealthNormalDesc: 'A execução das tarefas e a cobertura de backup estão saudáveis', + cronjobHealthAttentionDesc: + '{0} itens de risco detectados. Priorize tarefas desativadas e cobertura de backup.', + cronjobHealthRiskDesc: '{0} itens de risco detectados. Priorize tarefas com falha e desativadas.', + cronjobReasonFailed: '{0} registros com falha', + cronjobReasonDisabled: '{0} tarefas desativadas', + cronjobReasonLocalOnlyBackup: '{0} backups somente locais', + cronjobReasonNormal: 'A execução das tarefas e a cobertura de backup estão normais', + viewFailedRecords: 'Ver tarefas com falha', + viewCronjobTasks: 'Ver tarefas agendadas', + checkBackupTasks: 'Verificar tarefas de backup', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4524,6 +4637,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 6a649119f..218c5a09f 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -4175,6 +4175,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: 'Текущий сервис', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4271,6 +4313,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'Порог {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4286,10 +4329,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4341,6 +4415,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: 'Состояние ресурсов выполнения', + checkTime: 'Время проверки', + resourceHealthNormalDesc: 'Приложения, базы данных и контейнеры сейчас в норме', + resourceHealthAttentionDesc: + 'Обнаружено {0} пунктов внимания. Сначала проверьте остановленные ресурсы и публичные порты.', + resourceHealthRiskDesc: + 'Обнаружено {0} пунктов высокого риска. Сначала обработайте сбойные контейнеры или приложения.', + resourceReasonAppFailed: '{0} приложений не запустились', + resourceReasonAppStopped: '{0} приложений остановлены', + resourceReasonContainerAbnormal: '{0} контейнеров в аномальном состоянии', + resourceReasonContainerStopped: '{0} контейнеров остановлены', + resourceReasonPublicPorts: '{0} публичных открытых портов', + resourceReasonNormal: 'Приложения, базы данных и контейнеры в норме', + viewAbnormalContainers: 'Показать сбойные контейнеры', + viewExposedPorts: 'Показать открытые порты', + viewAppResources: 'Показать ресурсы приложений', + viewRuntimeResources: 'Показать ресурсы выполнения', + viewContainerResources: 'Показать ресурсы контейнеров', + configuredServices: 'Настроенные сервисы', + publicPrivatePorts: '{0} публичных / {1} внутренних сопоставлений', + currentDisplayTotal: 'Показано {0} из {1}', + reclaimableSpace: 'Освобождаемое пространство', + estimatedReclaimable: 'Можно освободить', + unusedImageSpace: 'Неиспользуемые образы', + stoppedContainerSpace: 'Остановленные контейнеры', + unusedVolumeSpace: 'Неиспользуемые тома', + buildCacheSpace: 'Кэш сборки Docker', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4357,6 +4458,18 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'Состояние плановых задач', + cronjobHealthNormalDesc: 'Выполнение задач и покрытие резервного копирования в норме', + cronjobHealthAttentionDesc: + 'Обнаружено {0} пунктов риска. Сначала проверьте отключенные задачи и покрытие бэкапов.', + cronjobHealthRiskDesc: 'Обнаружено {0} пунктов риска. Сначала обработайте ошибки и отключенные задачи.', + cronjobReasonFailed: '{0} неуспешных записей', + cronjobReasonDisabled: '{0} задач отключено', + cronjobReasonLocalOnlyBackup: '{0} бэкапов только локально', + cronjobReasonNormal: 'Выполнение задач и покрытие бэкапов в норме', + viewFailedRecords: 'Показать сбойные задачи', + viewCronjobTasks: 'Показать плановые задачи', + checkBackupTasks: 'Проверить задачи бэкапа', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4376,6 +4489,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index d3a4f9b76..4dc070c68 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -4176,6 +4176,48 @@ const message = { sshLoginFailed: 'SSH Failed Logins', panelSecurityItems: 'Panel Security Items', sshSecurityItems: 'SSH Security Items', + loginSecurityHealthStatus: 'Login Security Health', + adjustSSHSecurity: 'Adjust SSH Security', + viewLoginLogs: 'View Login Logs', + riskLevel: 'Risk Level', + goConfig: 'Configure', + viewMore: 'View More', + involvedIPs: '{0} IPs involved', + sessionTimeout: 'Session Timeout', + encryptionMode: 'Key Authentication', + countUnit: 'times', + recent24Hours: 'Last 24 hours', + currentService: 'Mevcut servis', + riskItemsExist: '{0} risk items', + loginHealthRiskDesc: + '{0} risky configurations detected. Harden login security to reduce intrusion risk.', + loginHealthNormalDesc: 'Current login and SSH security configurations are normal', + loginHealthNormalReason: 'Login security is normal', + securityEntranceConfiguredDesc: 'Security entrance is configured to reduce default entry exposure', + securityEntranceRiskDesc: 'Security entrance is disabled. Hide the default login entry', + allowIPsRestrictedDesc: 'Allowed IPs are restricted for 1Panel access', + allowIPsRiskDesc: 'Access IPs are unrestricted. Configure allowed IPs for public environments', + bindDomainRestrictedDesc: 'Access domain is bound', + bindDomainRiskDesc: 'Access domain is not bound. Restrict access to a fixed domain', + panelHTTPSNormalDesc: 'Panel HTTPS is enabled', + panelHTTPSRiskDesc: 'Panel HTTPS is disabled. Login traffic may be exposed', + passwordComplexityNormalDesc: 'Password complexity verification is enabled', + passwordComplexityRiskDesc: + 'Password complexity verification is disabled, increasing weak password risk', + sessionTimeoutNormalDesc: 'Session timeout is within a safer range', + sessionTimeoutRiskDesc: 'Session timeout is long. Limit idle session lifetime', + sshServiceNormalDesc: 'SSH service is running normally', + sshServiceRiskDesc: 'SSH service is not running or is abnormal', + sshPortNormalDesc: 'SSH port is changed from the default port', + sshPortRiskDesc: 'SSH still uses default port 22. Change it when appropriate', + rootLoginNormalDesc: 'Root user cannot log in directly', + rootLoginRiskDesc: 'Root user can log in directly. Disable it', + passwordAuthNormalDesc: 'SSH password login is disabled', + passwordAuthRiskDesc: 'Password login is allowed, increasing brute-force risk', + keyAuthNormalDesc: 'SSH key authentication is enabled', + keyAuthRiskDesc: 'Key authentication is disabled. Use key-based login', + encryptionModeNormalDesc: 'Key authentication configuration is enabled', + encryptionModeRiskDesc: 'Key authentication is disabled or incomplete', websiteOverview: 'Website Overview', primaryDomain: 'Primary Domain', expireTime: 'Expiry Time', @@ -4272,6 +4314,7 @@ const message = { systemMetrics: 'Runtime Metrics', cpu: 'CPU', thresholdPercent: 'Eşik {0}%', + recent24HourPeakPercent: 'Last 24h peak {0}', loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', sourceMount: 'Mount point {0}', storageUsage: 'Storage Usage', @@ -4287,10 +4330,41 @@ const message = { dataSource: 'Data Source', noHighUsagePeriod: 'No high usage periods', monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + systemHealthStatus: 'Last 24h Host Runtime Risk', + mainReasons: 'Main Reasons', + viewHostMonitor: 'View Host Monitor', + systemHealthAttentionDesc: + '{0} risk items detected in the last 24 hours. Prioritize resource peaks and disk usage.', + systemHealthNormalDesc: 'Host runtime metrics were normal in the last 24 hours', + monitorEnabled: 'Monitoring Enabled', + cpuCoreUsage: '{0} / {1} cores', + load1Minute: '1-min load', + diskSpaceUsage: 'Disk Space Usage', + usedCapacity: 'Used / Total', + fileSystem: 'File System', + resourceTrendSummary: 'Resource Trend Summary', + last24Hours: 'Last 24 Hours', + granularityHour: 'Granularity: 1 hour', + current: 'Current', + average: 'Average', + totalItems: '{0} items', to: 'to', hoursShort: '{0} h', minutesShort: '{0} min', websiteStatus: 'Website Status', + websiteHealthStatus: 'Website Protection Health', + websiteHealthNormalReason: 'Websites, certificates, WAF, and website monitoring are healthy', + websiteHealthAttentionDesc: + '{0} risk items detected. Handle them soon to protect website security and availability.', + websiteHealthNormalDesc: 'Current website protection metrics are normal', + handleSslRisk: 'Handle Certificate Risks', + viewWaf: 'View WAF', + priority: 'Priority', + riskDescription: 'Risk Description', + deductScore: 'Deducted Score', + remaining: 'Remaining', + wafSourceIpTop: 'WAF Source IP TOP5', + wafAffectedSiteTop: 'Affected Sites TOP5', sslRisk: 'Certificate Risks', sslExpiring: 'Expiring Certificates', includedInReport: 'Included in report', @@ -4342,6 +4416,33 @@ const message = { noExposedContainer: 'No exposed ports detected', publicExpose: 'Public Exposure', privateExpose: 'Private Mapping', + resourceHealth: 'Çalışma Kaynağı Sağlığı', + checkTime: 'Kontrol Zamanı', + resourceHealthNormalDesc: 'Uygulamalar, veritabanları ve konteynerler sağlıklı durumda', + resourceHealthAttentionDesc: + '{0} dikkat gerektiren öğe algılandı. Duran kaynakları ve açık portları önceliklendirin.', + resourceHealthRiskDesc: + '{0} yüksek riskli öğe algılandı. Anormal konteynerleri veya başlatılamayan uygulamaları önceliklendirin.', + resourceReasonAppFailed: '{0} uygulama başlatılamadı', + resourceReasonAppStopped: '{0} uygulama durdu', + resourceReasonContainerAbnormal: '{0} konteyner anormal', + resourceReasonContainerStopped: '{0} konteyner durdu', + resourceReasonPublicPorts: '{0} genel açık port', + resourceReasonNormal: 'Uygulamalar, veritabanları ve konteynerler sağlıklı', + viewAbnormalContainers: 'Anormal Konteynerleri Gör', + viewExposedPorts: 'Açık Portları Gör', + viewAppResources: 'Uygulama Kaynaklarını Gör', + viewRuntimeResources: 'Çalışma Kaynaklarını Gör', + viewContainerResources: 'Konteyner Kaynaklarını Gör', + configuredServices: 'Yapılandırılmış Servisler', + publicPrivatePorts: '{0} genel / {1} özel eşleme', + currentDisplayTotal: '{1} öğeden {0} gösteriliyor', + reclaimableSpace: 'Geri Kazanılabilir Alan', + estimatedReclaimable: 'Tahmini Geri Kazanım', + unusedImageSpace: 'Kullanılmayan imaj alanı', + stoppedContainerSpace: 'Duran konteyner alanı', + unusedVolumeSpace: 'Kullanılmayan birim alanı', + buildCacheSpace: 'Docker derleme önbelleği alanı', executionRecords: 'Execution Records', successRate: 'Success Rate', failedJobs: 'Failed Jobs', @@ -4358,6 +4459,18 @@ const message = { localOnly: 'Local Only', covered: 'Covered', noAttentionCronjob: 'No failed or attention cron jobs', + cronjobHealth: 'Zamanlanmış Görev Sağlığı', + cronjobHealthNormalDesc: 'Görev yürütme ve yedekleme kapsamı sağlıklı', + cronjobHealthAttentionDesc: + '{0} risk öğesi algılandı. Devre dışı görevleri ve yedekleme kapsamını önceliklendirin.', + cronjobHealthRiskDesc: '{0} risk öğesi algılandı. Başarısız ve devre dışı görevleri önceliklendirin.', + cronjobReasonFailed: '{0} başarısız kayıt', + cronjobReasonDisabled: '{0} görev devre dışı', + cronjobReasonLocalOnlyBackup: '{0} yalnızca yerel yedek görevi', + cronjobReasonNormal: 'Görev yürütme ve yedekleme kapsamı normal', + viewFailedRecords: 'Başarısız Görevleri Gör', + viewCronjobTasks: 'Zamanlanmış Görevleri Gör', + checkBackupTasks: 'Yedek Görevlerini Kontrol Et', generationRule: 'Generation Rules', scheduleDaily: 'Daily', scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', @@ -4377,6 +4490,13 @@ const message = { hostMonitor: 'Host Monitor', monitorInterval: 'Monitor Interval', exportSettings: 'Export Settings', + lastExportReport: 'Recent Generated Result', + noLastExportReport: 'No exported report records', + lastExportStatus: 'Last Export Status', + exportFile: 'Export File', + generateTime: 'Generated At', + fileSize: 'File Size', + viewExportHistory: 'View Export History', defaultFormat: 'Default Format', savePath: 'Save Directory', savePathRequired: 'Set the report save directory', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 139bee57d..01c86c43f 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3815,6 +3815,46 @@ const message = { sshLoginFailed: 'SSH 登入失敗', panelSecurityItems: '面板安全項', sshSecurityItems: 'SSH 安全項', + loginSecurityHealthStatus: '登入安全健康狀態', + adjustSSHSecurity: '調整 SSH 安全', + viewLoginLogs: '查看登入日誌', + riskLevel: '風險等級', + goConfig: '去配置', + viewMore: '查看更多', + involvedIPs: '涉及 {0} 個 IP', + sessionTimeout: '會話逾時時間', + encryptionMode: '密鑰認證', + countUnit: '次', + recent24Hours: '近 24 小時', + currentService: '當前服務', + riskItemsExist: '存在 {0} 項風險', + loginHealthRiskDesc: '存在 {0} 項風險配置,建議立即加固登入安全配置,降低被入侵風險。', + loginHealthNormalDesc: '目前登入與 SSH 安全配置處於正常狀態', + loginHealthNormalReason: '登入安全配置正常', + securityEntranceConfiguredDesc: '已配置安全入口,降低預設入口暴露風險', + securityEntranceRiskDesc: '未開啟安全入口,建議隱藏預設登入入口', + allowIPsRestrictedDesc: '已限制允許訪問 1Panel 的 IP', + allowIPsRiskDesc: '未限制訪問 IP,公網環境建議配置授權 IP', + bindDomainRestrictedDesc: '已綁定訪問域名', + bindDomainRiskDesc: '未綁定訪問域名,建議限制固定域名訪問', + panelHTTPSNormalDesc: '面板已啟用 HTTPS', + panelHTTPSRiskDesc: '面板未啟用 HTTPS,登入鏈路存在明文風險', + passwordComplexityNormalDesc: '已開啟密碼複雜度校驗', + passwordComplexityRiskDesc: '未開啟密碼複雜度校驗,弱密碼風險較高', + sessionTimeoutNormalDesc: '會話逾時時間處於較安全範圍', + sessionTimeoutRiskDesc: '會話逾時時間較長,建議控制空閒會話有效期', + sshServiceNormalDesc: 'SSH 服務運行正常', + sshServiceRiskDesc: 'SSH 服務未運行或狀態異常', + sshPortNormalDesc: 'SSH 端口已調整為非預設端口', + sshPortRiskDesc: '仍使用預設 22 端口,建議按需調整', + rootLoginNormalDesc: 'Root 用戶不可直接登入', + rootLoginRiskDesc: 'Root 用戶可以直接登入,建議禁用', + passwordAuthNormalDesc: '已禁用 SSH 密碼登入', + passwordAuthRiskDesc: '允許使用密碼登入,暴力破解風險較高', + keyAuthNormalDesc: '已啟用 SSH 密鑰認證', + keyAuthRiskDesc: '未啟用密鑰認證,建議使用密鑰登入', + encryptionModeNormalDesc: '已啟用密鑰認證配置', + encryptionModeRiskDesc: '密鑰認證未啟用或配置不完整', websiteOverview: '網站概覽', primaryDomain: '主網域', expireTime: '到期時間', @@ -3911,6 +3951,7 @@ const message = { systemMetrics: '執行指標', cpu: 'CPU', thresholdPercent: '閾值 {0}%', + recent24HourPeakPercent: '近 24 小時峰值 {0}', loadAverage: '1 / 5 / 15 分鐘負載:{0} / {1} / {2}', sourceMount: '掛載點 {0}', storageUsage: '空間佔用', @@ -3926,10 +3967,39 @@ const message = { dataSource: '資料來源', noHighUsagePeriod: '暫無高負載時段', monitorDisabledOrNoData: '主機監控未啟用或暫無監控資料', + systemHealthStatus: '近 24 小時主機運行風險狀態', + mainReasons: '主要原因', + viewHostMonitor: '查看主機監控', + systemHealthAttentionDesc: '近 24 小時偵測到 {0} 個風險項,建議優先關注資源峰值和磁碟使用率', + systemHealthNormalDesc: '近 24 小時主機運行指標處於正常狀態', + monitorEnabled: '監控已啟用', + cpuCoreUsage: '{0} / {1} 核', + load1Minute: '1 分鐘負載', + diskSpaceUsage: '磁碟空間佔用', + usedCapacity: '已使用 / 總容量', + fileSystem: '檔案系統', + resourceTrendSummary: '資源趨勢摘要', + last24Hours: '近 24 小時', + granularityHour: '粒度:1 小時', + current: '目前', + average: '平均', + totalItems: '共 {0} 項', to: '至', hoursShort: '{0} 小時', minutesShort: '{0} 分鐘', websiteStatus: '網站狀態', + websiteHealthStatus: '網站防護健康狀態', + websiteHealthNormalReason: '網站、憑證、WAF 與網站監控均處於正常狀態', + websiteHealthAttentionDesc: '偵測到 {0} 個風險項,建議儘快處理以保障網站安全與可用性', + websiteHealthNormalDesc: '目前網站防護指標處於正常狀態', + handleSslRisk: '處理憑證風險', + viewWaf: '查看 WAF', + priority: '優先級', + riskDescription: '風險描述', + deductScore: '影響分值', + remaining: '剩餘', + wafSourceIpTop: 'WAF 攔截來源 IP TOP5', + wafAffectedSiteTop: '受影響站點 TOP5', sslRisk: '憑證風險', sslExpiring: '憑證臨期', includedInReport: '已納入報表', @@ -3981,6 +4051,31 @@ const message = { noExposedContainer: '未檢測到暴露埠', publicExpose: '公網暴露', privateExpose: '內網映射', + resourceHealth: '運行資源健康狀態', + checkTime: '檢測時間', + resourceHealthNormalDesc: '目前應用、資料庫和容器資源處於正常狀態', + resourceHealthAttentionDesc: '檢測到 {0} 個需關注項,建議優先處理停止資源和公網暴露端口', + resourceHealthRiskDesc: '檢測到 {0} 個高風險項,請優先處理異常容器或啟動失敗應用', + resourceReasonAppFailed: '{0} 個應用啟動失敗', + resourceReasonAppStopped: '{0} 個應用已停止', + resourceReasonContainerAbnormal: '{0} 個容器狀態異常', + resourceReasonContainerStopped: '{0} 個容器已停止', + resourceReasonPublicPorts: '公網暴露端口 {0} 項', + resourceReasonNormal: '應用、資料庫和容器狀態正常', + viewAbnormalContainers: '查看異常容器', + viewExposedPorts: '查看暴露端口', + viewAppResources: '查看應用資源', + viewRuntimeResources: '查看運行資源', + viewContainerResources: '查看容器資源', + configuredServices: '已配置服務', + publicPrivatePorts: '公網暴露 {0} 項 / 內網映射 {1} 項', + currentDisplayTotal: '目前展示 {0} 條,共 {1} 條', + reclaimableSpace: '可回收空間', + estimatedReclaimable: '預計可回收', + unusedImageSpace: '未使用映像空間', + stoppedContainerSpace: '停止容器空間', + unusedVolumeSpace: '未使用儲存卷空間', + buildCacheSpace: 'Docker 構建快取空間', executionRecords: '執行記錄', successRate: '成功率', failedJobs: '失敗任務', @@ -3997,6 +4092,17 @@ const message = { localOnly: '僅本機', covered: '已覆蓋', noAttentionCronjob: '暫無失敗或需關注的計劃任務', + cronjobHealth: '計劃任務健康狀態', + cronjobHealthNormalDesc: '目前計劃任務執行與備份配置處於正常狀態', + cronjobHealthAttentionDesc: '存在 {0} 個風險項,建議優先處理未啟用任務和備份覆蓋', + cronjobHealthRiskDesc: '存在 {0} 個風險項,建議優先處理失敗任務和未啟用任務', + cronjobReasonFailed: '失敗記錄 {0} 條', + cronjobReasonDisabled: '{0} 個任務未啟用', + cronjobReasonLocalOnlyBackup: '備份僅本地 {0} 個', + cronjobReasonNormal: '計劃任務執行與備份覆蓋正常', + viewFailedRecords: '查看失敗任務', + viewCronjobTasks: '查看計劃任務', + checkBackupTasks: '檢查備份任務', generationRule: '生成規則', scheduleDaily: '每天', scheduleDailyDesc: '每天 09:00 生成近 24 小時報表', @@ -4016,6 +4122,13 @@ const message = { hostMonitor: '主機監控', monitorInterval: '監控間隔', exportSettings: '匯出設定', + lastExportReport: '最近生成結果', + noLastExportReport: '暫無匯出報表記錄', + lastExportStatus: '最後匯出狀態', + exportFile: '匯出文件', + generateTime: '生成時間', + fileSize: '文件大小', + viewExportHistory: '查看匯出歷史', defaultFormat: '預設格式', savePath: '儲存目錄', savePathRequired: '請設定報表儲存目錄', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 7d2a4faa9..da1910a7c 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -4413,6 +4413,46 @@ const message = { sshLoginFailed: 'SSH 登录失败', panelSecurityItems: '面板安全项', sshSecurityItems: 'SSH 安全项', + loginSecurityHealthStatus: '登录安全健康状态', + adjustSSHSecurity: '调整 SSH 安全', + viewLoginLogs: '查看登录日志', + riskLevel: '风险等级', + goConfig: '去配置', + viewMore: '查看更多', + involvedIPs: '涉及 {0} 个 IP', + sessionTimeout: '会话超时时间', + encryptionMode: '密钥认证', + countUnit: '次', + recent24Hours: '近 24 小时', + currentService: '当前服务', + riskItemsExist: '存在 {0} 项风险', + loginHealthRiskDesc: '存在 {0} 项风险配置,建议立即加固登录安全配置,降低被入侵风险。', + loginHealthNormalDesc: '当前登录与 SSH 安全配置处于正常状态', + loginHealthNormalReason: '登录安全配置正常', + securityEntranceConfiguredDesc: '已配置安全入口,降低默认入口暴露风险', + securityEntranceRiskDesc: '未开启安全入口,建议隐藏默认登录入口', + allowIPsRestrictedDesc: '已限制允许访问 1Panel 的 IP', + allowIPsRiskDesc: '未限制访问 IP,公网环境建议配置授权 IP', + bindDomainRestrictedDesc: '已绑定访问域名', + bindDomainRiskDesc: '未绑定访问域名,建议限制固定域名访问', + panelHTTPSNormalDesc: '面板已启用 HTTPS', + panelHTTPSRiskDesc: '面板未启用 HTTPS,登录链路存在明文风险', + passwordComplexityNormalDesc: '已开启密码复杂度校验', + passwordComplexityRiskDesc: '未开启密码复杂度校验,弱密码风险较高', + sessionTimeoutNormalDesc: '会话超时时间处于较安全范围', + sessionTimeoutRiskDesc: '会话超时时间较长,建议控制空闲会话有效期', + sshServiceNormalDesc: 'SSH 服务运行正常', + sshServiceRiskDesc: 'SSH 服务未运行或状态异常', + sshPortNormalDesc: 'SSH 端口已调整为非默认端口', + sshPortRiskDesc: '仍使用默认 22 端口,建议按需调整', + rootLoginNormalDesc: 'Root 用户不可直接登录', + rootLoginRiskDesc: 'Root 用户可以直接登录,建议禁用', + passwordAuthNormalDesc: '已禁用 SSH 密码登录', + passwordAuthRiskDesc: '允许使用密码登录,暴力破解风险较高', + keyAuthNormalDesc: '已启用 SSH 密钥认证', + keyAuthRiskDesc: '未启用密钥认证,建议使用密钥登录', + encryptionModeNormalDesc: '已启用密钥认证配置', + encryptionModeRiskDesc: '密钥认证未启用或配置不完整', websiteOverview: '网站概览', primaryDomain: '主域名', expireTime: '到期时间', @@ -4498,6 +4538,7 @@ const message = { systemMetrics: '运行指标', cpu: 'CPU', thresholdPercent: '阈值 {0}%', + recent24HourPeakPercent: '近 24 小时峰值 {0}', loadAverage: '1 / 5 / 15 分钟负载:{0} / {1} / {2}', sourceMount: '挂载点 {0}', storageUsage: '空间占用', @@ -4513,10 +4554,39 @@ const message = { dataSource: '数据来源', noHighUsagePeriod: '暂无高负载时段', monitorDisabledOrNoData: '主机监控未启用或暂无监控数据', + systemHealthStatus: '近 24 小时主机运行风险状态', + mainReasons: '主要原因', + viewHostMonitor: '查看主机监控', + systemHealthAttentionDesc: '近 24 小时检测到 {0} 个风险项,建议优先关注资源峰值和磁盘使用率', + systemHealthNormalDesc: '近 24 小时主机运行指标处于正常状态', + monitorEnabled: '监控已开启', + cpuCoreUsage: '{0} / {1} 核', + load1Minute: '1 分钟负载', + diskSpaceUsage: '磁盘空间占用', + usedCapacity: '已使用 / 总容量', + fileSystem: '文件系统', + resourceTrendSummary: '资源趋势摘要', + last24Hours: '近 24 小时', + granularityHour: '粒度:1 小时', + current: '当前', + average: '平均', + totalItems: '共 {0} 项', to: '至', hoursShort: '{0} 小时', minutesShort: '{0} 分钟', websiteStatus: '网站状态', + websiteHealthStatus: '网站防护健康状态', + websiteHealthNormalReason: '网站、证书、WAF 与网站监控均处于正常状态', + websiteHealthAttentionDesc: '检测到 {0} 个风险项,建议尽快处理以保障网站安全与可用性', + websiteHealthNormalDesc: '当前网站防护指标处于正常状态', + handleSslRisk: '处理证书风险', + viewWaf: '查看 WAF', + priority: '优先级', + riskDescription: '风险描述', + deductScore: '影响分值', + remaining: '剩余', + wafSourceIpTop: 'WAF 拦截来源 IP TOP5', + wafAffectedSiteTop: '受影响站点 TOP5', sslRisk: '证书风险', sslExpiring: '证书临期', includedInReport: '已纳入报表', @@ -4568,6 +4638,31 @@ const message = { noExposedContainer: '未检测到暴露端口', publicExpose: '公网暴露', privateExpose: '内网映射', + resourceHealth: '运行资源健康状态', + checkTime: '检测时间', + resourceHealthNormalDesc: '当前应用、数据库和容器资源处于正常状态', + resourceHealthAttentionDesc: '检测到 {0} 个需关注项,建议优先处理停止资源和公网暴露端口', + resourceHealthRiskDesc: '检测到 {0} 个高风险项,请优先处理异常容器或启动失败应用', + resourceReasonAppFailed: '{0} 个应用启动失败', + resourceReasonAppStopped: '{0} 个应用已停止', + resourceReasonContainerAbnormal: '{0} 个容器状态异常', + resourceReasonContainerStopped: '{0} 个容器已停止', + resourceReasonPublicPorts: '公网暴露端口 {0} 项', + resourceReasonNormal: '应用、数据库和容器状态正常', + viewAbnormalContainers: '查看异常容器', + viewExposedPorts: '查看暴露端口', + viewAppResources: '查看应用资源', + viewRuntimeResources: '查看运行资源', + viewContainerResources: '查看容器资源', + configuredServices: '已配置服务', + publicPrivatePorts: '公网暴露 {0} 项 / 内网映射 {1} 项', + currentDisplayTotal: '当前展示 {0} 条,共 {1} 条', + reclaimableSpace: '可回收空间', + estimatedReclaimable: '预计可回收', + unusedImageSpace: '未使用镜像空间', + stoppedContainerSpace: '停止容器空间', + unusedVolumeSpace: '未使用存储卷空间', + buildCacheSpace: 'Docker 构建缓存空间', executionRecords: '执行记录', successRate: '成功率', failedJobs: '失败任务', @@ -4584,6 +4679,17 @@ const message = { localOnly: '仅本地', covered: '已覆盖', noAttentionCronjob: '暂无失败或需关注的计划任务', + cronjobHealth: '计划任务健康状态', + cronjobHealthNormalDesc: '当前计划任务执行与备份配置处于正常状态', + cronjobHealthAttentionDesc: '存在 {0} 个风险项,建议优先处理未启用任务和备份覆盖', + cronjobHealthRiskDesc: '存在 {0} 个风险项,建议优先处理失败任务和未启用任务', + cronjobReasonFailed: '失败记录 {0} 条', + cronjobReasonDisabled: '{0} 个任务未启用', + cronjobReasonLocalOnlyBackup: '备份仅本地 {0} 个', + cronjobReasonNormal: '计划任务执行与备份覆盖正常', + viewFailedRecords: '查看失败任务', + viewCronjobTasks: '查看计划任务', + checkBackupTasks: '检查备份任务', generationRule: '生成规则', scheduleDaily: '每天', scheduleDailyDesc: '每天 09:00 生成近 24 小时报表', @@ -4603,6 +4709,13 @@ const message = { hostMonitor: '主机监控', monitorInterval: '监控间隔', exportSettings: '导出设置', + lastExportReport: '最近生成结果', + noLastExportReport: '暂无导出报告记录', + lastExportStatus: '最后导出状态', + exportFile: '导出文件', + generateTime: '生成时间', + fileSize: '文件大小', + viewExportHistory: '查看导出历史', defaultFormat: '默认格式', savePath: '保存目录', savePathRequired: '请设置报表保存目录',