From 6298d06cf2f15ea544c6afa3890605c73a46be44 Mon Sep 17 00:00:00 2001 From: Patrick Dowler <patrick.dowler@nrc-cnrc.gc.ca> Date: Thu, 23 Jul 2015 12:11:49 -0700 Subject: [PATCH] added minimal get and create group --- .../ca/nrc/cadc/ac/client/GMSClientMain.java | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClientMain.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClientMain.java index 961d6b99..5950adf6 100644 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClientMain.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClientMain.java @@ -69,6 +69,8 @@ package ca.nrc.cadc.ac.client; +import ca.nrc.cadc.ac.Group; +import ca.nrc.cadc.ac.User; import java.net.URI; import java.net.URL; import java.security.PrivilegedAction; @@ -83,6 +85,10 @@ import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.reg.client.RegistryClient; import ca.nrc.cadc.util.ArgumentMap; import ca.nrc.cadc.util.Log4jInit; +import java.security.AccessControlContext; +import java.security.AccessController; +import java.util.Set; +import javax.security.auth.x500.X500Principal; /** * Prototype main class for the GMSClient. Currently @@ -95,6 +101,8 @@ public class GMSClientMain implements PrivilegedAction<Object> private static Logger log = Logger.getLogger(GMSClientMain.class); public static final String ARG_ADD_MEMBER = "add-member"; + public static final String ARG_CREATE_GROUP = "create"; + public static final String ARG_GET_GROUP = "get"; public static final String ARG_USERID = "userid"; public static final String ARG_GROUP = "group"; @@ -119,9 +127,9 @@ public class GMSClientMain implements PrivilegedAction<Object> } catch (Exception e) { - e.printStackTrace(); + log.error("FAIL", e); } - log.debug("Using ac url: " + acURL); + log.info("GMS service URL: " + acURL); client = new GMSClient(acURL.toString()); } @@ -167,13 +175,22 @@ public class GMSClientMain implements PrivilegedAction<Object> { if (argMap.isSet(ARG_ADD_MEMBER)) return ARG_ADD_MEMBER; + + if (argMap.isSet(ARG_CREATE_GROUP)) + return ARG_CREATE_GROUP; + + if (argMap.isSet(ARG_GET_GROUP)) + return ARG_GET_GROUP; throw new IllegalArgumentException("No valid commands"); } private static void usage() { - System.out.println("Usage TBD"); + System.out.println("--add-member --group=<g> --userid=<u>"); + System.out.println("--create --group=<g>"); + System.out.println("--get --group=<g>"); + } @Override @@ -196,6 +213,37 @@ public class GMSClientMain implements PrivilegedAction<Object> client.addUserMember(group, new HttpPrincipal(userID)); } + + if (command.equals(ARG_CREATE_GROUP)) + { + String group = argMap.getValue(ARG_GROUP); + if (group == null) + throw new IllegalArgumentException("No group specified"); + + AccessControlContext accessControlContext = AccessController.getContext(); + Subject subject = Subject.getSubject(accessControlContext); + Set<X500Principal> principals = subject.getPrincipals(X500Principal.class); + X500Principal p = principals.iterator().next(); + + Group g = new Group(group, new User(p)); + g.getUserMembers().add(g.getOwner()); + client.createGroup(g); + } + + if (command.equals(ARG_GET_GROUP)) + { + String group = argMap.getValue(ARG_GROUP); + if (group == null) + throw new IllegalArgumentException("No group specified"); + + Group g = client.getGroup(group); + System.out.println("found: " + g.getID()); + System.out.println("\t" + g.description); + System.out.println("owner: " + g.getOwner()); + for (User u : g.getUserMembers()) + System.out.println("member: " + u); + + } return null; } -- GitLab