diff options
author | Kenny Root <kenny@the-b.org> | 2009-06-15 16:35:59 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-06-15 16:35:59 +0000 |
commit | 534184380cd7762bc1be3c5174af001e33f9b08d (patch) | |
tree | e0644be305ec82ce9ec51f66333deaec3a96070f /src/org/connectbot/service/TerminalManager.java | |
parent | 2adc14e72659787a09aa4b9b40334dc0e1df9194 (diff) | |
download | connectbot-534184380cd7762bc1be3c5174af001e33f9b08d.tar.gz connectbot-534184380cd7762bc1be3c5174af001e33f9b08d.tar.bz2 connectbot-534184380cd7762bc1be3c5174af001e33f9b08d.zip |
Add multiple transports
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@298 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'src/org/connectbot/service/TerminalManager.java')
-rw-r--r-- | src/org/connectbot/service/TerminalManager.java | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/src/org/connectbot/service/TerminalManager.java b/src/org/connectbot/service/TerminalManager.java index 8696b06..f7483dd 100644 --- a/src/org/connectbot/service/TerminalManager.java +++ b/src/org/connectbot/service/TerminalManager.java @@ -24,6 +24,7 @@ import java.security.PublicKey; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Timer; import java.util.TimerTask; @@ -31,6 +32,8 @@ import org.connectbot.ConsoleActivity; import org.connectbot.R; import org.connectbot.bean.HostBean; import org.connectbot.bean.PubkeyBean; +import org.connectbot.transport.AbsTransport; +import org.connectbot.transport.TransportFactory; import org.connectbot.util.HostDatabase; import org.connectbot.util.PreferenceConstants; import org.connectbot.util.PubkeyDatabase; @@ -80,12 +83,12 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen public Handler disconnectHandler = null; - protected HashMap<String, Object> loadedPubkeys = new HashMap<String, Object>(); + public HashMap<String, Object> loadedPubkeys = new HashMap<String, Object>(); - protected Resources res; + public Resources res; - protected HostDatabase hostdb; - protected PubkeyDatabase pubkeydb; + public HostDatabase hostdb; + public PubkeyDatabase pubkeydb; protected SharedPreferences prefs; @@ -235,21 +238,28 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen } /** - * Open a new SSH session by reading parameters from the given URI. Follows - * format <code>ssh://user@host:port/#nickname</code> + * Open a new connection by reading parameters from the given URI. Follows + * format specified by an individual transport. */ public void openConnection(Uri uri) throws Exception { - String nickname = uri.getFragment(); - String username = uri.getUserInfo(); - String hostname = uri.getHost(); - int port = uri.getPort(); + AbsTransport transport = TransportFactory.getTransport(uri.getScheme()); - HostBean host = hostdb.findHost(nickname, username, hostname, port); + Map<String, String> selection = new HashMap<String, String>(); + + transport.getSelectionArgs(uri, selection); + if (selection.size() == 0) { + Log.e(TAG, String.format("Transport %s failed to do something useful with URI=%s", + uri.getScheme(), uri.toString())); + throw new IllegalStateException("Failed to get needed selection arguments"); + } + + HostBean host = hostdb.findHost(selection); if (host == null) { - Log.d(TAG, String.format("Didn't find existing host (nickname=%s, username=%s, hostname=%s, port=%d)", - nickname, username, hostname, port)); - host = new HostBean(nickname, username, hostname, port); + Log.d(TAG, String.format( + "Didn't find existing host (selection=%s)", + selection.toString())); + host = transport.createHost(uri); } this.openConnection(host); |