if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
if (machine_check(ldap_handle, dn_path, MachineName))
{
- com_err(whoami, 0, "Unable to find machine %s (alias %s) in AD.",
+ com_err(whoami, 0, "Unable to find machine %s (alias %s) in directory.",
OriginalMachineName, MachineName);
moira_disconnect();
return;
if (rc = moira_connect())
{
- critical_alert("AD incremental", "Error contacting Moira server : %s",
+ critical_alert("Ldap incremental", "Error contacting Moira server : %s",
error_message(rc));
return;
}
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
if (!atoi(before[LM_EXTRA_ACTIVE]))
{
com_err(whoami, 0,
- "Unable to add %s to group %s : group not active",
+ "Unable to remove %s from group %s : group not active",
before[2], before[0]);
return;
}
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
}
if (rc = moira_connect()) {
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error connection to Moira : %s",
error_message(rc));
return;
}
if (rc = moira_connect()) {
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
if (atoi(before[U_STATE]) == 0)
{
- com_err(whoami, 0, "expunging user %s from AD", before[U_NAME]);
+ com_err(whoami, 0, "expunging user %s from directory",
+ before[U_NAME]);
user_delete(ldap_handle, dn_path, before[U_NAME], before_user_id);
}
else
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error connection to Moira : %s",
error_message(rc));
return;
{
if (i > 30)
{
- critical_alert("AD incremental",
- "WINAD incremental failed (%s exists): %s",
+ critical_alert("Ldap incremental",
+ "Ldap incremental failed (%s exists): %s",
STOP_FILE, tbl_buf);
return(1);
}
char *report_to_originator_v[] = {NULL, NULL};
char *address_book_v[] = {NULL, NULL};
char *legacy_exchange_dn_v[] = {NULL, NULL};
+ char *null_v[] = {NULL, NULL};
u_int groupTypeControl;
char groupTypeControlStr[80];
char contact_mail[256];
LK_ENTRY *group_base;
int group_count;
int MailDisabled = 0;
+ char search_filter[1024];
if(UseGroupUniversal)
groupTypeControl = ADS_GROUP_TYPE_UNIVERSAL_GROUP;
group_count = 0;
group_base = NULL;
- sprintf(filter, "(&(objectClass=user)(cn=%s))", after_group_name);
+ sprintf(search_filter, "(&(objectClass=user)(cn=%s))",
+ after_group_name);
attr_array[0] = "cn";
attr_array[1] = NULL;
- if ((rc = linklist_build(ldap_handle, dn_path, filter, attr_array,
- &group_base, &group_count,
+ if ((rc = linklist_build(ldap_handle, dn_path, search_filter,
+ attr_array, &group_base, &group_count,
LDAP_SCOPE_SUBTREE)) != 0)
{
com_err(whoami, 0, "Unable to process group %s : %s",
if (group_count != 1)
{
com_err(whoami, 0, "Unable to process multiple groups with "
- "MoiraId = %s exist in the AD", MoiraId);
+ "MoiraId = %s exist in the directory", MoiraId);
return(AD_MULTIPLE_GROUPS_FOUND);
}
{
mail_v[0] = contact_mail;
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
+
+ if(!ActiveDirectory)
+ {
+ null_v[0] = "/dev/null";
+ ADD_ATTR("mailRoutingAddress", null_v, LDAP_MOD_REPLACE);
+ }
}
}
char *address_book_v[] = {NULL, NULL};
char *legacy_exchange_dn_v[] = {NULL, NULL};
char *gidNumber_v[] = {NULL, NULL};
+ char *null_v[] = {NULL, NULL};
char groupTypeControlStr[80];
char group_membership[1];
int i;
{
mail_v[0] = contact_mail;
ADD_ATTR("mail", mail_v, LDAP_MOD_ADD);
+
+ if(!ActiveDirectory)
+ {
+ null_v[0] = "/dev/null";
+ ADD_ATTR("mailRoutingAddress", null_v, LDAP_MOD_ADD);
+ }
}
}
if ((rc != LDAP_SUCCESS) && (rc != LDAP_ALREADY_EXISTS))
{
- com_err(whoami, 0, "Unable to create list %s in AD : %s",
+ com_err(whoami, 0, "Unable to create list %s in directory : %s",
av[L_NAME], ldap_err2string(rc));
callback_rc = rc;
return(rc);
{
mail_v[0] = contact_mail;
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
+
+ if(!ActiveDirectory)
+ {
+ null_v[0] = "/dev/null";
+ ADD_ATTR("mailRoutingAddress", null_v, LDAP_MOD_REPLACE);
+ }
}
else
{
mail_v[0] = NULL;
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
+
+ if(!ActiveDirectory)
+ {
+ null_v[0] = NULL;
+ ADD_ATTR("mailRoutingAddress", null_v, LDAP_MOD_REPLACE);
+ }
}
}
if (rc != LDAP_SUCCESS)
{
- com_err(whoami, 0, "Unable to update list %s in AD : %s",
+ com_err(whoami, 0, "Unable to update list %s in directory : %s",
av[L_NAME], ldap_err2string(rc));
callback_rc = rc;
return(rc);
if (AceSidCount == 0)
{
com_err(whoami, 0, "Group %s: Administrator: %s, Type: %s - does not "
- "have an AD SID.", TargetGroupName, AceName, AceType);
+ "have a directory SID.", TargetGroupName, AceName, AceType);
com_err(whoami, 0, " Non-admin security group template will be used.");
}
else
if ((rc = ldap_delete_s(ldap_handle, group_base->dn)) != LDAP_SUCCESS)
{
linklist_free(group_base);
- com_err(whoami, 0, "Unable to delete list %s from AD : %s",
+ com_err(whoami, 0, "Unable to delete list %s from directory : %s",
group_name, ldap_err2string(rc));
return(rc);
}
else
{
linklist_free(group_base);
- com_err(whoami, 0, "Unable to find list %s in AD.", group_name);
+ com_err(whoami, 0, "Unable to find list %s in directory.", group_name);
return(AD_NO_GROUPS_FOUND);
}
char **call_args;
char *s;
call_args = ptr;
-
- strcpy(temp, av[ACE_NAME]);
+ strcpy(temp, av[ACE_NAME]);
+ StringTrim(temp);
+
if (!check_string(temp))
return(0);
strcat(s, ".mit.edu");
}
}
-
+
if (!((int)call_args[3] & MOIRA_STRINGS))
return(0);
-
+
if (contact_create((LDAP *)call_args[0], call_args[1], temp, contact_ou))
return(0);
-
}
else if (!strcmp(av[ACE_TYPE], "LIST"))
{
while (linklist)
{
- if (!strcasecmp(temp, linklist->member))
+ if (!strcasecmp(temp, linklist->member) &&
+ !strcasecmp(av[ACE_TYPE], linklist->type))
return(0);
linklist = linklist->next;
if (group_count != 1)
{
- com_err(whoami, 0, "Unable to find list %s in AD",
+ com_err(whoami, 0, "Unable to find list %s in directory",
group_name);
linklist_free(group_base);
group_base = NULL;
linklist_free(group_base);
group_base = NULL;
group_count = 0;
- com_err(whoami, 0, "Unable to find list %s %d in AD",
+ com_err(whoami, 0, "Unable to find list %s %d in directory",
group_name, group_count);
return(AD_MULTIPLE_GROUPS_FOUND);
}
if ((rc != LDAP_SUCCESS) && (rc != LDAP_ALREADY_EXISTS))
{
- com_err(whoami, 0, "Unable to modify contact %s in AD : %s",
+ com_err(whoami, 0, "Unable to modify contact %s in directory : %s",
gPtr->dn, ldap_err2string(rc));
return(rc);
}
if(!strcmp(group_ou, contact_ou))
{
ADD_ATTR("mailRoutingAddress", mail_routing_v, LDAP_MOD_ADD);
- }
-
- if(!strcmp(group_ou, contact_ou))
- {
ADD_ATTR("eduPersonPrincipalName", mail_routing_v, LDAP_MOD_ADD);
}
}
}
}
- if ((rc != LDAP_SUCCESS) && (rc != LDAP_ALREADY_EXISTS))
- {
- n = 0;
- ADD_ATTR("cn", contact_v, LDAP_MOD_ADD);
-
- if(ActiveDirectory)
- {
- ADD_ATTR("objectClass", objectClass_v, LDAP_MOD_ADD);
- }
- else
- {
- ADD_ATTR("objectClass", objectClass_ldap_v, LDAP_MOD_ADD);
- }
-
- ADD_ATTR("name", name_v, LDAP_MOD_ADD);
- ADD_ATTR("displayName", name_v, LDAP_MOD_ADD);
- ADD_ATTR("description", desc_v, LDAP_MOD_ADD);
- mods[n] = NULL;
- rc = ldap_add_ext_s(ld, new_dn, mods, NULL, NULL);
-
- for (i = 0; i < n; i++)
- free(mods[i]);
- }
-
if ((rc != LDAP_SUCCESS) && (rc != LDAP_ALREADY_EXISTS))
{
com_err(whoami, 0, "Unable to create contact %s : %s",
if (group_count != 1)
{
- com_err(whoami, 0, "Unable to find user %s in AD",
+ com_err(whoami, 0, "Unable to find user %s in directory",
user_name);
linklist_free(group_base);
return(AD_NO_USER_FOUND);
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
mail_v[0] = contact_mail;
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
+
+ if(!ActiveDirectory)
+ {
+ ADD_ATTR("mitMoiraMail", mail_v, LDAP_MOD_REPLACE);
+ }
}
n = SetHomeDirectory(ldap_handle, user_name, distinguished_name, WinHomeDir,
{
mail_v[0] = contact_mail;
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
+
+ if(!ActiveDirectory)
+ {
+ ADD_ATTR("mitMoiraMail", mail_v, LDAP_MOD_REPLACE);
+ }
}
mods[n] = NULL;
{
mail_v[0] = contact_mail;
ADD_ATTR("mail", mail_v, LDAP_MOD_ADD);
+
+ if(!ActiveDirectory)
+ {
+ ADD_ATTR("mitMoiraMail", mail_v, LDAP_MOD_ADD);
+ }
}
if(strlen(av[U_FIRST])) {
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
if (group_count != 1)
{
linklist_free(group_base);
- com_err(whoami, 0, "Unable to find user %s in AD",
+ com_err(whoami, 0, "Unable to find user %s in directory",
user_name);
return(LDAP_NO_SUCH_OBJECT);
}
if (group_count != 1)
{
- com_err(whoami, 0, "Unable to find user %s in AD",
- user_name);
goto cleanup;
}
static int illegalchars_ldap[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^@ - ^O */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^P - ^_ */
- 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, /* SPACE - / */
+ 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, /* SPACE - / */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, /* 0 - ? */
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* @ - O */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, /* P - _ */
int check_string(char *s)
{
char character;
+ char *string;
+
+ string = s;
for (; *s; s++)
{
if(ActiveDirectory)
{
if (illegalchars[(unsigned) character])
- return 0;
+ {
+ com_err(whoami, 0, "Found illegal char '%c' (%d) in string %s",
+ character, (unsigned) character, string);
+ return 0;
+ }
}
else
{
if (illegalchars_ldap[(unsigned) character])
- return 0;
+ {
+ com_err(whoami, 0, "Found illegal char '%c' (%d) in string %s",
+ character, (unsigned) character, string);
+ return 0;
+ }
}
}
if (rc = mr_query("get_list_info", 1, av, GetAceInfo, AceInfo))
{
- com_err(whoami, 0, "Unable to get ACE info for list %s : %s",
- GroupName, error_message(rc));
+ if(rc != MR_NO_MATCH)
+ com_err(whoami, 0, "Unable to get ACE info for list %s : %s",
+ GroupName, error_message(rc));
+
return(1);
}
if (make_new_group(ldap_handle, dn_path, "", AceName, AceOu,
AceMembership, 0, UpdateGroup, maillist))
return(1);
+
+ populate_group(ldap_handle, dn_path, AceName, AceOu, AceMembership,
+ 0, "");
}
else if (!strcasecmp(AceInfo[0], "USER"))
{
call_args[3] = NULL;
callback_rc = 0;
+ if(!strcasecmp(AceName, PRODUCTION_PRINCIPAL) ||
+ !strcasecmp(AceName, TEST_PRINCIPAL))
+ {
+ return(1);
+ }
+
if (rc = mr_query("get_user_account_by_login", 1, av,
save_query_info, save_argv))
{
if (rc = mr_query("get_end_members_of_list", 1, av,
member_list_build, call_args))
{
+ if(rc == MR_LIST)
+ return(0);
+
com_err(whoami, 0, "Unable to populate list %s : %s",
group_name, error_message(rc));
return(3);
sprintf(member, "uid=%s,%s,%s", ptr->member, pUserOu,
dn_path);
}
-
}
else if (!strcasecmp(ptr->type, "STRING"))
{
if (rc == LDAP_NOT_ALLOWED_ON_NONLEAF)
container_move_objects(ldap_handle, dn_path, distinguishedName);
else
- com_err(whoami, 0, "Unable to delete container %s from AD : %s",
+ com_err(whoami, 0, "Unable to delete container %s from directory : %s",
av[CONTAINER_NAME], ldap_err2string(rc));
}
if (group_count != 1)
{
- com_err(whoami, 0, "Unable to find machine %s in AD: %s",
+ com_err(whoami, 0, "Unable to find machine %s in directory: %s",
MoiraMachineName);
return(1);
}
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
{
if (rc = moira_connect())
{
- critical_alert("AD incremental",
+ critical_alert("Ldap incremental",
"Error contacting Moira server : %s",
error_message(rc));
return;
mods)) != LDAP_SUCCESS)
{
com_err(whoami, 0, "Unable to change the %s attribute for %s "
- "in the AD : %s",
+ "in the directory : %s",
attribute, user_name, ldap_err2string(rc));
}
}
q = s;
- /* Replace leading spaces */
-
- while(isspace(*q)) {
- string[i++] = '\\';
- string[i++] = '2';
- string[i++] = '0';
- q++;
- }
-
/* Escape any special characters */
for(; *q != '\0'; q++) {