From 7aefb47cc35da381eb091a692f4ac0a69740723f Mon Sep 17 00:00:00 2001 From: ssongliu Date: Mon, 14 Sep 2026 09:40:20 +0800 Subject: [PATCH] fix(firewall): improve rule loading, task labels and panel port cleanup (#13798) --- agent/app/service/firewall.go | 5 +- agent/app/service/firewall_docker.go | 6 +- agent/app/service/firewall_panel_port.go | 55 +++++++++++----- agent/app/service/firewall_rule_task.go | 22 ++++++- agent/app/service/firewall_sync.go | 3 +- agent/app/service/forward.go | 4 +- agent/i18n/lang/en.yaml | 64 +++++++++++-------- agent/i18n/lang/es-ES.yaml | 64 +++++++++++-------- agent/i18n/lang/fa.yaml | 64 +++++++++++-------- agent/i18n/lang/ja.yaml | 64 +++++++++++-------- agent/i18n/lang/ko.yaml | 64 +++++++++++-------- agent/i18n/lang/lo.yaml | 64 +++++++++++-------- agent/i18n/lang/ms.yaml | 64 +++++++++++-------- agent/i18n/lang/pt-BR.yaml | 64 +++++++++++-------- agent/i18n/lang/ru.yaml | 64 +++++++++++-------- agent/i18n/lang/tr.yaml | 64 +++++++++++-------- agent/i18n/lang/zh-Hant.yaml | 64 +++++++++++-------- agent/i18n/lang/zh.yaml | 64 +++++++++++-------- .../filter/providers/firewalld/adapter.go | 11 +++- agent/utils/firewall/filter/safety.go | 11 +++- .../src/views/host/firewall/rule/index.vue | 50 +++++++++++---- 21 files changed, 553 insertions(+), 382 deletions(-) diff --git a/agent/app/service/firewall.go b/agent/app/service/firewall.go index 5825ec93a..dbbded8d5 100644 --- a/agent/app/service/firewall.go +++ b/agent/app/service/firewall.go @@ -271,8 +271,7 @@ func (s *FirewallService) QueueFilterChainInitialization( return dto.FilterChainOperationResponse{}, err } - resourceName := fmt.Sprintf("%s filter", provider) - taskItem, err := task.NewTaskWithOps(resourceName, task.TaskExec, task.TaskScopeFirewall, request.TaskID, 0) + taskItem, err := task.NewTask(firewallTaskName(task.TaskExec, firewallTaskHost, provider), task.TaskExec, task.TaskScopeFirewall, request.TaskID, 0) if err != nil { return dto.FilterChainOperationResponse{}, fmt.Errorf("create firewall initialization task: %w", err) } @@ -812,7 +811,7 @@ func (s *FirewallService) Create( ctx context.Context, request dto.FirewallRuleCreate, ) (dto.FirewallRuleCreateResponse, error) { - taskItem, err := task.NewTaskWithOps("", task.TaskCreate, task.TaskScopeFirewall, "", 0) + taskItem, err := task.NewTask(firewallTaskName(task.TaskCreate, firewallTaskHost, ""), task.TaskCreate, task.TaskScopeFirewall, "", 0) if err != nil { return dto.FirewallRuleCreateResponse{}, err } diff --git a/agent/app/service/firewall_docker.go b/agent/app/service/firewall_docker.go index 3e13494d1..bb0e912dd 100644 --- a/agent/app/service/firewall_docker.go +++ b/agent/app/service/firewall_docker.go @@ -292,7 +292,7 @@ func (s *DockerPortGuardService) QueueInitialization( if err := task.CheckScopeTaskIsExecuting(task.TaskScopeFirewall, 0); err != nil { return dto.FilterChainOperationResponse{}, err } - taskItem, err := task.NewTaskWithOps("Docker port guard", task.TaskExec, task.TaskScopeFirewall, request.TaskID, 0) + taskItem, err := task.NewTask(firewallTaskName(task.TaskExec, firewallTaskDocker, ""), task.TaskExec, task.TaskScopeFirewall, request.TaskID, 0) if err != nil { return dto.FilterChainOperationResponse{}, fmt.Errorf("create Docker port guard initialization task: %w", err) } @@ -346,7 +346,7 @@ func (s *DockerPortGuardService) DeletePolicies(request dto.DockerPortGuardPolic for i, id := range uuids { labels[i] = fmt.Sprintf("[%d/%d] %s", i+1, len(uuids), id) } - return queueFirewallRuleTask("Docker", task.TaskDelete, labels, func(ctx context.Context) error { + return queueFirewallRuleTask(firewallTaskDocker, task.TaskDelete, labels, func(ctx context.Context) error { dockerPortGuardServiceMu.Lock() defer dockerPortGuardServiceMu.Unlock() if err := ctx.Err(); err != nil { @@ -364,7 +364,7 @@ func (s *DockerPortGuardService) UpsertPolicies(request dto.DockerPortGuardPolic for i, policy := range request.Policies { labels[i] = fmt.Sprintf("[%d/%d] %s %s %s:%d %s", i+1, len(request.Policies), policy.Family, policy.Protocol, policy.HostIP, policy.HostPort, policy.Mode) } - return queueFirewallRuleTask("Docker", task.TaskUpdate, labels, func(ctx context.Context) error { + return queueFirewallRuleTask(firewallTaskDocker, task.TaskUpdate, labels, func(ctx context.Context) error { dockerPortGuardServiceMu.Lock() defer dockerPortGuardServiceMu.Unlock() policies := make([]model.DockerPortGuardPolicy, 0, len(request.Policies)) diff --git a/agent/app/service/firewall_panel_port.go b/agent/app/service/firewall_panel_port.go index a026c96cb..d77e3ff14 100644 --- a/agent/app/service/firewall_panel_port.go +++ b/agent/app/service/firewall_panel_port.go @@ -2,6 +2,7 @@ package service import ( "context" + "errors" "fmt" "strconv" @@ -44,49 +45,71 @@ func (s *FirewallService) UpdatePanelPort(ctx context.Context, oldPort, port uin if err != nil { return err } - if supportsManagedFilterChains(provider) { + managedChains := supportsManagedFilterChains(provider) + if managedChains { firewallRuleMutationMu.Lock() defer firewallRuleMutationMu.Unlock() - prepared := append([]firewall.PortWhitelist{{Port: strconv.Itoa(int(oldPort)), Protocol: "tcp"}}, required...) - if err := syncPanelRequiredPorts(provider, prepared); err != nil { - return err - } - warnPanelPortCleanupFailure(oldPort, syncPanelRequiredPorts(provider, required)) - return nil } configured, err := loadConfiguredFirewallPortWhiteList() if err != nil { return err } protected := firewall.NormalizePortWhitelist(append(configured, required...)) + if managedChains { + prepared := append([]firewall.PortWhitelist{{Port: strconv.Itoa(int(oldPort)), Protocol: "tcp"}}, required...) + if err := syncPanelRequiredPorts(provider, prepared); err != nil { + return err + } + if err := syncPanelRequiredPorts(provider, required); err != nil { + warnPanelPortCleanupFailure(oldPort, err) + return nil + } + warnPanelPortCleanupFailure(oldPort, s.cleanupPanelPortLocked(ctx, provider, oldPort, protected)) + return nil + } ports := systemPorts([]firewall.PortWhitelist{{Port: strconv.Itoa(int(port)), Protocol: "tcp"}}) for _, port := range ports { if err := s.ensureSystemPort(ctx, port); err != nil { return err } } + firewallRuleMutationMu.Lock() + defer firewallRuleMutationMu.Unlock() + warnPanelPortCleanupFailure(oldPort, s.cleanupPanelPortLocked(ctx, provider, oldPort, protected)) + return nil +} + +// cleanupPanelPortLocked removes the old system-owned policy as well as any +// remaining managed runtime rule. The caller must hold firewallRuleMutationMu. +func (s *FirewallService) cleanupPanelPortLocked(ctx context.Context, provider string, oldPort uint, protected []firewall.PortWhitelist) error { ctx = context.WithValue(ctx, panelPortWhitelistKey{}, protected) - for index := range ports { - ports[index].Port = strconv.Itoa(int(oldPort)) - } + ports := systemPorts([]firewall.PortWhitelist{{Port: strconv.Itoa(int(oldPort)), Protocol: "tcp"}}) if provider == constant.FirewallProviderUFW { for _, port := range ports { port.Protocol = "all" ports = append(ports, port) } } - if provider == constant.FirewallProviderFirewalld { - ports = append(ports, dto.FirewallSystemPort{Port: strconv.Itoa(int(oldPort)), Protocol: "tcp"}) - } + // Include family-neutral records left by firewalld or older versions, even + // when the selected backend has since changed. + ports = append(ports, dto.FirewallSystemPort{Port: strconv.Itoa(int(oldPort)), Protocol: "tcp"}) + var cleanupErrors []error for _, port := range ports { if panelPortStillRequired(port, protected) { continue } - if err := s.deleteSystemPort(ctx, port); err != nil { - warnPanelPortCleanupFailure(oldPort, err) + records, err := s.systemPortRecords(ctx, port) + if err != nil { + cleanupErrors = append(cleanupErrors, err) + continue + } + for _, record := range records { + if err := s.deleteRule(ctx, record.UUID, true); err != nil && !errors.Is(err, filter.ErrProtectedRule) { + cleanupErrors = append(cleanupErrors, err) + } } } - return nil + return errors.Join(cleanupErrors...) } func warnPanelPortCleanupFailure(port uint, err error) { diff --git a/agent/app/service/firewall_rule_task.go b/agent/app/service/firewall_rule_task.go index 70f9dfae4..443c858d0 100644 --- a/agent/app/service/firewall_rule_task.go +++ b/agent/app/service/firewall_rule_task.go @@ -12,8 +12,26 @@ import ( "github.com/1Panel-dev/1Panel/agent/i18n" ) -func queueFirewallRuleTask(name, operation string, labels []string, apply func(context.Context) error) (dto.FilterChainOperationResponse, error) { - taskItem, err := task.NewTaskWithOps(name, operation, task.TaskScopeFirewall, "", 0) +const ( + firewallTaskHost = "FirewallTaskHost" + firewallTaskForwarding = "FirewallTaskForwarding" + firewallTaskDocker = "FirewallTaskDocker" +) + +func firewallTaskName(operation, subsystem, backend string) string { + name := i18n.GetMsgByKey(subsystem) + if backend != "" { + name += " · " + backend + } + key := "FirewallRule" + operation + if operation == task.TaskExec { + key = "FirewallTaskInitialize" + } + return i18n.GetMsgWithMap(key, map[string]interface{}{"name": name}) +} + +func queueFirewallRuleTask(subsystem, operation string, labels []string, apply func(context.Context) error) (dto.FilterChainOperationResponse, error) { + taskItem, err := task.NewTask(firewallTaskName(operation, subsystem, ""), operation, task.TaskScopeFirewall, "", 0) if err != nil { return dto.FilterChainOperationResponse{}, err } diff --git a/agent/app/service/firewall_sync.go b/agent/app/service/firewall_sync.go index 26830dc9c..05f64c026 100644 --- a/agent/app/service/firewall_sync.go +++ b/agent/app/service/firewall_sync.go @@ -406,8 +406,7 @@ func (s *FirewallService) syncSystemRules( if firewallSyncSubsystem(request.Subsystem) != "system" { return dto.FirewallRuleSyncResult{}, fmt.Errorf("%w: firewall synchronization tasks are only available for the system firewall", filter.ErrInvalidRule) } - resourceName := fmt.Sprintf("database -> %s", request.TargetProvider) - taskItem, err := task.NewTaskWithOps(resourceName, task.TaskSync, task.TaskScopeFirewall, "", 0) + taskItem, err := task.NewTask(firewallTaskName(task.TaskSync, firewallTaskHost, string(request.TargetProvider)), task.TaskSync, task.TaskScopeFirewall, "", 0) if err != nil { return dto.FirewallRuleSyncResult{}, fmt.Errorf("create firewall sync task: %w", err) } diff --git a/agent/app/service/forward.go b/agent/app/service/forward.go index 474cff304..0d3e058a4 100644 --- a/agent/app/service/forward.go +++ b/agent/app/service/forward.go @@ -204,7 +204,7 @@ func (s *ForwardingService) OperateRules(request dto.ForwardRuleOperate) (dto.Fi if forwardingOperationsOnlyRemove(request.Rules) { operation = task.TaskDelete } - return queueFirewallRuleTask("Forwarding", operation, labels, func(ctx context.Context) error { + return queueFirewallRuleTask(firewallTaskForwarding, operation, labels, func(ctx context.Context) error { return s.operateRules(ctx, request) }) } @@ -274,7 +274,7 @@ func (s *ForwardingService) QueueInitialization( if err := task.CheckScopeTaskIsExecuting(task.TaskScopeFirewall, 0); err != nil { return dto.FilterChainOperationResponse{}, err } - taskItem, err := task.NewTaskWithOps("port forwarding", task.TaskExec, task.TaskScopeFirewall, request.TaskID, 0) + taskItem, err := task.NewTask(firewallTaskName(task.TaskExec, firewallTaskForwarding, ""), task.TaskExec, task.TaskScopeFirewall, request.TaskID, 0) if err != nil { return dto.FilterChainOperationResponse{}, fmt.Errorf("create forwarding initialization task: %w", err) } diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index abefad70b..04e8340e9 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'Installed apps detected; uninstall first' ErrCustomRuntimes: 'Installed runtimes detected; delete first' ErrAppVersionDeprecated: "The {{ .name }} application is not compatible with the current 1Panel version, skipped" ErrDockerFailed: 'Docker is abnormal; check service status' -ErrDockerIptablesChainUnavailable: 'The Docker DOCKER-USER chain was not found. Restart Docker and try again' -ErrDockerNftablesChainUnavailable: 'The Docker nftables IPv4 firewall chain was not found. Verify that the current Docker version supports the nftables firewall backend, restart Docker, and try again' -ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD defaults to DROP. Adjust the policy and retry' -ErrUFWRuleAdopt: 'Failed to adopt the UFW rule: {{ .detail }}. If the installed UFW version is earlier than 0.35, upgrade UFW and try again' ErrDockerComposeCmdNotFound: 'Docker Compose not found on host' UseExistImage: 'Image exists; using existing image' UpgradePrepare: 'Prepare application upgrade' @@ -510,29 +506,6 @@ Container: 'Container' AppLink: 'Linked Application' EnableSSL: 'Enable HTTPS' AppStore: 'App Store' -Firewall: 'Firewall' -FirewallCreateRulesStep: 'Create firewall rules' -FirewallCreateRulesResult: 'Creation result: {{ .succeeded }} succeeded, {{ .failed }} failed, {{ .skipped }} not executed' -FirewallRuleOperationResult: 'Operation result: {{ .succeeded }} succeeded, {{ .failed }} failed' -FirewallCreateRuleSkipped: 'Not executed' -FirewallCreateBatchStep: 'Submit {{ .count }} rules as a batch to {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; converted to {{ .count }} rules' -FirewallCreateRuleExecutionFailed: 'Rule creation failed; no database record was saved and executed commands were not rolled back' -FirewallCreateRulePersistenceFailed: 'The rule was created, but its management record could not be saved' -FirewallAdoptRulePersistenceFailed: 'The rule was adopted, but its management record could not be saved' -FirewallSyncOperationsResult: 'Synchronization operations: {{ .removed }} deleted, {{ .created }} created, {{ .failed }} failed, {{ .skipped }} not executed' -FirewallSyncStep: 'Synchronize rules to {{ .name }}' -FirewallSyncFailed: '{{ .failed }} firewall rules failed to synchronize' -FirewallResetSourceStep: 'Reset and disable source firewall {{ .name }}' -FirewallResetSourceResult: 'Source firewall reset completed; {{ .removed }} database rules were deleted' -FirewallInitializeChainsStep: 'Initialize and bind {{ .name }} base chains' -FirewallRestoreRulesStep: 'Restore database rules to {{ .name }}' -FirewallSyncWhitelistStep: 'Synchronize firewall port whitelist' -FirewallEnableForwardingStep: 'Enable and bind port forwarding chains' -FirewallRestoreForwardingRulesStep: 'Restore database port forwarding rules' -FirewallInspectDockerGuardStep: 'Inspect Docker firewall backend and policies' -FirewallInitializeDockerGuardStep: 'Initialize and bind {{ .name }} port guard chains' -FirewallPersistDockerGuardStep: 'Persist Docker port guard status' TaskSync: 'Sync' LocalApp: 'Local Application' SubTask: 'Subtask' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'The Docker DOCKER-USER chain was not found. Restart Docker and try again' +ErrDockerNftablesChainUnavailable: 'The Docker nftables IPv4 firewall chain was not found. Verify that the current Docker version supports the nftables firewall backend, restart Docker, and try again' +ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD defaults to DROP. Adjust the policy and retry' +ErrUFWRuleAdopt: 'Failed to adopt the UFW rule: {{ .detail }}. If the installed UFW version is earlier than 0.35, upgrade UFW and try again' +Firewall: 'Firewall' +FirewallTaskHost: 'Host firewall' +FirewallTaskForwarding: 'Port forwarding' +FirewallTaskDocker: 'Container port protection' +FirewallRuleTaskCreate: 'Create firewall rules [{{ .name }}]' +FirewallRuleTaskUpdate: 'Update firewall rules [{{ .name }}]' +FirewallRuleTaskDelete: 'Delete firewall rules [{{ .name }}]' +FirewallRuleTaskSync: 'Synchronize firewall rules [{{ .name }}]' +FirewallTaskInitialize: 'Initialize firewall [{{ .name }}]' +FirewallCreateRulesStep: 'Create firewall rules' +FirewallCreateRulesResult: 'Creation result: {{ .succeeded }} succeeded, {{ .failed }} failed, {{ .skipped }} not executed' +FirewallRuleOperationResult: 'Operation result: {{ .succeeded }} succeeded, {{ .failed }} failed' +FirewallCreateRuleSkipped: 'Not executed' +FirewallCreateBatchStep: 'Submit {{ .count }} rules as a batch to {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; converted to {{ .count }} rules' +FirewallCreateRuleExecutionFailed: 'Rule creation failed; no database record was saved and executed commands were not rolled back' +FirewallCreateRulePersistenceFailed: 'The rule was created, but its management record could not be saved' +FirewallAdoptRulePersistenceFailed: 'The rule was adopted, but its management record could not be saved' +FirewallSyncOperationsResult: 'Synchronization operations: {{ .removed }} deleted, {{ .created }} created, {{ .failed }} failed, {{ .skipped }} not executed' +FirewallSyncStep: 'Synchronize rules to {{ .name }}' +FirewallSyncFailed: '{{ .failed }} firewall rules failed to synchronize' +FirewallResetSourceStep: 'Reset and disable source firewall {{ .name }}' +FirewallResetSourceResult: 'Source firewall reset completed; {{ .removed }} database rules were deleted' +FirewallInitializeChainsStep: 'Initialize and bind {{ .name }} base chains' +FirewallRestoreRulesStep: 'Restore database rules to {{ .name }}' +FirewallSyncWhitelistStep: 'Synchronize firewall port whitelist' +FirewallEnableForwardingStep: 'Enable and bind port forwarding chains' +FirewallRestoreForwardingRulesStep: 'Restore database port forwarding rules' +FirewallInspectDockerGuardStep: 'Inspect Docker firewall backend and policies' +FirewallInitializeDockerGuardStep: 'Initialize and bind {{ .name }} port guard chains' +FirewallPersistDockerGuardStep: 'Persist Docker port guard status' ErrFirewallRuleScopeChange: "The current firewall does not support changing a rule's scope (such as its IPv4/IPv6 address family). Please create a new rule." FirewallWhitelistTask: "Update firewall port whitelist" FirewallWhitelistSaved: "Whitelist configuration saved" diff --git a/agent/i18n/lang/es-ES.yaml b/agent/i18n/lang/es-ES.yaml index 9bcd4e5b9..962252bf5 100644 --- a/agent/i18n/lang/es-ES.yaml +++ b/agent/i18n/lang/es-ES.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'Hay una aplicación instalada, desinstálela primero' ErrCustomRuntimes: 'Hay un entorno de ejecución instalado, elimínelo primero' ErrAppVersionDeprecated: 'La aplicación {{ .name }} no es compatible con la versión actual de 1Panel, omitida' ErrDockerFailed: 'El estado de Docker es anómalo, revise el servicio' -ErrDockerIptablesChainUnavailable: 'No se encontró la cadena DOCKER-USER de Docker. Reinicie Docker y vuelva a intentarlo' -ErrDockerNftablesChainUnavailable: 'No se encontró la cadena de firewall IPv4 de nftables de Docker. Compruebe que la versión actual de Docker admita el backend de firewall nftables, reinicie Docker y vuelva a intentarlo' -ErrDockerForwardPolicyDrop: 'La política predeterminada de FORWARD para {{ .family }} es DROP. Ajústela y vuelva a intentarlo' -ErrUFWRuleAdopt: 'No se pudo administrar la regla UFW: {{ .detail }}. Si la versión actual de UFW es anterior a 0.35, actualice UFW y vuelva a intentarlo' ErrDockerComposeCmdNotFound: 'El comando Docker Compose no existe instálelo primero en el host' UseExistImage: 'La imagen ya existe, usando imagen existente' UpgradePrepare: 'Preparar actualización de la aplicación' @@ -510,29 +506,6 @@ Container: 'Contenedor' AppLink: 'Aplicación enlazada' EnableSSL: 'Habilitar HTTPS' AppStore: 'Tienda de aplicaciones' -Firewall: 'Firewall' -FirewallCreateRulesStep: 'Crear reglas de cortafuegos' -FirewallCreateRulesResult: 'Resultado de creación: {{ .succeeded }} correctas, {{ .failed }} fallidas, {{ .skipped }} sin ejecutar' -FirewallRuleOperationResult: 'Resultado de la operación: {{ .succeeded }} correctas, {{ .failed }} fallidas' -FirewallCreateRuleSkipped: 'Sin ejecutar' -FirewallCreateBatchStep: 'Enviar {{ .count }} reglas en un lote a {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; convertido en {{ .count }} reglas' -FirewallCreateRuleExecutionFailed: 'Error al crear la regla. No se guardó ningún registro en la base de datos ni se revirtieron los comandos ejecutados' -FirewallCreateRulePersistenceFailed: 'La regla se creó, pero no se pudo guardar su registro de gestión' -FirewallAdoptRulePersistenceFailed: 'Se ejecutó la adopción de la regla, pero no se pudo guardar su registro de gestión' -FirewallSyncOperationsResult: 'Operaciones de sincronización: {{ .removed }} eliminadas, {{ .created }} creadas, {{ .failed }} fallidas, {{ .skipped }} sin ejecutar' -FirewallSyncStep: 'Sincronizar reglas con {{ .name }}' -FirewallSyncFailed: 'No se pudieron sincronizar {{ .failed }} reglas del firewall' -FirewallResetSourceStep: 'Restablecer y desactivar el firewall de origen {{ .name }}' -FirewallResetSourceResult: 'Firewall de origen restablecido; se eliminaron {{ .removed }} reglas de la base de datos' -FirewallInitializeChainsStep: 'Inicializar y vincular las cadenas base de {{ .name }}' -FirewallRestoreRulesStep: 'Restaurar las reglas de la base de datos en {{ .name }}' -FirewallSyncWhitelistStep: 'Sincronizar la lista de puertos permitidos del firewall' -FirewallEnableForwardingStep: 'Habilitar y vincular las cadenas de reenvío de puertos' -FirewallRestoreForwardingRulesStep: 'Restaurar las reglas de reenvío de puertos de la base de datos' -FirewallInspectDockerGuardStep: 'Inspeccionar el backend del firewall de Docker y las políticas' -FirewallInitializeDockerGuardStep: 'Inicializar y vincular las cadenas de protección de puertos de {{ .name }}' -FirewallPersistDockerGuardStep: 'Guardar el estado de protección de puertos de Docker' TaskSync: 'Sincronizar' LocalApp: 'Aplicación local' SubTask: 'Subtarea' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'No se encontró la cadena DOCKER-USER de Docker. Reinicie Docker y vuelva a intentarlo' +ErrDockerNftablesChainUnavailable: 'No se encontró la cadena de firewall IPv4 de nftables de Docker. Compruebe que la versión actual de Docker admita el backend de firewall nftables, reinicie Docker y vuelva a intentarlo' +ErrDockerForwardPolicyDrop: 'La política predeterminada de FORWARD para {{ .family }} es DROP. Ajústela y vuelva a intentarlo' +ErrUFWRuleAdopt: 'No se pudo administrar la regla UFW: {{ .detail }}. Si la versión actual de UFW es anterior a 0.35, actualice UFW y vuelva a intentarlo' +Firewall: 'Firewall' +FirewallTaskHost: 'Cortafuegos del host' +FirewallTaskForwarding: 'Reenvío de puertos' +FirewallTaskDocker: 'Protección de puertos de contenedores' +FirewallRuleTaskCreate: 'Crear reglas de cortafuegos [{{ .name }}]' +FirewallRuleTaskUpdate: 'Actualizar reglas de cortafuegos [{{ .name }}]' +FirewallRuleTaskDelete: 'Eliminar reglas de cortafuegos [{{ .name }}]' +FirewallRuleTaskSync: 'Sincronizar reglas de cortafuegos [{{ .name }}]' +FirewallTaskInitialize: 'Inicializar cortafuegos [{{ .name }}]' +FirewallCreateRulesStep: 'Crear reglas de cortafuegos' +FirewallCreateRulesResult: 'Resultado de creación: {{ .succeeded }} correctas, {{ .failed }} fallidas, {{ .skipped }} sin ejecutar' +FirewallRuleOperationResult: 'Resultado de la operación: {{ .succeeded }} correctas, {{ .failed }} fallidas' +FirewallCreateRuleSkipped: 'Sin ejecutar' +FirewallCreateBatchStep: 'Enviar {{ .count }} reglas en un lote a {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; convertido en {{ .count }} reglas' +FirewallCreateRuleExecutionFailed: 'Error al crear la regla. No se guardó ningún registro en la base de datos ni se revirtieron los comandos ejecutados' +FirewallCreateRulePersistenceFailed: 'La regla se creó, pero no se pudo guardar su registro de gestión' +FirewallAdoptRulePersistenceFailed: 'Se ejecutó la adopción de la regla, pero no se pudo guardar su registro de gestión' +FirewallSyncOperationsResult: 'Operaciones de sincronización: {{ .removed }} eliminadas, {{ .created }} creadas, {{ .failed }} fallidas, {{ .skipped }} sin ejecutar' +FirewallSyncStep: 'Sincronizar reglas con {{ .name }}' +FirewallSyncFailed: 'No se pudieron sincronizar {{ .failed }} reglas del firewall' +FirewallResetSourceStep: 'Restablecer y desactivar el firewall de origen {{ .name }}' +FirewallResetSourceResult: 'Firewall de origen restablecido; se eliminaron {{ .removed }} reglas de la base de datos' +FirewallInitializeChainsStep: 'Inicializar y vincular las cadenas base de {{ .name }}' +FirewallRestoreRulesStep: 'Restaurar las reglas de la base de datos en {{ .name }}' +FirewallSyncWhitelistStep: 'Sincronizar la lista de puertos permitidos del firewall' +FirewallEnableForwardingStep: 'Habilitar y vincular las cadenas de reenvío de puertos' +FirewallRestoreForwardingRulesStep: 'Restaurar las reglas de reenvío de puertos de la base de datos' +FirewallInspectDockerGuardStep: 'Inspeccionar el backend del firewall de Docker y las políticas' +FirewallInitializeDockerGuardStep: 'Inicializar y vincular las cadenas de protección de puertos de {{ .name }}' +FirewallPersistDockerGuardStep: 'Guardar el estado de protección de puertos de Docker' ErrFirewallRuleScopeChange: "El cortafuegos actual no permite cambiar el ámbito de una regla (como su familia de direcciones IPv4/IPv6). Cree una regla nueva." FirewallWhitelistTask: "Actualizar la lista de puertos permitidos del cortafuegos" FirewallWhitelistSaved: "Configuración de la lista de permitidos guardada" diff --git a/agent/i18n/lang/fa.yaml b/agent/i18n/lang/fa.yaml index 80b4deec2..af07bc6e4 100644 --- a/agent/i18n/lang/fa.yaml +++ b/agent/i18n/lang/fa.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'برنامه‌های نصب شده شناسایی شدند؛ ا ErrCustomRuntimes: 'محیط‌های اجرایی نصب شده شناسایی شدند؛ ابتدا حذف کنید' ErrAppVersionDeprecated: "برنامه {{ .name }} با نسخه فعلی 1Panel سازگار نیست، رد شد" ErrDockerFailed: 'Docker غیرعادی است؛ وضعیت سرویس را بررسی کنید' -ErrDockerIptablesChainUnavailable: 'زنجیره DOCKER-USER داکر یافت نشد. داکر را راه‌اندازی مجدد کنید و دوباره تلاش کنید' -ErrDockerNftablesChainUnavailable: 'زنجیره فایروال IPv4 مربوط به nftables داکر یافت نشد. بررسی کنید نسخه فعلی داکر از بک‌اند فایروال nftables پشتیبانی کند، سپس داکر را راه‌اندازی مجدد کرده و دوباره تلاش کنید' -ErrDockerForwardPolicyDrop: 'سیاست پیش‌فرض FORWARD برای {{ .family }} برابر DROP است. آن را تغییر دهید و دوباره تلاش کنید' -ErrUFWRuleAdopt: 'مدیریت قانون UFW ناموفق بود: {{ .detail }}. اگر نسخه فعلی UFW قدیمی‌تر از 0.35 است، ابتدا UFW را ارتقا دهید و دوباره تلاش کنید' ErrDockerComposeCmdNotFound: 'Docker Compose روی میزبان یافت نشد' UseExistImage: 'تصویر وجود دارد؛ استفاده از تصویر موجود' UpgradePrepare: 'آماده‌سازی ارتقاء برنامه' @@ -510,29 +506,6 @@ Container: 'کانتینر' AppLink: 'برنامه متصل' EnableSSL: 'فعال‌سازی HTTPS' AppStore: 'فروشگاه برنامه' -Firewall: 'فایروال' -FirewallCreateRulesStep: 'ایجاد قوانین دیوار آتش' -FirewallCreateRulesResult: 'نتیجه ایجاد: {{ .succeeded }} موفق، {{ .failed }} ناموفق، {{ .skipped }} اجرا نشده' -FirewallRuleOperationResult: 'نتیجه عملیات: {{ .succeeded }} موفق، {{ .failed }} ناموفق' -FirewallCreateRuleSkipped: 'اجرا نشده' -FirewallCreateBatchStep: 'ارسال {{ .count }} قانون به صورت دسته‌ای به {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}؛ به {{ .count }} قانون تبدیل شد' -FirewallCreateRuleExecutionFailed: 'ایجاد قانون ناموفق بود. هیچ رکوردی در پایگاه داده ذخیره نشد و دستورات اجراشده بازگردانی نشدند' -FirewallCreateRulePersistenceFailed: 'قانون ایجاد شد، اما ذخیره رکورد مدیریتی آن ناموفق بود' -FirewallAdoptRulePersistenceFailed: 'دستور پذیرش قانون برای مدیریت اجرا شد، اما اطلاعات مدیریت ذخیره نشد' -FirewallSyncOperationsResult: 'عملیات همگام‌سازی: {{ .removed }} حذف‌شده، {{ .created }} ایجادشده، {{ .failed }} ناموفق، {{ .skipped }} اجرا‌نشده' -FirewallSyncStep: 'همگام‌سازی قوانین با {{ .name }}' -FirewallSyncFailed: 'همگام‌سازی {{ .failed }} قانون فایروال ناموفق بود' -FirewallResetSourceStep: 'بازنشانی و غیرفعال‌کردن فایروال مبدأ {{ .name }}' -FirewallResetSourceResult: 'فایروال مبدأ بازنشانی شد و {{ .removed }} قانون پایگاه داده حذف شد' -FirewallInitializeChainsStep: 'راه‌اندازی و اتصال زنجیره‌های پایه {{ .name }}' -FirewallRestoreRulesStep: 'بازیابی قوانین پایگاه داده در {{ .name }}' -FirewallSyncWhitelistStep: 'همگام‌سازی فهرست مجاز پورت‌های فایروال' -FirewallEnableForwardingStep: 'فعال‌سازی و اتصال زنجیره‌های هدایت پورت' -FirewallRestoreForwardingRulesStep: 'بازیابی قوانین هدایت پورت پایگاه داده' -FirewallInspectDockerGuardStep: 'بررسی پشتیبان فایروال Docker و سیاست‌ها' -FirewallInitializeDockerGuardStep: 'راه‌اندازی و اتصال زنجیره‌های محافظت پورت {{ .name }}' -FirewallPersistDockerGuardStep: 'ذخیره وضعیت محافظت پورت Docker' TaskSync: 'همگام‌سازی' LocalApp: 'برنامه محلی' SubTask: 'وظیفه فرعی' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'زنجیره DOCKER-USER داکر یافت نشد. داکر را راه‌اندازی مجدد کنید و دوباره تلاش کنید' +ErrDockerNftablesChainUnavailable: 'زنجیره فایروال IPv4 مربوط به nftables داکر یافت نشد. بررسی کنید نسخه فعلی داکر از بک‌اند فایروال nftables پشتیبانی کند، سپس داکر را راه‌اندازی مجدد کرده و دوباره تلاش کنید' +ErrDockerForwardPolicyDrop: 'سیاست پیش‌فرض FORWARD برای {{ .family }} برابر DROP است. آن را تغییر دهید و دوباره تلاش کنید' +ErrUFWRuleAdopt: 'مدیریت قانون UFW ناموفق بود: {{ .detail }}. اگر نسخه فعلی UFW قدیمی‌تر از 0.35 است، ابتدا UFW را ارتقا دهید و دوباره تلاش کنید' +Firewall: 'فایروال' +FirewallTaskHost: 'دیواره آتش میزبان' +FirewallTaskForwarding: 'هدایت پورت' +FirewallTaskDocker: 'محافظت از پورت کانتینر' +FirewallRuleTaskCreate: 'ایجاد قوانین دیواره آتش [{{ .name }}]' +FirewallRuleTaskUpdate: 'به‌روزرسانی قوانین دیواره آتش [{{ .name }}]' +FirewallRuleTaskDelete: 'حذف قوانین دیواره آتش [{{ .name }}]' +FirewallRuleTaskSync: 'همگام‌سازی قوانین دیواره آتش [{{ .name }}]' +FirewallTaskInitialize: 'راه‌اندازی اولیه دیواره آتش [{{ .name }}]' +FirewallCreateRulesStep: 'ایجاد قوانین دیوار آتش' +FirewallCreateRulesResult: 'نتیجه ایجاد: {{ .succeeded }} موفق، {{ .failed }} ناموفق، {{ .skipped }} اجرا نشده' +FirewallRuleOperationResult: 'نتیجه عملیات: {{ .succeeded }} موفق، {{ .failed }} ناموفق' +FirewallCreateRuleSkipped: 'اجرا نشده' +FirewallCreateBatchStep: 'ارسال {{ .count }} قانون به صورت دسته‌ای به {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}؛ به {{ .count }} قانون تبدیل شد' +FirewallCreateRuleExecutionFailed: 'ایجاد قانون ناموفق بود. هیچ رکوردی در پایگاه داده ذخیره نشد و دستورات اجراشده بازگردانی نشدند' +FirewallCreateRulePersistenceFailed: 'قانون ایجاد شد، اما ذخیره رکورد مدیریتی آن ناموفق بود' +FirewallAdoptRulePersistenceFailed: 'دستور پذیرش قانون برای مدیریت اجرا شد، اما اطلاعات مدیریت ذخیره نشد' +FirewallSyncOperationsResult: 'عملیات همگام‌سازی: {{ .removed }} حذف‌شده، {{ .created }} ایجادشده، {{ .failed }} ناموفق، {{ .skipped }} اجرا‌نشده' +FirewallSyncStep: 'همگام‌سازی قوانین با {{ .name }}' +FirewallSyncFailed: 'همگام‌سازی {{ .failed }} قانون فایروال ناموفق بود' +FirewallResetSourceStep: 'بازنشانی و غیرفعال‌کردن فایروال مبدأ {{ .name }}' +FirewallResetSourceResult: 'فایروال مبدأ بازنشانی شد و {{ .removed }} قانون پایگاه داده حذف شد' +FirewallInitializeChainsStep: 'راه‌اندازی و اتصال زنجیره‌های پایه {{ .name }}' +FirewallRestoreRulesStep: 'بازیابی قوانین پایگاه داده در {{ .name }}' +FirewallSyncWhitelistStep: 'همگام‌سازی فهرست مجاز پورت‌های فایروال' +FirewallEnableForwardingStep: 'فعال‌سازی و اتصال زنجیره‌های هدایت پورت' +FirewallRestoreForwardingRulesStep: 'بازیابی قوانین هدایت پورت پایگاه داده' +FirewallInspectDockerGuardStep: 'بررسی پشتیبان فایروال Docker و سیاست‌ها' +FirewallInitializeDockerGuardStep: 'راه‌اندازی و اتصال زنجیره‌های محافظت پورت {{ .name }}' +FirewallPersistDockerGuardStep: 'ذخیره وضعیت محافظت پورت Docker' ErrFirewallRuleScopeChange: "فایروال فعلی از تغییر محدودهٔ قانون (مانند خانوادهٔ آدرس IPv4/IPv6) پشتیبانی نمی‌کند. لطفاً یک قانون جدید ایجاد کنید." FirewallWhitelistTask: "به‌روزرسانی فهرست پورت‌های مجاز فایروال" FirewallWhitelistSaved: "پیکربندی فهرست مجاز ذخیره شد" diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index e108c62e0..153753e3a 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'インストールされているアプリケーションがあ ErrCustomRuntimes: 'ランタイム環境がインストールされています。まずそれを削除してください' ErrAppVersionDeprecated: '{{ .name }} アプリケーションは現在の 1Panel バージョンと互換性がありません、スキップしました' ErrDockerFailed: 'Docker の状態が異常です。サービス状態を確認してください' -ErrDockerIptablesChainUnavailable: 'Docker の DOCKER-USER チェーンが見つかりません。Docker を再起動してから再試行してください' -ErrDockerNftablesChainUnavailable: 'Docker の nftables IPv4 ファイアウォールチェーンが見つかりません。現在の Docker バージョンが nftables ファイアウォールバックエンドをサポートしていることを確認し、Docker を再起動してから再試行してください' -ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD の既定ポリシーが DROP です。変更してから再試行してください' -ErrUFWRuleAdopt: 'UFW ルールの管理に失敗しました:{{ .detail }}。現在の UFW バージョンが 0.35 未満の場合は、UFW をアップグレードしてから再試行してください' ErrDockerComposeCmdNotFound: 'Docker Compose コマンドは存在しません。ホストマシンにこのコマンドを先にインストールしてください' UseExistImage: 'イメージは既に存在します。既存のイメージを使用します' UpgradePrepare: 'アプリケーションのアップグレードを準備' @@ -510,29 +506,6 @@ Container: 'コンテナ' AppLink: 'リンクされたアプリケーション' EnableSSL: 'HTTPS を有効にする' AppStore: 'Appストア' -Firewall: 'ファイアウォール' -FirewallCreateRulesStep: 'ファイアウォールルールを作成' -FirewallCreateRulesResult: '作成結果:成功 {{ .succeeded }} 件、失敗 {{ .failed }} 件、未実行 {{ .skipped }} 件' -FirewallRuleOperationResult: '操作結果:成功 {{ .succeeded }} 件、失敗 {{ .failed }} 件' -FirewallCreateRuleSkipped: '未実行' -FirewallCreateBatchStep: '{{ .backend }} に {{ .count }} 件のルールを一括送信' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }};{{ .count }} 件のルールに変換' -FirewallCreateRuleExecutionFailed: 'ルールの作成に失敗しました。データベースには保存せず、実行済みのコマンドはロールバックしません' -FirewallCreateRulePersistenceFailed: 'ルールは作成されましたが、管理情報の保存に失敗しました' -FirewallAdoptRulePersistenceFailed: 'ルールの管理対象への取り込みコマンドは実行されましたが、管理情報の保存に失敗しました' -FirewallSyncOperationsResult: '同期操作:削除成功 {{ .removed }} 件、作成成功 {{ .created }} 件、失敗 {{ .failed }} 件、未実行 {{ .skipped }} 件' -FirewallSyncStep: '{{ .name }} にルールを同期' -FirewallSyncFailed: '{{ .failed }} 件のファイアウォールルールを同期できませんでした' -FirewallResetSourceStep: '移行元ファイアウォール {{ .name }} をリセットして無効化' -FirewallResetSourceResult: '移行元ファイアウォールをリセットし、データベースルール {{ .removed }} 件を削除しました' -FirewallInitializeChainsStep: '{{ .name }} のベースチェーンを初期化してバインド' -FirewallRestoreRulesStep: 'データベースルールを {{ .name }} に復元' -FirewallSyncWhitelistStep: 'ファイアウォールポート許可リストを同期' -FirewallEnableForwardingStep: 'ポート転送チェーンを有効化してバインド' -FirewallRestoreForwardingRulesStep: 'データベースのポート転送ルールを復元' -FirewallInspectDockerGuardStep: 'Docker ファイアウォールバックエンドと保護ポリシーを確認' -FirewallInitializeDockerGuardStep: '{{ .name }} のポート保護チェーンを初期化してバインド' -FirewallPersistDockerGuardStep: 'Docker ポート保護状態を保存' TaskSync: '同期' LocalApp: 'ローカルアプリケーション' SubTask: 'サブタスク' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'Docker の DOCKER-USER チェーンが見つかりません。Docker を再起動してから再試行してください' +ErrDockerNftablesChainUnavailable: 'Docker の nftables IPv4 ファイアウォールチェーンが見つかりません。現在の Docker バージョンが nftables ファイアウォールバックエンドをサポートしていることを確認し、Docker を再起動してから再試行してください' +ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD の既定ポリシーが DROP です。変更してから再試行してください' +ErrUFWRuleAdopt: 'UFW ルールの管理に失敗しました:{{ .detail }}。現在の UFW バージョンが 0.35 未満の場合は、UFW をアップグレードしてから再試行してください' +Firewall: 'ファイアウォール' +FirewallTaskHost: 'ホストファイアウォール' +FirewallTaskForwarding: 'ポート転送' +FirewallTaskDocker: 'コンテナポート保護' +FirewallRuleTaskCreate: 'ファイアウォールルールを作成[{{ .name }}]' +FirewallRuleTaskUpdate: 'ファイアウォールルールを更新[{{ .name }}]' +FirewallRuleTaskDelete: 'ファイアウォールルールを削除[{{ .name }}]' +FirewallRuleTaskSync: 'ファイアウォールルールを同期[{{ .name }}]' +FirewallTaskInitialize: 'ファイアウォールを初期化[{{ .name }}]' +FirewallCreateRulesStep: 'ファイアウォールルールを作成' +FirewallCreateRulesResult: '作成結果:成功 {{ .succeeded }} 件、失敗 {{ .failed }} 件、未実行 {{ .skipped }} 件' +FirewallRuleOperationResult: '操作結果:成功 {{ .succeeded }} 件、失敗 {{ .failed }} 件' +FirewallCreateRuleSkipped: '未実行' +FirewallCreateBatchStep: '{{ .backend }} に {{ .count }} 件のルールを一括送信' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }};{{ .count }} 件のルールに変換' +FirewallCreateRuleExecutionFailed: 'ルールの作成に失敗しました。データベースには保存せず、実行済みのコマンドはロールバックしません' +FirewallCreateRulePersistenceFailed: 'ルールは作成されましたが、管理情報の保存に失敗しました' +FirewallAdoptRulePersistenceFailed: 'ルールの管理対象への取り込みコマンドは実行されましたが、管理情報の保存に失敗しました' +FirewallSyncOperationsResult: '同期操作:削除成功 {{ .removed }} 件、作成成功 {{ .created }} 件、失敗 {{ .failed }} 件、未実行 {{ .skipped }} 件' +FirewallSyncStep: '{{ .name }} にルールを同期' +FirewallSyncFailed: '{{ .failed }} 件のファイアウォールルールを同期できませんでした' +FirewallResetSourceStep: '移行元ファイアウォール {{ .name }} をリセットして無効化' +FirewallResetSourceResult: '移行元ファイアウォールをリセットし、データベースルール {{ .removed }} 件を削除しました' +FirewallInitializeChainsStep: '{{ .name }} のベースチェーンを初期化してバインド' +FirewallRestoreRulesStep: 'データベースルールを {{ .name }} に復元' +FirewallSyncWhitelistStep: 'ファイアウォールポート許可リストを同期' +FirewallEnableForwardingStep: 'ポート転送チェーンを有効化してバインド' +FirewallRestoreForwardingRulesStep: 'データベースのポート転送ルールを復元' +FirewallInspectDockerGuardStep: 'Docker ファイアウォールバックエンドと保護ポリシーを確認' +FirewallInitializeDockerGuardStep: '{{ .name }} のポート保護チェーンを初期化してバインド' +FirewallPersistDockerGuardStep: 'Docker ポート保護状態を保存' ErrFirewallRuleScopeChange: "現在のファイアウォールでは、ルールの適用範囲(IPv4/IPv6 アドレスファミリーなど)を変更できません。新しいルールを作成してください。" FirewallWhitelistTask: "ファイアウォールのポート許可リストを更新" FirewallWhitelistSaved: "許可リストの設定を保存しました" diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 646708085..a9c268a04 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -159,10 +159,6 @@ ErrCustomApps: '설치된 애플리케이션이 있습니다. 먼저 제거해 ErrCustomRuntimes: '설치된 런타임 환경이 있습니다. 먼저 삭제해 주세요' ErrAppVersionDeprecated: '{{ .name }} 응용 프로그램은 현재 1Panel 버전과 호환되지 않아 건너뛰었습니다' ErrDockerFailed: 'Docker의 상태가 비정상입니다. 서비스 상태를 확인하세요' -ErrDockerIptablesChainUnavailable: 'Docker DOCKER-USER 체인을 찾을 수 없습니다. Docker를 다시 시작한 후 재시도하세요' -ErrDockerNftablesChainUnavailable: 'Docker nftables IPv4 방화벽 체인을 찾을 수 없습니다. 현재 Docker 버전이 nftables 방화벽 백엔드를 지원하는지 확인하고 Docker를 다시 시작한 후 재시도하세요' -ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD 기본 정책이 DROP입니다. 정책을 조정한 후 다시 시도하세요' -ErrUFWRuleAdopt: 'UFW 규칙 관리에 실패했습니다: {{ .detail }}. 현재 UFW 버전이 0.35 미만이면 UFW를 업그레이드한 후 다시 시도하세요' ErrDockerComposeCmdNotFound: 'Docker Compose 명령이 없습니다. 호스트 머신에 먼저 이 명령을 설치하세요' UseExistImage: '이미지가 이미 존재하여 기존 이미지를 사용합니다' UpgradePrepare: '애플리케이션 업그레이드 준비' @@ -510,29 +506,6 @@ Container: '컨테이너' AppLink: '연결된 애플리케이션' EnableSSL: 'HTTPS 활성화' AppStore: '앱스토어' -Firewall: '방화벽' -FirewallCreateRulesStep: '방화벽 규칙 생성' -FirewallCreateRulesResult: '생성 결과: 성공 {{ .succeeded }}개, 실패 {{ .failed }}개, 미실행 {{ .skipped }}개' -FirewallRuleOperationResult: '작업 결과: 성공 {{ .succeeded }}개, 실패 {{ .failed }}개' -FirewallCreateRuleSkipped: '미실행' -FirewallCreateBatchStep: '{{ .backend }}에 규칙 {{ .count }}개 일괄 제출' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; 규칙 {{ .count }}개로 변환' -FirewallCreateRuleExecutionFailed: '규칙 생성에 실패했습니다. 데이터베이스에 저장하지 않았으며 실행된 명령은 롤백하지 않습니다' -FirewallCreateRulePersistenceFailed: '규칙은 생성되었지만 관리 정보를 저장하지 못했습니다' -FirewallAdoptRulePersistenceFailed: '규칙 관리 등록 명령은 실행되었지만 관리 정보를 저장하지 못했습니다' -FirewallSyncOperationsResult: '동기화 작업: 삭제 성공 {{ .removed }}개, 생성 성공 {{ .created }}개, 실패 {{ .failed }}개, 미실행 {{ .skipped }}개' -FirewallSyncStep: '{{ .name }}에 규칙 동기화' -FirewallSyncFailed: '방화벽 규칙 {{ .failed }}개를 동기화하지 못했습니다' -FirewallResetSourceStep: '원본 방화벽 {{ .name }} 초기화 및 비활성화' -FirewallResetSourceResult: '원본 방화벽을 초기화하고 데이터베이스 규칙 {{ .removed }}개를 삭제했습니다' -FirewallInitializeChainsStep: '{{ .name }} 기본 체인 초기화 및 바인딩' -FirewallRestoreRulesStep: '데이터베이스 규칙을 {{ .name }}에 복원' -FirewallSyncWhitelistStep: '방화벽 포트 허용 목록 동기화' -FirewallEnableForwardingStep: '포트 전달 체인 활성화 및 바인딩' -FirewallRestoreForwardingRulesStep: '데이터베이스 포트 전달 규칙 복원' -FirewallInspectDockerGuardStep: 'Docker 방화벽 백엔드 및 보호 정책 확인' -FirewallInitializeDockerGuardStep: '{{ .name }} 포트 보호 체인 초기화 및 바인딩' -FirewallPersistDockerGuardStep: 'Docker 포트 보호 상태 저장' TaskSync: '동기화' LocalApp: '로컬 애플리케이션' SubTask: '하위 작업' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'Docker DOCKER-USER 체인을 찾을 수 없습니다. Docker를 다시 시작한 후 재시도하세요' +ErrDockerNftablesChainUnavailable: 'Docker nftables IPv4 방화벽 체인을 찾을 수 없습니다. 현재 Docker 버전이 nftables 방화벽 백엔드를 지원하는지 확인하고 Docker를 다시 시작한 후 재시도하세요' +ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD 기본 정책이 DROP입니다. 정책을 조정한 후 다시 시도하세요' +ErrUFWRuleAdopt: 'UFW 규칙 관리에 실패했습니다: {{ .detail }}. 현재 UFW 버전이 0.35 미만이면 UFW를 업그레이드한 후 다시 시도하세요' +Firewall: '방화벽' +FirewallTaskHost: '호스트 방화벽' +FirewallTaskForwarding: '포트 포워딩' +FirewallTaskDocker: '컨테이너 포트 보호' +FirewallRuleTaskCreate: '방화벽 규칙 생성 [{{ .name }}]' +FirewallRuleTaskUpdate: '방화벽 규칙 업데이트 [{{ .name }}]' +FirewallRuleTaskDelete: '방화벽 규칙 삭제 [{{ .name }}]' +FirewallRuleTaskSync: '방화벽 규칙 동기화 [{{ .name }}]' +FirewallTaskInitialize: '방화벽 초기화 [{{ .name }}]' +FirewallCreateRulesStep: '방화벽 규칙 생성' +FirewallCreateRulesResult: '생성 결과: 성공 {{ .succeeded }}개, 실패 {{ .failed }}개, 미실행 {{ .skipped }}개' +FirewallRuleOperationResult: '작업 결과: 성공 {{ .succeeded }}개, 실패 {{ .failed }}개' +FirewallCreateRuleSkipped: '미실행' +FirewallCreateBatchStep: '{{ .backend }}에 규칙 {{ .count }}개 일괄 제출' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; 규칙 {{ .count }}개로 변환' +FirewallCreateRuleExecutionFailed: '규칙 생성에 실패했습니다. 데이터베이스에 저장하지 않았으며 실행된 명령은 롤백하지 않습니다' +FirewallCreateRulePersistenceFailed: '규칙은 생성되었지만 관리 정보를 저장하지 못했습니다' +FirewallAdoptRulePersistenceFailed: '규칙 관리 등록 명령은 실행되었지만 관리 정보를 저장하지 못했습니다' +FirewallSyncOperationsResult: '동기화 작업: 삭제 성공 {{ .removed }}개, 생성 성공 {{ .created }}개, 실패 {{ .failed }}개, 미실행 {{ .skipped }}개' +FirewallSyncStep: '{{ .name }}에 규칙 동기화' +FirewallSyncFailed: '방화벽 규칙 {{ .failed }}개를 동기화하지 못했습니다' +FirewallResetSourceStep: '원본 방화벽 {{ .name }} 초기화 및 비활성화' +FirewallResetSourceResult: '원본 방화벽을 초기화하고 데이터베이스 규칙 {{ .removed }}개를 삭제했습니다' +FirewallInitializeChainsStep: '{{ .name }} 기본 체인 초기화 및 바인딩' +FirewallRestoreRulesStep: '데이터베이스 규칙을 {{ .name }}에 복원' +FirewallSyncWhitelistStep: '방화벽 포트 허용 목록 동기화' +FirewallEnableForwardingStep: '포트 전달 체인 활성화 및 바인딩' +FirewallRestoreForwardingRulesStep: '데이터베이스 포트 전달 규칙 복원' +FirewallInspectDockerGuardStep: 'Docker 방화벽 백엔드 및 보호 정책 확인' +FirewallInitializeDockerGuardStep: '{{ .name }} 포트 보호 체인 초기화 및 바인딩' +FirewallPersistDockerGuardStep: 'Docker 포트 보호 상태 저장' ErrFirewallRuleScopeChange: "현재 방화벽에서는 규칙의 적용 범위(예: IPv4/IPv6 주소 패밀리)를 변경할 수 없습니다. 새 규칙을 생성하세요." FirewallWhitelistTask: "방화벽 포트 허용 목록 업데이트" FirewallWhitelistSaved: "허용 목록 설정이 저장되었습니다" diff --git a/agent/i18n/lang/lo.yaml b/agent/i18n/lang/lo.yaml index 8ca123a02..ac2aaa44a 100644 --- a/agent/i18n/lang/lo.yaml +++ b/agent/i18n/lang/lo.yaml @@ -149,10 +149,6 @@ ErrCustomApps: 'ກວດພົບແອັບທີ່ຕິດຕັ້ງແ ErrCustomRuntimes: 'ກວດພົບ runtime ທີ່ຕິດຕັ້ງແລ້ວ; ກະລຸນາລຶບອອກກ່ອນ' ErrAppVersionDeprecated: "ແອັບພລິເຄຊັນ {{ .name }} ບໍ່ຮອງຮັບກັບເວີຊັນ 1Panel ປັດຈຸບັນ, ຈຶ່ງຖືກຂ້າມໄປ" ErrDockerFailed: 'Docker ຜິດປົກກະຕິ; ກະລຸນາກວດສອບສະຖານະການບໍລິການ' -ErrDockerIptablesChainUnavailable: 'ບໍ່ພົບ chain DOCKER-USER ຂອງ Docker. ກະລຸນາເລີ່ມ Docker ໃໝ່ແລ້ວລອງອີກຄັ້ງ' -ErrDockerNftablesChainUnavailable: 'ບໍ່ພົບ chain ໄຟວໍ nftables IPv4 ຂອງ Docker. ກະລຸນາກວດສອບວ່າ Docker ລຸ້ນປັດຈຸບັນຮອງຮັບ backend ໄຟວໍ nftables, ເລີ່ມ Docker ໃໝ່ແລ້ວລອງອີກຄັ້ງ' -ErrDockerForwardPolicyDrop: 'ນະໂຍບາຍເລີ່ມຕົ້ນ FORWARD ຂອງ {{ .family }} ແມ່ນ DROP. ກະລຸນາປັບແລ້ວລອງອີກຄັ້ງ' -ErrUFWRuleAdopt: 'ຈັດການກົດ UFW ບໍ່ສຳເລັດ: {{ .detail }}. ຖ້າ UFW ລຸ້ນປັດຈຸບັນຕ່ຳກວ່າ 0.35, ກະລຸນາອັບເກຣດ UFW ແລ້ວລອງໃໝ່' ErrDockerComposeCmdNotFound: 'ບໍ່ພົບຄຳສັ່ງ Docker Compose ໃນເຄື່ອງ' UseExistImage: 'ມີຮູບພາບຢູ່ແລ້ວ; ກຳລັງໃຊ້ຮູບພາບທີ່ມີຢູ່' UpgradePrepare: 'ກະກຽມອັບເກຣດແອັບ' @@ -500,29 +496,6 @@ Container: 'ຄອນເທນເນີ' AppLink: 'ແອັບພລິເຄຊັນທີ່ເຊື່ອມໂຍງ' EnableSSL: 'ເປີດໃຊ້ HTTPS' AppStore: 'ຮ້ານແອັບ' -Firewall: 'ໄຟວອລ' -FirewallCreateRulesStep: 'ສ້າງກົດໄຟວໍ' -FirewallCreateRulesResult: 'ຜົນການສ້າງ: ສຳເລັດ {{ .succeeded }}, ລົ້ມເຫຼວ {{ .failed }}, ບໍ່ໄດ້ດຳເນີນການ {{ .skipped }}' -FirewallRuleOperationResult: 'ຜົນການດຳເນີນການ: ສຳເລັດ {{ .succeeded }} ລາຍການ, ລົ້ມເຫຼວ {{ .failed }} ລາຍການ' -FirewallCreateRuleSkipped: 'ບໍ່ໄດ້ດຳເນີນການ' -FirewallCreateBatchStep: 'ສົ່ງ {{ .count }} ກົດເປັນຊຸດໄປຫາ {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; ແປງເປັນ {{ .count }} ກົດ' -FirewallCreateRuleExecutionFailed: 'ການສ້າງກົດລົ້ມເຫຼວ. ບໍ່ໄດ້ບັນທຶກໃນຖານຂໍ້ມູນ ແລະ ບໍ່ໄດ້ຍ້ອນກັບຄຳສັ່ງທີ່ດຳເນີນການແລ້ວ' -FirewallCreateRulePersistenceFailed: 'ສ້າງກົດແລ້ວ ແຕ່ບັນທຶກຂໍ້ມູນການຈັດການບໍ່ສຳເລັດ' -FirewallAdoptRulePersistenceFailed: 'ຄຳສັ່ງນຳກົດເຂົ້າການຈັດການໄດ້ດຳເນີນການແລ້ວ ແຕ່ບໍ່ສາມາດບັນທຶກຂໍ້ມູນການຈັດການໄດ້' -FirewallSyncOperationsResult: 'ການດຳເນີນການຊິງຄ໌: ລຶບ {{ .removed }}, ສ້າງ {{ .created }}, ລົ້ມເຫຼວ {{ .failed }}, ບໍ່ໄດ້ດຳເນີນການ {{ .skipped }}' -FirewallSyncStep: 'ຊິງຄ໌ກົດໄປຫາ {{ .name }}' -FirewallSyncFailed: 'ຊິງຄ໌ກົດໄຟວອລ {{ .failed }} ລາຍການບໍ່ສຳເລັດ' -FirewallResetSourceStep: 'ຣີເຊັດ ແລະ ປິດໃຊ້ໄຟວອລຕົ້ນທາງ {{ .name }}' -FirewallResetSourceResult: 'ຣີເຊັດໄຟວອລຕົ້ນທາງແລ້ວ ແລະ ລຶບກົດຖານຂໍ້ມູນ {{ .removed }} ລາຍການ' -FirewallInitializeChainsStep: 'ເລີ່ມຕົ້ນ ແລະ ຜູກ chain ພື້ນຖານ {{ .name }}' -FirewallRestoreRulesStep: 'ກູ້ຄືນກົດຖານຂໍ້ມູນໄປຫາ {{ .name }}' -FirewallSyncWhitelistStep: 'ຊິງຄ໌ລາຍການພອດໄຟວໍທີ່ອະນຸຍາດ' -FirewallEnableForwardingStep: 'ເປີດໃຊ້ ແລະ ຜູກ chain ສົ່ງຕໍ່ພອດ' -FirewallRestoreForwardingRulesStep: 'ກູ້ຄືນກົດສົ່ງຕໍ່ພອດຈາກຖານຂໍ້ມູນ' -FirewallInspectDockerGuardStep: 'ກວດສອບ backend firewall Docker ແລະ ນະໂຍບາຍ' -FirewallInitializeDockerGuardStep: 'ເລີ່ມຕົ້ນ ແລະ ຜູກ chain ປ້ອງກັນພອດ {{ .name }}' -FirewallPersistDockerGuardStep: 'ບັນທຶກສະຖານະປ້ອງກັນພອດ Docker' TaskSync: 'ຊິງຄ໌' LocalApp: 'ແອັບພລິເຄຊັນພາຍໃນເຄື່ອງ' SubTask: 'ວຽກຍ່ອຍ' @@ -697,7 +670,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'ບໍ່ພົບ chain DOCKER-USER ຂອງ Docker. ກະລຸນາເລີ່ມ Docker ໃໝ່ແລ້ວລອງອີກຄັ້ງ' +ErrDockerNftablesChainUnavailable: 'ບໍ່ພົບ chain ໄຟວໍ nftables IPv4 ຂອງ Docker. ກະລຸນາກວດສອບວ່າ Docker ລຸ້ນປັດຈຸບັນຮອງຮັບ backend ໄຟວໍ nftables, ເລີ່ມ Docker ໃໝ່ແລ້ວລອງອີກຄັ້ງ' +ErrDockerForwardPolicyDrop: 'ນະໂຍບາຍເລີ່ມຕົ້ນ FORWARD ຂອງ {{ .family }} ແມ່ນ DROP. ກະລຸນາປັບແລ້ວລອງອີກຄັ້ງ' +ErrUFWRuleAdopt: 'ຈັດການກົດ UFW ບໍ່ສຳເລັດ: {{ .detail }}. ຖ້າ UFW ລຸ້ນປັດຈຸບັນຕ່ຳກວ່າ 0.35, ກະລຸນາອັບເກຣດ UFW ແລ້ວລອງໃໝ່' +Firewall: 'ໄຟວອລ' +FirewallTaskHost: 'ໄຟວໍໂຮສ' +FirewallTaskForwarding: 'ການສົ່ງຕໍ່ພອດ' +FirewallTaskDocker: 'ການປ້ອງກັນພອດຄອນເທນເນີ' +FirewallRuleTaskCreate: 'ສ້າງກົດໄຟວໍ [{{ .name }}]' +FirewallRuleTaskUpdate: 'ອັບເດດກົດໄຟວໍ [{{ .name }}]' +FirewallRuleTaskDelete: 'ລຶບກົດໄຟວໍ [{{ .name }}]' +FirewallRuleTaskSync: 'ຊິງຄ໌ກົດໄຟວໍ [{{ .name }}]' +FirewallTaskInitialize: 'ເລີ່ມຕົ້ນໄຟວໍ [{{ .name }}]' +FirewallCreateRulesStep: 'ສ້າງກົດໄຟວໍ' +FirewallCreateRulesResult: 'ຜົນການສ້າງ: ສຳເລັດ {{ .succeeded }}, ລົ້ມເຫຼວ {{ .failed }}, ບໍ່ໄດ້ດຳເນີນການ {{ .skipped }}' +FirewallRuleOperationResult: 'ຜົນການດຳເນີນການ: ສຳເລັດ {{ .succeeded }} ລາຍການ, ລົ້ມເຫຼວ {{ .failed }} ລາຍການ' +FirewallCreateRuleSkipped: 'ບໍ່ໄດ້ດຳເນີນການ' +FirewallCreateBatchStep: 'ສົ່ງ {{ .count }} ກົດເປັນຊຸດໄປຫາ {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; ແປງເປັນ {{ .count }} ກົດ' +FirewallCreateRuleExecutionFailed: 'ການສ້າງກົດລົ້ມເຫຼວ. ບໍ່ໄດ້ບັນທຶກໃນຖານຂໍ້ມູນ ແລະ ບໍ່ໄດ້ຍ້ອນກັບຄຳສັ່ງທີ່ດຳເນີນການແລ້ວ' +FirewallCreateRulePersistenceFailed: 'ສ້າງກົດແລ້ວ ແຕ່ບັນທຶກຂໍ້ມູນການຈັດການບໍ່ສຳເລັດ' +FirewallAdoptRulePersistenceFailed: 'ຄຳສັ່ງນຳກົດເຂົ້າການຈັດການໄດ້ດຳເນີນການແລ້ວ ແຕ່ບໍ່ສາມາດບັນທຶກຂໍ້ມູນການຈັດການໄດ້' +FirewallSyncOperationsResult: 'ການດຳເນີນການຊິງຄ໌: ລຶບ {{ .removed }}, ສ້າງ {{ .created }}, ລົ້ມເຫຼວ {{ .failed }}, ບໍ່ໄດ້ດຳເນີນການ {{ .skipped }}' +FirewallSyncStep: 'ຊິງຄ໌ກົດໄປຫາ {{ .name }}' +FirewallSyncFailed: 'ຊິງຄ໌ກົດໄຟວອລ {{ .failed }} ລາຍການບໍ່ສຳເລັດ' +FirewallResetSourceStep: 'ຣີເຊັດ ແລະ ປິດໃຊ້ໄຟວອລຕົ້ນທາງ {{ .name }}' +FirewallResetSourceResult: 'ຣີເຊັດໄຟວອລຕົ້ນທາງແລ້ວ ແລະ ລຶບກົດຖານຂໍ້ມູນ {{ .removed }} ລາຍການ' +FirewallInitializeChainsStep: 'ເລີ່ມຕົ້ນ ແລະ ຜູກ chain ພື້ນຖານ {{ .name }}' +FirewallRestoreRulesStep: 'ກູ້ຄືນກົດຖານຂໍ້ມູນໄປຫາ {{ .name }}' +FirewallSyncWhitelistStep: 'ຊິງຄ໌ລາຍການພອດໄຟວໍທີ່ອະນຸຍາດ' +FirewallEnableForwardingStep: 'ເປີດໃຊ້ ແລະ ຜູກ chain ສົ່ງຕໍ່ພອດ' +FirewallRestoreForwardingRulesStep: 'ກູ້ຄືນກົດສົ່ງຕໍ່ພອດຈາກຖານຂໍ້ມູນ' +FirewallInspectDockerGuardStep: 'ກວດສອບ backend firewall Docker ແລະ ນະໂຍບາຍ' +FirewallInitializeDockerGuardStep: 'ເລີ່ມຕົ້ນ ແລະ ຜູກ chain ປ້ອງກັນພອດ {{ .name }}' +FirewallPersistDockerGuardStep: 'ບັນທຶກສະຖານະປ້ອງກັນພອດ Docker' ErrFirewallRuleScopeChange: "ໄຟວໍປັດຈຸບັນບໍ່ຮອງຮັບການປ່ຽນຂອບເຂດຂອງກົດ (ເຊັ່ນ ຕະກູນທີ່ຢູ່ IPv4/IPv6). ກະລຸນາສ້າງກົດໃໝ່." FirewallWhitelistTask: "ອັບເດດລາຍຊື່ພອດທີ່ອະນຸຍາດຂອງໄຟວໍ" FirewallWhitelistSaved: "ບັນທຶກການຕັ້ງຄ່າລາຍຊື່ທີ່ອະນຸຍາດແລ້ວ" diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index 8b76e9440..33febae6e 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'Ada aplikasi yang dipasang, sila nyahpasangnya dahulu' ErrCustomRuntimes: 'Terdapat persekitaran masa jalan yang dipasang, sila padamkannya dahulu' ErrAppVersionDeprecated: 'Aplikasi {{ .name }} tidak sesuai dengan versi 1Panel saat ini, dilewati' ErrDockerFailed: 'Keadaan Docker tidak normal, sila periksa status perkhidmatan' -ErrDockerIptablesChainUnavailable: 'Rantaian DOCKER-USER Docker tidak ditemui. Mulakan semula Docker dan cuba lagi' -ErrDockerNftablesChainUnavailable: 'Rantaian firewall IPv4 nftables Docker tidak ditemui. Pastikan versi Docker semasa menyokong bahagian belakang firewall nftables, mulakan semula Docker dan cuba lagi' -ErrDockerForwardPolicyDrop: 'Dasar lalai FORWARD {{ .family }} ialah DROP. Laraskan dasar dan cuba lagi' -ErrUFWRuleAdopt: 'Gagal mengurus peraturan UFW: {{ .detail }}. Jika versi UFW semasa lebih lama daripada 0.35, tingkatkan UFW dan cuba lagi' ErrDockerComposeCmdNotFound: 'Perintah Docker Compose tidak wujud, sila pasang perintah ini di mesin tuan terlebih dahulu' UseExistImage: 'Imej sudah wujud, menggunakan imej sedia ada' UpgradePrepare: 'Sediakan naik taraf aplikasi' @@ -510,29 +506,6 @@ Container: 'Bekas' AppLink: 'Aplikasi Terpaut' EnableSSL: 'Dayakan HTTPS' AppStore: 'Kedai aplikasi' -Firewall: 'Firewall' -FirewallCreateRulesStep: 'Cipta peraturan tembok api' -FirewallCreateRulesResult: 'Hasil penciptaan: {{ .succeeded }} berjaya, {{ .failed }} gagal, {{ .skipped }} tidak dilaksanakan' -FirewallRuleOperationResult: 'Hasil operasi: {{ .succeeded }} berjaya, {{ .failed }} gagal' -FirewallCreateRuleSkipped: 'Tidak dilaksanakan' -FirewallCreateBatchStep: 'Hantar {{ .count }} peraturan secara kelompok ke {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; ditukar kepada {{ .count }} peraturan' -FirewallCreateRuleExecutionFailed: 'Penciptaan peraturan gagal. Tiada rekod disimpan dalam pangkalan data dan arahan yang dilaksanakan tidak dibatalkan' -FirewallCreateRulePersistenceFailed: 'Peraturan telah dicipta, tetapi rekod pengurusannya tidak dapat disimpan' -FirewallAdoptRulePersistenceFailed: 'Arahan pengambilalihan peraturan telah dilaksanakan, tetapi rekod pengurusannya tidak dapat disimpan' -FirewallSyncOperationsResult: 'Operasi penyegerakan: {{ .removed }} dipadam, {{ .created }} dicipta, {{ .failed }} gagal, {{ .skipped }} tidak dilaksanakan' -FirewallSyncStep: 'Segerakkan peraturan ke {{ .name }}' -FirewallSyncFailed: '{{ .failed }} peraturan firewall gagal disegerakkan' -FirewallResetSourceStep: 'Tetapkan semula dan nyahdayakan firewall sumber {{ .name }}' -FirewallResetSourceResult: 'Firewall sumber ditetapkan semula; {{ .removed }} peraturan pangkalan data dipadamkan' -FirewallInitializeChainsStep: 'Mulakan dan ikat rantai asas {{ .name }}' -FirewallRestoreRulesStep: 'Pulihkan peraturan pangkalan data ke {{ .name }}' -FirewallSyncWhitelistStep: 'Segerakkan senarai putih port firewall' -FirewallEnableForwardingStep: 'Aktifkan dan ikat rantai pemajuan port' -FirewallRestoreForwardingRulesStep: 'Pulihkan peraturan pemajuan port pangkalan data' -FirewallInspectDockerGuardStep: 'Periksa backend firewall Docker dan polisi' -FirewallInitializeDockerGuardStep: 'Mulakan dan ikat rantai perlindungan port {{ .name }}' -FirewallPersistDockerGuardStep: 'Simpan status perlindungan port Docker' TaskSync: 'Segerakkan' LocalApp: 'Aplikasi Tempatan' SubTask: 'Subtugas' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'Rantaian DOCKER-USER Docker tidak ditemui. Mulakan semula Docker dan cuba lagi' +ErrDockerNftablesChainUnavailable: 'Rantaian firewall IPv4 nftables Docker tidak ditemui. Pastikan versi Docker semasa menyokong bahagian belakang firewall nftables, mulakan semula Docker dan cuba lagi' +ErrDockerForwardPolicyDrop: 'Dasar lalai FORWARD {{ .family }} ialah DROP. Laraskan dasar dan cuba lagi' +ErrUFWRuleAdopt: 'Gagal mengurus peraturan UFW: {{ .detail }}. Jika versi UFW semasa lebih lama daripada 0.35, tingkatkan UFW dan cuba lagi' +Firewall: 'Firewall' +FirewallTaskHost: 'Tembok api hos' +FirewallTaskForwarding: 'Pemajuan port' +FirewallTaskDocker: 'Perlindungan port kontena' +FirewallRuleTaskCreate: 'Cipta peraturan tembok api [{{ .name }}]' +FirewallRuleTaskUpdate: 'Kemas kini peraturan tembok api [{{ .name }}]' +FirewallRuleTaskDelete: 'Padam peraturan tembok api [{{ .name }}]' +FirewallRuleTaskSync: 'Segerakkan peraturan tembok api [{{ .name }}]' +FirewallTaskInitialize: 'Mulakan tembok api [{{ .name }}]' +FirewallCreateRulesStep: 'Cipta peraturan tembok api' +FirewallCreateRulesResult: 'Hasil penciptaan: {{ .succeeded }} berjaya, {{ .failed }} gagal, {{ .skipped }} tidak dilaksanakan' +FirewallRuleOperationResult: 'Hasil operasi: {{ .succeeded }} berjaya, {{ .failed }} gagal' +FirewallCreateRuleSkipped: 'Tidak dilaksanakan' +FirewallCreateBatchStep: 'Hantar {{ .count }} peraturan secara kelompok ke {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; ditukar kepada {{ .count }} peraturan' +FirewallCreateRuleExecutionFailed: 'Penciptaan peraturan gagal. Tiada rekod disimpan dalam pangkalan data dan arahan yang dilaksanakan tidak dibatalkan' +FirewallCreateRulePersistenceFailed: 'Peraturan telah dicipta, tetapi rekod pengurusannya tidak dapat disimpan' +FirewallAdoptRulePersistenceFailed: 'Arahan pengambilalihan peraturan telah dilaksanakan, tetapi rekod pengurusannya tidak dapat disimpan' +FirewallSyncOperationsResult: 'Operasi penyegerakan: {{ .removed }} dipadam, {{ .created }} dicipta, {{ .failed }} gagal, {{ .skipped }} tidak dilaksanakan' +FirewallSyncStep: 'Segerakkan peraturan ke {{ .name }}' +FirewallSyncFailed: '{{ .failed }} peraturan firewall gagal disegerakkan' +FirewallResetSourceStep: 'Tetapkan semula dan nyahdayakan firewall sumber {{ .name }}' +FirewallResetSourceResult: 'Firewall sumber ditetapkan semula; {{ .removed }} peraturan pangkalan data dipadamkan' +FirewallInitializeChainsStep: 'Mulakan dan ikat rantai asas {{ .name }}' +FirewallRestoreRulesStep: 'Pulihkan peraturan pangkalan data ke {{ .name }}' +FirewallSyncWhitelistStep: 'Segerakkan senarai putih port firewall' +FirewallEnableForwardingStep: 'Aktifkan dan ikat rantai pemajuan port' +FirewallRestoreForwardingRulesStep: 'Pulihkan peraturan pemajuan port pangkalan data' +FirewallInspectDockerGuardStep: 'Periksa backend firewall Docker dan polisi' +FirewallInitializeDockerGuardStep: 'Mulakan dan ikat rantai perlindungan port {{ .name }}' +FirewallPersistDockerGuardStep: 'Simpan status perlindungan port Docker' ErrFirewallRuleScopeChange: "Tembok api semasa tidak menyokong perubahan skop peraturan (seperti keluarga alamat IPv4/IPv6). Sila cipta peraturan baharu." FirewallWhitelistTask: "Kemas kini senarai port dibenarkan tembok api" FirewallWhitelistSaved: "Konfigurasi senarai dibenarkan telah disimpan" diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 9160a629e..885454506 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'Há um aplicativo instalado, desinstale-o primeiro' ErrCustomRuntimes: 'Há um ambiente de execução instalado, exclua-o primeiro' ErrAppVersionDeprecated: 'O aplicativo {{ .name }} não é compatível com a versão atual do 1Panel, ignorado' ErrDockerFailed: 'O estado do Docker está anormal, verifique o status do serviço' -ErrDockerIptablesChainUnavailable: 'A cadeia DOCKER-USER do Docker não foi encontrada. Reinicie o Docker e tente novamente' -ErrDockerNftablesChainUnavailable: 'A cadeia de firewall IPv4 do nftables do Docker não foi encontrada. Confirme se a versão atual do Docker oferece suporte ao backend de firewall nftables, reinicie o Docker e tente novamente' -ErrDockerForwardPolicyDrop: 'A política padrão de FORWARD para {{ .family }} é DROP. Ajuste-a e tente novamente' -ErrUFWRuleAdopt: 'Falha ao gerenciar a regra UFW: {{ .detail }}. Se a versão atual do UFW for anterior à 0.35, atualize o UFW e tente novamente' ErrDockerComposeCmdNotFound: 'O comando Docker Compose não existe, instale este comando na máquina host primeiro' UseExistImage: 'A imagem já existe, usando imagem existente' UpgradePrepare: 'Preparar atualização do aplicativo' @@ -510,29 +506,6 @@ Container: 'Recipiente' AppLink: 'Aplicativo vinculado' EnableSSL: 'Habilitar HTTPS' AppStore: 'Loja de aplicativos' -Firewall: 'Firewall' -FirewallCreateRulesStep: 'Criar regras de firewall' -FirewallCreateRulesResult: 'Resultado da criação: {{ .succeeded }} com sucesso, {{ .failed }} com falha, {{ .skipped }} não executadas' -FirewallRuleOperationResult: 'Resultado da operação: {{ .succeeded }} com sucesso, {{ .failed }} com falha' -FirewallCreateRuleSkipped: 'Não executada' -FirewallCreateBatchStep: 'Enviar {{ .count }} regras em lote para {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; convertido em {{ .count }} regras' -FirewallCreateRuleExecutionFailed: 'Falha ao criar a regra. Nenhum registro foi salvo no banco de dados e os comandos executados não foram revertidos' -FirewallCreateRulePersistenceFailed: 'A regra foi criada, mas não foi possível salvar seu registro de gerenciamento' -FirewallAdoptRulePersistenceFailed: 'A regra foi adotada, mas não foi possível salvar seu registro de gerenciamento' -FirewallSyncOperationsResult: 'Operações de sincronização: {{ .removed }} excluídas, {{ .created }} criadas, {{ .failed }} falhas, {{ .skipped }} não executadas' -FirewallSyncStep: 'Sincronizar regras com {{ .name }}' -FirewallSyncFailed: '{{ .failed }} regras de firewall falharam na sincronização' -FirewallResetSourceStep: 'Redefinir e desativar o firewall de origem {{ .name }}' -FirewallResetSourceResult: 'Firewall de origem redefinido; {{ .removed }} regras do banco de dados foram excluídas' -FirewallInitializeChainsStep: 'Inicializar e vincular as cadeias base do {{ .name }}' -FirewallRestoreRulesStep: 'Restaurar regras do banco de dados para {{ .name }}' -FirewallSyncWhitelistStep: 'Sincronizar a lista de portas permitidas do firewall' -FirewallEnableForwardingStep: 'Habilitar e vincular as cadeias de encaminhamento de portas' -FirewallRestoreForwardingRulesStep: 'Restaurar regras de encaminhamento de portas do banco de dados' -FirewallInspectDockerGuardStep: 'Inspecionar o backend do firewall Docker e as políticas' -FirewallInitializeDockerGuardStep: 'Inicializar e vincular as cadeias de proteção de portas do {{ .name }}' -FirewallPersistDockerGuardStep: 'Salvar o status da proteção de portas do Docker' TaskSync: 'Sincronizar' LocalApp: 'Aplicativo local' SubTask: 'Subtarefa' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'A cadeia DOCKER-USER do Docker não foi encontrada. Reinicie o Docker e tente novamente' +ErrDockerNftablesChainUnavailable: 'A cadeia de firewall IPv4 do nftables do Docker não foi encontrada. Confirme se a versão atual do Docker oferece suporte ao backend de firewall nftables, reinicie o Docker e tente novamente' +ErrDockerForwardPolicyDrop: 'A política padrão de FORWARD para {{ .family }} é DROP. Ajuste-a e tente novamente' +ErrUFWRuleAdopt: 'Falha ao gerenciar a regra UFW: {{ .detail }}. Se a versão atual do UFW for anterior à 0.35, atualize o UFW e tente novamente' +Firewall: 'Firewall' +FirewallTaskHost: 'Firewall do host' +FirewallTaskForwarding: 'Encaminhamento de portas' +FirewallTaskDocker: 'Proteção de portas de contêineres' +FirewallRuleTaskCreate: 'Criar regras de firewall [{{ .name }}]' +FirewallRuleTaskUpdate: 'Atualizar regras de firewall [{{ .name }}]' +FirewallRuleTaskDelete: 'Excluir regras de firewall [{{ .name }}]' +FirewallRuleTaskSync: 'Sincronizar regras de firewall [{{ .name }}]' +FirewallTaskInitialize: 'Inicializar firewall [{{ .name }}]' +FirewallCreateRulesStep: 'Criar regras de firewall' +FirewallCreateRulesResult: 'Resultado da criação: {{ .succeeded }} com sucesso, {{ .failed }} com falha, {{ .skipped }} não executadas' +FirewallRuleOperationResult: 'Resultado da operação: {{ .succeeded }} com sucesso, {{ .failed }} com falha' +FirewallCreateRuleSkipped: 'Não executada' +FirewallCreateBatchStep: 'Enviar {{ .count }} regras em lote para {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; convertido em {{ .count }} regras' +FirewallCreateRuleExecutionFailed: 'Falha ao criar a regra. Nenhum registro foi salvo no banco de dados e os comandos executados não foram revertidos' +FirewallCreateRulePersistenceFailed: 'A regra foi criada, mas não foi possível salvar seu registro de gerenciamento' +FirewallAdoptRulePersistenceFailed: 'A regra foi adotada, mas não foi possível salvar seu registro de gerenciamento' +FirewallSyncOperationsResult: 'Operações de sincronização: {{ .removed }} excluídas, {{ .created }} criadas, {{ .failed }} falhas, {{ .skipped }} não executadas' +FirewallSyncStep: 'Sincronizar regras com {{ .name }}' +FirewallSyncFailed: '{{ .failed }} regras de firewall falharam na sincronização' +FirewallResetSourceStep: 'Redefinir e desativar o firewall de origem {{ .name }}' +FirewallResetSourceResult: 'Firewall de origem redefinido; {{ .removed }} regras do banco de dados foram excluídas' +FirewallInitializeChainsStep: 'Inicializar e vincular as cadeias base do {{ .name }}' +FirewallRestoreRulesStep: 'Restaurar regras do banco de dados para {{ .name }}' +FirewallSyncWhitelistStep: 'Sincronizar a lista de portas permitidas do firewall' +FirewallEnableForwardingStep: 'Habilitar e vincular as cadeias de encaminhamento de portas' +FirewallRestoreForwardingRulesStep: 'Restaurar regras de encaminhamento de portas do banco de dados' +FirewallInspectDockerGuardStep: 'Inspecionar o backend do firewall Docker e as políticas' +FirewallInitializeDockerGuardStep: 'Inicializar e vincular as cadeias de proteção de portas do {{ .name }}' +FirewallPersistDockerGuardStep: 'Salvar o status da proteção de portas do Docker' ErrFirewallRuleScopeChange: "O firewall atual não permite alterar o escopo de uma regra (como a família de endereços IPv4/IPv6). Crie uma nova regra." FirewallWhitelistTask: "Atualizar a lista de portas permitidas do firewall" FirewallWhitelistSaved: "Configuração da lista de permissões salva" diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index 8023a7362..0779f5677 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'Установлено приложение. Сначала уд ErrCustomRuntimes: 'Установлена среда выполнения. Сначала удалите ее' ErrAppVersionDeprecated: 'Приложение {{ .name }} несовместимо с текущей версией 1Panel, пропущено' ErrDockerFailed: 'Состояние Docker аномально, проверьте состояние сервиса' -ErrDockerIptablesChainUnavailable: 'Цепочка Docker DOCKER-USER не найдена. Перезапустите Docker и повторите попытку' -ErrDockerNftablesChainUnavailable: 'Цепочка IPv4 брандмауэра nftables Docker не найдена. Убедитесь, что текущая версия Docker поддерживает бэкенд брандмауэра nftables, перезапустите Docker и повторите попытку' -ErrDockerForwardPolicyDrop: 'Политика FORWARD по умолчанию для {{ .family }} — DROP. Измените её и повторите попытку' -ErrUFWRuleAdopt: 'Не удалось принять правило UFW под управление: {{ .detail }}. Если текущая версия UFW ниже 0.35, обновите UFW и повторите попытку' ErrDockerComposeCmdNotFound: 'Команда Docker Compose отсутствует, пожалуйста, установите эту команду на хост-машине сначала' UseExistImage: 'Образ уже существует, используется существующий образ' UpgradePrepare: 'Подготовка обновления приложения' @@ -510,29 +506,6 @@ Container: 'Контейнер' AppLink: 'Связанное приложение' EnableSSL: 'Включить HTTPS' AppStore: 'Магазин приложений' -Firewall: 'Межсетевой экран' -FirewallCreateRulesStep: 'Создание правил межсетевого экрана' -FirewallCreateRulesResult: 'Результат создания: успешно — {{ .succeeded }}, ошибок — {{ .failed }}, не выполнено — {{ .skipped }}' -FirewallRuleOperationResult: 'Результат операции: успешно — {{ .succeeded }}, ошибок — {{ .failed }}' -FirewallCreateRuleSkipped: 'Не выполнено' -FirewallCreateBatchStep: 'Отправка {{ .count }} правил одним пакетом в {{ .backend }}' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; преобразовано в {{ .count }} правил' -FirewallCreateRuleExecutionFailed: 'Не удалось создать правило. Запись в базе данных не сохранена, выполненные команды не отменены' -FirewallCreateRulePersistenceFailed: 'Правило создано, но не удалось сохранить запись управления' -FirewallAdoptRulePersistenceFailed: 'Команды принятия правила под управление выполнены, но сохранить запись управления не удалось' -FirewallSyncOperationsResult: 'Операции синхронизации: удалено {{ .removed }}, создано {{ .created }}, ошибок {{ .failed }}, не выполнено {{ .skipped }}' -FirewallSyncStep: 'Синхронизировать правила с {{ .name }}' -FirewallSyncFailed: 'Не удалось синхронизировать правил межсетевого экрана: {{ .failed }}' -FirewallResetSourceStep: 'Сбросить и отключить исходный межсетевой экран {{ .name }}' -FirewallResetSourceResult: 'Исходный межсетевой экран сброшен; удалено правил из базы данных: {{ .removed }}' -FirewallInitializeChainsStep: 'Инициализировать и привязать базовые цепочки {{ .name }}' -FirewallRestoreRulesStep: 'Восстановить правила базы данных в {{ .name }}' -FirewallSyncWhitelistStep: 'Синхронизировать белый список портов межсетевого экрана' -FirewallEnableForwardingStep: 'Включить и привязать цепочки перенаправления портов' -FirewallRestoreForwardingRulesStep: 'Восстановить правила перенаправления портов из базы данных' -FirewallInspectDockerGuardStep: 'Проверить бэкенд межсетевого экрана Docker и политики' -FirewallInitializeDockerGuardStep: 'Инициализировать и привязать цепочки защиты портов {{ .name }}' -FirewallPersistDockerGuardStep: 'Сохранить состояние защиты портов Docker' TaskSync: 'Синхронизировать' LocalApp: 'Локальное приложение' SubTask: 'Подзадача' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'Цепочка Docker DOCKER-USER не найдена. Перезапустите Docker и повторите попытку' +ErrDockerNftablesChainUnavailable: 'Цепочка IPv4 брандмауэра nftables Docker не найдена. Убедитесь, что текущая версия Docker поддерживает бэкенд брандмауэра nftables, перезапустите Docker и повторите попытку' +ErrDockerForwardPolicyDrop: 'Политика FORWARD по умолчанию для {{ .family }} — DROP. Измените её и повторите попытку' +ErrUFWRuleAdopt: 'Не удалось принять правило UFW под управление: {{ .detail }}. Если текущая версия UFW ниже 0.35, обновите UFW и повторите попытку' +Firewall: 'Межсетевой экран' +FirewallTaskHost: 'Межсетевой экран хоста' +FirewallTaskForwarding: 'Перенаправление портов' +FirewallTaskDocker: 'Защита портов контейнеров' +FirewallRuleTaskCreate: 'Создание правил межсетевого экрана [{{ .name }}]' +FirewallRuleTaskUpdate: 'Обновление правил межсетевого экрана [{{ .name }}]' +FirewallRuleTaskDelete: 'Удаление правил межсетевого экрана [{{ .name }}]' +FirewallRuleTaskSync: 'Синхронизация правил межсетевого экрана [{{ .name }}]' +FirewallTaskInitialize: 'Инициализация межсетевого экрана [{{ .name }}]' +FirewallCreateRulesStep: 'Создание правил межсетевого экрана' +FirewallCreateRulesResult: 'Результат создания: успешно — {{ .succeeded }}, ошибок — {{ .failed }}, не выполнено — {{ .skipped }}' +FirewallRuleOperationResult: 'Результат операции: успешно — {{ .succeeded }}, ошибок — {{ .failed }}' +FirewallCreateRuleSkipped: 'Не выполнено' +FirewallCreateBatchStep: 'Отправка {{ .count }} правил одним пакетом в {{ .backend }}' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; преобразовано в {{ .count }} правил' +FirewallCreateRuleExecutionFailed: 'Не удалось создать правило. Запись в базе данных не сохранена, выполненные команды не отменены' +FirewallCreateRulePersistenceFailed: 'Правило создано, но не удалось сохранить запись управления' +FirewallAdoptRulePersistenceFailed: 'Команды принятия правила под управление выполнены, но сохранить запись управления не удалось' +FirewallSyncOperationsResult: 'Операции синхронизации: удалено {{ .removed }}, создано {{ .created }}, ошибок {{ .failed }}, не выполнено {{ .skipped }}' +FirewallSyncStep: 'Синхронизировать правила с {{ .name }}' +FirewallSyncFailed: 'Не удалось синхронизировать правил межсетевого экрана: {{ .failed }}' +FirewallResetSourceStep: 'Сбросить и отключить исходный межсетевой экран {{ .name }}' +FirewallResetSourceResult: 'Исходный межсетевой экран сброшен; удалено правил из базы данных: {{ .removed }}' +FirewallInitializeChainsStep: 'Инициализировать и привязать базовые цепочки {{ .name }}' +FirewallRestoreRulesStep: 'Восстановить правила базы данных в {{ .name }}' +FirewallSyncWhitelistStep: 'Синхронизировать белый список портов межсетевого экрана' +FirewallEnableForwardingStep: 'Включить и привязать цепочки перенаправления портов' +FirewallRestoreForwardingRulesStep: 'Восстановить правила перенаправления портов из базы данных' +FirewallInspectDockerGuardStep: 'Проверить бэкенд межсетевого экрана Docker и политики' +FirewallInitializeDockerGuardStep: 'Инициализировать и привязать цепочки защиты портов {{ .name }}' +FirewallPersistDockerGuardStep: 'Сохранить состояние защиты портов Docker' ErrFirewallRuleScopeChange: "Текущий межсетевой экран не поддерживает изменение области действия правила (например, семейства адресов IPv4/IPv6). Создайте новое правило." FirewallWhitelistTask: "Обновить список разрешённых портов межсетевого экрана" FirewallWhitelistSaved: "Настройки списка разрешённых портов сохранены" diff --git a/agent/i18n/lang/tr.yaml b/agent/i18n/lang/tr.yaml index 9877269fc..a82a3f19e 100644 --- a/agent/i18n/lang/tr.yaml +++ b/agent/i18n/lang/tr.yaml @@ -159,10 +159,6 @@ ErrCustomApps: 'Yüklü bir uygulama var, lütfen önce kaldırın' ErrCustomRuntimes: 'Yüklü bir çalışma ortamı var, lütfen önce silin' ErrAppVersionDeprecated: '{{ .name }} uygulaması mevcut 1Panel sürümü ile uyumlu değil, atlandı' ErrDockerFailed: 'Docker durumu anormal, lütfen servis durumunu kontrol edin' -ErrDockerIptablesChainUnavailable: 'Docker DOCKER-USER zinciri bulunamadı. Docker’ı yeniden başlatıp tekrar deneyin' -ErrDockerNftablesChainUnavailable: 'Docker nftables IPv4 güvenlik duvarı zinciri bulunamadı. Geçerli Docker sürümünün nftables güvenlik duvarı arka ucunu desteklediğini doğrulayın, Docker’ı yeniden başlatıp tekrar deneyin' -ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD varsayılan ilkesi DROP. İlkeyi düzenleyip tekrar deneyin' -ErrUFWRuleAdopt: 'UFW kuralı yönetilemedi: {{ .detail }}. Geçerli UFW sürümü 0.35’ten eskiyse UFW’yi yükseltip tekrar deneyin' ErrDockerComposeCmdNotFound: 'Docker Compose komutu mevcut değil, lütfen önce bu komutu host makinesine yükleyin' UseExistImage: 'Görüntü zaten mevcut, mevcut görüntü kullanılıyor' UpgradePrepare: 'Uygulama yükseltmesini hazırla' @@ -510,29 +506,6 @@ Container: 'Konteyner' AppLink: 'Bağlantılı Uygulama' EnableSSL: 'HTTPS Etkinleştir' AppStore: 'Uygulama Mağazası' -Firewall: 'Güvenlik duvarı' -FirewallCreateRulesStep: 'Güvenlik duvarı kuralları oluştur' -FirewallCreateRulesResult: 'Oluşturma sonucu: {{ .succeeded }} başarılı, {{ .failed }} başarısız, {{ .skipped }} yürütülmedi' -FirewallRuleOperationResult: 'İşlem sonucu: {{ .succeeded }} başarılı, {{ .failed }} başarısız' -FirewallCreateRuleSkipped: 'Yürütülmedi' -FirewallCreateBatchStep: '{{ .backend }} için {{ .count }} kuralı toplu gönder' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; {{ .count }} kurala dönüştürüldü' -FirewallCreateRuleExecutionFailed: 'Kural oluşturma başarısız. Veritabanına kayıt yazılmadı ve yürütülen komutlar geri alınmadı' -FirewallCreateRulePersistenceFailed: 'Kural oluşturuldu ancak yönetim kaydı kaydedilemedi' -FirewallAdoptRulePersistenceFailed: 'Kuralı yönetime alma komutu yürütüldü, ancak yönetim kaydı kaydedilemedi' -FirewallSyncOperationsResult: 'Eşitleme işlemleri: {{ .removed }} silindi, {{ .created }} oluşturuldu, {{ .failed }} başarısız, {{ .skipped }} yürütülmedi' -FirewallSyncStep: 'Kuralları {{ .name }} ile eşitle' -FirewallSyncFailed: '{{ .failed }} güvenlik duvarı kuralı eşitlenemedi' -FirewallResetSourceStep: 'Kaynak güvenlik duvarı {{ .name }} sıfırla ve devre dışı bırak' -FirewallResetSourceResult: 'Kaynak güvenlik duvarı sıfırlandı; {{ .removed }} veritabanı kuralı silindi' -FirewallInitializeChainsStep: '{{ .name }} temel zincirlerini başlat ve bağla' -FirewallRestoreRulesStep: 'Veritabanı kurallarını {{ .name }} üzerine geri yükle' -FirewallSyncWhitelistStep: 'Güvenlik duvarı bağlantı noktası izin listesini eşitle' -FirewallEnableForwardingStep: 'Bağlantı noktası yönlendirme zincirlerini etkinleştir ve bağla' -FirewallRestoreForwardingRulesStep: 'Veritabanı bağlantı noktası yönlendirme kurallarını geri yükle' -FirewallInspectDockerGuardStep: 'Docker güvenlik duvarı arka ucunu ve ilkelerini denetle' -FirewallInitializeDockerGuardStep: '{{ .name }} bağlantı noktası koruma zincirlerini başlat ve bağla' -FirewallPersistDockerGuardStep: 'Docker bağlantı noktası koruma durumunu kaydet' TaskSync: 'Senkronize Et' LocalApp: 'Yerel Uygulama' SubTask: 'Alt görev' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: 'Alibaba Cloud Model Studio Coding Plan' AIProviderArk: 'Volcengine Ark' AIProviderArkCodingPlan: 'Volcengine Ark Coding Plan' -# Firewall whitelist +# Firewall +ErrDockerIptablesChainUnavailable: 'Docker DOCKER-USER zinciri bulunamadı. Docker’ı yeniden başlatıp tekrar deneyin' +ErrDockerNftablesChainUnavailable: 'Docker nftables IPv4 güvenlik duvarı zinciri bulunamadı. Geçerli Docker sürümünün nftables güvenlik duvarı arka ucunu desteklediğini doğrulayın, Docker’ı yeniden başlatıp tekrar deneyin' +ErrDockerForwardPolicyDrop: '{{ .family }} FORWARD varsayılan ilkesi DROP. İlkeyi düzenleyip tekrar deneyin' +ErrUFWRuleAdopt: 'UFW kuralı yönetilemedi: {{ .detail }}. Geçerli UFW sürümü 0.35’ten eskiyse UFW’yi yükseltip tekrar deneyin' +Firewall: 'Güvenlik duvarı' +FirewallTaskHost: 'Ana makine güvenlik duvarı' +FirewallTaskForwarding: 'Port yönlendirme' +FirewallTaskDocker: 'Konteyner port koruması' +FirewallRuleTaskCreate: 'Güvenlik duvarı kuralları oluştur [{{ .name }}]' +FirewallRuleTaskUpdate: 'Güvenlik duvarı kurallarını güncelle [{{ .name }}]' +FirewallRuleTaskDelete: 'Güvenlik duvarı kurallarını sil [{{ .name }}]' +FirewallRuleTaskSync: 'Güvenlik duvarı kurallarını eşitle [{{ .name }}]' +FirewallTaskInitialize: 'Güvenlik duvarını başlat [{{ .name }}]' +FirewallCreateRulesStep: 'Güvenlik duvarı kuralları oluştur' +FirewallCreateRulesResult: 'Oluşturma sonucu: {{ .succeeded }} başarılı, {{ .failed }} başarısız, {{ .skipped }} yürütülmedi' +FirewallRuleOperationResult: 'İşlem sonucu: {{ .succeeded }} başarılı, {{ .failed }} başarısız' +FirewallCreateRuleSkipped: 'Yürütülmedi' +FirewallCreateBatchStep: '{{ .backend }} için {{ .count }} kuralı toplu gönder' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}: {{ .rule }}; {{ .count }} kurala dönüştürüldü' +FirewallCreateRuleExecutionFailed: 'Kural oluşturma başarısız. Veritabanına kayıt yazılmadı ve yürütülen komutlar geri alınmadı' +FirewallCreateRulePersistenceFailed: 'Kural oluşturuldu ancak yönetim kaydı kaydedilemedi' +FirewallAdoptRulePersistenceFailed: 'Kuralı yönetime alma komutu yürütüldü, ancak yönetim kaydı kaydedilemedi' +FirewallSyncOperationsResult: 'Eşitleme işlemleri: {{ .removed }} silindi, {{ .created }} oluşturuldu, {{ .failed }} başarısız, {{ .skipped }} yürütülmedi' +FirewallSyncStep: 'Kuralları {{ .name }} ile eşitle' +FirewallSyncFailed: '{{ .failed }} güvenlik duvarı kuralı eşitlenemedi' +FirewallResetSourceStep: 'Kaynak güvenlik duvarı {{ .name }} sıfırla ve devre dışı bırak' +FirewallResetSourceResult: 'Kaynak güvenlik duvarı sıfırlandı; {{ .removed }} veritabanı kuralı silindi' +FirewallInitializeChainsStep: '{{ .name }} temel zincirlerini başlat ve bağla' +FirewallRestoreRulesStep: 'Veritabanı kurallarını {{ .name }} üzerine geri yükle' +FirewallSyncWhitelistStep: 'Güvenlik duvarı bağlantı noktası izin listesini eşitle' +FirewallEnableForwardingStep: 'Bağlantı noktası yönlendirme zincirlerini etkinleştir ve bağla' +FirewallRestoreForwardingRulesStep: 'Veritabanı bağlantı noktası yönlendirme kurallarını geri yükle' +FirewallInspectDockerGuardStep: 'Docker güvenlik duvarı arka ucunu ve ilkelerini denetle' +FirewallInitializeDockerGuardStep: '{{ .name }} bağlantı noktası koruma zincirlerini başlat ve bağla' +FirewallPersistDockerGuardStep: 'Docker bağlantı noktası koruma durumunu kaydet' ErrFirewallRuleScopeChange: "Mevcut güvenlik duvarı, kuralın kapsamını (IPv4/IPv6 adres ailesi gibi) değiştirmeyi desteklemiyor. Lütfen yeni bir kural oluşturun." FirewallWhitelistTask: "Güvenlik duvarı izin verilen port listesini güncelle" FirewallWhitelistSaved: "İzin verilenler listesi yapılandırması kaydedildi" diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 65ba9e91e..4bb14ed1f 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -159,10 +159,6 @@ ErrCustomApps: '存在已安裝的應用程式,請先解除安裝' ErrCustomRuntimes: '存在已安裝的運作環境,請先刪除' ErrAppVersionDeprecated: '{{ .name }} 應用不適配目前 1Panel 版本,跳過' ErrDockerFailed: 'Docker 狀態異常,請檢查服務狀態' -ErrDockerIptablesChainUnavailable: '未偵測到 Docker 的 DOCKER-USER 鏈,請重新啟動 Docker 後再試' -ErrDockerNftablesChainUnavailable: '未偵測到 Docker 的 nftables IPv4 防火牆鏈,請確認目前 Docker 版本支援 nftables 防火牆後端,重新啟動 Docker 後再試' -ErrDockerForwardPolicyDrop: '偵測到 {{ .family }} FORWARD 預設策略為 DROP,請調整後重試' -ErrUFWRuleAdopt: 'UFW 規則納管失敗:{{ .detail }}。如果目前 UFW 版本低於 0.35,請先升級 UFW 後再試' ErrDockerComposeCmdNotFound: 'Docker Compose 指令不存在,請先在宿主機安裝此指令' UseExistImage: '映像已存在,使用現有映像' UpgradePrepare: '準備應用程式升級' @@ -510,29 +506,6 @@ Container: '容器' AppLink: '關聯應用程式' EnableSSL: '開啟HTTPS' AppStore: '應用程式商店' -Firewall: '防火牆' -FirewallCreateRulesStep: '建立防火牆規則' -FirewallCreateRulesResult: '建立結果:成功 {{ .succeeded }} 條,失敗 {{ .failed }} 條,未執行 {{ .skipped }} 條' -FirewallRuleOperationResult: '操作結果:成功 {{ .succeeded }} 條,失敗 {{ .failed }} 條' -FirewallCreateRuleSkipped: '未執行' -FirewallCreateBatchStep: '向 {{ .backend }} 批次提交 {{ .count }} 條規則' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}:{{ .rule }};轉換為 {{ .count }} 條規則' -FirewallCreateRuleExecutionFailed: '規則建立失敗,未寫入資料庫,已執行的命令不回復' -FirewallCreateRulePersistenceFailed: '規則已建立,但納管資訊儲存失敗' -FirewallAdoptRulePersistenceFailed: '規則納管命令已執行,但納管資訊儲存失敗' -FirewallSyncOperationsResult: '同步操作彙總:刪除成功 {{ .removed }} 條,建立成功 {{ .created }} 條,失敗 {{ .failed }} 條,未執行 {{ .skipped }} 條' -FirewallSyncStep: '同步規則到 {{ .name }}' -FirewallSyncFailed: '{{ .failed }} 條防火牆規則同步失敗' -FirewallResetSourceStep: '重設並停用來源防火牆 {{ .name }}' -FirewallResetSourceResult: '來源防火牆重設完成,已刪除 {{ .removed }} 條資料庫規則' -FirewallInitializeChainsStep: '初始化並綁定 {{ .name }} 基礎鏈' -FirewallRestoreRulesStep: '恢復資料庫規則至 {{ .name }}' -FirewallSyncWhitelistStep: '同步防火牆連接埠白名單' -FirewallEnableForwardingStep: '啟用並綁定連接埠轉發鏈' -FirewallRestoreForwardingRulesStep: '恢復資料庫連接埠轉發規則' -FirewallInspectDockerGuardStep: '檢查 Docker 防火牆後端與防護策略' -FirewallInitializeDockerGuardStep: '初始化並綁定 {{ .name }} 連接埠防護鏈' -FirewallPersistDockerGuardStep: '儲存 Docker 連接埠防護狀態' TaskSync: '同步' LocalApp: '本機應用' SubTask: '子任務' @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: '阿里雲百煉 Coding Plan' AIProviderArk: '火山方舟' AIProviderArkCodingPlan: '火山方舟 Coding Plan' -# Firewall whitelist +# 防火牆 +ErrDockerIptablesChainUnavailable: '未偵測到 Docker 的 DOCKER-USER 鏈,請重新啟動 Docker 後再試' +ErrDockerNftablesChainUnavailable: '未偵測到 Docker 的 nftables IPv4 防火牆鏈,請確認目前 Docker 版本支援 nftables 防火牆後端,重新啟動 Docker 後再試' +ErrDockerForwardPolicyDrop: '偵測到 {{ .family }} FORWARD 預設策略為 DROP,請調整後重試' +ErrUFWRuleAdopt: 'UFW 規則納管失敗:{{ .detail }}。如果目前 UFW 版本低於 0.35,請先升級 UFW 後再試' +Firewall: '防火牆' +FirewallTaskHost: '主機防火牆' +FirewallTaskForwarding: '連接埠轉發' +FirewallTaskDocker: '容器連接埠防護' +FirewallRuleTaskCreate: '建立防火牆規則[{{ .name }}]' +FirewallRuleTaskUpdate: '更新防火牆規則[{{ .name }}]' +FirewallRuleTaskDelete: '刪除防火牆規則[{{ .name }}]' +FirewallRuleTaskSync: '同步防火牆規則[{{ .name }}]' +FirewallTaskInitialize: '初始化防火牆[{{ .name }}]' +FirewallCreateRulesStep: '建立防火牆規則' +FirewallCreateRulesResult: '建立結果:成功 {{ .succeeded }} 條,失敗 {{ .failed }} 條,未執行 {{ .skipped }} 條' +FirewallRuleOperationResult: '操作結果:成功 {{ .succeeded }} 條,失敗 {{ .failed }} 條' +FirewallCreateRuleSkipped: '未執行' +FirewallCreateBatchStep: '向 {{ .backend }} 批次提交 {{ .count }} 條規則' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}:{{ .rule }};轉換為 {{ .count }} 條規則' +FirewallCreateRuleExecutionFailed: '規則建立失敗,未寫入資料庫,已執行的命令不回復' +FirewallCreateRulePersistenceFailed: '規則已建立,但納管資訊儲存失敗' +FirewallAdoptRulePersistenceFailed: '規則納管命令已執行,但納管資訊儲存失敗' +FirewallSyncOperationsResult: '同步操作彙總:刪除成功 {{ .removed }} 條,建立成功 {{ .created }} 條,失敗 {{ .failed }} 條,未執行 {{ .skipped }} 條' +FirewallSyncStep: '同步規則到 {{ .name }}' +FirewallSyncFailed: '{{ .failed }} 條防火牆規則同步失敗' +FirewallResetSourceStep: '重設並停用來源防火牆 {{ .name }}' +FirewallResetSourceResult: '來源防火牆重設完成,已刪除 {{ .removed }} 條資料庫規則' +FirewallInitializeChainsStep: '初始化並綁定 {{ .name }} 基礎鏈' +FirewallRestoreRulesStep: '恢復資料庫規則至 {{ .name }}' +FirewallSyncWhitelistStep: '同步防火牆連接埠白名單' +FirewallEnableForwardingStep: '啟用並綁定連接埠轉發鏈' +FirewallRestoreForwardingRulesStep: '恢復資料庫連接埠轉發規則' +FirewallInspectDockerGuardStep: '檢查 Docker 防火牆後端與防護策略' +FirewallInitializeDockerGuardStep: '初始化並綁定 {{ .name }} 連接埠防護鏈' +FirewallPersistDockerGuardStep: '儲存 Docker 連接埠防護狀態' ErrFirewallRuleScopeChange: "目前的防火牆不支援修改規則的作用範圍(如 IPv4/IPv6 位址族),請建立新規則。" FirewallWhitelistTask: "更新防火牆連接埠白名單" FirewallWhitelistSaved: "白名單設定已儲存" diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index 32e39285f..c3c9c9964 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -159,10 +159,6 @@ ErrCustomApps: "存在已安装应用,请先卸载" ErrCustomRuntimes: "存在已安装运行环境,请先删除" ErrAppVersionDeprecated: "{{ .name }} 应用不适配当前 1Panel 版本,跳过" ErrDockerFailed: "Docker 状态异常,请检查服务状态" -ErrDockerIptablesChainUnavailable: "未检测到 Docker 的 DOCKER-USER 链,请重启 Docker 后重试" -ErrDockerNftablesChainUnavailable: "未检测到 Docker 的 nftables IPv4 防火墙链,请确认当前 Docker 版本支持 nftables 防火墙后端,重启 Docker 后重试" -ErrDockerForwardPolicyDrop: '检测到 {{ .family }} FORWARD 默认策略为 DROP,请调整后重试' -ErrUFWRuleAdopt: "UFW 规则纳管失败:{{ .detail }}。如果当前 UFW 版本低于 0.35,请先升级 UFW 后重试" ErrDockerComposeCmdNotFound: "Docker Compose 命令不存在,请先在宿主机安装" UseExistImage: "镜像已存在,使用存量镜像" UpgradePrepare: "准备应用升级" @@ -510,29 +506,6 @@ Container: "容器" AppLink: "关联应用" EnableSSL: "开启 HTTPS" AppStore: "应用商店" -Firewall: "防火墙" -FirewallCreateRulesStep: '创建防火墙规则' -FirewallCreateRulesResult: '创建结果:成功 {{ .succeeded }} 条,失败 {{ .failed }} 条,未执行 {{ .skipped }} 条' -FirewallRuleOperationResult: '操作结果:成功 {{ .succeeded }} 条,失败 {{ .failed }} 条' -FirewallCreateRuleSkipped: '未执行' -FirewallCreateBatchStep: '向 {{ .backend }} 批量提交 {{ .count }} 条规则' -FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}:{{ .rule }};转换为 {{ .count }} 条规则' -FirewallCreateRuleExecutionFailed: '规则创建失败,未入库,已执行的命令不回滚' -FirewallCreateRulePersistenceFailed: '规则已创建,但纳管信息保存失败' -FirewallAdoptRulePersistenceFailed: '规则纳管命令已执行,但纳管信息保存失败' -FirewallSyncOperationsResult: '同步操作汇总:删除成功 {{ .removed }} 条,创建成功 {{ .created }} 条,失败 {{ .failed }} 条,未执行 {{ .skipped }} 条' -FirewallSyncStep: "同步规则到 {{ .name }}" -FirewallSyncFailed: "{{ .failed }} 条防火墙规则同步失败" -FirewallResetSourceStep: "重置并停用源防火墙 {{ .name }}" -FirewallResetSourceResult: "源防火墙重置完成,已删除 {{ .removed }} 条数据库规则" -FirewallInitializeChainsStep: "初始化并绑定 {{ .name }} 基础链" -FirewallRestoreRulesStep: "恢复数据库规则到 {{ .name }}" -FirewallSyncWhitelistStep: "同步防火墙端口白名单" -FirewallEnableForwardingStep: "启用并绑定端口转发链" -FirewallRestoreForwardingRulesStep: "恢复数据库端口转发规则" -FirewallInspectDockerGuardStep: "检查 Docker 防火墙后端和防护策略" -FirewallInitializeDockerGuardStep: "初始化并绑定 {{ .name }} 端口防护链" -FirewallPersistDockerGuardStep: "保存 Docker 端口防护状态" TaskSync: "同步" LocalApp: "本地应用" SubTask: "子任务" @@ -706,7 +679,42 @@ AIProviderBailianCodingPlan: "阿里云百炼 Coding Plan" AIProviderArk: "火山方舟" AIProviderArkCodingPlan: "火山方舟 Coding Plan" -# Firewall whitelist +# 防火墙 +ErrDockerIptablesChainUnavailable: "未检测到 Docker 的 DOCKER-USER 链,请重启 Docker 后重试" +ErrDockerNftablesChainUnavailable: "未检测到 Docker 的 nftables IPv4 防火墙链,请确认当前 Docker 版本支持 nftables 防火墙后端,重启 Docker 后重试" +ErrDockerForwardPolicyDrop: '检测到 {{ .family }} FORWARD 默认策略为 DROP,请调整后重试' +ErrUFWRuleAdopt: "UFW 规则纳管失败:{{ .detail }}。如果当前 UFW 版本低于 0.35,请先升级 UFW 后重试" +Firewall: "防火墙" +FirewallTaskHost: '主机防火墙' +FirewallTaskForwarding: '端口转发' +FirewallTaskDocker: '容器端口防护' +FirewallRuleTaskCreate: '创建防火墙规则[{{ .name }}]' +FirewallRuleTaskUpdate: '更新防火墙规则[{{ .name }}]' +FirewallRuleTaskDelete: '删除防火墙规则[{{ .name }}]' +FirewallRuleTaskSync: '同步防火墙规则[{{ .name }}]' +FirewallTaskInitialize: '初始化防火墙[{{ .name }}]' +FirewallCreateRulesStep: '创建防火墙规则' +FirewallCreateRulesResult: '创建结果:成功 {{ .succeeded }} 条,失败 {{ .failed }} 条,未执行 {{ .skipped }} 条' +FirewallRuleOperationResult: '操作结果:成功 {{ .succeeded }} 条,失败 {{ .failed }} 条' +FirewallCreateRuleSkipped: '未执行' +FirewallCreateBatchStep: '向 {{ .backend }} 批量提交 {{ .count }} 条规则' +FirewallImportRuleConversion: '[{{ .index }}/{{ .total }}] {{ .source }} → {{ .target }}:{{ .rule }};转换为 {{ .count }} 条规则' +FirewallCreateRuleExecutionFailed: '规则创建失败,未入库,已执行的命令不回滚' +FirewallCreateRulePersistenceFailed: '规则已创建,但纳管信息保存失败' +FirewallAdoptRulePersistenceFailed: '规则纳管命令已执行,但纳管信息保存失败' +FirewallSyncOperationsResult: '同步操作汇总:删除成功 {{ .removed }} 条,创建成功 {{ .created }} 条,失败 {{ .failed }} 条,未执行 {{ .skipped }} 条' +FirewallSyncStep: "同步规则到 {{ .name }}" +FirewallSyncFailed: "{{ .failed }} 条防火墙规则同步失败" +FirewallResetSourceStep: "重置并停用源防火墙 {{ .name }}" +FirewallResetSourceResult: "源防火墙重置完成,已删除 {{ .removed }} 条数据库规则" +FirewallInitializeChainsStep: "初始化并绑定 {{ .name }} 基础链" +FirewallRestoreRulesStep: "恢复数据库规则到 {{ .name }}" +FirewallSyncWhitelistStep: "同步防火墙端口白名单" +FirewallEnableForwardingStep: "启用并绑定端口转发链" +FirewallRestoreForwardingRulesStep: "恢复数据库端口转发规则" +FirewallInspectDockerGuardStep: "检查 Docker 防火墙后端和防护策略" +FirewallInitializeDockerGuardStep: "初始化并绑定 {{ .name }} 端口防护链" +FirewallPersistDockerGuardStep: "保存 Docker 端口防护状态" ErrFirewallRuleScopeChange: "当前防火墙不支持修改规则的作用范围(如 IPv4/IPv6 地址族),请新建规则。" FirewallWhitelistTask: "更新防火墙端口白名单" FirewallWhitelistSaved: "白名单配置已保存" diff --git a/agent/utils/firewall/filter/providers/firewalld/adapter.go b/agent/utils/firewall/filter/providers/firewalld/adapter.go index 82bd0da47..940efba1a 100644 --- a/agent/utils/firewall/filter/providers/firewalld/adapter.go +++ b/agent/utils/firewall/filter/providers/firewalld/adapter.go @@ -691,7 +691,8 @@ type mergedObject struct { func mergeZoneObjects(scope filter.Scope, runtime, permanent zoneOutput) ([]filter.ObservedRule, error) { objects := make(map[string]*mergedObject) - add := func(rule filter.ObservedRule, runtimeState bool) { + richObjects := make(map[string]*mergedObject) + add := func(rule filter.ObservedRule, runtimeState bool) *mergedObject { key := string(rule.Rule.NativeKind) + "\x00" + rule.Locator.Canonical object, exists := objects[key] if !exists { @@ -704,12 +705,18 @@ func mergeZoneObjects(scope filter.Scope, runtime, permanent zoneOutput) ([]filt } else { object.permanent = true } + return object } parse := func(output zoneOutput, runtimeState bool) error { for _, rule := range parseZonePorts(scope, output.ports) { add(rule, runtimeState) } for _, raw := range nonEmptyLines(output.rich) { + if object, exists := richObjects[raw]; exists { + object.runtime = object.runtime || runtimeState + object.permanent = object.permanent || !runtimeState + continue + } rule, family, supported := parseRichRule(scope, raw) if !supported { opaqueScope := scope @@ -718,7 +725,7 @@ func mergeZoneObjects(scope filter.Scope, runtime, permanent zoneOutput) ([]filt } rule = opaqueRichRule(opaqueScope, raw) } - add(rule, runtimeState) + richObjects[raw] = add(rule, runtimeState) } for _, service := range strings.Fields(output.services) { if scope.Family == filter.FamilyInet { diff --git a/agent/utils/firewall/filter/safety.go b/agent/utils/firewall/filter/safety.go index de562ea18..6d5605c9c 100644 --- a/agent/utils/firewall/filter/safety.go +++ b/agent/utils/firewall/filter/safety.go @@ -42,9 +42,14 @@ func ProtectSnapshot(snapshot Snapshot, ports []PortWhitelist) (Snapshot, error) rules[index].Protected = true } } - protected, err := NewSnapshot(snapshot.Scope, rules) - if err != nil { - return Snapshot{}, err + protected := snapshot + protected.Rules = rules + if protected.Revision == "" { + var err error + protected, err = NewSnapshot(snapshot.Scope, rules) + if err != nil { + return Snapshot{}, err + } } protected.Notices = append([]ScopeNotice(nil), snapshot.Notices...) return protected, nil diff --git a/frontend/src/views/host/firewall/rule/index.vue b/frontend/src/views/host/firewall/rule/index.vue index 3d0a359b5..31218ad74 100644 --- a/frontend/src/views/host/firewall/rule/index.vue +++ b/frontend/src/views/host/firewall/rule/index.vue @@ -281,6 +281,8 @@