diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/passdb/pdb_ldap.c | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index a737b5896b..d44a6133f3 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -371,10 +371,7 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass, get_single_attribute(ldap_struct, entry, "uid", username); DEBUG(2, ("Entry found for user: %s\n", username)); - /* not sure about this for nt_username */ - get_single_attribute (ldap_struct, entry, "sAMAccountName", nt_username); - if (!nt_username) - pstrcpy(nt_username, username); + pstrcpy(nt_username, username); get_single_attribute(ldap_struct, entry, "sambaDomain", domain); if (!domain) @@ -412,11 +409,35 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass, } get_single_attribute(ldap_struct, entry, "homeDrive", dir_drive); + DEBUG(5,("homeDrive is set to %s\n",dir_drive)); + if (!*dir_drive) { + pstrcpy(dir_drive, lp_logon_drive()); + DEBUG(5,("homeDrive fell back to %s\n",dir_drive)); + } + + get_single_attribute(ldap_struct, entry, "smbHome", homedir); + DEBUG(5,("smbHome is set to %s\n",homedir)); + if (!*homedir) { + pstrcpy(homedir, lp_logon_home()); + DEBUG(5,("smbHome fell back to %s\n",homedir)); + } + get_single_attribute(ldap_struct, entry, "scriptPath", logon_script); + DEBUG(5,("scriptPath is set to %s\n",logon_script)); + if (!*logon_script) { + pstrcpy(logon_script, lp_logon_script()); + DEBUG(5,("scriptPath fell back to %s\n",logon_script)); + } + get_single_attribute(ldap_struct, entry, "profilePath", profile_path); - get_single_attribute(ldap_struct, entry, "description", acct_desc); - get_single_attribute (ldap_struct, entry, "userWorkstations", workstations); + DEBUG(5,("profilePath is set to %s\n",profile_path)); + if (!*profile_path) { + pstrcpy(profile_path, lp_logon_path()); + DEBUG(5,("profilePath fell back to %s\n",profile_path)); + } + get_single_attribute(ldap_struct, entry, "description", acct_desc); + get_single_attribute(ldap_struct, entry, "userWorkstations", workstations); get_single_attribute(ldap_struct, entry, "rid", temp); user_rid = (uint32)strtol(temp, NULL, 16); get_single_attribute(ldap_struct, entry, "primaryGroupID", temp); @@ -432,7 +453,6 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass, sys_user = sys_getpwnam(username); if (sys_user == NULL) return False; - pstrcpy(homedir, sys_user->pw_dir); /* FIXME: hours stuff should be cleaner */ @@ -484,8 +504,10 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass, pdb_set_acct_desc(sampass, acct_desc); pdb_set_workstations(sampass, workstations); pdb_set_munged_dial(sampass, munged_dial); - pdb_set_nt_passwd(sampass, smbntpwd); - pdb_set_lanman_passwd(sampass, smblmpwd); + if (!pdb_set_nt_passwd(sampass, smbntpwd)) + return False; + if (!pdb_set_lanman_passwd(sampass, smblmpwd)) + return False; /* pdb_set_unknown_3(sampass, unknown3); */ /* pdb_set_unknown_5(sampass, unknown5); */ @@ -516,7 +538,6 @@ static BOOL init_ldap_from_sam (LDAPMod *** mods, int ldap_state, SAM_ACCOUNT * DEBUG(2, ("Setting entry for user: %s\n", pdb_get_username(sampass))); /* not sure about using this for the nt_username */ - make_a_mod (mods, ldap_state, "sAMAccountName", pdb_get_nt_username(sampass)); make_a_mod(mods, ldap_state, "sambaDomain", pdb_get_domain(sampass)); slprintf(temp, sizeof(temp) - 1, "%i", pdb_get_uid(sampass)); @@ -549,7 +570,7 @@ static BOOL init_ldap_from_sam (LDAPMod *** mods, int ldap_state, SAM_ACCOUNT * make_a_mod(mods, ldap_state, "displayName", pdb_get_fullname(sampass)); make_a_mod(mods, ldap_state, "cn", pdb_get_fullname(sampass)); - make_a_mod(mods, ldap_state, "homeDirectory", pdb_get_homedir(sampass)); + make_a_mod(mods, ldap_state, "smbHome", pdb_get_homedir(sampass)); make_a_mod(mods, ldap_state, "homeDrive", pdb_get_dirdrive(sampass)); make_a_mod(mods, ldap_state, "scriptPath", pdb_get_logon_script(sampass)); make_a_mod(mods, ldap_state, "profilePath", pdb_get_profile_path(sampass)); |