Loading cadc-access-control-server/src/main/java/ca/nrc/cadc/ac/server/web/groups/GetGroupsListAction.java 0 → 100644 +53 −0 Original line number Original line Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ca.nrc.cadc.ac.server.web.groups; import ca.nrc.cadc.ac.Group; import ca.nrc.cadc.ac.xml.GroupListWriter; import ca.nrc.cadc.ac.xml.GroupWriter; import java.security.AccessControlException; import java.util.ArrayList; import java.util.Collection; import org.apache.log4j.Logger; /** * * @author bertocco */ public class GetGroupsListAction extends AbstractGroupAction { private static final Logger log = Logger.getLogger(GetGroupsListAction.class); GetGroupsListAction() { super(); } public void doAction() throws Exception { Collection<String> groupNames = groupPersistence.getGroupNames(); Collection<Group> groups = new ArrayList<Group>(); log.debug("Found " + groupNames.size() + " group names"); Group group = new Group(); syncOut.setHeader("Content-Type", "application/xml"); GroupListWriter groupListWriter = new GroupListWriter(); for (final String currentGroup : groupNames) { try { group = groupPersistence.getGroup(currentGroup); groups.add(group); } catch (AccessControlException ace) { // The user can read only groups of which is member or owner log.info("User can not read group " + currentGroup); } } groupListWriter.write(groups, syncOut.getWriter()); } } cadc-access-control-server/src/main/java/ca/nrc/cadc/ac/server/web/groups/GroupsActionFactory.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -109,7 +109,11 @@ public abstract class GroupsActionFactory { { action = new GetGroupNamesAction(); action = new GetGroupNamesAction(); } } else if (segments.length == 1) else if ((segments.length == 1) && (segments[0].equals("list"))) { action = new GetGroupsListAction(); } else if ((segments.length == 1) && (!segments[0].equals("list"))) { { String groupName = segments[0]; String groupName = segments[0]; action = new GetGroupAction(groupName); action = new GetGroupAction(groupName); Loading cadc-access-control/src/main/java/ca/nrc/cadc/ac/client/GMSClient.java +48 −2 Original line number Original line Diff line number Diff line Loading @@ -165,9 +165,55 @@ public class GMSClient implements TransferListener * * * @return The list of groups. * @return The list of groups. */ */ public List<Group> getGroups() public List<Group> getGroups() throws GroupNotFoundException, IOException { { throw new UnsupportedOperationException("Not yet implemented"); URL groupsURL = lookupServiceURL(Standards.GMS_GROUPS_01); URL getGroupListURL = new URL(groupsURL.toExternalForm() + "/list"); log.debug("getGroup request to " + getGroupListURL.toString()); ByteArrayOutputStream out = new ByteArrayOutputStream(); HttpDownload transfer = new HttpDownload(getGroupListURL, out); transfer.setSSLSocketFactory(getSSLSocketFactory()); transfer.run(); Throwable error = transfer.getThrowable(); if (error != null) { log.debug("getGroup throwable (" + transfer.getResponseCode() + ")", error); // transfer returns a -1 code for anonymous access. if ((transfer.getResponseCode() == -1) || (transfer.getResponseCode() == 401) || (transfer.getResponseCode() == 403)) { throw new AccessControlException(error.getMessage()); } if (transfer.getResponseCode() == 400) { throw new IllegalArgumentException(error.getMessage()); } if (transfer.getResponseCode() == 404) { throw new GroupNotFoundException(error.getMessage()); } throw new IOException(error); } try { String groupsXML = new String(out.toByteArray(), "UTF-8"); log.debug("getGroups returned: " + groupsXML); GroupListReader groupListReader = new GroupListReader(); List<Group> groupsList = groupListReader.read(groupsXML); return groupListReader.read(groupsXML); } catch (Exception bug) { log.error("Unexpected exception", bug); throw new RuntimeException(bug); } } } /** /** Loading cadc-access-control/src/main/java/ca/nrc/cadc/ac/client/Main.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -112,6 +112,8 @@ public class Main implements PrivilegedAction<Object> public static final String ARG_USERID = "userid"; public static final String ARG_USERID = "userid"; public static final String ARG_GROUP = "group"; public static final String ARG_GROUP = "group"; public static final String ARG_LIST = "list"; public static final String ARG_HELP = "help"; public static final String ARG_HELP = "help"; public static final String ARG_VERBOSE = "verbose"; public static final String ARG_VERBOSE = "verbose"; public static final String ARG_DEBUG = "debug"; public static final String ARG_DEBUG = "debug"; Loading Loading @@ -186,6 +188,9 @@ public class Main implements PrivilegedAction<Object> if (argMap.isSet(ARG_DEL_ADMIN)) if (argMap.isSet(ARG_DEL_ADMIN)) return ARG_DEL_ADMIN; return ARG_DEL_ADMIN; if (argMap.isSet(ARG_LIST)) return ARG_LIST; throw new IllegalArgumentException("No valid commands"); throw new IllegalArgumentException("No valid commands"); } } Loading @@ -195,6 +200,8 @@ public class Main implements PrivilegedAction<Object> System.out.println("--get --group=<uri>"); System.out.println("--get --group=<uri>"); System.out.println("--delete --group=<uri>"); System.out.println("--delete --group=<uri>"); System.out.println(); System.out.println(); System.out.println("--list --group=<uri>"); System.out.println(); System.out.println("--add-member --group=<uri> --userid=<u>"); System.out.println("--add-member --group=<uri> --userid=<u>"); System.out.println("--remove-member --group=<uri> --userid=<u>"); System.out.println("--remove-member --group=<uri> --userid=<u>"); System.out.println(); System.out.println(); Loading Loading @@ -362,6 +369,13 @@ public class Main implements PrivilegedAction<Object> client.deleteGroup(group); client.deleteGroup(group); } } else if (command.equals(ARG_LIST)) { if (group == null) throw new IllegalArgumentException("No group specified"); return client.getGroups(); } return null; return null; } } Loading Loading
cadc-access-control-server/src/main/java/ca/nrc/cadc/ac/server/web/groups/GetGroupsListAction.java 0 → 100644 +53 −0 Original line number Original line Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ca.nrc.cadc.ac.server.web.groups; import ca.nrc.cadc.ac.Group; import ca.nrc.cadc.ac.xml.GroupListWriter; import ca.nrc.cadc.ac.xml.GroupWriter; import java.security.AccessControlException; import java.util.ArrayList; import java.util.Collection; import org.apache.log4j.Logger; /** * * @author bertocco */ public class GetGroupsListAction extends AbstractGroupAction { private static final Logger log = Logger.getLogger(GetGroupsListAction.class); GetGroupsListAction() { super(); } public void doAction() throws Exception { Collection<String> groupNames = groupPersistence.getGroupNames(); Collection<Group> groups = new ArrayList<Group>(); log.debug("Found " + groupNames.size() + " group names"); Group group = new Group(); syncOut.setHeader("Content-Type", "application/xml"); GroupListWriter groupListWriter = new GroupListWriter(); for (final String currentGroup : groupNames) { try { group = groupPersistence.getGroup(currentGroup); groups.add(group); } catch (AccessControlException ace) { // The user can read only groups of which is member or owner log.info("User can not read group " + currentGroup); } } groupListWriter.write(groups, syncOut.getWriter()); } }
cadc-access-control-server/src/main/java/ca/nrc/cadc/ac/server/web/groups/GroupsActionFactory.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -109,7 +109,11 @@ public abstract class GroupsActionFactory { { action = new GetGroupNamesAction(); action = new GetGroupNamesAction(); } } else if (segments.length == 1) else if ((segments.length == 1) && (segments[0].equals("list"))) { action = new GetGroupsListAction(); } else if ((segments.length == 1) && (!segments[0].equals("list"))) { { String groupName = segments[0]; String groupName = segments[0]; action = new GetGroupAction(groupName); action = new GetGroupAction(groupName); Loading
cadc-access-control/src/main/java/ca/nrc/cadc/ac/client/GMSClient.java +48 −2 Original line number Original line Diff line number Diff line Loading @@ -165,9 +165,55 @@ public class GMSClient implements TransferListener * * * @return The list of groups. * @return The list of groups. */ */ public List<Group> getGroups() public List<Group> getGroups() throws GroupNotFoundException, IOException { { throw new UnsupportedOperationException("Not yet implemented"); URL groupsURL = lookupServiceURL(Standards.GMS_GROUPS_01); URL getGroupListURL = new URL(groupsURL.toExternalForm() + "/list"); log.debug("getGroup request to " + getGroupListURL.toString()); ByteArrayOutputStream out = new ByteArrayOutputStream(); HttpDownload transfer = new HttpDownload(getGroupListURL, out); transfer.setSSLSocketFactory(getSSLSocketFactory()); transfer.run(); Throwable error = transfer.getThrowable(); if (error != null) { log.debug("getGroup throwable (" + transfer.getResponseCode() + ")", error); // transfer returns a -1 code for anonymous access. if ((transfer.getResponseCode() == -1) || (transfer.getResponseCode() == 401) || (transfer.getResponseCode() == 403)) { throw new AccessControlException(error.getMessage()); } if (transfer.getResponseCode() == 400) { throw new IllegalArgumentException(error.getMessage()); } if (transfer.getResponseCode() == 404) { throw new GroupNotFoundException(error.getMessage()); } throw new IOException(error); } try { String groupsXML = new String(out.toByteArray(), "UTF-8"); log.debug("getGroups returned: " + groupsXML); GroupListReader groupListReader = new GroupListReader(); List<Group> groupsList = groupListReader.read(groupsXML); return groupListReader.read(groupsXML); } catch (Exception bug) { log.error("Unexpected exception", bug); throw new RuntimeException(bug); } } } /** /** Loading
cadc-access-control/src/main/java/ca/nrc/cadc/ac/client/Main.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -112,6 +112,8 @@ public class Main implements PrivilegedAction<Object> public static final String ARG_USERID = "userid"; public static final String ARG_USERID = "userid"; public static final String ARG_GROUP = "group"; public static final String ARG_GROUP = "group"; public static final String ARG_LIST = "list"; public static final String ARG_HELP = "help"; public static final String ARG_HELP = "help"; public static final String ARG_VERBOSE = "verbose"; public static final String ARG_VERBOSE = "verbose"; public static final String ARG_DEBUG = "debug"; public static final String ARG_DEBUG = "debug"; Loading Loading @@ -186,6 +188,9 @@ public class Main implements PrivilegedAction<Object> if (argMap.isSet(ARG_DEL_ADMIN)) if (argMap.isSet(ARG_DEL_ADMIN)) return ARG_DEL_ADMIN; return ARG_DEL_ADMIN; if (argMap.isSet(ARG_LIST)) return ARG_LIST; throw new IllegalArgumentException("No valid commands"); throw new IllegalArgumentException("No valid commands"); } } Loading @@ -195,6 +200,8 @@ public class Main implements PrivilegedAction<Object> System.out.println("--get --group=<uri>"); System.out.println("--get --group=<uri>"); System.out.println("--delete --group=<uri>"); System.out.println("--delete --group=<uri>"); System.out.println(); System.out.println(); System.out.println("--list --group=<uri>"); System.out.println(); System.out.println("--add-member --group=<uri> --userid=<u>"); System.out.println("--add-member --group=<uri> --userid=<u>"); System.out.println("--remove-member --group=<uri> --userid=<u>"); System.out.println("--remove-member --group=<uri> --userid=<u>"); System.out.println(); System.out.println(); Loading Loading @@ -362,6 +369,13 @@ public class Main implements PrivilegedAction<Object> client.deleteGroup(group); client.deleteGroup(group); } } else if (command.equals(ARG_LIST)) { if (group == null) throw new IllegalArgumentException("No group specified"); return client.getGroups(); } return null; return null; } } Loading