summaryrefslogtreecommitdiffstats
path: root/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java')
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java68
1 files changed, 57 insertions, 11 deletions
diff --git a/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java b/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
index 191a6326d..a43a3fbd1 100644
--- a/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
@@ -19,6 +19,7 @@
package com.netscape.cmstools.cli;
import java.io.File;
+import java.net.URI;
import java.net.URISyntaxException;
import org.apache.commons.cli.CommandLine;
@@ -47,12 +48,25 @@ public class MainCLI extends CLI {
public ClientConfig config = new ClientConfig();
+ public File clientDir;
+ public File cookiesDir;
+
public PKIConnection connection;
public AccountClient accountClient;
+ public ConnectCLI connectModule;
+ public DisconnectCLI disconnectModule;
+
public MainCLI() throws Exception {
super("pki", "PKI command-line interface");
+ clientDir = new File(System.getProperty("user.home"), ".pki"+File.separator+"client");
+ cookiesDir = new File(clientDir, "cookies");
+ cookiesDir.mkdirs();
+
+ addModule(connectModule = new ConnectCLI(this));
+ addModule(disconnectModule = new DisconnectCLI(this));
+
addModule(new CertCLI(this));
addModule(new GroupCLI(this));
addModule(new KeyCLI(this));
@@ -292,19 +306,54 @@ public class MainCLI extends CLI {
}
}
- // execute command
+ URI uri = config.getServerURI();
+ String path = uri.getPath().replace("/", "-");
+ String filename = uri.getScheme()+"-"+uri.getHost()+"-"+uri.getPort()+path;
+ File cookies = new File(cookiesDir, filename);
+
boolean loggedIn = false;
+
try {
connect();
- // login
- if (config.getCertDatabase() != null || config.getUsername() != null) {
- accountClient.login();
- loggedIn = true;
- }
+ if (module == connectModule) {
+ // create session for multi-command mode
+ connectModule.execute(moduleArgs);
+ // store cookies
+ connection.saveCookies(cookies);
+
+ } else if (module == disconnectModule) {
+ // load cookies for the current session
+ connection.loadCookies(cookies);
+ // destroy session for multi-command mode
+ disconnectModule.execute(moduleArgs);
+ // destroy cookies
+ cookies.delete();
+
+ } else {
+
+ if (cookies.exists()) {
+ // load cookies for multi-command mode
+ connection.loadCookies(cookies);
+
+ } else if (config.getCertDatabase() != null || config.getUsername() != null) {
+ // create session for single-command mode
+ connectModule.execute(moduleArgs);
+ loggedIn = true;
+ }
+
+ // execute module command
+ module.execute(moduleArgs);
- // execute module command
- module.execute(moduleArgs);
+ if (cookies.exists()) {
+ // store cookies for multi-command mode
+ connection.saveCookies(cookies);
+
+ } else if (loggedIn) {
+ // destroy session for single-command mode
+ disconnectModule.execute(moduleArgs);
+ }
+ }
} catch (Throwable t) {
if (verbose) {
@@ -313,9 +362,6 @@ public class MainCLI extends CLI {
System.err.println(t.getClass().getSimpleName()+": "+t.getMessage());
}
System.exit(1);
-
- } finally {
- if (loggedIn) accountClient.logout();
}
}