[PATCH 5/5] describe and set protocol in Java test application

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Daniel Lenski <dlenski at gmail.com>
---
 java/README                       |  2 +-
 java/src/com/example/LibTest.java | 44 ++++++++++++++++++++++++++++++++++-----
 2 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/java/README b/java/README
index 1bdec00..8963dde 100644
--- a/java/README
+++ b/java/README
@@ -11,7 +11,7 @@ From the top level, run:
     make
     cd java
     ant
-    sudo java -Djava.library.path=../.libs -jar dist/example.jar <server_ip>
+    sudo java -Djava.library.path=../.libs -jar dist/example.jar <server_name> [protocol]
 
 If ocproxy[1] is installed somewhere in your $PATH, this can be run as a
 non-root user and it should be pingable from across the VPN.
diff --git a/java/src/com/example/LibTest.java b/java/src/com/example/LibTest.java
index 78e77b5..44f4312 100644
--- a/java/src/com/example/LibTest.java
+++ b/java/src/com/example/LibTest.java
@@ -204,12 +204,30 @@ public final class LibTest {
 		System.out.println("");
 	}
 
+	private static void describeProtocol(LibOpenConnect.VPNProto vp) {
+		ArrayList<String> flags = new ArrayList<String>();
+		if ((vp.flags & LibOpenConnect.OC_PROTO_PROXY) != 0) flags.add("proxy");
+		if ((vp.flags & LibOpenConnect.OC_PROTO_CSD) != 0) flags.add("CSD");
+		if ((vp.flags & LibOpenConnect.OC_PROTO_AUTH_CERT) != 0) flags.add("auth-cert");
+		if ((vp.flags & LibOpenConnect.OC_PROTO_AUTH_OTP) != 0) flags.add("auth-otp");
+		if ((vp.flags & LibOpenConnect.OC_PROTO_AUTH_OTP) != 0) flags.add("auth-stoken");
+
+		System.out.println("  " + vp.name +
+				   ") PRETTY_NAME=" + vp.prettyName +
+				   ", DESCRIPTION=" + vp.description +
+				   ", FLAGS=" + String.join("+", flags));
+	}
+
 	public static void main(String argv[]) {
 		System.loadLibrary("openconnect-wrapper");
 		LibOpenConnect lib = new TestLib();
+		String server_name, protocol;
 
-		if (argv.length != 1)
-			die("usage: LibTest <server_name>");
+		if (argv.length != 1 && argv.length != 2)
+			die("usage: LibTest <server_name> [protocol]");
+
+		server_name = argv[0];
+		protocol = argv.length == 2 ? argv[1] : null;
 
 		System.out.println("OpenConnect version: " + lib.getVersion());
 		System.out.println("  PKCS=" + lib.hasPKCS11Support() +
@@ -217,13 +235,29 @@ public final class LibTest {
 				   ", STOKEN=" + lib.hasStokenSupport() +
 				   ", OATH=" + lib.hasOATHSupport() +
 				   ", YUBIOATH=" + lib.hasYubiOATHSupport());
+
+		System.out.println("Supported protocols:");
+		for (LibOpenConnect.VPNProto vp : lib.getSupportedProtocols())
+		    describeProtocol(vp);
+		if (protocol == null) {
+			System.out.println("Using default VPN protocol of " + lib.getProtocol());
+		} else {
+			System.out.println("Setting VPN protocol to " + protocol);
+			if (lib.setProtocol(protocol) != 0)
+				die("Error setting VPN protocol");
+		}
+
 		lib.setReportedOS("win");
 		lib.setLogLevel(lib.PRG_DEBUG);
 		//lib.setTokenMode(LibOpenConnect.OC_TOKEN_MODE_STOKEN, null);
-		if (new File("csd.sh").exists()) {
-			lib.setCSDWrapper("csd.sh", null, null);
+		String csd_wrapper = "./csd-" + lib.getProtocol() + ".sh";
+		if (new File(csd_wrapper).exists()) {
+			System.out.println("Using CSD wrapper script " + csd_wrapper);
+			lib.setCSDWrapper(csd_wrapper, null, null);
+		} else {
+			System.out.println("Skipping CSD wrapper (script " + csd_wrapper + " doesn't exist)");
 		}
-		lib.parseURL(argv[0]);
+		lib.parseURL(server_name);
 		lib.setSystemTrust(true);
 		int ret = lib.obtainCookie();
 		if (ret < 0)
-- 
2.7.4




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux