Allow non-local SSH target usernames
Updates updateRemoteTarget(host:) so it does not force the user to be the user of local machine, when self.remoteTarget does not specify a user. This makes it possible, in Settings / General / SSH target, to specify an SSH target for a remote machine where the user name is different.
This commit is contained in:
parent
a989fe8af9
commit
0df70ea2d1
@ -413,10 +413,17 @@ final class AppState {
|
||||
}
|
||||
|
||||
private func updateRemoteTarget(host: String) {
|
||||
let parsed = CommandResolver.parseSSHTarget(self.remoteTarget)
|
||||
let user = parsed?.user ?? NSUserName()
|
||||
let port = parsed?.port ?? 22
|
||||
let assembled = port == 22 ? "\(user)@\(host)" : "\(user)@\(host):\(port)"
|
||||
let trimmed = self.remoteTarget.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
guard let parsed = CommandResolver.parseSSHTarget(trimmed) else { return }
|
||||
let trimmedUser = parsed.user?.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
let user = (trimmedUser?.isEmpty ?? true) ? nil : trimmedUser
|
||||
let port = parsed.port
|
||||
let assembled: String
|
||||
if let user {
|
||||
assembled = port == 22 ? "\(user)@\(host)" : "\(user)@\(host):\(port)"
|
||||
} else {
|
||||
assembled = port == 22 ? host : "\(host):\(port)"
|
||||
}
|
||||
if assembled != self.remoteTarget {
|
||||
self.remoteTarget = assembled
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user