From 0d79007e35cfd858938e40085ef290a48325a28e Mon Sep 17 00:00:00 2001 From: Fraser Tweedale Date: Thu, 17 Sep 2015 02:26:35 -0400 Subject: [PATCH 50/50] Lightweight CAs: add enable/disable CLI Add the ca-authority-{disable,enable} commands and Java client support for the modify and patch API. Part of: https://fedorahosted.org/pki/ticket/1604 --- .../certsrv/authority/AuthorityClient.java | 10 ++++ .../netscape/cmstools/authority/AuthorityCLI.java | 7 ++- .../cmstools/authority/AuthorityDisableCLI.java | 59 ++++++++++++++++++++++ .../cmstools/authority/AuthorityEnableCLI.java | 59 ++++++++++++++++++++++ 4 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 base/java-tools/src/com/netscape/cmstools/authority/AuthorityDisableCLI.java create mode 100644 base/java-tools/src/com/netscape/cmstools/authority/AuthorityEnableCLI.java diff --git a/base/common/src/com/netscape/certsrv/authority/AuthorityClient.java b/base/common/src/com/netscape/certsrv/authority/AuthorityClient.java index 7ad549c7d4bf85513aa64911fdf1c71c5ac4fc21..73dce1914fa926881012d7dd2481bbe823c13e3f 100644 --- a/base/common/src/com/netscape/certsrv/authority/AuthorityClient.java +++ b/base/common/src/com/netscape/certsrv/authority/AuthorityClient.java @@ -54,4 +54,14 @@ public class AuthorityClient extends Client { return client.getEntity(response, AuthorityData.class); } + public AuthorityData modifyCA(AuthorityData data) { + Response response = proxy.modifyCA(data.getID(), data); + return client.getEntity(response, AuthorityData.class); + } + + public AuthorityData patchCA(AuthorityData data) { + Response response = proxy.patchCA(data.getID(), data); + return client.getEntity(response, AuthorityData.class); + } + } 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 f2b630d32f9b8fc12792d14c84e90e12f7c23f4d..f07e9916e9cd9b0f1ee1f6c6d5eb4906f9a94c85 100644 --- a/base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityCLI.java @@ -27,6 +27,8 @@ public class AuthorityCLI extends CLI { addModule(new AuthorityFindCLI(this)); addModule(new AuthorityShowCLI(this)); addModule(new AuthorityCreateCLI(this)); + addModule(new AuthorityDisableCLI(this)); + addModule(new AuthorityEnableCLI(this)); } public String getFullName() { @@ -47,7 +49,10 @@ public class AuthorityCLI extends CLI { protected static void printAuthorityData(AuthorityData data) { System.out.println(" Issuer DN: " + data.getDN()); System.out.println(" ID: " + data.getID()); - System.out.println(" Parent ID: " + data.getParentID()); + String parentAID = data.getParentID(); + if (parentAID != null) + System.out.println(" Parent ID: " + data.getParentID()); + System.out.println(" Enabled: " + data.getEnabled()); String desc = data.getDescription(); if (desc != null) System.out.println(" Description: " + desc); diff --git a/base/java-tools/src/com/netscape/cmstools/authority/AuthorityDisableCLI.java b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityDisableCLI.java new file mode 100644 index 0000000000000000000000000000000000000000..2d008676ebb41722865205a4b5078ba3393a28ce --- /dev/null +++ b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityDisableCLI.java @@ -0,0 +1,59 @@ +package com.netscape.cmstools.authority; + +import java.util.Arrays; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.ParseException; + +import com.netscape.certsrv.ca.AuthorityID; +import com.netscape.certsrv.authority.AuthorityData; +import com.netscape.cmstools.cli.CLI; +import com.netscape.cmstools.cli.MainCLI; + +public class AuthorityDisableCLI extends CLI { + + public AuthorityCLI authorityCLI; + + public AuthorityDisableCLI(AuthorityCLI authorityCLI) { + super("disable", "Disable CAs", authorityCLI); + this.authorityCLI = authorityCLI; + } + + public void printHelp() { + formatter.printHelp(getFullName() + " ", 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) { + System.err.println("Error: No ID specified."); + printHelp(); + System.exit(-1); + } + + AuthorityData data = new AuthorityData( + null, cmdArgs[0], null, false, null); + data = authorityCLI.authorityClient.patchCA(data); + AuthorityCLI.printAuthorityData(data); + } + +} diff --git a/base/java-tools/src/com/netscape/cmstools/authority/AuthorityEnableCLI.java b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityEnableCLI.java new file mode 100644 index 0000000000000000000000000000000000000000..ff1f35ac4cd9e8507d9550bc22b29188ca115d9c --- /dev/null +++ b/base/java-tools/src/com/netscape/cmstools/authority/AuthorityEnableCLI.java @@ -0,0 +1,59 @@ +package com.netscape.cmstools.authority; + +import java.util.Arrays; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.ParseException; + +import com.netscape.certsrv.ca.AuthorityID; +import com.netscape.certsrv.authority.AuthorityData; +import com.netscape.cmstools.cli.CLI; +import com.netscape.cmstools.cli.MainCLI; + +public class AuthorityEnableCLI extends CLI { + + public AuthorityCLI authorityCLI; + + public AuthorityEnableCLI(AuthorityCLI authorityCLI) { + super("enable", "Enable CAs", authorityCLI); + this.authorityCLI = authorityCLI; + } + + public void printHelp() { + formatter.printHelp(getFullName() + " ", 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) { + System.err.println("Error: No ID specified."); + printHelp(); + System.exit(-1); + } + + AuthorityData data = new AuthorityData( + null, cmdArgs[0], null, true, null); + data = authorityCLI.authorityClient.patchCA(data); + AuthorityCLI.printAuthorityData(data); + } + +} -- 2.4.3