Skip to content

Commit

Permalink
Merge branch 'develop' into feature/autofill_sms_otp
Browse files Browse the repository at this point in the history
* develop:
  Fix up URIish instances with @ in user name (#913)
  • Loading branch information
msfjarvis committed Jul 2, 2020
2 parents f486c66 + c702d4a commit e22b45c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.

- Folder names that were very long did not look right
- Error message for wrong SSH/HTTPS password now looks cleaner
- Fix authentication failure with usernames that contain the `@` character

### Added

Expand Down
Expand Up @@ -126,11 +126,24 @@ private fun makeTofuHostKeyVerifier(hostKeyFile: File): HostKeyVerifier {
}
}

private class SshjSession(private val uri: URIish, private val username: String, private val authData: SshAuthData, private val hostKeyFile: File) : RemoteSession {
private class SshjSession(uri: URIish, private val username: String, private val authData: SshAuthData, private val hostKeyFile: File) : RemoteSession {

private lateinit var ssh: SSHClient
private var currentCommand: Session? = null

private val uri = if (uri.host.contains('@')) {
// URIish's String constructor cannot handle '@' in the user part of the URI and the URL
// constructor can't be used since Java's URL does not recognize the ssh scheme. We thus
// need to patch everything up ourselves.
d { "Before fixup: user=${uri.user}, host=${uri.host}" }
val userPlusHost = "${uri.user}@${uri.host}"
val realUser = userPlusHost.substringBeforeLast('@')
val realHost = userPlusHost.substringAfterLast('@')
uri.setUser(realUser).setHost(realHost).also { d { "After fixup: user=${it.user}, host=${it.host}" } }
} else {
uri
}

fun connect(): SshjSession {
ssh = SSHClient(SshjConfig())
ssh.addHostKeyVerifier(makeTofuHostKeyVerifier(hostKeyFile))
Expand Down

0 comments on commit e22b45c

Please sign in to comment.