feat: Supports agents for the synchronous script library (#8527)

This commit is contained in:
ssongliu 2025-04-30 18:43:52 +08:00 committed by GitHub
parent 043bfc8b45
commit b382bd922b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 21 additions and 10 deletions

View file

@ -162,7 +162,7 @@ func (u *ScriptService) Sync() error {
syncTask.AddSubTask(task.GetTaskName(i18n.GetMsgByKey("ScriptLibrary"), task.TaskSync, task.TaskScopeScript), func(t *task.Task) (err error) { syncTask.AddSubTask(task.GetTaskName(i18n.GetMsgByKey("ScriptLibrary"), task.TaskSync, task.TaskScopeScript), func(t *task.Task) (err error) {
versionUrl := fmt.Sprintf("%s/scripts/version.txt", global.CONF.RemoteURL.ResourceURL) versionUrl := fmt.Sprintf("%s/scripts/version.txt", global.CONF.RemoteURL.ResourceURL)
_, versionRes, err := req_helper.HandleRequest(versionUrl, http.MethodGet, constant.TimeOut20s) _, versionRes, err := req_helper.HandleRequestWithProxy(versionUrl, http.MethodGet, constant.TimeOut20s)
if err != nil { if err != nil {
return fmt.Errorf("load scripts version from remote failed, err: %v", err) return fmt.Errorf("load scripts version from remote failed, err: %v", err)
} }

View file

@ -20,7 +20,6 @@ func Init() {
} }
scriptJob := job.NewScriptJob() scriptJob := job.NewScriptJob()
scriptJob.Run()
if _, err := global.Cron.AddJob(fmt.Sprintf("%v %v * * *", mathRand.Intn(60), mathRand.Intn(3)), scriptJob); err != nil { if _, err := global.Cron.AddJob(fmt.Sprintf("%v %v * * *", mathRand.Intn(60), mathRand.Intn(3)), scriptJob); err != nil {
global.LOG.Errorf("[core] can not add script sync corn job: %s", err.Error()) global.LOG.Errorf("[core] can not add script sync corn job: %s", err.Error())
} }

View file

@ -1545,6 +1545,7 @@ const message = {
proxyHelper2: 'System version upgrades and retrieving update information (Professional)', proxyHelper2: 'System version upgrades and retrieving update information (Professional)',
proxyHelper3: 'Verification and synchronization of system licenses', proxyHelper3: 'Verification and synchronization of system licenses',
proxyHelper4: 'Docker network access will be done through a proxy server (Professional)', proxyHelper4: 'Docker network access will be done through a proxy server (Professional)',
proxyHelper5: 'Unified download and sync for system-type script libraries (Professional Edition feature)',
proxyType: 'Proxy Type', proxyType: 'Proxy Type',
proxyUrl: 'Proxy Address', proxyUrl: 'Proxy Address',
proxyPort: 'Proxy Port', proxyPort: 'Proxy Port',
@ -3313,6 +3314,7 @@ const message = {
syncHelper: 'When master node data changes, it synchronizes to this child node in real-time', syncHelper: 'When master node data changes, it synchronizes to this child node in real-time',
syncBackupAccount: 'Backup account settings', syncBackupAccount: 'Backup account settings',
syncProxy: 'System proxy settings', syncProxy: 'System proxy settings',
syncCustomApp: 'Sync Custom App Repository',
syncAlertSetting: 'System alert settings', syncAlertSetting: 'System alert settings',
syncNodeInfo: 'Node basic data,', syncNodeInfo: 'Node basic data,',
nodeSyncHelper: 'Node information synchronization will sync the following information:', nodeSyncHelper: 'Node information synchronization will sync the following information:',
@ -3346,7 +3348,6 @@ const message = {
offline: 'Offline mode', offline: 'Offline mode',
freeCount: 'Free quota [{0}]', freeCount: 'Free quota [{0}]',
offlineHelper: 'Used when the node is in an offline environment', offlineHelper: 'Used when the node is in an offline environment',
SyncCustomApp: 'Sync Custom App Repository',
}, },
customApp: { customApp: {
name: 'Custom App Repository', name: 'Custom App Repository',

View file

@ -1487,6 +1487,7 @@ const message = {
proxyHelper2: 'システムの更新と更新情報検索プロフェッショナルエディションのみ', proxyHelper2: 'システムの更新と更新情報検索プロフェッショナルエディションのみ',
proxyHelper4: proxyHelper4:
'Dockerネットワークはプロキシサーバーを通じてアクセスされますプロフェッショナルエディションのみ', 'Dockerネットワークはプロキシサーバーを通じてアクセスされますプロフェッショナルエディションのみ',
proxyHelper5: 'システムタイプスクリプトライブラリの統一下載と同期プロフェッショナル版機能',
proxyHelper3: 'システムライセンスの確認と同期', proxyHelper3: 'システムライセンスの確認と同期',
proxyType: 'プロキシタイプ', proxyType: 'プロキシタイプ',
proxyUrl: 'プロキシアドレス', proxyUrl: 'プロキシアドレス',
@ -3172,6 +3173,7 @@ const message = {
syncHelper: 'マスターノードのデータが変更されるとこの子ノードにリアルタイムで同期されます,', syncHelper: 'マスターノードのデータが変更されるとこの子ノードにリアルタイムで同期されます,',
syncBackupAccount: 'バックアップアカウント設定', syncBackupAccount: 'バックアップアカウント設定',
syncProxy: 'システムプロキシ設定', syncProxy: 'システムプロキシ設定',
syncCustomApp: 'カスタムアプリリポジトリを同期',
syncAlertSetting: 'システムアラート設定', syncAlertSetting: 'システムアラート設定',
syncNodeInfo: 'ノード基本データ,', syncNodeInfo: 'ノード基本データ,',
nodeSyncHelper: 'ノード情報の同期は以下の情報を同期します', nodeSyncHelper: 'ノード情報の同期は以下の情報を同期します',
@ -3205,7 +3207,6 @@ const message = {
offline: 'オフラインモード', offline: 'オフラインモード',
freeCount: '無料枠 [{0}]', freeCount: '無料枠 [{0}]',
offlineHelper: 'ノードがオフライン環境にある場合に使用', offlineHelper: 'ノードがオフライン環境にある場合に使用',
SyncCustomApp: 'カスタムアプリリポジトリを同期',
}, },
customApp: { customApp: {
name: 'カスタムアプリリポジトリ', name: 'カスタムアプリリポジトリ',

View file

@ -1470,6 +1470,7 @@ const message = {
proxyHelper2: '시스템 업데이트 업데이트 정보 가져오기 (전문 버전에서만 제공)', proxyHelper2: '시스템 업데이트 업데이트 정보 가져오기 (전문 버전에서만 제공)',
proxyHelper4: 'Docker 네트워크가 프록시 서버를 통해 액세스됩니다 (전문 버전에서만 제공)', proxyHelper4: 'Docker 네트워크가 프록시 서버를 통해 액세스됩니다 (전문 버전에서만 제공)',
proxyHelper3: '시스템 라이선스 인증 동기화', proxyHelper3: '시스템 라이선스 인증 동기화',
proxyHelper5: '시스템 유형 스크립트 라이브러리의 통합 다운로드 동기화 (프로페셔널 에디션 기능)',
proxyType: '프록시 유형', proxyType: '프록시 유형',
proxyUrl: '프록시 주소', proxyUrl: '프록시 주소',
proxyPort: '프록시 포트', proxyPort: '프록시 포트',
@ -3117,6 +3118,7 @@ const message = {
syncHelper: '마스터 노드 데이터가 변경되면, 자식 노드에 실시간으로 동기화됩니다,', syncHelper: '마스터 노드 데이터가 변경되면, 자식 노드에 실시간으로 동기화됩니다,',
syncBackupAccount: '백업 계정 설정', syncBackupAccount: '백업 계정 설정',
syncProxy: '시스템 프록시 설정', syncProxy: '시스템 프록시 설정',
syncCustomApp: '사용자 정의 저장소 동기화',
syncAlertSetting: '시스템 경고 설정', syncAlertSetting: '시스템 경고 설정',
syncNodeInfo: '노드 기본 데이터,', syncNodeInfo: '노드 기본 데이터,',
nodeSyncHelper: '노드 정보 동기화는 다음 정보를 동기화합니다:', nodeSyncHelper: '노드 정보 동기화는 다음 정보를 동기화합니다:',
@ -3149,7 +3151,6 @@ const message = {
offline: '오프라인 모드', offline: '오프라인 모드',
freeCount: '무료 할당량 [{0}]', freeCount: '무료 할당량 [{0}]',
offlineHelper: '노드가 오프라인 환경일 사용', offlineHelper: '노드가 오프라인 환경일 사용',
SyncCustomApp: '사용자 정의 저장소 동기화',
}, },
customApp: { customApp: {
name: '사용자 정의 저장소', name: '사용자 정의 저장소',

View file

@ -1531,6 +1531,7 @@ const message = {
proxyHelper2: 'Kemas kini sistem dan pengambilan maklumat kemas kini (Edisi Profesional sahaja)', proxyHelper2: 'Kemas kini sistem dan pengambilan maklumat kemas kini (Edisi Profesional sahaja)',
proxyHelper4: 'Rangkaian Docker akan diakses melalui pelayan proksi (Edisi Profesional sahaja)', proxyHelper4: 'Rangkaian Docker akan diakses melalui pelayan proksi (Edisi Profesional sahaja)',
proxyHelper3: 'Pengesahan dan penyelarasan lesen sistem', proxyHelper3: 'Pengesahan dan penyelarasan lesen sistem',
proxyHelper5: 'Muat turun dan penyegerakan bersepadu untuk pustaka skrip jenis sistem (Ciri Edisi Profesional)',
proxyType: 'Jenis proksi', proxyType: 'Jenis proksi',
proxyUrl: 'Alamat proksi', proxyUrl: 'Alamat proksi',
proxyPort: 'Port proksi', proxyPort: 'Port proksi',
@ -3242,6 +3243,7 @@ const message = {
syncHelper: 'Apabila data nod induk berubah, ia akan disegerakkan ke nod anak ini secara masa nyata,', syncHelper: 'Apabila data nod induk berubah, ia akan disegerakkan ke nod anak ini secara masa nyata,',
syncBackupAccount: 'Tetapan akaun sandaran', syncBackupAccount: 'Tetapan akaun sandaran',
syncProxy: 'Tetapan proksi sistem', syncProxy: 'Tetapan proksi sistem',
syncCustomApp: 'Segerakan Repositori Aplikasi Tersuai',
syncAlertSetting: 'Tetapan amaran sistem', syncAlertSetting: 'Tetapan amaran sistem',
syncNodeInfo: 'Data asas nod,', syncNodeInfo: 'Data asas nod,',
nodeSyncHelper: 'Penyelarasan maklumat nod akan menyelaraskan maklumat berikut:', nodeSyncHelper: 'Penyelarasan maklumat nod akan menyelaraskan maklumat berikut:',
@ -3276,7 +3278,6 @@ const message = {
offline: 'Mod luar talian', offline: 'Mod luar talian',
freeCount: 'Had percuma [{0}]', freeCount: 'Had percuma [{0}]',
offlineHelper: 'Digunakan apabila nod berada dalam persekitaran luar talian', offlineHelper: 'Digunakan apabila nod berada dalam persekitaran luar talian',
SyncCustomApp: 'Segerakan Repositori Aplikasi Tersuai',
}, },
customApp: { customApp: {
name: 'Repositori Aplikasi Khusus', name: 'Repositori Aplikasi Khusus',

View file

@ -1517,6 +1517,8 @@ const message = {
proxyHelper2: 'Atualização do sistema e recuperação de informações de atualização (apenas edição profissional)', proxyHelper2: 'Atualização do sistema e recuperação de informações de atualização (apenas edição profissional)',
proxyHelper4: 'A rede Docker será acessada por meio de um servidor proxy (apenas edição profissional)', proxyHelper4: 'A rede Docker será acessada por meio de um servidor proxy (apenas edição profissional)',
proxyHelper3: 'Verificação e sincronização da licença do sistema', proxyHelper3: 'Verificação e sincronização da licença do sistema',
proxyHelper5:
'Download e sincronização unificados para bibliotecas de scripts do tipo sistema (Recurso da Edição Profissional)',
proxyType: 'Tipo de proxy', proxyType: 'Tipo de proxy',
proxyUrl: 'Endereço do proxy', proxyUrl: 'Endereço do proxy',
proxyPort: 'Porta do proxy', proxyPort: 'Porta do proxy',
@ -3247,6 +3249,7 @@ const message = {
syncHelper: 'Quando os dados do mestre mudam, são sincronizados em tempo real para este filho,', syncHelper: 'Quando os dados do mestre mudam, são sincronizados em tempo real para este filho,',
syncBackupAccount: 'Configurações de conta de backup', syncBackupAccount: 'Configurações de conta de backup',
syncProxy: 'Configurações de proxy do sistema', syncProxy: 'Configurações de proxy do sistema',
syncCustomApp: 'Sincronizar Repositório de Aplicativos Personalizados',
syncAlertSetting: 'Configurações de alerta do sistema', syncAlertSetting: 'Configurações de alerta do sistema',
syncNodeInfo: 'Dados básicos do ,', syncNodeInfo: 'Dados básicos do ,',
nodeSyncHelper: 'A sincronização das informações do irá sincronizar as seguintes informações:', nodeSyncHelper: 'A sincronização das informações do irá sincronizar as seguintes informações:',
@ -3280,7 +3283,6 @@ const message = {
offline: 'Modo offline', offline: 'Modo offline',
freeCount: 'Cota gratuita [{0}]', freeCount: 'Cota gratuita [{0}]',
offlineHelper: 'Usado quando o está em ambiente offline', offlineHelper: 'Usado quando o está em ambiente offline',
SyncCustomApp: 'Sincronizar Repositório de Aplicativos Personalizados',
}, },
customApp: { customApp: {
name: 'Repositório de Aplicativos Personalizados', name: 'Repositório de Aplicativos Personalizados',

View file

@ -1519,6 +1519,7 @@ const message = {
proxyHelper2: 'Обновление системы и получение информации об обновлениях (только профессиональная версия)', proxyHelper2: 'Обновление системы и получение информации об обновлениях (только профессиональная версия)',
proxyHelper4: 'Сеть Docker будет доступна через прокси-сервер (только профессиональная версия)', proxyHelper4: 'Сеть Docker будет доступна через прокси-сервер (только профессиональная версия)',
proxyHelper3: 'Проверка и синхронизация системной лицензии', proxyHelper3: 'Проверка и синхронизация системной лицензии',
proxyHelper5: 'Единая загрузка и синхронизация системных скрипт-библиотек (функция Профессиональной версии)',
proxyType: 'Тип прокси', proxyType: 'Тип прокси',
proxyUrl: 'Адрес прокси', proxyUrl: 'Адрес прокси',
proxyPort: 'Порт прокси', proxyPort: 'Порт прокси',
@ -3237,6 +3238,7 @@ const message = {
'При изменении данных главного узла, происходит синхронизация с этим дочерним узлом в реальном времени,', 'При изменении данных главного узла, происходит синхронизация с этим дочерним узлом в реальном времени,',
syncBackupAccount: 'Настройки резервной учётной записи', syncBackupAccount: 'Настройки резервной учётной записи',
syncProxy: 'Настройки системного прокси', syncProxy: 'Настройки системного прокси',
syncCustomApp: 'Синхронизировать пользовательский репозиторий приложений',
syncAlertSetting: 'Настройки системных предупреждений', syncAlertSetting: 'Настройки системных предупреждений',
syncNodeInfo: 'Базовые данные узла,', syncNodeInfo: 'Базовые данные узла,',
nodeSyncHelper: 'Синхронизация информации о узле будет синхронизировать следующую информацию:', nodeSyncHelper: 'Синхронизация информации о узле будет синхронизировать следующую информацию:',
@ -3270,7 +3272,6 @@ const message = {
offline: 'Автономный режим', offline: 'Автономный режим',
freeCount: 'Бесплатная квота [{0}]', freeCount: 'Бесплатная квота [{0}]',
offlineHelper: 'Используется, когда узел находится в автономной среде', offlineHelper: 'Используется, когда узел находится в автономной среде',
SyncCustomApp: 'Синхронизировать пользовательский репозиторий приложений',
}, },
customApp: { customApp: {
name: 'Пользовательское хранилище приложений', name: 'Пользовательское хранилище приложений',

View file

@ -1464,6 +1464,7 @@ const message = {
proxyHelper2: '系統版本升級及獲取更新說明專業版功能', proxyHelper2: '系統版本升級及獲取更新說明專業版功能',
proxyHelper3: '系統許可證的驗證和同步', proxyHelper3: '系統許可證的驗證和同步',
proxyHelper4: 'Docker 的網絡訪問將通過代理伺服器進行專業版功能', proxyHelper4: 'Docker 的網絡訪問將通過代理伺服器進行專業版功能',
proxyHelper5: '系統類型腳本庫的統一下載與同步專業版功能',
proxyType: '代理類型', proxyType: '代理類型',
proxyUrl: '代理地址', proxyUrl: '代理地址',
proxyPort: '代理端口', proxyPort: '代理端口',
@ -3071,6 +3072,7 @@ const message = {
syncHelper: '當主節點數據發生變化時實時同步到該子節點,', syncHelper: '當主節點數據發生變化時實時同步到該子節點,',
syncBackupAccount: '備份帳號設定', syncBackupAccount: '備份帳號設定',
syncProxy: '系統代理設定', syncProxy: '系統代理設定',
syncCustomApp: '同步自訂應用倉庫',
syncAlertSetting: '系統告警設定', syncAlertSetting: '系統告警設定',
syncNodeInfo: '節點基礎數據,', syncNodeInfo: '節點基礎數據,',
nodeSyncHelper: '節點信息同步將同步以下信息', nodeSyncHelper: '節點信息同步將同步以下信息',
@ -3102,7 +3104,6 @@ const message = {
offline: '離線模式', offline: '離線模式',
freeCount: '免費額度 [{0}]', freeCount: '免費額度 [{0}]',
offlineHelper: '當節點處於離線環境時使用', offlineHelper: '當節點處於離線環境時使用',
SyncCustomApp: '同步自訂應用倉庫',
}, },
customApp: { customApp: {
name: '自訂應用倉庫', name: '自訂應用倉庫',

View file

@ -1460,6 +1460,7 @@ const message = {
proxyHelper2: '系统版本升级及获取更新说明专业版功能', proxyHelper2: '系统版本升级及获取更新说明专业版功能',
proxyHelper3: '系统许可证的验证和同步', proxyHelper3: '系统许可证的验证和同步',
proxyHelper4: 'Docker 的网络访问将通过代理服务器进行专业版功能', proxyHelper4: 'Docker 的网络访问将通过代理服务器进行专业版功能',
proxyHelper5: '系统类型脚本库的统一下载与同步专业版功能',
proxyType: '代理类型', proxyType: '代理类型',
proxyUrl: '代理地址', proxyUrl: '代理地址',
proxyPort: '代理端口', proxyPort: '代理端口',
@ -3053,6 +3054,7 @@ const message = {
syncHelper: '主节点数据发生变化时实时同步到该子节点', syncHelper: '主节点数据发生变化时实时同步到该子节点',
syncBackupAccount: '备份账号设置', syncBackupAccount: '备份账号设置',
syncProxy: '系统代理设置', syncProxy: '系统代理设置',
syncCustomApp: '同步自定义应用仓库',
syncAlertSetting: '系统告警设置', syncAlertSetting: '系统告警设置',
syncNodeInfo: '节点基础数据', syncNodeInfo: '节点基础数据',
nodeSyncHelper: '节点信息同步将同步以下信息', nodeSyncHelper: '节点信息同步将同步以下信息',
@ -3084,7 +3086,6 @@ const message = {
offline: '离线模式', offline: '离线模式',
freeCount: '免费额度 [{0}] ', freeCount: '免费额度 [{0}] ',
offlineHelper: '节点为离线环境时使用', offlineHelper: '节点为离线环境时使用',
SyncCustomApp: '同步自定义应用仓库',
}, },
customApp: { customApp: {
name: '自定义应用仓库', name: '自定义应用仓库',

View file

@ -100,6 +100,7 @@
</el-option-group> </el-option-group>
</el-select> </el-select>
<TableSearch @search="search()" v-model:searchName="searchName" /> <TableSearch @search="search()" v-model:searchName="searchName" />
<TableRefresh @search="search()" />
</template> </template>
<template #main> <template #main>
<ComplexTable <ComplexTable

View file

@ -77,6 +77,7 @@
</el-option-group> </el-option-group>
</el-select> </el-select>
<TableSearch @search="search()" v-model:searchName="searchName" /> <TableSearch @search="search()" v-model:searchName="searchName" />
<TableRefresh @search="search()" />
</template> </template>
<template #main> <template #main>
<ComplexTable <ComplexTable

View file

@ -6,6 +6,7 @@
{{ $t('setting.proxyHelper') }} {{ $t('setting.proxyHelper') }}
<ul class="-ml-5"> <ul class="-ml-5">
<li>{{ $t('setting.proxyHelper1') }}</li> <li>{{ $t('setting.proxyHelper1') }}</li>
<li>{{ $t('setting.proxyHelper5') }}</li>
<li>{{ $t('setting.proxyHelper2') }}</li> <li>{{ $t('setting.proxyHelper2') }}</li>
<li>{{ $t('setting.proxyHelper4') }}</li> <li>{{ $t('setting.proxyHelper4') }}</li>
<li>{{ $t('setting.proxyHelper3') }}</li> <li>{{ $t('setting.proxyHelper3') }}</li>