aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/connectbot/service/TerminalManager.java
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-06-15 16:35:59 +0000
committerKenny Root <kenny@the-b.org>2009-06-15 16:35:59 +0000
commit534184380cd7762bc1be3c5174af001e33f9b08d (patch)
treee0644be305ec82ce9ec51f66333deaec3a96070f /src/org/connectbot/service/TerminalManager.java
parent2adc14e72659787a09aa4b9b40334dc0e1df9194 (diff)
downloadconnectbot-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.java38
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);