From 429e2c6cbef9f0f4cb35e1858105f532eb445fe6 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Tue, 17 Jun 2025 16:04:54 +0800 Subject: [PATCH] feat: Optimize the node to add inspection items (#9138) --- core/utils/common/common.go | 13 +++++++++++++ frontend/src/lang/modules/en.ts | 17 +++++++++++++---- frontend/src/lang/modules/ja.ts | 18 +++++++++++++----- frontend/src/lang/modules/ko.ts | 19 ++++++++++++++----- frontend/src/lang/modules/ms.ts | 19 ++++++++++++++----- frontend/src/lang/modules/pt-br.ts | 19 ++++++++++++++----- frontend/src/lang/modules/ru.ts | 17 +++++++++++++---- frontend/src/lang/modules/zh-Hant.ts | 15 +++++++++++---- frontend/src/lang/modules/zh.ts | 16 ++++++++++++---- 9 files changed, 117 insertions(+), 36 deletions(-) diff --git a/core/utils/common/common.go b/core/utils/common/common.go index 69c382156..a00ece076 100644 --- a/core/utils/common/common.go +++ b/core/utils/common/common.go @@ -66,6 +66,19 @@ func ScanPort(port int) bool { return false } +func CheckPort(host string, port string, timeout time.Duration) bool { + target := net.JoinHostPort(host, port) + conn, err := net.DialTimeout("tcp", target, timeout) + if err != nil { + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + return false + } + return strings.Contains(err.Error(), "connection refused") + } + defer conn.Close() + return true +} + func ComparePanelVersion(version1, version2 string) bool { if version1 == version2 { return false diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 7df81dd4c..50109a3b9 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -3378,13 +3378,22 @@ const message = { nodeSyncHelper1: '1. Public backup account information', nodeSyncHelper2: '2. Connection information between the main node and sub-nodes', + nodeCheck: 'Availability check', + checkSSH: 'Check node SSH connection', + checkLicense: 'Check node license status', + checkService: 'Check existing service information on node', + checkPort: 'Check node port reachability', panelExist: - '1Panel V1 service is running on this node. Please upgrade to V2 using the migration script before adding.', - coreExist: 'This node has already been enabled as the main node and cannot be added as a slave node.', + 'Detected that this node is running 1Panel V1 service. Please upgrade to V2 using the migration script before adding.', + coreExist: 'This node is already enabled as a master node and cannot be added as a slave node.', agentExist: - '1panel-agent is already installed on this node. Continuing will preserve existing data and only replace the 1panel-agent service. Proceed?', - dataExist: '1Panel historical data exists on this node. Confirm to continue adding?', + 'Detected that 1panel-agent is already installed on this node. Continuing will retain existing data and only replace the 1panel-agent service.', + oldDataExist: + 'Detected historical 1Panel V2 data on this node. The following information will be used to overwrite current settings:', errLicense: 'The license bound to this node is unavailable. Please check and try again!', + errNodePort: + 'Node port [ {0} ] is detected as inaccessible. Please check if the firewall or security group has allowed this port.', + reinstallHelper: 'Reinstall node {0}, do you want to continue?', unhealthyCheck: 'Abnormal Check', fixOperation: 'Fix Operation', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index c1aca87b1..1186eca6f 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -3246,13 +3246,21 @@ const message = { nodeSyncHelper1: '1. 公共のバックアップアカウント情報', nodeSyncHelper2: '2. 主ノードとサブノードの接続情報', + nodeCheck: '可用性チェック', + checkSSH: 'ノードSSH接続を確認', + checkLicense: 'ノードライセンス状態を確認', + checkService: 'ノードの既存サービス情報を確認', + checkPort: 'ノードポート到達性を確認', panelExist: - 'このノードで1Panel V1サービスが実行中です。追加する前に移行スクリプトでV2にアップグレードしてください。', - coreExist: 'このノードは既にメインノードとして有効になっており、スレーブノードとして追加できません。', + 'このノードで1Panel V1サービスが実行中です。追加前に移行スクリプトでV2へアップグレードしてください。', + coreExist: 'このノードはマスターノードとして有効化済みのため、スレーブノードとして追加できません。', agentExist: - 'このノードには1panel-agentがインストール済みです。続行すると既存データは保持され、1panel-agentサービスのみ置き換えられます。続行しますか?', - dataExist: 'このノードに1Panelの過去データが存在します。追加を続行しますか?', - errLicense: 'このノードにバインドされたライセンスが利用できません。確認して再試行してください!', + 'このノードに1panel-agentが既にインストールされています。続行すると既存データを保持し、1panel-agentサービスのみを置換します。', + oldDataExist: 'このノードに1Panel V2の過去データが検出されました。以下の情報で現在の設定を上書きします:', + errLicense: 'このノードに紐づけられたライセンスが利用できません。確認して再試行してください!', + errNodePort: + 'ノードポート[ {0} ]にアクセスできないことが検出されました。ファイアウォールまたはセキュリティグループでこのポートが開放されているか確認してください。', + reinstallHelper: 'ノード{0}を再インストールします。続行しますか?', unhealthyCheck: '異常チェック', fixOperation: '修正操作', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 35a68a276..265c47cec 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -3189,13 +3189,22 @@ const message = { nodeSyncHelper1: '1. 공용 백업 계정 정보', nodeSyncHelper2: '2. 주 노드와 하위 노드 간의 연결 정보', + nodeCheck: '가용성 확인', + checkSSH: '노드 SSH 연결 확인', + checkLicense: '노드 라이선스 상태 확인', + checkService: '노드의 기존 서비스 정보 확인', + checkPort: '노드 포트 접근 가능 여부 확인', panelExist: - '이 노드에서 1Panel V1 서비스가 실행 중입니다. 추가하기 전에 마이그레이션 스크립트로 V2로 업그레이드하세요.', - coreExist: '이 노드는 이미 메인 노드로 활성화되어 있어 슬레이브 노드로 추가할 수 없습니다.', + '이 노드에서 1Panel V1 서비스가 실행 중인 것으로 감지되었습니다. 추가 전에 마이그레이션 스크립트로 V2로 업그레이드하십시오.', + coreExist: '이 노드는 이미 마스터 노드로 활성화되어 있어 슬레이브 노드로 추가할 수 없습니다.', agentExist: - '이 노드에 1panel-agent가 이미 설치되어 있습니다. 계속하면 기존 데이터는 유지되고 1panel-agent 서비스만 교체됩니다. 계속하시겠습니까?', - dataExist: '이 노드에 1Panel 이전 데이터가 존재합니다. 추가를 계속하시겠습니까?', - errLicense: '이 노드에 연결된 라이선스를 사용할 수 없습니다. 확인 후 다시 시도하세요!', + '이 노드에 1panel-agent가 이미 설치되어 있는 것으로 감지되었습니다. 계속하면 기존 데이터를 유지하고 1panel-agent 서비스만 교체됩니다.', + oldDataExist: + '이 노드에서 1Panel V2 기록 데이터가 감지되었습니다. 다음 정보를 사용하여 현재 설정을 덮어씁니다:', + errLicense: '이 노드에 바인딩된 라이선스를 사용할 수 없습니다. 확인 후 다시 시도하십시오!', + errNodePort: + '노드 포트 [ {0} ]에 접근할 수 없는 것으로 감지되었습니다. 방화벽 또는 보안 그룹에서 해당 포트가 허용되었는지 확인하십시오.', + reinstallHelper: '노드 {0}를 재설치합니다. 계속하시겠습니까?', unhealthyCheck: '비정상 체크', fixOperation: '수정 작업', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 148a617a2..735067df4 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -3317,13 +3317,22 @@ const message = { nodeSyncHelper1: '1. Maklumat akaun sandaran awam', nodeSyncHelper2: '2. Maklumat sambungan antara nod utama dan nod sub', + nodeCheck: 'Semakan ketersediaan', + checkSSH: 'Periksa sambungan SSH nod', + checkLicense: 'Periksa status lesen nod', + checkService: 'Periksa maklumat perkhidmatan sedia ada pada nod', + checkPort: 'Periksa kebolehcapaian port nod', panelExist: - 'Mengesan perkhidmatan 1Panel V1 sedang berjalan pada nod ini. Sila naik taraf ke V2 menggunakan skrip migrasi sebelum menambah.', - coreExist: 'Node ini telah diaktifkan sebagai nod utama dan tidak boleh ditambah sebagai nod hamba.', + 'Mengesan nod ini sedang menjalankan perkhidmatan 1Panel V1. Sila naik taraf ke V2 menggunakan skrip migrasi sebelum menambah.', + coreExist: 'Nod ini telah didayakan sebagai nod induk dan tidak boleh ditambah sebagai nod hamba.', agentExist: - 'Mengesan 1panel-agent telah dipasang pada nod ini. Jika diteruskan, data sedia ada akan dikekalkan dan hanya perkhidmatan 1panel-agent akan diganti. Teruskan?', - dataExist: 'Mengesan data sejarah 1Panel wujud pada nod ini. Sahkan untuk terus menambah?', - errLicense: 'Lesen yang terikat pada nod ini tidak tersedia. Sila periksa dan cuba lagi!', + 'Mengesan 1panel-agent telah dipasang pada nod ini. Penerusan akan mengekalkan data sedia ada dan hanya menggantikan perkhidmatan 1panel-agent.', + oldDataExist: + 'Mengesan data sejarah 1Panel V2 pada nod ini. Maklumat berikut akan digunakan untuk menimpa tetapan semasa:', + errLicense: 'Lesen yang terikat pada nod ini tidak tersedia. Sila semak dan cuba lagi!', + errNodePort: + 'Port nod [ {0} ] dikesan tidak boleh diakses. Sila semak sama ada firewall atau kumpulan keselamatan telah membenarkan port ini.', + reinstallHelper: 'Pasang semula nod {0}, adakah anda ingin meneruskan?', unhealthyCheck: 'Pemeriksaan Tidak Normal', fixOperation: 'Operasi Pembetulan', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index d3517e7dd..5dd40c182 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -3324,13 +3324,22 @@ const message = { nodeSyncHelper1: '1. Informações da conta de backup pública', nodeSyncHelper2: '2. Informações de conexão entre o nó principal e os sub-nós', + nodeCheck: 'Verificação de disponibilidade', + checkSSH: 'Verificar conexão SSH do nó', + checkLicense: 'Verificar status da licença do nó', + checkService: 'Verificar informações de serviço existentes no nó', + checkPort: 'Verificar acessibilidade da porta do nó', panelExist: - 'O serviço 1Panel V1 está em execução neste nó. Atualize para V2 usando o script de migração antes de adicionar.', - coreExist: 'Este nó já foi ativado como nó principal e não pode ser adicionado como um nó escravo.', + 'Detectado que este nó está executando o serviço 1Panel V1. Atualize para V2 usando o script de migração antes de adicionar.', + coreExist: 'Este nó já está habilitado como nó mestre e não pode ser adicionado como nó escravo.', agentExist: - '1panel-agent já está instalado neste nó. Continuar preservará os dados existentes e substituirá apenas o serviço 1panel-agent. Prosseguir?', - dataExist: 'Existem dados históricos do 1Panel neste nó. Confirmar para continuar a adição?', - errLicense: 'A licença vinculada a este nó não está disponível. Por favor, verifique e tente novamente!', + 'Detectado que 1panel-agent já está instalado neste nó. Continuar irá reter os dados existentes e apenas substituir o serviço 1panel-agent.', + oldDataExist: + 'Detectados dados históricos do 1Panel V2 neste nó. As seguintes informações serão usadas para sobrescrever as configurações atuais:', + errLicense: 'A licença vinculada a este nó está indisponível. Por favor verifique e tente novamente!', + errNodePort: + 'A porta do nó [ {0} ] foi detectada como inacessível. Verifique se o firewall ou grupo de segurança liberou esta porta.', + reinstallHelper: 'Reinstalar o nó {0}, deseja continuar?', unhealthyCheck: 'Verificação Anormal', fixOperation: 'Operação de Correção', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index f0f5a75f9..155ecf817 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -3312,13 +3312,22 @@ const message = { nodeSyncHelper1: '1. Информация о публичной резервной учетной записи', nodeSyncHelper2: '2. Информация о соединении между основным узлом и подузлами', + nodeCheck: 'Проверка доступности', + checkSSH: 'Проверить SSH-подключение узла', + checkLicense: 'Проверить статус лицензии узла', + checkService: 'Проверить информацию о существующих службах на узле', + checkPort: 'Проверить доступность порта узла', panelExist: - 'На этом узле запущена служба 1Panel V1. Перед добавлением обновитесь до V2 с помощью скрипта миграции.', - coreExist: 'Этот узел уже активирован как основной узел и не может быть добавлен как подчиненный узел.', + 'Обнаружено, что на этом узле работает служба 1Panel V1. Перед добавлением обновите до V2 с помощью скрипта миграции.', + coreExist: 'Этот узел уже активирован как мастер-узел и не может быть добавлен как подчиненный узел.', agentExist: - '1panel-agent уже установлен на этом узле. Продолжение сохранит существующие данные и заменит только службу 1panel-agent. Продолжить?', - dataExist: 'На этом узле есть исторические данные 1Panel. Подтвердить продолжение добавления?', + 'Обнаружено, что 1panel-agent уже установлен на этом узле. Продолжение сохранит существующие данные и заменит только службу 1panel-agent.', + oldDataExist: + 'Обнаружены исторические данные 1Panel V2 на этом узле. Текущие настройки будут перезаписаны следующей информацией:', errLicense: 'Лицензия, привязанная к этому узлу, недоступна. Пожалуйста, проверьте и повторите попытку!', + errNodePort: + 'Обнаружено, что порт узла [ {0} ] недоступен. Проверьте, разрешен ли этот порт в брандмауэре или группе безопасности.', + reinstallHelper: 'Переустановить узел {0}, вы хотите продолжить?', unhealthyCheck: 'Проверка на неисправности', fixOperation: 'Решение проблемы', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 1739064a8..33c7f0a04 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3145,11 +3145,18 @@ const message = { nodeSyncHelper1: '1. 公用的備份帳號信息', nodeSyncHelper2: '2. 主節點與子節點的連接信息', - panelExist: '檢測到該節點正在運行 1Panel V1 服務,請先透過遷移腳本升級至 V2 後再進行新增。', + nodeCheck: '可用性檢查', + checkSSH: '檢查節點 SSH 連接', + checkLicense: '檢查節點許可證狀態', + checkService: '檢查節點已存在服務信息', + checkPort: '檢查節點端口可達', + panelExist: '檢查到該節點正在運行 1Panel V1 服務,請先通過遷移腳本升級至 V2 後再進行添加。', coreExist: '該節點已作為主節點啟用,無法作為從節點添加。', - agentExist: '檢測到該節點已安裝 1panel-agent,繼續新增將保留現有數據,僅替換 1panel-agent 服務,是否繼續?', - dataExist: '檢測到該節點存在 1Panel 歷史數據,是否確認繼續新增?', - errLicense: '檢測到該節點綁定的許可證不可用,請檢查後重試!', + agentExist: '檢查到該節點已安裝 1panel-agent,繼續添加將保留現有數據,僅替換 1panel-agent 服務。', + oldDataExist: '檢查到該節點存在 1Panel V2 歷史數據,將使用以下信息覆蓋當前設置', + errLicense: '檢查到該節點綁定的許可證不可用,請檢查後重試!', + errNodePort: '檢查到節點端口 [ {0} ] 無法訪問,請檢查防火牆或安全組是否已放行該端口。', + reinstallHelper: '重新安裝節點 {0},是否繼續?', unhealthyCheck: '異常檢查', fixOperation: '修復方案', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 948f43c9c..16ba7652d 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -3113,11 +3113,19 @@ const message = { nodeSyncHelper: '节点信息同步将同步以下信息:', nodeSyncHelper1: '1. 公用的备份账号信息', nodeSyncHelper2: '2. 主节点与子节点的连接信息', - panelExist: '检测到该节点正在运行 1Panel V1 服务,请先通过迁移脚本升级至 V2 后再进行添加。', + + nodeCheck: '可用性检查', + checkSSH: '检查节点 SSH 连接', + checkLicense: '检查节点许可证状态', + checkService: '检查节点已存在服务信息', + checkPort: '检查节点端口可达', + panelExist: '检查到该节点正在运行 1Panel V1 服务,请先通过迁移脚本升级至 V2 后再进行添加。', coreExist: '该节点已作为主节点启用,无法作为从节点添加。', - agentExist: '检测到该节点已安装 1panel-agent,继续添加将保留现有数据,仅替换 1panel-agent 服务,是否继续?', - dataExist: '检测到该节点存在 1Panel 历史数据,是否确认继续添加?', - errLicense: '检测到该节点绑定的许可证不可用,请检查后重试!', + agentExist: '检查到该节点已安装 1panel-agent,继续添加将保留现有数据,仅替换 1panel-agent 服务。', + oldDataExist: '检查到该节点存在 1Panel V2 历史数据,将使用以下信息覆盖当前设置', + errLicense: '检查到该节点绑定的许可证不可用,请检查后重试!', + errNodePort: '检查到节点端口 [ {0} ] 无法访问,请检查防火墙或安全组是否已放行该端口。', + reinstallHelper: '重新安装节点 {0}, 是否继续?', unhealthyCheck: '异常检查', fixOperation: '修复方案',