Commit ed57e5f7 authored by Jeff Burke's avatar Jeff Burke
Browse files

Merge branch 'ac2' of gimli2:/srv/cadc/git/wopencadc into ac2

parents 16853b3a b12c2e12
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -248,7 +248,7 @@ class LdapConnections
            }
            if (autoConfigUnboundReadOnlyConn != null)
            {
                log.debug("Releasing read only auto config connection.");
                log.debug("Releasing unbound read only auto config connection.");
                persistence.releaseConnection(LdapPersistence.POOL_UNBOUNDREADONLY, autoConfigUnboundReadOnlyConn);
                profiler.checkpoint("Release read only connection");
            }
@@ -267,7 +267,7 @@ class LdapConnections
            }
            if (manualConfigUnboundReadOnlyConn != null)
            {
                log.debug("Releasing read only manual config connection.");
                log.debug("Releasing unbound read only manual config connection.");
                unboundReadOnlyPool.releaseConnection(manualConfigUnboundReadOnlyConn);
            }
        }
+12 −9
Original line number Diff line number Diff line
@@ -808,18 +808,21 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
                throw new AccessControlException("Given user and authenticating user do not match");
            }

            ProxiedAuthorizationV2RequestControl control =
                new ProxiedAuthorizationV2RequestControl("dn:" + getSubjectDN().toNormalizedString());
            Control[] controls = new Control[] {control};
            String username = null;
            for (Principal p : user.getIdentities())
            {
                if (p instanceof HttpPrincipal)
                    username = p.getName();
            }

            BindRequest bindRequest = new SimpleBindRequest(
                    getUserDN(username, config.getUsersDN()), oldPassword);
            LDAPConnection conn = this.getUnboundReadConnection();
            conn.bind(bindRequest);

            PasswordModifyExtendedRequest passwordModifyRequest =
                new PasswordModifyExtendedRequest(
                    userDN.toNormalizedString(), oldPassword, newPassword, controls);

            LdapConfig ldapConfig = LdapConfig.getLdapConfig();
            String server = ldapConfig.getReadWritePool().getServers().get(0);
            int port = ldapConfig.getPort();
            LDAPConnection conn = new LDAPConnection(LdapDAO.getSocketFactory(ldapConfig), server, port);
                    userDN.toNormalizedString(), oldPassword, newPassword);

            PasswordModifyExtendedResult passwordModifyResult = (PasswordModifyExtendedResult)
                    conn.processExtendedOperation(passwordModifyRequest);
+41 −0
Original line number Diff line number Diff line
#!/bin/bash

# environment
#
# CADC_ROOT : location of installed CADC/CANFAR sofwtare
# CADC_EXT  : location of external java/lib (default: /usr/cadc/external)
# C2SRV     : name of the service environment to use (default: www, supported: demo, rc, dev)
#

# location of jar files
CL=$CADC_ROOT/lib
EL=/usr/cadc/external/java/lib
if [ ! -z $CADC_EXT ]; then
    EL=$CADC_EXT/java/lib
fi

# classpath
echo
EP="${EL}/jdom2.jar:${EL}/log4j.jar:${EL}/xerces.jar"
CP="${CL}/cadcUtil.jar:${CL}/cadcRegistryClient.jar:${CL}/cadcAccessControl.jar"
echo "classpath: ${CP}:${EP}"
echo

# service environment
LOCAL=""

if [ "$C2SRV" == "www" ]; then
    # no-op
    LOCAL=""
elif [ "$C2SRV" == "demo" ]; then
    LOCAL="-Dca.nrc.cadc.reg.client.RegistryClient.shortHostname=demo"
elif [ "$C2SRV" == "rc" ]; then
    LOCAL="-Dca.nrc.cadc.reg.client.RegistryClient.shortHostname=rc"
elif [ "$C2SRV" == "dev" ]; then 
    LOCAL="-Dca.nrc.cadc.reg.client.RegistryClient.host=$(whoami).cadc.dao.nrc.ca" 
fi
echo "registry hack: $LOCAL"
echo

java $LOCAL -cp "${CP}:${EP}" ca.nrc.cadc.ac.client.GMSClientMain "$@"
+17 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ 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_DEL_MEMBER = "remove-member";
    public static final String ARG_CREATE_GROUP = "create";
    public static final String ARG_GET_GROUP = "get";
    public static final String ARG_DELETE_GROUP = "delete";
@@ -186,12 +187,16 @@ public class GMSClientMain implements PrivilegedAction<Object>
        if (argMap.isSet(ARG_DELETE_GROUP))
            return ARG_DELETE_GROUP;
        
        if (argMap.isSet(ARG_DEL_MEMBER))
            return ARG_DEL_MEMBER;

        throw new IllegalArgumentException("No valid commands");
    }

    private static void usage()
    {
        System.out.println("--add-member --group=<g> --userid=<u>");
        System.out.println("--remove-member --group=<g> --userid=<u>");
        System.out.println("--create --group=<g>");
        System.out.println("--get --group=<g>");
        System.out.println("--delete --group=<g>");
@@ -217,6 +222,18 @@ public class GMSClientMain implements PrivilegedAction<Object>

                client.addUserMember(group, new HttpPrincipal(userID));
            }
            else if (command.equals(ARG_DEL_MEMBER))
            {
                String group = argMap.getValue(ARG_GROUP);
                if (group == null)
                    throw new IllegalArgumentException("No group specified");

                String member = argMap.getValue(ARG_USERID);
                if (member == null)
                    throw new IllegalArgumentException("No user specified");
                
                client.removeUserMember(group, new HttpPrincipal(member));
            }
            else if (command.equals(ARG_CREATE_GROUP))
            {
                String group = argMap.getValue(ARG_GROUP);