Allow importing profiles from mRemoteNG #19

Closed
opened 2026-09-15 10:08:44 -06:00 by ksmith · 1 comment
Owner
No description provided.
ksmith added the Kind/Enhancement label 2026-09-15 10:08:49 -06:00
Owner

Implemented

File -> Import from mRemoteNG... parses mRemoteNG's confCons.xml export format directly. Schema verified against mRemoteNG's own XmlConnectionsDeserializer.cs source and a real exported sample (not guessed at) -- nested <Node Type="Container"> folders and <Node Type="Connection"> entries map onto OrbitHub profiles:

  • Protocol="RDP" -> OrbitHub RDP
  • Protocol="SSH1"/"SSH2" -> OrbitHub SSH
  • Anything else (VNC, Telnet, HTTP, PowerShell, Rlogin, RAW, Winbox, IntApp) -> skipped, and listed by name in the import summary so nothing vanishes silently

Passwords are never read, including the common case where mRemoteNG's password field is technically decryptable without a master password (only the Password attribute itself is encrypted -- Hostname, Username, Domain, Protocol are all plaintext in the file). A FullFileEncryption="true" export encrypts the entire node tree instead, which genuinely can't be read without the user's master password -- that case is detected up front and refused with a clear message telling them how to re-export without it, rather than failing confusingly partway through.

The parser (src/mremoteng_importer.h/.cpp) is a pure function with no file/UI dependencies, covered by 11 tests against realistic sample XML (folder nesting, RDP + SSH field mapping, VNC skipping, password non-import, and all three failure modes).

Closing as complete.

## Implemented `File -> Import from mRemoteNG...` parses mRemoteNG's `confCons.xml` export format directly. Schema verified against mRemoteNG's own `XmlConnectionsDeserializer.cs` source and a real exported sample (not guessed at) -- nested `<Node Type="Container">` folders and `<Node Type="Connection">` entries map onto OrbitHub profiles: - `Protocol="RDP"` -> OrbitHub `RDP` - `Protocol="SSH1"`/`"SSH2"` -> OrbitHub `SSH` - Anything else (VNC, Telnet, HTTP, PowerShell, Rlogin, RAW, Winbox, IntApp) -> skipped, and listed by name in the import summary so nothing vanishes silently **Passwords are never read**, including the common case where mRemoteNG's password field is technically decryptable without a master password (only the `Password` attribute itself is encrypted -- `Hostname`, `Username`, `Domain`, `Protocol` are all plaintext in the file). A `FullFileEncryption="true"` export encrypts the *entire* node tree instead, which genuinely can't be read without the user's master password -- that case is detected up front and refused with a clear message telling them how to re-export without it, rather than failing confusingly partway through. The parser (`src/mremoteng_importer.h/.cpp`) is a pure function with no file/UI dependencies, covered by 11 tests against realistic sample XML (folder nesting, RDP + SSH field mapping, VNC skipping, password non-import, and all three failure modes). Closing as complete.
Agent closed this issue 2026-09-15 16:08:14 -06:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DarkSingularity/orbithub#19