fix(pve): Fix connection issues and add more error handlings (#1081)
* feat(PVE): Added display of PVE connection loading steps Added a detailed display of loading steps during the PVE connection process, including stages such as establishing an SSH tunnel, authentication, and data retrieval Also optimized the sorting of PVE storage content and the logic for handling connection errors * feat(pve): Added error handling and prompts for PVE two-factor authentication Added error handling for PVE servers when two-factor authentication is enabled, along with relevant error types and localized prompts * feat(PVE): Added support for PVE passwords during key-based authentication - Added the `pvePwd` field to the `ServerCustom` model - Added a PVE password input field to the edit page (displayed only during key-based authentication) - Updated multilingual files to support PVE-related loading states and password prompts - Optimized PVE connection logic to support password verification during key-based authentication
This commit is contained in:
@@ -1050,12 +1050,54 @@ abstract class AppLocalizations {
|
||||
/// **'Login failed. Unable to authenticate with username/password from server configuration for Linux PAM login.'**
|
||||
String get pveLoginFailed;
|
||||
|
||||
/// No description provided for @pveOtpRequired.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.'**
|
||||
String get pveOtpRequired;
|
||||
|
||||
/// No description provided for @pveVersionLow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This feature is currently in the testing phase and has only been tested on PVE 8+. Please use it with caution.'**
|
||||
String get pveVersionLow;
|
||||
|
||||
/// No description provided for @pveLoadingForwarding.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Establishing SSH tunnel...'**
|
||||
String get pveLoadingForwarding;
|
||||
|
||||
/// No description provided for @pveLoadingLogin.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Authenticating with PVE...'**
|
||||
String get pveLoadingLogin;
|
||||
|
||||
/// No description provided for @pveLoadingData.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Fetching cluster data...'**
|
||||
String get pveLoadingData;
|
||||
|
||||
/// No description provided for @pveLoadingConnect.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Connecting...'**
|
||||
String get pveLoadingConnect;
|
||||
|
||||
/// No description provided for @pvePassword.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'PVE Password'**
|
||||
String get pvePassword;
|
||||
|
||||
/// No description provided for @pvePasswordHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Required when using key-based SSH authentication'**
|
||||
String get pvePasswordHint;
|
||||
|
||||
/// No description provided for @read.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -538,10 +538,33 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Anmeldung fehlgeschlagen. Kann nicht mit Benutzername/Passwort aus der Serverkonfiguration angemeldet werden, um sich über Linux PAM anzumelden.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Diese Funktion befindet sich derzeit in der Testphase und wurde nur auf PVE 8+ getestet. Bitte verwenden Sie sie mit Vorsicht.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Lesen';
|
||||
|
||||
|
||||
@@ -535,10 +535,33 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Login failed. Unable to authenticate with username/password from server configuration for Linux PAM login.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'This feature is currently in the testing phase and has only been tested on PVE 8+. Please use it with caution.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Read';
|
||||
|
||||
|
||||
@@ -540,10 +540,33 @@ class AppLocalizationsEs extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Fallo al iniciar sesión. No se puede autenticar con el nombre de usuario/contraseña de la configuración del servidor para el inicio de sesión de Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Esta función está actualmente en fase de prueba y solo se ha probado en PVE 8+. Úsela con precaución.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Leer';
|
||||
|
||||
|
||||
@@ -542,10 +542,33 @@ class AppLocalizationsFr extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Échec de la connexion. Impossible d\'authentifier avec le nom d\'utilisateur / mot de passe de la configuration du serveur pour la connexion Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Cette fonctionnalité est actuellement en phase de test et n\'a été testée que sur PVE 8+. Veuillez l\'utiliser avec prudence.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Lire';
|
||||
|
||||
|
||||
@@ -535,10 +535,33 @@ class AppLocalizationsId extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Login gagal. Tidak dapat mengautentikasi dengan nama pengguna/kata sandi dari konfigurasi server untuk login Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Fitur ini saat ini sedang dalam tahap pengujian dan hanya diuji pada PVE 8+. Gunakan dengan hati-hati.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Baca';
|
||||
|
||||
|
||||
@@ -536,10 +536,33 @@ class AppLocalizationsIt extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Accesso fallito. Impossibile autenticarsi con nome utente/password dalla configurazione del server per l\'accesso Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Questa funzionalità è attualmente nella fase di test ed è stata testata solo su PVE 8+. Usala con cautela.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Leggi';
|
||||
|
||||
|
||||
@@ -517,9 +517,32 @@ class AppLocalizationsJa extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'ログインに失敗しました。Linux PAMログインのためにサーバー構成からのユーザー名/パスワードで認証できません。';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow => 'この機能は現在テスト段階にあり、PVE 8+でのみテストされています。ご利用の際は慎重に。';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => '読み取り';
|
||||
|
||||
|
||||
@@ -514,10 +514,33 @@ class AppLocalizationsKo extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'로그인에 실패했습니다. 서버 설정의 사용자 이름/비밀번호로 Linux PAM 인증을 할 수 없습니다.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'이 기능은 현재 테스트 단계이며 PVE 8+에서만 테스트되었습니다. 주의하여 사용해 주세요.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => '읽기';
|
||||
|
||||
|
||||
@@ -537,10 +537,33 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Aanmelden mislukt. Kan niet authenticeren met gebruikersnaam/wachtwoord van serverconfiguratie voor Linux PAM-login.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Deze functie bevindt zich momenteel in de testfase en is alleen getest op PVE 8+. Gebruik het met voorzichtigheid.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Lezen';
|
||||
|
||||
|
||||
@@ -535,10 +535,33 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Falha no login. Não é possível autenticar com o nome de usuário/senha da configuração do servidor para login no Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Esta funcionalidade está atualmente em fase de teste e foi testada apenas no PVE 8+. Por favor, use com cautela.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Leitura';
|
||||
|
||||
|
||||
@@ -538,10 +538,33 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Ошибка входа. Невозможно аутентифицироваться с помощью имени пользователя/пароля из конфигурации сервера для входа в Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Эта функция в настоящее время находится на стадии тестирования и была протестирована только на PVE 8+. Используйте ее с осторожностью.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Чтение';
|
||||
|
||||
|
||||
@@ -535,10 +535,33 @@ class AppLocalizationsTr extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Giriş başarısız. Linux PAM girişi için sunucu yapılandırmasındaki kullanıcı adı/şifre ile kimlik doğrulama yapılamadı.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Bu özellik şu anda test aşamasında ve yalnızca PVE 8+ üzerinde test edildi. Lütfen dikkatli kullanın.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Oku';
|
||||
|
||||
|
||||
@@ -539,10 +539,33 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
String get pveLoginFailed =>
|
||||
'Не вдалося увійти. Неможливо пройти аутентифікацію за допомогою імені користувача/пароля з конфігурації сервера для входу Linux PAM.';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired =>
|
||||
'Two-factor authentication is enabled on this PVE server. Please enter the OTP code.';
|
||||
|
||||
@override
|
||||
String get pveVersionLow =>
|
||||
'Ця функція наразі перебуває на стадії тестування та випробувалася лише на PVE 8+. Будь ласка, використовуйте її з обережністю.';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => 'Establishing SSH tunnel...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => 'Authenticating with PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => 'Fetching cluster data...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => 'Connecting...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE Password';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint =>
|
||||
'Required when using key-based SSH authentication';
|
||||
|
||||
@override
|
||||
String get read => 'Читати';
|
||||
|
||||
|
||||
@@ -506,9 +506,30 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
@override
|
||||
String get pveLoginFailed => '登录失败。无法使用服务器配置中的用户名或密码通过 Linux PAM 方式认证。';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired => '此 PVE 服务器已启用双因素认证,请输入 OTP 验证码。';
|
||||
|
||||
@override
|
||||
String get pveVersionLow => '当前该功能处于测试阶段,仅在 PVE 8+ 上测试过,请谨慎使用';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => '正在建立 SSH 隧道...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => '正在认证 PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => '正在获取集群数据...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => '正在连接...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE 密码';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint => '使用密钥认证时需要填写';
|
||||
|
||||
@override
|
||||
String get read => '读';
|
||||
|
||||
@@ -1315,9 +1336,30 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
|
||||
@override
|
||||
String get pveLoginFailed => '登入失敗。無法使用伺服器設定中的使用者名稱或密碼透過 Linux PAM 方式認證。';
|
||||
|
||||
@override
|
||||
String get pveOtpRequired => '此 PVE 伺服器已啟用雙因素認證,請輸入 OTP 驗證碼。';
|
||||
|
||||
@override
|
||||
String get pveVersionLow => '此功能目前處於測試階段,僅在 PVE 8+ 上進行過測試。請謹慎使用。';
|
||||
|
||||
@override
|
||||
String get pveLoadingForwarding => '正在建立 SSH 隧道...';
|
||||
|
||||
@override
|
||||
String get pveLoadingLogin => '正在認證 PVE...';
|
||||
|
||||
@override
|
||||
String get pveLoadingData => '正在獲取集群數據...';
|
||||
|
||||
@override
|
||||
String get pveLoadingConnect => '正在連接...';
|
||||
|
||||
@override
|
||||
String get pvePassword => 'PVE 密碼';
|
||||
|
||||
@override
|
||||
String get pvePasswordHint => '使用密鑰認證時需要填寫';
|
||||
|
||||
@override
|
||||
String get read => '讀取';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user