import com.novell.ldap.*;
import java.io.UnsupportedEncodingException;
public class AddUserToGroup
{
public static void main( String[] args )
{
if (args.length != 5) {
usage();
System.exit(1);
}
int ldapPort = LDAPConnection.DEFAULT_PORT;
int ldapVersion = LDAPConnection.LDAP_V3;
boolean status = false;
LDAPConnection lc = new LDAPConnection();
String ldapHost = args[0];
String loginDN = args[1];
String password = args[2];
String userDN = args[3];
String groupDN = args[4];
try {
lc.connect( ldapHost, ldapPort);
lc.bind( ldapVersion, loginDN, password.getBytes("UTF8") );
status = _AddUserToGroup( lc, userDN, groupDN );
if ( status )
System.out.println(
"User: " + userDN + " was enrolled in group: " + groupDN);
else
System.out.println( "User: " + userDN +
" could not be enrolled in group: " + groupDN);
lc.disconnect();
}
catch( LDAPException e ) {
System.out.println( "Error: " + e.toString() );
}
catch( UnsupportedEncodingException e ) {
System.out.println( "Error: " + e.toString() );
}
System.exit(0);
}
public static void usage() {
System.err.println("Usage: java AddUserToGroup <ldap host>"
+ " <login dn> <password> <user dn >\n"
+" <group dn>");
System.err.println("Example: java AddUserToGroup Acme.com"
+ " \"cn=Admin,o=Acme\" secret\n"
+ " \"cn=James,ou=Sales,o=Acme\""
+ " \"cn=salesGroup,ou=Sales,o=Acme\"");
}
public static boolean _AddUserToGroup( LDAPConnection lc,
String userdn,
String groupdn ) {
LDAPModification[] modGroup = new LDAPModification[2];
LDAPModification[] modUser = new LDAPModification[2];
LDAPAttribute membership = new LDAPAttribute("groupMembership",groupdn);
modUser[0] = new LDAPModification( LDAPModification.ADD, membership);
LDAPAttribute security = new LDAPAttribute("securityEquals",groupdn);
modUser[1] = new LDAPModification( LDAPModification.ADD, security);
LDAPAttribute member = new LDAPAttribute("uniqueMember", userdn);
modGroup[0] = new LDAPModification( LDAPModification.ADD, member);
LDAPAttribute equivalent = new LDAPAttribute("equivalentToMe", userdn);
modGroup[1] = new LDAPModification( LDAPModification.ADD, equivalent);
try {
lc.modify( userdn, modUser);
System.out.println("Modified the user's attribute.");
}
catch( LDAPException e ) {
System.out.println(
"Failed to modify user's attributes: " + e.toString() );
return false;
}
try {
lc.modify( groupdn, modGroup);
System.out.println("Modified the group's attribute.");
}
catch( LDAPException e ) {
System.out.println(
"Failed to modify group's attributes: " + e.toString() );
doCleanup( lc, userdn, groupdn );
return false;
}
return true;
}
public static void doCleanup( LDAPConnection lc,
String userdn, String groupdn ) {
LDAPModification[] modUser = new LDAPModification[2];
LDAPAttribute membership = new LDAPAttribute("groupMembership",groupdn);
modUser[0] = new LDAPModification( LDAPModification.DELETE, membership);
LDAPAttribute security = new LDAPAttribute("securityEquals",groupdn);
modUser[1] = new LDAPModification( LDAPModification.DELETE, security);
try {
lc.modify( userdn, modUser);
System.out.println("Deleted the modified user's attribute values.");
}
catch( LDAPException e ) {
System.out.println(
"Could not delete modified user's attributes: " + e.toString());
}
return;
}
}