feat: added logging system

This commit is contained in:
shuaiplus
2026-05-14 02:42:15 +08:00
parent 17ceec45b1
commit 3e4c104e1d
34 changed files with 3179 additions and 66 deletions
+64 -1
View File
@@ -1,4 +1,4 @@
import type { AdminInvite, AdminUser, ListResponse } from '../types';
import type { AdminInvite, AdminUser, AuditLogCategory, AuditLogEntry, AuditLogLevel, AuditLogListResult, AuditLogSettings, ListResponse } from '../types';
import { parseJson, type AuthedFetch } from './shared';
export async function listAdminUsers(authedFetch: AuthedFetch): Promise<AdminUser[]> {
@@ -51,3 +51,66 @@ export async function deleteUser(authedFetch: AuthedFetch, userId: string): Prom
const resp = await authedFetch(`/api/admin/users/${encodeURIComponent(userId)}`, { method: 'DELETE' });
if (!resp.ok) throw new Error('Delete user failed');
}
export interface AuditLogFilters {
limit?: number;
offset?: number;
category?: AuditLogCategory | 'all';
level?: AuditLogLevel | 'all';
q?: string;
from?: string;
to?: string;
}
export async function listAuditLogs(authedFetch: AuthedFetch, filters: AuditLogFilters = {}): Promise<AuditLogListResult> {
const params = new URLSearchParams();
params.set('limit', String(filters.limit || 50));
params.set('offset', String(filters.offset || 0));
if (filters.category && filters.category !== 'all') params.set('category', filters.category);
if (filters.level && filters.level !== 'all') params.set('level', filters.level);
if (filters.q?.trim()) params.set('q', filters.q.trim());
if (filters.from) params.set('from', filters.from);
if (filters.to) params.set('to', filters.to);
const resp = await authedFetch(`/api/admin/logs?${params.toString()}`);
if (!resp.ok) throw new Error('Failed to load audit logs');
const body = await parseJson<ListResponse<AuditLogEntry>>(resp);
return {
logs: body?.data || [],
total: body?.total || 0,
limit: body?.limit || filters.limit || 50,
offset: body?.offset || filters.offset || 0,
hasMore: !!body?.hasMore,
};
}
export async function getAuditLogSettings(authedFetch: AuthedFetch): Promise<AuditLogSettings> {
const resp = await authedFetch('/api/admin/logs/settings');
if (!resp.ok) throw new Error('Failed to load audit log settings');
const body = await parseJson<AuditLogSettings & { object?: string }>(resp);
return {
retentionDays: body?.retentionDays ?? null,
maxEntries: body?.maxEntries ?? null,
};
}
export async function saveAuditLogSettings(authedFetch: AuthedFetch, settings: AuditLogSettings): Promise<AuditLogSettings> {
const resp = await authedFetch('/api/admin/logs/settings', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(settings),
});
if (!resp.ok) throw new Error('Failed to save audit log settings');
const body = await parseJson<AuditLogSettings & { object?: string }>(resp);
return {
retentionDays: body?.retentionDays ?? null,
maxEntries: body?.maxEntries ?? null,
};
}
export async function clearAuditLogs(authedFetch: AuthedFetch): Promise<number> {
const resp = await authedFetch('/api/admin/logs', { method: 'DELETE' });
if (!resp.ok) throw new Error('Failed to clear audit logs');
const body = await parseJson<{ deleted?: number }>(resp);
return Number(body?.deleted || 0);
}
+9
View File
@@ -1137,6 +1137,15 @@ export function createDemoMainRoutesProps(base: AppMainRoutesProps, notify: Noti
)));
notify('success', t('txt_invite_revoked'));
},
onLoadAuditLogSettings: async () => ({ retentionDays: 90, maxEntries: null }),
onSaveAuditLogSettings: async (settings) => {
notify('success', t('txt_log_settings_saved'));
return settings;
},
onClearAuditLogs: async () => {
notify('success', t('txt_logs_cleared'));
return 0;
},
onExportBackup: async () => {
notify('success', t('txt_backup_export_success'));
},
+185
View File
@@ -2,6 +2,7 @@
const en: Record<string, string> = {
"nav_account_settings": "Account Settings",
"nav_admin_panel": "Admin Panel",
"nav_log_center": "Log Center",
"nav_device_management": "Device Management",
"nav_my_vault": "My Vault",
"nav_vault_items": "Vault",
@@ -941,6 +942,190 @@ const en: Record<string, string> = {
"txt_nav_layout_grouped_expanded_desc": "Keep all groups expanded",
"txt_nav_layout_grouped_smart": "Smart groups",
"txt_nav_layout_grouped_smart_desc": "Open active groups as needed",
"txt_actor": "Actor",
"txt_all_levels": "All levels",
"txt_all_logs": "All logs",
"txt_all_time": "All time",
"txt_audit_events": "Log list",
"txt_filter": "Filter",
"txt_last_24_hours": "Last 24 hours",
"txt_last_7_days": "Last 7 days",
"txt_last_30_days": "Last 30 days",
"txt_load_logs_failed": "Failed to load logs",
"txt_load_log_settings_failed": "Failed to load log settings",
"txt_log_category": "Category",
"txt_log_category_auth": "Auth & sessions",
"txt_log_category_data": "Data operations",
"txt_log_category_device": "Devices",
"txt_log_category_security": "Account security",
"txt_log_category_system": "System",
"txt_log_center_description": "Trace sign-ins, refresh failures, device events, security changes, backup actions, and admin operations.",
"txt_log_center_title": "Log Center",
"txt_log_level": "Level",
"txt_log_level_error": "Error",
"txt_log_level_info": "Info",
"txt_log_level_security": "Security",
"txt_log_level_warn": "Warn",
"txt_log_action_account_api_key_create": "Create API key",
"txt_log_action_account_api_key_rotate": "Rotate API key",
"txt_log_action_account_keys_update": "Update account keys",
"txt_log_action_account_profile_update": "Update account profile",
"txt_log_action_account_totp_disable": "Disable two-step login",
"txt_log_action_account_totp_enable": "Enable two-step login",
"txt_log_action_account_totp_recover": "Recover two-step login",
"txt_log_action_account_verify_devices_update": "Update device verification",
"txt_log_action_admin_audit_settings_update": "Update log retention settings",
"txt_log_action_admin_backup_export": "Export backup",
"txt_log_action_admin_backup_import": "Import backup",
"txt_log_action_admin_backup_remote_delete": "Delete remote backup",
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded",
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed",
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded",
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed",
"txt_log_action_admin_backup_settings_repair": "Repair backup settings",
"txt_log_action_admin_backup_settings_update": "Update backup settings",
"txt_log_action_admin_invite_create": "Create invite",
"txt_log_action_admin_invite_delete_all": "Clear invites",
"txt_log_action_admin_invite_revoke": "Revoke invite",
"txt_log_action_admin_user_delete": "Delete user",
"txt_log_action_admin_user_status": "Change user status",
"txt_log_action_attachment_delete": "Delete attachment",
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key",
"txt_log_action_auth_login_failed_bad_password": "Login failed: bad password",
"txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account",
"txt_log_action_auth_login_success": "Login succeeded",
"txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}",
"txt_log_action_cipher_delete_permanent": "Permanently delete vault item",
"txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items",
"txt_log_action_cipher_delete_soft": "Move vault item to trash",
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash",
"txt_log_action_device_deactivate": "Deactivate device",
"txt_log_action_device_delete": "Delete device",
"txt_log_action_device_delete_all": "Delete all devices",
"txt_log_action_device_name_update": "Update device name",
"txt_log_action_device_trust_permanent": "Trust device permanently",
"txt_log_action_device_trust_revoke": "Revoke device trust",
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk",
"txt_log_action_folder_delete": "Delete folder",
"txt_log_action_folder_delete_bulk": "Delete folders",
"txt_log_action_send_auth_remove": "Remove Send authentication",
"txt_log_action_send_delete": "Delete Send",
"txt_log_action_send_delete_bulk": "Delete Sends",
"txt_log_action_send_password_remove": "Remove Send password",
"txt_log_action_user_password_change": "Change master password",
"txt_log_action_user_register_first_admin": "Register first admin",
"txt_log_action_user_register_invite": "Register by invite",
"txt_log_meta_attachments": "Attachments",
"txt_log_meta_bytes": "Bytes",
"txt_log_meta_changed": "Changed fields",
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch",
"txt_log_meta_cipher_id": "Vault item ID",
"txt_log_meta_ciphers": "Vault items",
"txt_log_meta_compat": "Compatibility",
"txt_log_meta_compressed_bytes": "Compressed bytes",
"txt_log_meta_count": "Count",
"txt_log_meta_deleted": "Deleted count",
"txt_log_meta_destination_count": "Destination count",
"txt_log_meta_destination_id": "Destination ID",
"txt_log_meta_destination_name": "Destination name",
"txt_log_meta_destination_type": "Destination type",
"txt_log_meta_device_identifier": "Device ID",
"txt_log_meta_device_type": "Device type",
"txt_log_meta_email": "Email",
"txt_log_meta_error": "Error",
"txt_log_meta_expires_in_hours": "Expires in hours",
"txt_log_meta_file_bytes": "File bytes",
"txt_log_meta_file_name": "File name",
"txt_log_meta_folder_id": "Folder ID",
"txt_log_meta_grant_type": "Login method",
"txt_log_meta_includes_attachments": "Includes attachments",
"txt_log_meta_ip": "IP address",
"txt_log_meta_max_entries": "Entry limit",
"txt_log_meta_method": "Request method",
"txt_log_meta_path": "Request path",
"txt_log_meta_provider": "Provider",
"txt_log_meta_prune_error": "Cleanup error",
"txt_log_meta_pruned_file_count": "Cleaned files",
"txt_log_meta_raw": "Raw data",
"txt_log_meta_reason": "Reason",
"txt_log_meta_remote_path": "Remote path",
"txt_log_meta_removed": "Removed count",
"txt_log_meta_removed_devices": "Removed devices",
"txt_log_meta_removed_sessions": "Removed sessions",
"txt_log_meta_removed_trusted": "Trust removals",
"txt_log_meta_replace_existing": "Replace existing data",
"txt_log_meta_requested": "Requested count",
"txt_log_meta_requested_count": "Requested count",
"txt_log_meta_retention_days": "Retention days",
"txt_log_meta_scheduled_destination_count": "Scheduled destinations",
"txt_log_meta_size": "Size",
"txt_log_meta_skipped_attachments": "Skipped attachments",
"txt_log_meta_skipped_reason": "Skip reason",
"txt_log_meta_status": "Status",
"txt_log_meta_target_email": "Target email",
"txt_log_meta_trigger": "Trigger",
"txt_log_meta_type": "Type",
"txt_log_meta_updated": "Updated count",
"txt_log_meta_upload_verification_attempts": "Upload verification attempts",
"txt_log_meta_user_agent": "Browser/client",
"txt_log_meta_users": "Users",
"txt_log_meta_verify_devices": "Verify devices",
"txt_log_meta_web_session": "Web session",
"txt_log_reason_bad_api_key": "Bad API key",
"txt_log_reason_bad_password": "Bad password",
"txt_log_reason_device_missing": "Device missing",
"txt_log_reason_device_session_mismatch": "Device session mismatch",
"txt_log_reason_token_not_found_or_expired": "Token missing or expired",
"txt_log_reason_user_inactive": "User inactive",
"txt_log_reason_user_missing": "User missing",
"txt_log_target_type_attachment": "Attachment",
"txt_log_target_type_audit_log": "Log",
"txt_log_target_type_backup": "Backup",
"txt_log_target_type_cipher": "Vault item",
"txt_log_target_type_device": "Device",
"txt_log_target_type_folder": "Folder",
"txt_log_target_type_invite": "Invite",
"txt_log_target_type_refresh_token": "Refresh token",
"txt_log_target_type_send": "Send",
"txt_log_target_type_user": "User",
"txt_log_trigger_manual": "Manual",
"txt_log_trigger_remote": "Remote",
"txt_log_trigger_scheduled": "Scheduled",
"txt_log_max_1000": "Up to 1,000 entries",
"txt_log_max_5000": "Up to 5,000 entries",
"txt_log_max_10000": "Up to 10,000 entries",
"txt_log_max_50000": "Up to 50,000 entries",
"txt_log_max_entries": "Storage cap",
"txt_log_max_unlimited": "Unlimited entries",
"txt_log_retention_7d": "Keep 7 days",
"txt_log_retention_30d": "Keep 30 days",
"txt_log_retention_90d": "Keep 90 days",
"txt_log_retention_180d": "Keep 180 days",
"txt_log_retention_365d": "Keep 365 days",
"txt_log_retention_days": "Retention",
"txt_log_retention_forever": "Keep forever",
"txt_log_retention_hint": "Automatically trims by age and entry count to reduce D1 storage use.",
"txt_log_retention_mode": "Retention mode",
"txt_log_retention_mode_days": "By time",
"txt_log_retention_mode_entries": "By count",
"txt_log_retention_settings": "Log retention",
"txt_log_settings": "Settings",
"txt_log_settings_save_failed": "Failed to save log settings",
"txt_log_settings_saved": "Log settings saved",
"txt_log_search_placeholder": "Search action, actor, target, request path, or metadata",
"txt_log_total": " total",
"txt_log_visible": " visible",
"txt_metadata": "Metadata",
"txt_no_logs_found": "No logs found",
"txt_no_metadata": "No metadata",
"txt_clear_all_logs": "Clear logs",
"txt_clear_logs_confirm": "Clear all logs? This cannot be undone.",
"txt_clear_logs_failed": "Failed to clear logs",
"txt_logs_cleared": "Logs cleared",
"txt_search": "Search",
"txt_target": "Target",
"txt_time": "Time",
"txt_time_range": "Time range",
"txt_remove_domain": "Remove domain"
};
+185
View File
@@ -2,6 +2,7 @@
const es: Record<string, string> = {
"nav_account_settings": "Configuración de la cuenta",
"nav_admin_panel": "Panel de administración",
"nav_log_center": "Centro de registros",
"nav_device_management": "Gestión de dispositivos",
"nav_my_vault": "Mi bóveda",
"nav_vault_items": "Bóveda",
@@ -941,6 +942,190 @@ const es: Record<string, string> = {
"txt_nav_layout_grouped_expanded_desc": "Mantener todos los grupos abiertos",
"txt_nav_layout_grouped_smart": "Grupos inteligentes",
"txt_nav_layout_grouped_smart_desc": "Abrir grupos activos cuando haga falta",
"txt_actor": "Actor",
"txt_all_levels": "Todos los niveles",
"txt_all_logs": "Todos los registros",
"txt_all_time": "Todo el tiempo",
"txt_audit_events": "Lista de registros",
"txt_filter": "Filtrar",
"txt_last_24_hours": "Últimas 24 horas",
"txt_last_7_days": "Últimos 7 días",
"txt_last_30_days": "Últimos 30 días",
"txt_load_logs_failed": "No se pudieron cargar los registros",
"txt_load_log_settings_failed": "No se pudo cargar la configuración de registros",
"txt_log_category": "Categoría",
"txt_log_category_auth": "Acceso y sesiones",
"txt_log_category_data": "Operaciones de datos",
"txt_log_category_device": "Dispositivos",
"txt_log_category_security": "Seguridad de cuenta",
"txt_log_category_system": "Sistema",
"txt_log_center_description": "Revisa inicios de sesión, fallos de renovación, eventos de dispositivos, cambios de seguridad, copias y acciones de administración.",
"txt_log_center_title": "Centro de registros",
"txt_log_level": "Nivel",
"txt_log_level_error": "Error",
"txt_log_level_info": "Info",
"txt_log_level_security": "Seguridad",
"txt_log_level_warn": "Aviso",
"txt_log_action_account_api_key_create": "Create API key",
"txt_log_action_account_api_key_rotate": "Rotate API key",
"txt_log_action_account_keys_update": "Update account keys",
"txt_log_action_account_profile_update": "Update account profile",
"txt_log_action_account_totp_disable": "Disable two-step login",
"txt_log_action_account_totp_enable": "Enable two-step login",
"txt_log_action_account_totp_recover": "Recover two-step login",
"txt_log_action_account_verify_devices_update": "Update device verification",
"txt_log_action_admin_audit_settings_update": "Update log retention settings",
"txt_log_action_admin_backup_export": "Export backup",
"txt_log_action_admin_backup_import": "Import backup",
"txt_log_action_admin_backup_remote_delete": "Delete remote backup",
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded",
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed",
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded",
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed",
"txt_log_action_admin_backup_settings_repair": "Repair backup settings",
"txt_log_action_admin_backup_settings_update": "Update backup settings",
"txt_log_action_admin_invite_create": "Create invite",
"txt_log_action_admin_invite_delete_all": "Clear invites",
"txt_log_action_admin_invite_revoke": "Revoke invite",
"txt_log_action_admin_user_delete": "Delete user",
"txt_log_action_admin_user_status": "Change user status",
"txt_log_action_attachment_delete": "Delete attachment",
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key",
"txt_log_action_auth_login_failed_bad_password": "Login failed: bad password",
"txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account",
"txt_log_action_auth_login_success": "Login succeeded",
"txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}",
"txt_log_action_cipher_delete_permanent": "Permanently delete vault item",
"txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items",
"txt_log_action_cipher_delete_soft": "Move vault item to trash",
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash",
"txt_log_action_device_deactivate": "Deactivate device",
"txt_log_action_device_delete": "Delete device",
"txt_log_action_device_delete_all": "Delete all devices",
"txt_log_action_device_name_update": "Update device name",
"txt_log_action_device_trust_permanent": "Trust device permanently",
"txt_log_action_device_trust_revoke": "Revoke device trust",
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk",
"txt_log_action_folder_delete": "Delete folder",
"txt_log_action_folder_delete_bulk": "Delete folders",
"txt_log_action_send_auth_remove": "Remove Send authentication",
"txt_log_action_send_delete": "Delete Send",
"txt_log_action_send_delete_bulk": "Delete Sends",
"txt_log_action_send_password_remove": "Remove Send password",
"txt_log_action_user_password_change": "Change master password",
"txt_log_action_user_register_first_admin": "Register first admin",
"txt_log_action_user_register_invite": "Register by invite",
"txt_log_meta_attachments": "Attachments",
"txt_log_meta_bytes": "Bytes",
"txt_log_meta_changed": "Changed fields",
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch",
"txt_log_meta_cipher_id": "Vault item ID",
"txt_log_meta_ciphers": "Vault items",
"txt_log_meta_compat": "Compatibility",
"txt_log_meta_compressed_bytes": "Compressed bytes",
"txt_log_meta_count": "Count",
"txt_log_meta_deleted": "Deleted count",
"txt_log_meta_destination_count": "Destination count",
"txt_log_meta_destination_id": "Destination ID",
"txt_log_meta_destination_name": "Destination name",
"txt_log_meta_destination_type": "Destination type",
"txt_log_meta_device_identifier": "Device ID",
"txt_log_meta_device_type": "Device type",
"txt_log_meta_email": "Email",
"txt_log_meta_error": "Error",
"txt_log_meta_expires_in_hours": "Expires in hours",
"txt_log_meta_file_bytes": "File bytes",
"txt_log_meta_file_name": "File name",
"txt_log_meta_folder_id": "Folder ID",
"txt_log_meta_grant_type": "Login method",
"txt_log_meta_includes_attachments": "Includes attachments",
"txt_log_meta_ip": "IP address",
"txt_log_meta_max_entries": "Entry limit",
"txt_log_meta_method": "Request method",
"txt_log_meta_path": "Request path",
"txt_log_meta_provider": "Provider",
"txt_log_meta_prune_error": "Cleanup error",
"txt_log_meta_pruned_file_count": "Cleaned files",
"txt_log_meta_raw": "Raw data",
"txt_log_meta_reason": "Reason",
"txt_log_meta_remote_path": "Remote path",
"txt_log_meta_removed": "Removed count",
"txt_log_meta_removed_devices": "Removed devices",
"txt_log_meta_removed_sessions": "Removed sessions",
"txt_log_meta_removed_trusted": "Trust removals",
"txt_log_meta_replace_existing": "Replace existing data",
"txt_log_meta_requested": "Requested count",
"txt_log_meta_requested_count": "Requested count",
"txt_log_meta_retention_days": "Retention days",
"txt_log_meta_scheduled_destination_count": "Scheduled destinations",
"txt_log_meta_size": "Size",
"txt_log_meta_skipped_attachments": "Skipped attachments",
"txt_log_meta_skipped_reason": "Skip reason",
"txt_log_meta_status": "Status",
"txt_log_meta_target_email": "Target email",
"txt_log_meta_trigger": "Trigger",
"txt_log_meta_type": "Type",
"txt_log_meta_updated": "Updated count",
"txt_log_meta_upload_verification_attempts": "Upload verification attempts",
"txt_log_meta_user_agent": "Browser/client",
"txt_log_meta_users": "Users",
"txt_log_meta_verify_devices": "Verify devices",
"txt_log_meta_web_session": "Web session",
"txt_log_reason_bad_api_key": "Bad API key",
"txt_log_reason_bad_password": "Bad password",
"txt_log_reason_device_missing": "Device missing",
"txt_log_reason_device_session_mismatch": "Device session mismatch",
"txt_log_reason_token_not_found_or_expired": "Token missing or expired",
"txt_log_reason_user_inactive": "User inactive",
"txt_log_reason_user_missing": "User missing",
"txt_log_target_type_attachment": "Attachment",
"txt_log_target_type_audit_log": "Log",
"txt_log_target_type_backup": "Backup",
"txt_log_target_type_cipher": "Vault item",
"txt_log_target_type_device": "Device",
"txt_log_target_type_folder": "Folder",
"txt_log_target_type_invite": "Invite",
"txt_log_target_type_refresh_token": "Refresh token",
"txt_log_target_type_send": "Send",
"txt_log_target_type_user": "User",
"txt_log_trigger_manual": "Manual",
"txt_log_trigger_remote": "Remote",
"txt_log_trigger_scheduled": "Scheduled",
"txt_log_max_1000": "Hasta 1000 entradas",
"txt_log_max_5000": "Hasta 5000 entradas",
"txt_log_max_10000": "Hasta 10 000 entradas",
"txt_log_max_50000": "Hasta 50 000 entradas",
"txt_log_max_entries": "Límite de almacenamiento",
"txt_log_max_unlimited": "Entradas ilimitadas",
"txt_log_retention_7d": "Conservar 7 días",
"txt_log_retention_30d": "Conservar 30 días",
"txt_log_retention_90d": "Conservar 90 días",
"txt_log_retention_180d": "Conservar 180 días",
"txt_log_retention_365d": "Conservar 365 días",
"txt_log_retention_days": "Retención",
"txt_log_retention_forever": "Conservar siempre",
"txt_log_retention_hint": "Recorta automáticamente por antigüedad y cantidad para reducir el uso de D1.",
"txt_log_retention_mode": "Modo de retención",
"txt_log_retention_mode_days": "Por tiempo",
"txt_log_retention_mode_entries": "Por cantidad",
"txt_log_retention_settings": "Retención de registros",
"txt_log_settings": "Configuración",
"txt_log_settings_save_failed": "No se pudo guardar la configuración de registros",
"txt_log_settings_saved": "Configuración de registros guardada",
"txt_log_search_placeholder": "Buscar acción, actor, destino, ruta o metadatos",
"txt_log_total": " total",
"txt_log_visible": " visibles",
"txt_metadata": "Metadatos",
"txt_no_logs_found": "No se encontraron registros",
"txt_no_metadata": "Sin metadatos",
"txt_clear_all_logs": "Borrar registros",
"txt_clear_logs_confirm": "¿Borrar todos los registros? Esta acción no se puede deshacer.",
"txt_clear_logs_failed": "No se pudieron borrar los registros",
"txt_logs_cleared": "Registros borrados",
"txt_search": "Buscar",
"txt_target": "Destino",
"txt_time": "Hora",
"txt_time_range": "Rango de tiempo",
"txt_remove_domain": "Quitar dominio"
};
+185
View File
@@ -3,6 +3,7 @@ const ru: Record<string, string> = {
"txt_backup_destination_detail_note": "",
"nav_account_settings": "Настройки учетной записи",
"nav_admin_panel": "Панель администратора",
"nav_log_center": "Центр журналов",
"nav_device_management": "Управление устройствами",
"nav_my_vault": "Мое хранилище",
"nav_vault_items": "Хранилище",
@@ -941,6 +942,190 @@ const ru: Record<string, string> = {
"txt_nav_layout_grouped_expanded_desc": "Держать все группы открытыми",
"txt_nav_layout_grouped_smart": "Умные группы",
"txt_nav_layout_grouped_smart_desc": "Открывать активные группы по необходимости",
"txt_actor": "Инициатор",
"txt_all_levels": "Все уровни",
"txt_all_logs": "Все журналы",
"txt_all_time": "Все время",
"txt_audit_events": "Список журналов",
"txt_filter": "Фильтр",
"txt_last_24_hours": "Последние 24 часа",
"txt_last_7_days": "Последние 7 дней",
"txt_last_30_days": "Последние 30 дней",
"txt_load_logs_failed": "Не удалось загрузить журналы",
"txt_load_log_settings_failed": "Не удалось загрузить настройки журналов",
"txt_log_category": "Категория",
"txt_log_category_auth": "Вход и сессии",
"txt_log_category_data": "Операции с данными",
"txt_log_category_device": "Устройства",
"txt_log_category_security": "Безопасность учетной записи",
"txt_log_category_system": "Система",
"txt_log_center_description": "Просматривайте входы, сбои обновления, события устройств, изменения безопасности, резервные копии и действия администратора.",
"txt_log_center_title": "Центр журналов",
"txt_log_level": "Уровень",
"txt_log_level_error": "Ошибка",
"txt_log_level_info": "Инфо",
"txt_log_level_security": "Безопасность",
"txt_log_level_warn": "Предупреждение",
"txt_log_action_account_api_key_create": "Create API key",
"txt_log_action_account_api_key_rotate": "Rotate API key",
"txt_log_action_account_keys_update": "Update account keys",
"txt_log_action_account_profile_update": "Update account profile",
"txt_log_action_account_totp_disable": "Disable two-step login",
"txt_log_action_account_totp_enable": "Enable two-step login",
"txt_log_action_account_totp_recover": "Recover two-step login",
"txt_log_action_account_verify_devices_update": "Update device verification",
"txt_log_action_admin_audit_settings_update": "Update log retention settings",
"txt_log_action_admin_backup_export": "Export backup",
"txt_log_action_admin_backup_import": "Import backup",
"txt_log_action_admin_backup_remote_delete": "Delete remote backup",
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded",
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed",
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded",
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed",
"txt_log_action_admin_backup_settings_repair": "Repair backup settings",
"txt_log_action_admin_backup_settings_update": "Update backup settings",
"txt_log_action_admin_invite_create": "Create invite",
"txt_log_action_admin_invite_delete_all": "Clear invites",
"txt_log_action_admin_invite_revoke": "Revoke invite",
"txt_log_action_admin_user_delete": "Delete user",
"txt_log_action_admin_user_status": "Change user status",
"txt_log_action_attachment_delete": "Delete attachment",
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key",
"txt_log_action_auth_login_failed_bad_password": "Login failed: bad password",
"txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account",
"txt_log_action_auth_login_success": "Login succeeded",
"txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}",
"txt_log_action_cipher_delete_permanent": "Permanently delete vault item",
"txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items",
"txt_log_action_cipher_delete_soft": "Move vault item to trash",
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash",
"txt_log_action_device_deactivate": "Deactivate device",
"txt_log_action_device_delete": "Delete device",
"txt_log_action_device_delete_all": "Delete all devices",
"txt_log_action_device_name_update": "Update device name",
"txt_log_action_device_trust_permanent": "Trust device permanently",
"txt_log_action_device_trust_revoke": "Revoke device trust",
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk",
"txt_log_action_folder_delete": "Delete folder",
"txt_log_action_folder_delete_bulk": "Delete folders",
"txt_log_action_send_auth_remove": "Remove Send authentication",
"txt_log_action_send_delete": "Delete Send",
"txt_log_action_send_delete_bulk": "Delete Sends",
"txt_log_action_send_password_remove": "Remove Send password",
"txt_log_action_user_password_change": "Change master password",
"txt_log_action_user_register_first_admin": "Register first admin",
"txt_log_action_user_register_invite": "Register by invite",
"txt_log_meta_attachments": "Attachments",
"txt_log_meta_bytes": "Bytes",
"txt_log_meta_changed": "Changed fields",
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch",
"txt_log_meta_cipher_id": "Vault item ID",
"txt_log_meta_ciphers": "Vault items",
"txt_log_meta_compat": "Compatibility",
"txt_log_meta_compressed_bytes": "Compressed bytes",
"txt_log_meta_count": "Count",
"txt_log_meta_deleted": "Deleted count",
"txt_log_meta_destination_count": "Destination count",
"txt_log_meta_destination_id": "Destination ID",
"txt_log_meta_destination_name": "Destination name",
"txt_log_meta_destination_type": "Destination type",
"txt_log_meta_device_identifier": "Device ID",
"txt_log_meta_device_type": "Device type",
"txt_log_meta_email": "Email",
"txt_log_meta_error": "Error",
"txt_log_meta_expires_in_hours": "Expires in hours",
"txt_log_meta_file_bytes": "File bytes",
"txt_log_meta_file_name": "File name",
"txt_log_meta_folder_id": "Folder ID",
"txt_log_meta_grant_type": "Login method",
"txt_log_meta_includes_attachments": "Includes attachments",
"txt_log_meta_ip": "IP address",
"txt_log_meta_max_entries": "Entry limit",
"txt_log_meta_method": "Request method",
"txt_log_meta_path": "Request path",
"txt_log_meta_provider": "Provider",
"txt_log_meta_prune_error": "Cleanup error",
"txt_log_meta_pruned_file_count": "Cleaned files",
"txt_log_meta_raw": "Raw data",
"txt_log_meta_reason": "Reason",
"txt_log_meta_remote_path": "Remote path",
"txt_log_meta_removed": "Removed count",
"txt_log_meta_removed_devices": "Removed devices",
"txt_log_meta_removed_sessions": "Removed sessions",
"txt_log_meta_removed_trusted": "Trust removals",
"txt_log_meta_replace_existing": "Replace existing data",
"txt_log_meta_requested": "Requested count",
"txt_log_meta_requested_count": "Requested count",
"txt_log_meta_retention_days": "Retention days",
"txt_log_meta_scheduled_destination_count": "Scheduled destinations",
"txt_log_meta_size": "Size",
"txt_log_meta_skipped_attachments": "Skipped attachments",
"txt_log_meta_skipped_reason": "Skip reason",
"txt_log_meta_status": "Status",
"txt_log_meta_target_email": "Target email",
"txt_log_meta_trigger": "Trigger",
"txt_log_meta_type": "Type",
"txt_log_meta_updated": "Updated count",
"txt_log_meta_upload_verification_attempts": "Upload verification attempts",
"txt_log_meta_user_agent": "Browser/client",
"txt_log_meta_users": "Users",
"txt_log_meta_verify_devices": "Verify devices",
"txt_log_meta_web_session": "Web session",
"txt_log_reason_bad_api_key": "Bad API key",
"txt_log_reason_bad_password": "Bad password",
"txt_log_reason_device_missing": "Device missing",
"txt_log_reason_device_session_mismatch": "Device session mismatch",
"txt_log_reason_token_not_found_or_expired": "Token missing or expired",
"txt_log_reason_user_inactive": "User inactive",
"txt_log_reason_user_missing": "User missing",
"txt_log_target_type_attachment": "Attachment",
"txt_log_target_type_audit_log": "Log",
"txt_log_target_type_backup": "Backup",
"txt_log_target_type_cipher": "Vault item",
"txt_log_target_type_device": "Device",
"txt_log_target_type_folder": "Folder",
"txt_log_target_type_invite": "Invite",
"txt_log_target_type_refresh_token": "Refresh token",
"txt_log_target_type_send": "Send",
"txt_log_target_type_user": "User",
"txt_log_trigger_manual": "Manual",
"txt_log_trigger_remote": "Remote",
"txt_log_trigger_scheduled": "Scheduled",
"txt_log_max_1000": "До 1 000 записей",
"txt_log_max_5000": "До 5 000 записей",
"txt_log_max_10000": "До 10 000 записей",
"txt_log_max_50000": "До 50 000 записей",
"txt_log_max_entries": "Лимит хранения",
"txt_log_max_unlimited": "Без ограничения записей",
"txt_log_retention_7d": "Хранить 7 дней",
"txt_log_retention_30d": "Хранить 30 дней",
"txt_log_retention_90d": "Хранить 90 дней",
"txt_log_retention_180d": "Хранить 180 дней",
"txt_log_retention_365d": "Хранить 365 дней",
"txt_log_retention_days": "Срок хранения",
"txt_log_retention_forever": "Хранить всегда",
"txt_log_retention_hint": "Автоматически обрезает по возрасту и количеству, чтобы уменьшить использование D1.",
"txt_log_retention_mode": "Режим хранения",
"txt_log_retention_mode_days": "По времени",
"txt_log_retention_mode_entries": "По количеству",
"txt_log_retention_settings": "Хранение журналов",
"txt_log_settings": "Настройки",
"txt_log_settings_save_failed": "Не удалось сохранить настройки журналов",
"txt_log_settings_saved": "Настройки журналов сохранены",
"txt_log_search_placeholder": "Поиск действия, инициатора, цели, пути или метаданных",
"txt_log_total": " всего",
"txt_log_visible": " показано",
"txt_metadata": "Метаданные",
"txt_no_logs_found": "Журналы не найдены",
"txt_no_metadata": "Нет метаданных",
"txt_clear_all_logs": "Очистить журналы",
"txt_clear_logs_confirm": "Очистить все журналы? Это действие нельзя отменить.",
"txt_clear_logs_failed": "Не удалось очистить журналы",
"txt_logs_cleared": "Журналы очищены",
"txt_search": "Поиск",
"txt_target": "Цель",
"txt_time": "Время",
"txt_time_range": "Период",
"txt_remove_domain": "Удалить домен"
};
+185
View File
@@ -2,6 +2,7 @@
const zhCN: Record<string, string> = {
"nav_account_settings": "账户设置",
"nav_admin_panel": "用户管理",
"nav_log_center": "日志中心",
"nav_device_management": "设备管理",
"nav_my_vault": "我的密码库",
"nav_vault_items": "密码库",
@@ -941,6 +942,190 @@ const zhCN: Record<string, string> = {
"txt_nav_layout_grouped_expanded_desc": "父子菜单全部展开",
"txt_nav_layout_grouped_smart": "智能分组",
"txt_nav_layout_grouped_smart_desc": "当前相关分组自动展开",
"txt_actor": "操作者",
"txt_all_levels": "全部级别",
"txt_all_logs": "全部日志",
"txt_all_time": "全部时间",
"txt_audit_events": "日志列表",
"txt_filter": "筛选",
"txt_last_24_hours": "最近 24 小时",
"txt_last_7_days": "最近 7 天",
"txt_last_30_days": "最近 30 天",
"txt_load_logs_failed": "加载日志失败",
"txt_load_log_settings_failed": "加载日志设置失败",
"txt_log_category": "分类",
"txt_log_category_auth": "登录与会话",
"txt_log_category_data": "数据操作",
"txt_log_category_device": "设备",
"txt_log_category_security": "账户安全",
"txt_log_category_system": "系统",
"txt_log_center_description": "查看登录、刷新失败、设备事件、安全变更、备份操作和管理员操作。",
"txt_log_center_title": "日志中心",
"txt_log_level": "级别",
"txt_log_level_error": "错误",
"txt_log_level_info": "信息",
"txt_log_level_security": "安全",
"txt_log_level_warn": "警告",
"txt_log_action_account_api_key_create": "创建 API 密钥",
"txt_log_action_account_api_key_rotate": "轮换 API 密钥",
"txt_log_action_account_keys_update": "更新账户密钥",
"txt_log_action_account_profile_update": "更新账户资料",
"txt_log_action_account_totp_disable": "关闭两步验证",
"txt_log_action_account_totp_enable": "开启两步验证",
"txt_log_action_account_totp_recover": "恢复两步验证",
"txt_log_action_account_verify_devices_update": "更新设备验证设置",
"txt_log_action_admin_audit_settings_update": "更新日志保留设置",
"txt_log_action_admin_backup_export": "导出备份",
"txt_log_action_admin_backup_import": "导入备份",
"txt_log_action_admin_backup_remote_delete": "删除远程备份",
"txt_log_action_admin_backup_remote_manual": "手动远程备份成功",
"txt_log_action_admin_backup_remote_manual_failed": "手动远程备份失败",
"txt_log_action_admin_backup_remote_scheduled": "计划远程备份成功",
"txt_log_action_admin_backup_remote_scheduled_failed": "计划远程备份失败",
"txt_log_action_admin_backup_settings_repair": "修复备份设置",
"txt_log_action_admin_backup_settings_update": "更新备份设置",
"txt_log_action_admin_invite_create": "创建邀请",
"txt_log_action_admin_invite_delete_all": "清空邀请",
"txt_log_action_admin_invite_revoke": "撤销邀请",
"txt_log_action_admin_user_delete": "删除用户",
"txt_log_action_admin_user_status": "修改用户状态",
"txt_log_action_attachment_delete": "删除附件",
"txt_log_action_auth_login_failed_bad_api_key": "API 密钥错误登录失败",
"txt_log_action_auth_login_failed_bad_password": "密码错误登录失败",
"txt_log_action_auth_login_failed_user_inactive": "账号停用登录失败",
"txt_log_action_auth_login_success": "登录成功",
"txt_log_action_auth_refresh_failed": "刷新登录失败:{reason}",
"txt_log_action_cipher_delete_permanent": "永久删除密码项",
"txt_log_action_cipher_delete_permanent_bulk": "批量永久删除密码项",
"txt_log_action_cipher_delete_soft": "删除到回收站",
"txt_log_action_cipher_delete_soft_bulk": "批量删除到回收站",
"txt_log_action_device_deactivate": "停用设备",
"txt_log_action_device_delete": "删除设备",
"txt_log_action_device_delete_all": "删除全部设备",
"txt_log_action_device_name_update": "修改设备名称",
"txt_log_action_device_trust_permanent": "永久信任设备",
"txt_log_action_device_trust_revoke": "撤销设备信任",
"txt_log_action_device_trust_revoke_batch": "批量撤销设备信任",
"txt_log_action_folder_delete": "删除文件夹",
"txt_log_action_folder_delete_bulk": "批量删除文件夹",
"txt_log_action_send_auth_remove": "移除 Send 验证",
"txt_log_action_send_delete": "删除 Send",
"txt_log_action_send_delete_bulk": "批量删除 Send",
"txt_log_action_send_password_remove": "移除 Send 密码",
"txt_log_action_user_password_change": "修改主密码",
"txt_log_action_user_register_first_admin": "注册首个管理员",
"txt_log_action_user_register_invite": "通过邀请注册",
"txt_log_meta_attachments": "附件数",
"txt_log_meta_bytes": "字节数",
"txt_log_meta_changed": "变更项",
"txt_log_meta_checksum_mismatch_accepted": "已接受校验不一致",
"txt_log_meta_cipher_id": "密码项 ID",
"txt_log_meta_ciphers": "密码项数量",
"txt_log_meta_compat": "兼容信息",
"txt_log_meta_compressed_bytes": "压缩后字节数",
"txt_log_meta_count": "数量",
"txt_log_meta_deleted": "已删除数量",
"txt_log_meta_destination_count": "备份目标数量",
"txt_log_meta_destination_id": "备份目标 ID",
"txt_log_meta_destination_name": "备份目标名称",
"txt_log_meta_destination_type": "备份目标类型",
"txt_log_meta_device_identifier": "设备 ID",
"txt_log_meta_device_type": "设备类型",
"txt_log_meta_email": "邮箱",
"txt_log_meta_error": "错误",
"txt_log_meta_expires_in_hours": "过期小时数",
"txt_log_meta_file_bytes": "文件字节数",
"txt_log_meta_file_name": "文件名",
"txt_log_meta_folder_id": "文件夹 ID",
"txt_log_meta_grant_type": "登录方式",
"txt_log_meta_includes_attachments": "包含附件",
"txt_log_meta_ip": "IP 地址",
"txt_log_meta_max_entries": "条数上限",
"txt_log_meta_method": "请求方法",
"txt_log_meta_path": "请求路径",
"txt_log_meta_provider": "服务提供方",
"txt_log_meta_prune_error": "清理错误",
"txt_log_meta_pruned_file_count": "已清理文件数",
"txt_log_meta_raw": "原始数据",
"txt_log_meta_reason": "原因",
"txt_log_meta_remote_path": "远程路径",
"txt_log_meta_removed": "已移除数量",
"txt_log_meta_removed_devices": "已移除设备数",
"txt_log_meta_removed_sessions": "已移除会话数",
"txt_log_meta_removed_trusted": "已撤销信任数",
"txt_log_meta_replace_existing": "覆盖现有数据",
"txt_log_meta_requested": "请求数量",
"txt_log_meta_requested_count": "请求数量",
"txt_log_meta_retention_days": "保留天数",
"txt_log_meta_scheduled_destination_count": "已计划备份目标数",
"txt_log_meta_size": "大小",
"txt_log_meta_skipped_attachments": "跳过附件数",
"txt_log_meta_skipped_reason": "跳过原因",
"txt_log_meta_status": "状态",
"txt_log_meta_target_email": "目标邮箱",
"txt_log_meta_trigger": "触发方式",
"txt_log_meta_type": "类型",
"txt_log_meta_updated": "已更新数量",
"txt_log_meta_upload_verification_attempts": "上传校验次数",
"txt_log_meta_user_agent": "浏览器/客户端",
"txt_log_meta_users": "用户数量",
"txt_log_meta_verify_devices": "验证设备",
"txt_log_meta_web_session": "网页会话",
"txt_log_reason_bad_api_key": "API 密钥错误",
"txt_log_reason_bad_password": "密码错误",
"txt_log_reason_device_missing": "设备不存在",
"txt_log_reason_device_session_mismatch": "设备会话不匹配",
"txt_log_reason_token_not_found_or_expired": "令牌不存在或已过期",
"txt_log_reason_user_inactive": "用户未启用",
"txt_log_reason_user_missing": "用户不存在",
"txt_log_target_type_attachment": "附件",
"txt_log_target_type_audit_log": "日志",
"txt_log_target_type_backup": "备份",
"txt_log_target_type_cipher": "密码项",
"txt_log_target_type_device": "设备",
"txt_log_target_type_folder": "文件夹",
"txt_log_target_type_invite": "邀请",
"txt_log_target_type_refresh_token": "刷新令牌",
"txt_log_target_type_send": "Send",
"txt_log_target_type_user": "用户",
"txt_log_trigger_manual": "手动",
"txt_log_trigger_remote": "远程",
"txt_log_trigger_scheduled": "计划任务",
"txt_log_max_1000": "最多 1,000 条",
"txt_log_max_5000": "最多 5,000 条",
"txt_log_max_10000": "最多 10,000 条",
"txt_log_max_50000": "最多 50,000 条",
"txt_log_max_entries": "容量上限",
"txt_log_max_unlimited": "不限制条数",
"txt_log_retention_7d": "保留 7 天",
"txt_log_retention_30d": "保留 30 天",
"txt_log_retention_90d": "保留 90 天",
"txt_log_retention_180d": "保留 180 天",
"txt_log_retention_365d": "保留 365 天",
"txt_log_retention_days": "保留时间",
"txt_log_retention_forever": "永久保留",
"txt_log_retention_hint": "按时间和最大条数自动收缩,减少 D1 存储占用。",
"txt_log_retention_mode": "保留方式",
"txt_log_retention_mode_days": "按时间",
"txt_log_retention_mode_entries": "按条数",
"txt_log_retention_settings": "日志保留",
"txt_log_settings": "设置",
"txt_log_settings_save_failed": "保存日志设置失败",
"txt_log_settings_saved": "日志设置已保存",
"txt_log_search_placeholder": "搜索动作、操作者、目标、请求路径或元数据",
"txt_log_total": " 条总数",
"txt_log_visible": " 条显示",
"txt_metadata": "元数据",
"txt_no_logs_found": "没有找到日志",
"txt_no_metadata": "没有元数据",
"txt_clear_all_logs": "清空日志",
"txt_clear_logs_confirm": "确定清空全部日志吗?此操作无法撤销。",
"txt_clear_logs_failed": "清空日志失败",
"txt_logs_cleared": "日志已清空",
"txt_search": "搜索",
"txt_target": "目标",
"txt_time": "时间",
"txt_time_range": "时间范围",
"txt_remove_domain": "移除域名"
};
+185
View File
@@ -2,6 +2,7 @@
const zhTW: Record<string, string> = {
"nav_account_settings": "賬戶設置",
"nav_admin_panel": "用戶管理",
"nav_log_center": "日誌中心",
"nav_device_management": "設備管理",
"nav_my_vault": "我的密碼庫",
"nav_vault_items": "密碼庫",
@@ -941,6 +942,190 @@ const zhTW: Record<string, string> = {
"txt_nav_layout_grouped_expanded_desc": "父子選單全部展開",
"txt_nav_layout_grouped_smart": "智能分組",
"txt_nav_layout_grouped_smart_desc": "目前相關分組自動展開",
"txt_actor": "操作者",
"txt_all_levels": "全部級別",
"txt_all_logs": "全部日誌",
"txt_all_time": "全部時間",
"txt_audit_events": "日誌列表",
"txt_filter": "篩選",
"txt_last_24_hours": "最近 24 小時",
"txt_last_7_days": "最近 7 天",
"txt_last_30_days": "最近 30 天",
"txt_load_logs_failed": "載入日誌失敗",
"txt_load_log_settings_failed": "載入日誌設定失敗",
"txt_log_category": "分類",
"txt_log_category_auth": "登入與會話",
"txt_log_category_data": "資料操作",
"txt_log_category_device": "設備",
"txt_log_category_security": "賬戶安全",
"txt_log_category_system": "系統",
"txt_log_center_description": "查看登入、刷新失敗、設備事件、安全變更、備份操作和管理員操作。",
"txt_log_center_title": "日誌中心",
"txt_log_level": "級別",
"txt_log_level_error": "錯誤",
"txt_log_level_info": "資訊",
"txt_log_level_security": "安全",
"txt_log_level_warn": "警告",
"txt_log_action_account_api_key_create": "建立 API 金鑰",
"txt_log_action_account_api_key_rotate": "輪換 API 金鑰",
"txt_log_action_account_keys_update": "更新帳戶金鑰",
"txt_log_action_account_profile_update": "更新帳戶資料",
"txt_log_action_account_totp_disable": "關閉兩步驟登入",
"txt_log_action_account_totp_enable": "開啟兩步驟登入",
"txt_log_action_account_totp_recover": "復原兩步驟登入",
"txt_log_action_account_verify_devices_update": "更新裝置驗證設定",
"txt_log_action_admin_audit_settings_update": "更新日誌保留設定",
"txt_log_action_admin_backup_export": "匯出備份",
"txt_log_action_admin_backup_import": "匯入備份",
"txt_log_action_admin_backup_remote_delete": "刪除遠端備份",
"txt_log_action_admin_backup_remote_manual": "手動遠端備份成功",
"txt_log_action_admin_backup_remote_manual_failed": "手動遠端備份失敗",
"txt_log_action_admin_backup_remote_scheduled": "排程遠端備份成功",
"txt_log_action_admin_backup_remote_scheduled_failed": "排程遠端備份失敗",
"txt_log_action_admin_backup_settings_repair": "修復備份設定",
"txt_log_action_admin_backup_settings_update": "更新備份設定",
"txt_log_action_admin_invite_create": "建立邀請",
"txt_log_action_admin_invite_delete_all": "清空邀請",
"txt_log_action_admin_invite_revoke": "撤銷邀請",
"txt_log_action_admin_user_delete": "刪除使用者",
"txt_log_action_admin_user_status": "修改使用者狀態",
"txt_log_action_attachment_delete": "刪除附件",
"txt_log_action_auth_login_failed_bad_api_key": "API 金鑰錯誤登入失敗",
"txt_log_action_auth_login_failed_bad_password": "密碼錯誤登入失敗",
"txt_log_action_auth_login_failed_user_inactive": "帳號停用登入失敗",
"txt_log_action_auth_login_success": "登入成功",
"txt_log_action_auth_refresh_failed": "刷新登入失敗:{reason}",
"txt_log_action_cipher_delete_permanent": "永久刪除密碼項",
"txt_log_action_cipher_delete_permanent_bulk": "批次永久刪除密碼項",
"txt_log_action_cipher_delete_soft": "刪除到回收桶",
"txt_log_action_cipher_delete_soft_bulk": "批次刪除到回收桶",
"txt_log_action_device_deactivate": "停用裝置",
"txt_log_action_device_delete": "刪除裝置",
"txt_log_action_device_delete_all": "刪除全部裝置",
"txt_log_action_device_name_update": "修改裝置名稱",
"txt_log_action_device_trust_permanent": "永久信任裝置",
"txt_log_action_device_trust_revoke": "撤銷裝置信任",
"txt_log_action_device_trust_revoke_batch": "批次撤銷裝置信任",
"txt_log_action_folder_delete": "刪除資料夾",
"txt_log_action_folder_delete_bulk": "批次刪除資料夾",
"txt_log_action_send_auth_remove": "移除 Send 驗證",
"txt_log_action_send_delete": "刪除 Send",
"txt_log_action_send_delete_bulk": "批次刪除 Send",
"txt_log_action_send_password_remove": "移除 Send 密碼",
"txt_log_action_user_password_change": "修改主密碼",
"txt_log_action_user_register_first_admin": "註冊首個管理員",
"txt_log_action_user_register_invite": "透過邀請註冊",
"txt_log_meta_attachments": "附件數",
"txt_log_meta_bytes": "位元組數",
"txt_log_meta_changed": "變更項",
"txt_log_meta_checksum_mismatch_accepted": "已接受校驗不一致",
"txt_log_meta_cipher_id": "密碼項 ID",
"txt_log_meta_ciphers": "密碼項數量",
"txt_log_meta_compat": "相容資訊",
"txt_log_meta_compressed_bytes": "壓縮後位元組數",
"txt_log_meta_count": "數量",
"txt_log_meta_deleted": "已刪除數量",
"txt_log_meta_destination_count": "備份目標數量",
"txt_log_meta_destination_id": "備份目標 ID",
"txt_log_meta_destination_name": "備份目標名稱",
"txt_log_meta_destination_type": "備份目標類型",
"txt_log_meta_device_identifier": "裝置 ID",
"txt_log_meta_device_type": "裝置類型",
"txt_log_meta_email": "信箱",
"txt_log_meta_error": "錯誤",
"txt_log_meta_expires_in_hours": "過期小時數",
"txt_log_meta_file_bytes": "檔案位元組數",
"txt_log_meta_file_name": "檔案名稱",
"txt_log_meta_folder_id": "資料夾 ID",
"txt_log_meta_grant_type": "登入方式",
"txt_log_meta_includes_attachments": "包含附件",
"txt_log_meta_ip": "IP 位址",
"txt_log_meta_max_entries": "筆數上限",
"txt_log_meta_method": "請求方法",
"txt_log_meta_path": "請求路徑",
"txt_log_meta_provider": "服務提供方",
"txt_log_meta_prune_error": "清理錯誤",
"txt_log_meta_pruned_file_count": "已清理檔案數",
"txt_log_meta_raw": "原始資料",
"txt_log_meta_reason": "原因",
"txt_log_meta_remote_path": "遠端路徑",
"txt_log_meta_removed": "已移除數量",
"txt_log_meta_removed_devices": "已移除裝置數",
"txt_log_meta_removed_sessions": "已移除工作階段數",
"txt_log_meta_removed_trusted": "已撤銷信任數",
"txt_log_meta_replace_existing": "覆蓋現有資料",
"txt_log_meta_requested": "請求數量",
"txt_log_meta_requested_count": "請求數量",
"txt_log_meta_retention_days": "保留天數",
"txt_log_meta_scheduled_destination_count": "已排程備份目標數",
"txt_log_meta_size": "大小",
"txt_log_meta_skipped_attachments": "略過附件數",
"txt_log_meta_skipped_reason": "略過原因",
"txt_log_meta_status": "狀態",
"txt_log_meta_target_email": "目標信箱",
"txt_log_meta_trigger": "觸發方式",
"txt_log_meta_type": "類型",
"txt_log_meta_updated": "已更新數量",
"txt_log_meta_upload_verification_attempts": "上傳校驗次數",
"txt_log_meta_user_agent": "瀏覽器/用戶端",
"txt_log_meta_users": "使用者數量",
"txt_log_meta_verify_devices": "驗證裝置",
"txt_log_meta_web_session": "網頁工作階段",
"txt_log_reason_bad_api_key": "API 金鑰錯誤",
"txt_log_reason_bad_password": "密碼錯誤",
"txt_log_reason_device_missing": "裝置不存在",
"txt_log_reason_device_session_mismatch": "裝置工作階段不相符",
"txt_log_reason_token_not_found_or_expired": "權杖不存在或已過期",
"txt_log_reason_user_inactive": "使用者未啟用",
"txt_log_reason_user_missing": "使用者不存在",
"txt_log_target_type_attachment": "附件",
"txt_log_target_type_audit_log": "日誌",
"txt_log_target_type_backup": "備份",
"txt_log_target_type_cipher": "密碼項",
"txt_log_target_type_device": "裝置",
"txt_log_target_type_folder": "資料夾",
"txt_log_target_type_invite": "邀請",
"txt_log_target_type_refresh_token": "刷新權杖",
"txt_log_target_type_send": "Send",
"txt_log_target_type_user": "使用者",
"txt_log_trigger_manual": "手動",
"txt_log_trigger_remote": "遠端",
"txt_log_trigger_scheduled": "排程工作",
"txt_log_max_1000": "最多 1,000 筆",
"txt_log_max_5000": "最多 5,000 筆",
"txt_log_max_10000": "最多 10,000 筆",
"txt_log_max_50000": "最多 50,000 筆",
"txt_log_max_entries": "容量上限",
"txt_log_max_unlimited": "不限制筆數",
"txt_log_retention_7d": "保留 7 天",
"txt_log_retention_30d": "保留 30 天",
"txt_log_retention_90d": "保留 90 天",
"txt_log_retention_180d": "保留 180 天",
"txt_log_retention_365d": "保留 365 天",
"txt_log_retention_days": "保留時間",
"txt_log_retention_forever": "永久保留",
"txt_log_retention_hint": "按時間和最大筆數自動收縮,減少 D1 儲存占用。",
"txt_log_retention_mode": "保留方式",
"txt_log_retention_mode_days": "按時間",
"txt_log_retention_mode_entries": "按筆數",
"txt_log_retention_settings": "日誌保留",
"txt_log_settings": "設定",
"txt_log_settings_save_failed": "儲存日誌設定失敗",
"txt_log_settings_saved": "日誌設定已儲存",
"txt_log_search_placeholder": "搜尋動作、操作者、目標、請求路徑或元資料",
"txt_log_total": " 條總數",
"txt_log_visible": " 條顯示",
"txt_metadata": "元資料",
"txt_no_logs_found": "沒有找到日誌",
"txt_no_metadata": "沒有元資料",
"txt_clear_all_logs": "清空日誌",
"txt_clear_logs_confirm": "確定清空全部日誌嗎?此操作無法復原。",
"txt_clear_logs_failed": "清空日誌失敗",
"txt_logs_cleared": "日誌已清空",
"txt_search": "搜尋",
"txt_target": "目標",
"txt_time": "時間",
"txt_time_range": "時間範圍",
"txt_remove_domain": "移除域名"
};
+36
View File
@@ -281,6 +281,11 @@ export interface VaultDraft {
export interface ListResponse<T> {
object: 'list';
data: T[];
total?: number;
limit?: number;
offset?: number;
hasMore?: boolean;
continuationToken?: string | null;
}
export interface WebBootstrapResponse {
@@ -344,6 +349,37 @@ export interface AdminInvite {
expiresAt?: string;
}
export type AuditLogCategory = 'auth' | 'security' | 'device' | 'data' | 'system';
export type AuditLogLevel = 'info' | 'warn' | 'error' | 'security';
export interface AuditLogEntry {
id: string;
actorUserId: string | null;
actorEmail?: string | null;
action: string;
category: AuditLogCategory;
level: AuditLogLevel;
targetType: string | null;
targetId: string | null;
targetUserEmail?: string | null;
metadata: string | null;
createdAt: string;
object?: 'auditLog';
}
export interface AuditLogSettings {
retentionDays: number | null;
maxEntries: number | null;
}
export interface AuditLogListResult {
logs: AuditLogEntry[];
total: number;
limit: number;
offset: number;
hasMore: boolean;
}
export interface AuthorizedDevice {
id: string;
name: string;