summaryrefslogtreecommitdiffstats
path: root/base/java-tools/src/com/netscape
diff options
context:
space:
mode:
authorFraser Tweedale <ftweedal@redhat.com>2015-09-29 11:17:21 -0400
committerFraser Tweedale <ftweedal@redhat.com>2015-10-06 09:41:38 +1000
commit9a2f79f9fb4dce130d1495450e7a680e04648626 (patch)
tree2932e430e402f3993d5282ae003e9cc1b31af9fc /base/java-tools/src/com/netscape
parentdec7fe7aea653d1192bab47a503c98970f8d898f (diff)
downloadpki-9a2f79f9fb4dce130d1495450e7a680e04648626.tar.gz
pki-9a2f79f9fb4dce130d1495450e7a680e04648626.tar.xz
pki-9a2f79f9fb4dce130d1495450e7a680e04648626.zip
Lightweight CAs: implement deletion API and CLI
Implement lightweight authority deletion including CLI command. To be deleted an authority must be disabled and have no sub-CAs. Fixes: https://fedorahosted.org/pki/ticket/1324
Diffstat (limited to 'base/java-tools/src/com/netscape')
-rw-r--r--base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java1
-rw-r--r--base/java-tools/src/com/netscape/cmstools/authority/AuthorityRemoveCLI.java72
2 files changed, 73 insertions, 0 deletions
diff --git a/base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java
index 99d38ad1b..4fbcfef76 100644
--- a/base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java
@@ -17,6 +17,7 @@ public class AuthorityCLI extends CLI {
addModule(new AuthorityCreateCLI(this));
addModule(new AuthorityDisableCLI(this));
addModule(new AuthorityEnableCLI(this));
+ addModule(new AuthorityRemoveCLI(this));
}
public String getFullName() {
diff --git a/base/java-tools/src/com/netscape/cmstools/authority/AuthorityRemoveCLI.java b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityRemoveCLI.java
new file mode 100644
index 000000000..42265b180
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityRemoveCLI.java
@@ -0,0 +1,72 @@
+package com.netscape.cmstools.authority;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.ParseException;
+
+import com.netscape.cmstools.cli.CLI;
+import com.netscape.cmstools.cli.MainCLI;
+
+public class AuthorityRemoveCLI extends CLI {
+
+ public AuthorityCLI authorityCLI;
+
+ public AuthorityRemoveCLI(AuthorityCLI authorityCLI) {
+ super("del", "Delete Authority", authorityCLI);
+ this.authorityCLI = authorityCLI;
+
+ options.addOption(null, "force", false, "Force delete");
+ }
+
+ public void printHelp() {
+ formatter.printHelp(getFullName() + " <dn>", options);
+ }
+
+ public void execute(String[] args) throws Exception {
+ // Always check for "--help" prior to parsing
+ if (Arrays.asList(args).contains("--help")) {
+ // Display usage
+ printHelp();
+ System.exit(0);
+ }
+
+ CommandLine cmd = null;
+
+ try {
+ cmd = parser.parse(options, args);
+ } catch (ParseException e) {
+ System.err.println("Error: " + e.getMessage());
+ printHelp();
+ System.exit(-1);
+ }
+
+ String[] cmdArgs = cmd.getArgs();
+ if (cmdArgs.length != 1) {
+ if (cmdArgs.length < 1)
+ System.err.println("No ID specified.");
+ else
+ System.err.println("Too many arguments.");
+ printHelp();
+ System.exit(-1);
+ }
+
+ if (!cmd.hasOption("force")) {
+ System.out.print("Are you sure (Y/N)? ");
+ System.out.flush();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+ String line = reader.readLine();
+ if (!line.equalsIgnoreCase("Y")) {
+ System.exit(-1);
+ }
+ }
+
+ String aidString = cmdArgs[0];
+ authorityCLI.authorityClient.deleteCA(aidString);
+ MainCLI.printMessage("Deleted authority \"" + aidString + "\"");
+ }
+
+}