summaryrefslogtreecommitdiff
path: root/tools/examples/ExampleAuthn.java
diff options
context:
space:
mode:
Diffstat (limited to 'tools/examples/ExampleAuthn.java')
-rw-r--r--tools/examples/ExampleAuthn.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/tools/examples/ExampleAuthn.java b/tools/examples/ExampleAuthn.java
new file mode 100644
index 0000000..8fb73b5
--- /dev/null
+++ b/tools/examples/ExampleAuthn.java
@@ -0,0 +1,108 @@
+/* Username/password prompt/save using 1.9 org.apache.subversion API.
+
+ Compile against non-installed Subversion JavaHL build:
+
+ javac -cp subversion/bindings/javahl/classes -d subversion/bindings/javahl/classes ExampleAuthn.java
+
+ Run:
+
+ LD_LIBRARY_PATH=subversion/libsvn_auth_gnome_keyring/.libs java -cp subversion/bindings/javahl/classes -Djava.library.path=subversion/bindings/javahl/native/.libs ExampleAuthn <URL> <config-dir>
+
+ */
+import org.apache.subversion.javahl.*;
+import org.apache.subversion.javahl.types.*;
+import org.apache.subversion.javahl.remote.*;
+import org.apache.subversion.javahl.callback.*;
+import java.io.Console;
+
+public class ExampleAuthn {
+
+ protected static class MyAuthn {
+
+ public static AuthnCallback getAuthn() {
+ return new MyAuthnCallback();
+ }
+
+ private static class MyAuthnCallback
+ implements AuthnCallback {
+
+ public UserPasswordResult
+ userPasswordPrompt(String realm, String username, boolean maySave) {
+ System.out.println("userPasswordPrompt");
+ System.out.println("Realm: " + realm);
+ String prompt;
+ if (username == null) {
+ System.out.print("Username: ");
+ username = System.console().readLine();
+ prompt = "Password: ";
+ } else {
+ prompt = "Password for " + username + ": ";
+ }
+ String password = new String(System.console().readPassword(prompt));
+ return new UserPasswordResult(username, password, maySave);
+ }
+
+ public boolean
+ allowStorePlaintextPassword(String realm) {
+ System.out.println("allowStorePlaintextPassword");
+ System.out.println("Realm: " + realm);
+ System.out.print("Store plaintext password on disk? (y/n): ");
+ String s = System.console().readLine();
+ return s.equals("y") ? true : false;
+ }
+
+ public UsernameResult
+ usernamePrompt(String realm, boolean maySave) {
+ System.out.println("usernamePrompt not implemented!");
+ return null;
+ }
+
+ public boolean
+ allowStorePlaintextPassphrase(String realm) {
+ System.out.println("allowStorePlaintextPassphrase not implemented!");
+ return false;
+ }
+
+ public SSLServerTrustResult
+ sslServerTrustPrompt(String realm,
+ SSLServerCertFailures failures,
+ SSLServerCertInfo info,
+ boolean maySave) {
+ System.out.println("sslServerTrustPrompt");
+ System.out.println("(r)eject or (t)emporary?");
+ String s = System.console().readLine();
+ return s.equals("t") ? SSLServerTrustResult.acceptTemporarily()
+ : SSLServerTrustResult.reject();
+ }
+
+ public SSLClientCertResult
+ sslClientCertPrompt(String realm, boolean maySave) {
+ System.out.println("sslClientCertPrompt not implemented!");
+ return null;
+ }
+
+ public SSLClientCertPassphraseResult
+ sslClientCertPassphrasePrompt(String realm, boolean maySave) {
+ System.out.println("sslClientCertPassphrasePrompt not implemented!");
+ return null;
+ }
+ }
+ }
+
+ public static void main(String argv[]) {
+
+ if (argv.length != 2) {
+ System.err.println("usage: ExampleAuthn <URL> <config-dir>");
+ return;
+ }
+ RemoteFactory factory = new RemoteFactory();
+ factory.setConfigDirectory(argv[1]);
+ factory.setPrompt(MyAuthn.getAuthn());
+ try {
+ ISVNRemote raSession = factory.openRemoteSession(argv[0]);
+ raSession.getReposUUID();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}