diff --git a/README.md b/README.md index 071af00d..704f4c17 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ access, SSH tunneling capabilities, and remote file management, with many more t - **SSH Terminal Access** - Full-featured terminal with split-screen support (up to 4 panels) and tab system - **SSH Tunnel Management** - Create and manage SSH tunnels with automatic reconnection and health monitoring - **Remote File Manager** - Manage files directly on remote servers with support for viewing and editing code, images, audio, and video. Upload, download, rename, delete, and move files seamlessly. -- **SSH Host Manager** - Save, organize, and manage your SSH connections with tags and folders and easily save reusable login info while being able to automate the deploying of SSH keys +- **SSH Host Manager** - Save, organize, and manage your SSH connections with tags and folders, and easily save reusable login info while being able to automate the deployment of SSH keys - **Server Stats** - View CPU, memory, and HDD usage on any SSH server - **User Authentication** - Secure user management with admin controls and OIDC and 2FA (TOTP) support - **Database Encryption** - SQLite database files encrypted at rest with automatic encryption/decryption diff --git a/package.json b/package.json index 3e1580ee..3ae9d163 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "termix", "private": true, - "version": "1.7.3", + "version": "1.8.0", "description": "A web-based server management platform with SSH terminal, tunneling, and file editing capabilities", "author": "Karmaa", "main": "electron/main.cjs", diff --git a/src/backend/database/routes/ssh.ts b/src/backend/database/routes/ssh.ts index 89ab1f0e..c4d084ec 100644 --- a/src/backend/database/routes/ssh.ts +++ b/src/backend/database/routes/ssh.ts @@ -276,7 +276,7 @@ router.post( if (effectiveAuthType === "password") { sshDataObj.password = password || null; sshDataObj.key = null; - sshDataObj.keyPassword = null; + sshDataObj.key_password = null; sshDataObj.keyType = null; } else if (effectiveAuthType === "key") { sshDataObj.key = key || null; @@ -286,7 +286,7 @@ router.post( } else { sshDataObj.password = null; sshDataObj.key = null; - sshDataObj.keyPassword = null; + sshDataObj.key_password = null; sshDataObj.keyType = null; } @@ -465,7 +465,7 @@ router.put( sshDataObj.password = password; } sshDataObj.key = null; - sshDataObj.keyPassword = null; + sshDataObj.key_password = null; sshDataObj.keyType = null; } else if (effectiveAuthType === "key") { if (key) { @@ -481,7 +481,7 @@ router.put( } else { sshDataObj.password = null; sshDataObj.key = null; - sshDataObj.keyPassword = null; + sshDataObj.key_password = null; sshDataObj.keyType = null; } diff --git a/src/backend/utils/user-crypto.ts b/src/backend/utils/user-crypto.ts index 67f4f50a..607066b6 100644 --- a/src/backend/utils/user-crypto.ts +++ b/src/backend/utils/user-crypto.ts @@ -94,9 +94,7 @@ class UserCrypto { DEK.fill(0); DEK = this.decryptDEK(storedEncryptedDEK, systemKey); } else if (!storedEncryptedDEK) { - throw new Error( - "Failed to store and retrieve user encryption key.", - ); + throw new Error("Failed to store and retrieve user encryption key."); } } finally { systemKey.fill(0); @@ -279,21 +277,6 @@ class UserCrypto { oldKEK.fill(0); newKEK.fill(0); - - const dekCopy = Buffer.from(DEK); - - const now = Date.now(); - const oldSession = this.userSessions.get(userId); - if (oldSession) { - oldSession.dataKey.fill(0); - } - - this.userSessions.set(userId, { - dataKey: dekCopy, - lastActivity: now, - expiresAt: now + UserCrypto.SESSION_DURATION, - }); - DEK.fill(0); return true; diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json index e8d900f7..3ab3dd62 100644 --- a/src/locales/de/translation.json +++ b/src/locales/de/translation.json @@ -1382,4 +1382,4 @@ "viewMobileAppDocs": "Mobile App installieren", "mobileAppDocumentation": "Mobile App-Dokumentation" } -} \ No newline at end of file +}