diff --git a/android/build.gradle b/android/build.gradle index c3a7d0a..9a104f5 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:4.1.0' } } diff --git a/android/src/main/java/sq/flutter/ssh/SshPlugin.java b/android/src/main/java/sq/flutter/ssh/SshPlugin.java index 2c7b8c8..4bd6300 100644 --- a/android/src/main/java/sq/flutter/ssh/SshPlugin.java +++ b/android/src/main/java/sq/flutter/ssh/SshPlugin.java @@ -144,6 +144,8 @@ public void onMethodCall(MethodCall call, Result rawResult) { execute((HashMap) call.arguments, result); } else if (call.method.equals("portForwardL")) { portForwardL((HashMap) call.arguments, result); + } else if (call.method.equals("portForwardR")) { + portForwardR((HashMap) call.arguments, result); } else if (call.method.equals("startShell")) { startShell((HashMap) call.arguments, result); } else if (call.method.equals("writeToShell")) { @@ -318,6 +320,28 @@ public void run() { }).start(); } + private void portForwardR(final HashMap args, final Result result) { + new Thread(new Runnable() { + public void run() { + try { + SSHClient client = getClient(args.get("id").toString(), result); + if (client == null) + return; + + Session session = client._session; + int rport = Integer.parseInt(args.get("rport").toString()); + int lport = Integer.parseInt(args.get("lport").toString()); + String rhost = args.get("rhost").toString(); + session.setPortForwardingR(rport, rhost, lport); + result.success(args.get("lport").toString()); + } catch (JSchException error) { + Log.e(LOGTAG, "Error connecting portforwardR:" + error.getMessage()); + result.error("portforwardR_failure", error.getMessage(), null); + } + } + }).start(); + } + private void startShell(final HashMap args, final Result result) { new Thread(new Runnable() { public void run() { diff --git a/lib/ssh.dart b/lib/ssh.dart index 8aa73b5..a63a289 100644 --- a/lib/ssh.dart +++ b/lib/ssh.dart @@ -88,6 +88,16 @@ class SSHClient { return result; } + Future portForwardR(int rport, int lport, String rhost) async { + var result = await _channel.invokeMethod('portForwardR', { + "id": id, + "rhost": rhost, + "rport": rport, + "lport": lport + }); + return result; + } + Future startShell({ String ptyType = "vanilla", // vanilla, vt100, vt102, vt220, ansi, xterm Callback callback,