char *mail_v[] = {NULL, NULL};
char *proxy_address_v[] = {NULL, NULL};
char *mail_nickname_v[] = {NULL, NULL};
- char *reportToOriginator_v[] = {NULL, NULL};
+ char *report_to_originator_v[] = {NULL, NULL};
char *address_book_v[] = {NULL, NULL};
char *legacy_exchange_dn_v[] = {NULL, NULL};
u_int groupTypeControl;
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",
mail_nickname_v[0] = mail_nickname;
proxy_address_v[0] = proxy_address;
mail_v[0] = mail;
+ report_to_originator_v[0] = "TRUE";
+
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_REPLACE);
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
ADD_ATTR("proxyAddresses", proxy_address_v, LDAP_MOD_REPLACE);
+ ADD_ATTR("reportToOriginator", report_to_originator_v,
+ LDAP_MOD_REPLACE);
}
else
{
mail_nickname_v[0] = NULL;
proxy_address_v[0] = NULL;
mail_v[0] = NULL;
- legacy_exchange_dn_v[0] = mail;
+ legacy_exchange_dn_v[0] = NULL;
+ address_book_v[0] = NULL;
+ report_to_originator_v[0] = NULL;
+
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_REPLACE);
ADD_ATTR("mail", mail_v, LDAP_MOD_REPLACE);
ADD_ATTR("proxyAddresses", proxy_address_v, LDAP_MOD_REPLACE);
ADD_ATTR("legacyExchangeDN", legacy_exchange_dn_v, LDAP_MOD_REPLACE);
ADD_ATTR("showInAddressBook", address_book_v, LDAP_MOD_REPLACE);
+ ADD_ATTR("reportToOriginator", report_to_originator_v,
+ LDAP_MOD_REPLACE);
}
}
else
char *mail_v[] = {NULL, NULL};
char *proxy_address_v[] = {NULL, NULL};
char *mail_nickname_v[] = {NULL, NULL};
- char *reportToOriginator_v[] = {NULL, NULL};
+ char *report_to_originator_v[] = {NULL, NULL};
char *address_book_v[] = {NULL, NULL};
char *legacy_exchange_dn_v[] = {NULL, NULL};
char groupTypeControlStr[80];
int n;
int rc;
int updateGroup;
- int MailDisabled;
+ int MailDisabled = 0;
char **call_args;
-
+ LK_ENTRY *group_base;
+ int group_count;
+ char filter[1024];
+ char *attr_array[3];
+
call_args = ptr;
if(UseGroupUniversal)
}
updateGroup = (int)call_args[4];
- MailDisabled = atoi(call_args[6]);
memset(group_ou, 0, sizeof(group_ou));
memset(group_membership, 0, sizeof(group_membership));
security_flag = 0;
ADD_ATTR("sAMAccountName", samAccountName_v, LDAP_MOD_ADD);
ADD_ATTR("displayName", name_v, LDAP_MOD_ADD);
ADD_ATTR("name", name_v, LDAP_MOD_ADD);
-
+
if (Exchange)
{
+ if(atoi(av[L_MAILLIST]))
+ {
+ group_count = 0;
+ group_base = NULL;
+
+ sprintf(filter, "(&(objectClass=user)(cn=%s))", av[L_NAME]);
+ attr_array[0] = "cn";
+ attr_array[1] = NULL;
+
+ if ((rc = linklist_build((LDAP *)call_args[0], call_args[1],
+ filter, attr_array, &group_base,
+ &group_count,
+ LDAP_SCOPE_SUBTREE)) != 0)
+ {
+ com_err(whoami, 0, "Unable to process group %s : %s",
+ av[L_NAME], ldap_err2string(rc));
+ return(rc);
+ }
+
+ if (group_count)
+ {
+ com_err(whoami, 0, "Object already exists with name %s",
+ av[L_NAME]);
+ MailDisabled++;
+ }
+
+ linklist_free(group_base);
+ group_base = NULL;
+ group_count = 0;
+ }
+
if(atoi(av[L_MAILLIST]) && !MailDisabled && email_isvalid(mail))
{
mail_nickname_v[0] = mail_nickname;
+ report_to_originator_v[0] = "TRUE";
+
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_ADD);
+ ADD_ATTR("reportToOriginator", report_to_originator_v,
+ LDAP_MOD_ADD);
}
}
else
ADD_ATTR("mail", mail_v, LDAP_MOD_ADD);
}
}
-
+
if (strlen(av[L_DESC]) != 0)
- {
- desc_v[0] = av[L_DESC];
- ADD_ATTR("description", desc_v, LDAP_MOD_ADD);
- }
-
+ {
+ desc_v[0] = av[L_DESC];
+ ADD_ATTR("description", desc_v, LDAP_MOD_ADD);
+ }
+
ADD_ATTR("groupType", groupTypeControl_v, LDAP_MOD_ADD);
-
+
if (strlen(av[L_ACE_NAME]) != 0)
{
sprintf(info, "The Administrator of this list is: %s",
if (Exchange)
{
+ if(atoi(av[L_MAILLIST]))
+ {
+ group_count = 0;
+ group_base = NULL;
+
+ sprintf(filter, "(&(objectClass=user)(cn=%s))", av[L_NAME]);
+ attr_array[0] = "cn";
+ attr_array[1] = NULL;
+
+ if ((rc = linklist_build((LDAP *)call_args[0], call_args[1],
+ filter, attr_array, &group_base,
+ &group_count,
+ LDAP_SCOPE_SUBTREE)) != 0)
+ {
+ com_err(whoami, 0, "Unable to process group %s : %s",
+ av[L_NAME], ldap_err2string(rc));
+ return(rc);
+ }
+
+ if (group_count)
+ {
+ com_err(whoami, 0, "Object already exists with name %s",
+ av[L_NAME]);
+ MailDisabled++;
+ }
+
+ linklist_free(group_base);
+ group_base = NULL;
+ group_count = 0;
+ }
+
if (atoi(av[L_MAILLIST]) && !MailDisabled && email_isvalid(mail))
{
mail_nickname_v[0] = mail_nickname;
+ report_to_originator_v[0] = "TRUE";
+
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_REPLACE);
+ ADD_ATTR("reportToOriginator", report_to_originator_v,
+ LDAP_MOD_REPLACE);
}
else
{
proxy_address_v[0] = NULL;
legacy_exchange_dn_v[0] = NULL;
address_book_v[0] = NULL;
+ report_to_originator_v[0] = NULL;
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_REPLACE);
ADD_ATTR("proxyAddresses", proxy_address_v, LDAP_MOD_REPLACE);
ADD_ATTR("legacyExchangeDN", legacy_exchange_dn_v,
LDAP_MOD_REPLACE);
ADD_ATTR("showInAddressBook", address_book_v, LDAP_MOD_REPLACE);
+ ADD_ATTR("reportToOriginator", report_to_originator_v,
+ LDAP_MOD_REPLACE);
}
}
else
if(HiddenGroup)
{
hide_address_lists_v[0] = "TRUE";
+ address_book_v[0] = NULL;
ADD_ATTR("msExchHideFromAddressLists", hide_address_lists_v,
LDAP_MOD_REPLACE);
ADD_ATTR("showInAddressBook", address_book_v, LDAP_MOD_REPLACE);
if (Exchange)
{
- if ((rc != LDAP_SUCCESS) && (rc == LDAP_ALREADY_EXISTS))
+
+ if ((rc != LDAP_SUCCESS) && (rc == LDAP_ALREADY_EXISTS) &&
+ !strcmp(group_ou, contact_ou) && email_isvalid(mail))
{
n = 0;
gPtr = group_base;
while(gPtr) {
- if ((s = strstr(gPtr->dn, "Public")) != (char *) NULL)
+ if (((s = strstr(gPtr->dn, "Public")) != (char *) NULL) ||
+ ((s = strstr(gPtr->dn, "Recovery")) != (char *) NULL))
{
gPtr = gPtr->next;
continue;