From 4aa628121cb9f6a7e28b6ed40c6048f500ec0b78 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Fri, 25 Apr 2025 22:37:54 +0800 Subject: [PATCH] feat: Complete the Docker proxy synchronization function (#8480) --- core/app/dto/setting.go | 1 + core/app/service/setting.go | 18 +++ core/constant/common.go | 1 + core/utils/xpack/xpack.go | 2 + frontend/src/lang/modules/en.ts | 5 +- frontend/src/lang/modules/ja.ts | 5 +- frontend/src/lang/modules/ko.ts | 5 +- frontend/src/lang/modules/ms.ts | 5 +- frontend/src/lang/modules/pt-br.ts | 5 +- frontend/src/lang/modules/ru.ts | 5 +- frontend/src/lang/modules/zh-Hant.ts | 5 +- frontend/src/lang/modules/zh.ts | 5 +- .../src/views/setting/panel/proxy/index.vue | 105 ++---------------- 13 files changed, 55 insertions(+), 112 deletions(-) diff --git a/core/app/dto/setting.go b/core/app/dto/setting.go index f6bb03e3c..54e76880d 100644 --- a/core/app/dto/setting.go +++ b/core/app/dto/setting.go @@ -151,6 +151,7 @@ type ProxyUpdate struct { ProxyUser string `json:"proxyUser"` ProxyPasswd string `json:"proxyPasswd"` ProxyPasswdKeep string `json:"proxyPasswdKeep"` + ProxyDocker bool `json:"proxyDocker"` } type CleanData struct { diff --git a/core/app/service/setting.go b/core/app/service/setting.go index 67b492fa4..dad854347 100644 --- a/core/app/service/setting.go +++ b/core/app/service/setting.go @@ -199,6 +199,9 @@ func (u *SettingService) UpdateProxy(req dto.ProxyUpdate) error { if err := settingRepo.Update("ProxyPasswdKeep", req.ProxyPasswdKeep); err != nil { return err } + if err := xpack.ProxyDocker(loadDockerProxy(req)); err != nil { + return err + } go func() { if err := xpack.Sync(constant.SyncSystemProxy); err != nil { global.LOG.Errorf("sync proxy to node failed, err: %v", err) @@ -636,3 +639,18 @@ func (u *SettingService) GetLoginSetting() (*dto.SystemSetting, error) { } return res, nil } + +func loadDockerProxy(req dto.ProxyUpdate) string { + if len(req.ProxyType) == 0 || req.ProxyType == "close" || !req.ProxyDocker { + return "" + } + proxyPasswd := "" + if len(req.ProxyUser) != 0 { + proxyPasswd = req.ProxyPasswd + "@" + } + proxyUrl := req.ProxyType + "://" + req.ProxyUser + ":" + proxyPasswd + req.ProxyUrl + req.ProxyPort + if req.ProxyType == "http" || req.ProxyType == "https" { + req.ProxyUrl = req.ProxyType + "://" + req.ProxyUrl + } + return proxyUrl +} diff --git a/core/constant/common.go b/core/constant/common.go index 19610a912..422c5f6da 100644 --- a/core/constant/common.go +++ b/core/constant/common.go @@ -45,6 +45,7 @@ const ( const ( SyncSystemProxy = "SyncSystemProxy" SyncBackupAccounts = "SyncBackupAccounts" + SyncAlertSetting = "SyncAlertSetting" ) var WebUrlMap = map[string]struct{}{ diff --git a/core/utils/xpack/xpack.go b/core/utils/xpack/xpack.go index 4d4e3a0fd..3d6eea788 100644 --- a/core/utils/xpack/xpack.go +++ b/core/utils/xpack/xpack.go @@ -14,6 +14,8 @@ import ( func Proxy(c *gin.Context, currentNode string) {} +func ProxyDocker(proxyURL string) error { return nil } + func UpdateGroup(name string, group, newGroup uint) error { return nil } func CheckBackupUsed(name string) error { return nil } diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 5d97cb7db..4ec4dd50f 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -3265,8 +3265,9 @@ const message = { nodeInfo: 'Node Information', syncInfo: 'Data synchronization', syncHelper: 'When master node data changes, it synchronizes to this child node in real-time', - syncBackupAccount: 'Backup account data', - syncProxy: 'System proxy data', + syncBackupAccount: 'Backup account settings', + syncProxy: 'System proxy settings', + syncAlertSetting: 'System alert settings', syncNodeInfo: 'Node basic data,', nodeSyncHelper: 'Node information synchronization will sync the following information:', nodeSyncHelper1: '1. Public backup account information', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index a0443b3ee..726deaeeb 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -3124,8 +3124,9 @@ const message = { nodeInfo: 'ノード情報', syncInfo: 'データ同期,', syncHelper: 'マスターノードのデータが変更されると、この子ノードにリアルタイムで同期されます,', - syncBackupAccount: 'アカウントデータのバックアップ,', - syncProxy: 'システムプロキシデータ,', + syncBackupAccount: 'バックアップアカウント設定', + syncProxy: 'システムプロキシ設定', + syncAlertSetting: 'システムアラート設定', syncNodeInfo: 'ノード基本データ,', nodeSyncHelper: 'ノード情報の同期は、以下の情報を同期します:', nodeSyncHelper1: '1. 公共のバックアップアカウント情報', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index f8eed9ee6..7a3941d61 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -3072,8 +3072,9 @@ const message = { nodeInfo: '노드 정보', syncInfo: '데이터 동기화,', syncHelper: '마스터 노드 데이터가 변경되면, 이 자식 노드에 실시간으로 동기화됩니다,', - syncBackupAccount: '계정 데이터 백업,', - syncProxy: '시스템 프록시 데이터,', + syncBackupAccount: '백업 계정 설정', + syncProxy: '시스템 프록시 설정', + syncAlertSetting: '시스템 경고 설정', syncNodeInfo: '노드 기본 데이터,', nodeSyncHelper: '노드 정보 동기화는 다음 정보를 동기화합니다:', nodeSyncHelper1: '1. 공용 백업 계정 정보', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index dfa21f2d4..de7ddc82f 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -3193,8 +3193,9 @@ const message = { nodeInfo: 'Maklumat Nod', syncInfo: 'Penyegerakan data,', syncHelper: 'Apabila data nod induk berubah, ia akan disegerakkan ke nod anak ini secara masa nyata,', - syncBackupAccount: 'Data akaun sandaran,', - syncProxy: 'Data proksi sistem,', + syncBackupAccount: 'Tetapan akaun sandaran', + syncProxy: 'Tetapan proksi sistem', + syncAlertSetting: 'Tetapan amaran sistem', syncNodeInfo: 'Data asas nod,', nodeSyncHelper: 'Penyelarasan maklumat nod akan menyelaraskan maklumat berikut:', nodeSyncHelper1: '1. Maklumat akaun sandaran awam', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 83ca5af67..ae3f21469 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -3199,8 +3199,9 @@ const message = { nodeInfo: 'Informações do Nó', syncInfo: 'Sincronização de dados,', syncHelper: 'Quando os dados do nó mestre mudam, são sincronizados em tempo real para este nó filho,', - syncBackupAccount: 'Dados de conta de backup,', - syncProxy: 'Dados de proxy do sistema,', + syncBackupAccount: 'Configurações de conta de backup', + syncProxy: 'Configurações de proxy do sistema', + syncAlertSetting: 'Configurações de alerta do sistema', syncNodeInfo: 'Dados básicos do nó,', nodeSyncHelper: 'A sincronização das informações do nó irá sincronizar as seguintes informações:', nodeSyncHelper1: '1. Informações da conta de backup pública', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 01efae2bd..0d5735187 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -3188,8 +3188,9 @@ const message = { syncInfo: 'Синхронизация данных,', syncHelper: 'При изменении данных главного узла, происходит синхронизация с этим дочерним узлом в реальном времени,', - syncBackupAccount: 'Резервные данные аккаунта,', - syncProxy: 'Данные системного прокси,', + syncBackupAccount: 'Настройки резервной учётной записи', + syncProxy: 'Настройки системного прокси', + syncAlertSetting: 'Настройки системных предупреждений', syncNodeInfo: 'Базовые данные узла,', nodeSyncHelper: 'Синхронизация информации о узле будет синхронизировать следующую информацию:', nodeSyncHelper1: '1. Информация о публичной резервной учетной записи', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index f82407eee..c3709084d 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3028,8 +3028,9 @@ const message = { nodeInfo: '節點資訊', syncInfo: '數據同步,', syncHelper: '當主節點數據發生變化時,實時同步到該子節點,', - syncBackupAccount: '備份帳號數據,', - syncProxy: '系統代理數據,', + syncBackupAccount: '備份帳號設定', + syncProxy: '系統代理設定', + syncAlertSetting: '系統告警設定', syncNodeInfo: '節點基礎數據,', nodeSyncHelper: '節點信息同步將同步以下信息:', nodeSyncHelper1: '1. 公用的備份帳號信息', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index eff39b962..22379d301 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -3011,8 +3011,9 @@ const message = { nodeInfo: '节点信息', syncInfo: '数据同步', syncHelper: '主节点数据发生变化时,实时同步到该子节点', - syncBackupAccount: '备份账号数据', - syncProxy: '系统代理数据', + syncBackupAccount: '备份账号设置', + syncProxy: '系统代理设置', + syncAlertSetting: '系统告警设置', syncNodeInfo: '节点基础数据', nodeSyncHelper: '节点信息同步将同步以下信息:', nodeSyncHelper1: '1. 公用的备份账号信息', diff --git a/frontend/src/views/setting/panel/proxy/index.vue b/frontend/src/views/setting/panel/proxy/index.vue index 152b81c92..337f4b62d 100644 --- a/frontend/src/views/setting/panel/proxy/index.vue +++ b/frontend/src/views/setting/panel/proxy/index.vue @@ -1,5 +1,5 @@