aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2009-08-08 00:52:28 +0000
committerrowanbeentje <rowan@beent.je>2009-08-08 00:52:28 +0000
commit4e86aae1cd84904e40f3cd7dab3c4cc72bab77dc (patch)
tree00cc5cb9845afcff14f8330dbca0fcde11f50c88 /Source
parent323d1dce6647a628ad8abc69fa06b03c8d9384fc (diff)
downloadsequelpro-4e86aae1cd84904e40f3cd7dab3c4cc72bab77dc.tar.gz
sequelpro-4e86aae1cd84904e40f3cd7dab3c4cc72bab77dc.tar.bz2
sequelpro-4e86aae1cd84904e40f3cd7dab3c4cc72bab77dc.zip
- Fix SSH tunnel support for private/public keys following framework upgrade changes
Diffstat (limited to 'Source')
-rw-r--r--Source/SPConnectionController.m4
-rw-r--r--Source/SPSSHTunnel.h3
-rw-r--r--Source/SPSSHTunnel.m12
3 files changed, 13 insertions, 6 deletions
diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m
index 6670c732..67f7e915 100644
--- a/Source/SPConnectionController.m
+++ b/Source/SPConnectionController.m
@@ -219,7 +219,7 @@
// Add keychain or plaintext password as appropriate - note the checks in initiateConnection.
if (connectionSSHKeychainItemName) {
[sshTunnel setPasswordKeychainName:connectionSSHKeychainItemName account:connectionSSHKeychainItemAccount];
- } else {
+ } else if (sshPassword) {
[sshTunnel setPassword:[self sshPassword]];
}
@@ -281,7 +281,7 @@
}
// Only set the password if there is no Keychain item set. The connection will ask the delegate for passwords in the Keychain.
- if (!connectionKeychainItemName) {
+ if (!connectionKeychainItemName && [self password]) {
[mySQLConnection setPassword:[self password]];
}
diff --git a/Source/SPSSHTunnel.h b/Source/SPSSHTunnel.h
index 8d05396e..3fba9b50 100644
--- a/Source/SPSSHTunnel.h
+++ b/Source/SPSSHTunnel.h
@@ -29,7 +29,8 @@
enum spsshtunnel_password_modes
{
SPSSH_PASSWORD_USES_KEYCHAIN = 0,
- SPSSH_PASSWORD_ASKS_UI = 1
+ SPSSH_PASSWORD_ASKS_UI = 1,
+ SPSSH_NO_PASSWORD = 2
};
@interface SPSSHTunnel : NSObject <MCPConnectionProxy>
diff --git a/Source/SPSSHTunnel.m b/Source/SPSSHTunnel.m
index 01ab721d..1705a57b 100644
--- a/Source/SPSSHTunnel.m
+++ b/Source/SPSSHTunnel.m
@@ -162,7 +162,7 @@
{
localPort = 0;
- if (connectionState != PROXY_STATE_IDLE || (!passwordInKeychain && !password)) return;
+ if (connectionState != PROXY_STATE_IDLE) return;
[debugMessages removeAllObjects];
[NSThread detachNewThreadSelector:@selector(launchTask:) toTarget: self withObject: nil ];
}
@@ -288,8 +288,10 @@
[taskEnvironment setObject:[[NSNumber numberWithInt:SPSSH_PASSWORD_USES_KEYCHAIN] stringValue] forKey:@"SP_PASSWORD_METHOD"];
[taskEnvironment setObject:keychainName forKey:@"SP_KEYCHAIN_ITEM_NAME"];
[taskEnvironment setObject:keychainAccount forKey:@"SP_KEYCHAIN_ITEM_ACCOUNT"];
- } else {
+ } else if (password) {
[taskEnvironment setObject:[[NSNumber numberWithInt:SPSSH_PASSWORD_ASKS_UI] stringValue] forKey:@"SP_PASSWORD_METHOD"];
+ } else {
+ [taskEnvironment setObject:[[NSNumber numberWithInt:SPSSH_NO_PASSWORD] stringValue] forKey:@"SP_PASSWORD_METHOD"];
}
[task setEnvironment:taskEnvironment];
@@ -538,7 +540,11 @@
case 1:
thePassword = [NSString stringWithString:[sshPasswordField stringValue]];
[sshPasswordField setStringValue:@""];
- [[delegate undoManager] removeAllActionsWithTarget:sshPasswordField];
+ if ([delegate respondsToSelector:@selector(setUndoManager:)] && [delegate undoManager]) {
+ [[delegate undoManager] removeAllActionsWithTarget:sshPasswordField];
+ } else if ([[parentWindow windowController] document] && [[[parentWindow windowController] document] undoManager]) {
+ [[[[parentWindow windowController] document] undoManager] removeAllActionsWithTarget:sshPasswordField];
+ }
requestedPassphrase = [[NSString alloc] initWithString:thePassword];
// Add to keychain if appropriate