r8145: When inventing a new parameter for SFU-support, be aware of Volker's
authorGünther Deschner <gd@samba.org>
Mon, 4 Jul 2005 13:57:54 +0000 (13:57 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:58:12 +0000 (10:58 -0500)
upcoming changes for "unixinfo"-pipe.

Therefor (after speaking with Volker) replace "winbind sfu support" with
the list-parameter "winbind nss info" which defaults to "template". For
SFU-support set it to "winbind nss info = template sfu".

Note that nss_info_use() is just a dummy function at the moment.

Guenther
(This used to be commit 91596330ea3c4ba0fb9ddc52ad9d4a7c8e5b2d3f)

source3/nsswitch/winbindd_ads.c
source3/nsswitch/winbindd_user.c
source3/param/loadparm.c
source3/sam/idmap_ad.c

index 868a7bc2ac6d56288826d590e9d687b9c546f764..3041b736f715ecedb487e96e28c7a42dc3764ca4 100644 (file)
@@ -95,7 +95,7 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain)
                return NULL;
        }
 
-       if (lp_winbind_sfu_support() && (!ads_check_sfu_mapping(ads))) {
+       if (use_nss_info("sfu") && (!ads_check_sfu_mapping(ads))) {
                DEBUG(0,("ads_cached_connection: failed to check sfu attributes\n"));
                return NULL;
        }
@@ -163,7 +163,9 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
        i = 0;
 
        for (msg = ads_first_entry(ads, res); msg; msg = ads_next_entry(ads, msg)) {
-               char *name, *gecos, *homedir, *shell;
+               char *name, *gecos;
+               char *homedir = NULL;
+               char *shell = NULL;
                uint32 group;
                uint32 atype;
 
@@ -175,9 +177,11 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
 
                name = ads_pull_username(ads, mem_ctx, msg);
                gecos = ads_pull_string(ads, mem_ctx, msg, "name");
-               homedir = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_homedir_attr);
-               shell = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_shell_attr);
-
+               if (use_nss_info("sfu")) {
+                       homedir = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_homedir_attr);
+                       shell = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_shell_attr);
+               }
+       
                if (!ads_pull_sid(ads, msg, "objectSid",
                                  &(*info)[i].user_sid)) {
                        DEBUG(1,("No sid for %s !?\n", name));
@@ -418,8 +422,11 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
 
        info->acct_name = ads_pull_username(ads, mem_ctx, msg);
        info->full_name = ads_pull_string(ads, mem_ctx, msg, "name");
-       info->homedir = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_homedir_attr);
-       info->shell = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_shell_attr);
+
+       if (use_nss_info("sfu")) {
+               info->homedir = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_homedir_attr);
+               info->shell = ads_pull_string(ads, mem_ctx, msg, ads->schema.sfu_shell_attr);
+       }
 
        if (!ads_pull_uint32(ads, msg, "primaryGroupID", &group_rid)) {
                DEBUG(1,("No primary group for %s !?\n",
index f849bff42d21f7857f82e33cbfb6cf90ab202e7d..ab5da3edd0637de10bfe07b096a3a9ef6f462228 100644 (file)
@@ -43,7 +43,7 @@ static BOOL fillup_pw_field(const char *lp_template,
        if (out == NULL)
                return False;
 
-       if (in && !strequal(in,"") && lp_security() == SEC_ADS && lp_winbind_sfu_support()) {
+       if (in && !strequal(in,"") && lp_security() == SEC_ADS && use_nss_info("sfu")) {
                safe_strcpy(out, in, sizeof(fstring) - 1);
                return True;
        }
index bb6feaf2a1a8b3f9d1a1e52de8df5596643ed09a..a1dcf2849106ed096dcaf22d6e7e701c2545ef0e 100644 (file)
@@ -225,7 +225,7 @@ typedef struct
        int oplock_break_wait_time;
        int winbind_cache_time;
        int winbind_max_idle_children;
-       BOOL bWinbindSFUSupport;
+       char **szWinbindNssInfo;
        int iLockSpinCount;
        int iLockSpinTime;
        char *szLdapMachineSuffix;
@@ -1237,7 +1237,7 @@ static struct parm_struct parm_table[] = {
        {"winbind trusted domains only", P_BOOL, P_GLOBAL, &Globals.bWinbindTrustedDomainsOnly, NULL, NULL, FLAG_ADVANCED}, 
        {"winbind nested groups", P_BOOL, P_GLOBAL, &Globals.bWinbindNestedGroups, NULL, NULL, FLAG_ADVANCED}, 
        {"winbind max idle children", P_INTEGER, P_GLOBAL, &Globals.winbind_max_idle_children, NULL, NULL, FLAG_ADVANCED}, 
-       {"winbind sfu support", P_BOOL, P_GLOBAL, &Globals.bWinbindSFUSupport, NULL, NULL, FLAG_ADVANCED}, 
+       {"winbind nss info", P_LIST, P_GLOBAL, &Globals.szWinbindNssInfo, NULL, NULL, FLAG_ADVANCED}, 
 
        {NULL,  P_BOOL,  P_NONE,  NULL,  NULL,  NULL,  0}
 };
@@ -1583,7 +1583,7 @@ static void init_globals(void)
        Globals.bWinbindTrustedDomainsOnly = False;
        Globals.bWinbindNestedGroups = False;
        Globals.winbind_max_idle_children = 3;
-       Globals.bWinbindSFUSupport = False;
+       Globals.szWinbindNssInfo = str_list_make("template", NULL);
 
        Globals.bEnableRidAlgorithm = True;
 
@@ -2008,7 +2008,7 @@ FN_LOCAL_INTEGER(lp_aio_write_size, iAioWriteSize);
 FN_LOCAL_CHAR(lp_magicchar, magic_char)
 FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time)
 FN_GLOBAL_INTEGER(lp_winbind_max_idle_children, &Globals.winbind_max_idle_children)
-FN_GLOBAL_BOOL(lp_winbind_sfu_support, &Globals.bWinbindSFUSupport)
+FN_GLOBAL_LIST(lp_winbind_nss_info, &Globals.szWinbindNssInfo)
 FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase)
 FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout)
 FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing)
index 5126246f6e742047172b5ea9f74f07229fb5e98b..47e349483ddf6e63ea4f94db0b6e4a6a585416dd 100644 (file)
@@ -54,7 +54,7 @@ static BOOL ad_idmap_check_attr_mapping(ADS_STRUCT *ads)
                return True;
        }
 
-       if (lp_winbind_sfu_support()) {
+       if (use_nss_info("sfu")) {
        
                if (!ads_check_sfu_mapping(ads)) {
                        DEBUG(0,("ad_idmap_check_attr_mapping: failed to check for SFU schema\n"));