]> andersk Git - moira.git/blobdiff - incremental/ldap/winad.c
Replace filter with search_filter.
[moira.git] / incremental / ldap / winad.c
index 307d2c09f8e71300e2662cf808755a5b67e6d71f..4e31c7a61f4bcf3729b3c273ce28ed8f7eff0b06 100755 (executable)
@@ -2409,6 +2409,7 @@ int group_rename(LDAP *ldap_handle, char *dn_path,
   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];
@@ -2418,6 +2419,7 @@ int group_rename(LDAP *ldap_handle, char *dn_path,
   LK_ENTRY  *group_base;
   int       group_count;
   int       MailDisabled = 0;
+  char      search_filter[1024];
 
   if(UseGroupUniversal)
     groupTypeControl = ADS_GROUP_TYPE_UNIVERSAL_GROUP;
@@ -2446,12 +2448,13 @@ int group_rename(LDAP *ldap_handle, char *dn_path,
          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",
@@ -2613,6 +2616,12 @@ int group_rename(LDAP *ldap_handle, char *dn_path,
        {
          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);
+           }
        }
     }
 
@@ -2666,6 +2675,7 @@ int group_create(int ac, char **av, void *ptr)
   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;
@@ -2799,6 +2809,12 @@ int group_create(int ac, char **av, void *ptr)
            {
              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);
+               }
            }
        }
       
@@ -2948,11 +2964,23 @@ int group_create(int ac, char **av, void *ptr)
            {
              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);
+               }
            }
        }
    
@@ -4541,6 +4569,11 @@ int user_update(LDAP *ldap_handle, char *dn_path, char *user_name,
     {
       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, 
@@ -4742,6 +4775,11 @@ int user_rename(LDAP *ldap_handle, char *dn_path, char *before_user_name,
     {
       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;
@@ -5050,6 +5088,11 @@ int user_create(int ac, char **av, void *ptr)
     {
       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])) {
@@ -5523,8 +5566,6 @@ int user_delete(LDAP *ldap_handle, char *dn_path,
 
   if (group_count != 1)
     {
-      com_err(whoami, 0, "Unable to find user %s in directory",
-              user_name);
       goto cleanup;
     }
   
@@ -5625,7 +5666,7 @@ static int illegalchars[] = {
 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 - _ */
@@ -5644,6 +5685,9 @@ static int illegalchars_ldap[] = {
 int check_string(char *s)
 {
   char  character;
+  char  *string;
+
+  string = s;
 
   for (; *s; s++)
     {
@@ -5655,12 +5699,20 @@ int check_string(char *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;
+           }
        }
     }
 
@@ -5869,8 +5921,10 @@ int ProcessAce(LDAP *ldap_handle, char *dn_path, char *Name, char *Type,
     
       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);
         }
 
@@ -5901,6 +5955,9 @@ int ProcessAce(LDAP *ldap_handle, char *dn_path, char *Name, char *Type,
           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"))
         {
@@ -5911,6 +5968,12 @@ int ProcessAce(LDAP *ldap_handle, char *dn_path, char *Name, char *Type,
           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))
             {
@@ -6029,6 +6092,9 @@ int populate_group(LDAP *ldap_handle, char *dn_path, char *group_name,
   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);
@@ -6116,7 +6182,6 @@ int populate_group(LDAP *ldap_handle, char *dn_path, char *group_name,
                  sprintf(member, "uid=%s,%s,%s", ptr->member, pUserOu, 
                          dn_path);
                }
-
            }
           else if (!strcasecmp(ptr->type, "STRING"))
             {
This page took 0.043055 seconds and 4 git commands to generate.