diff options
author | Samba Release Account <samba-bugs@samba.org> | 1997-05-07 17:56:46 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1997-05-07 17:56:46 +0000 |
commit | 121c81e3d68f1748f114a2530a9eb67f7f658fda (patch) | |
tree | 999209c4326217a4b2d587dd499f7888ee33a558 /source3/smbd/ipc.c | |
parent | 999357a69781d0aa2d8f177ac53b3ac212268c35 (diff) | |
download | samba-121c81e3d68f1748f114a2530a9eb67f7f658fda.tar.gz samba-121c81e3d68f1748f114a2530a9eb67f7f658fda.tar.bz2 samba-121c81e3d68f1748f114a2530a9eb67f7f658fda.zip |
added automount home directory support. contributed by simeon@bangor.co.uk
and a mini bug-fix by rob.nacarrato@sheridanc.on.ca
reads in an entry from the auto.home file for the user when they log in,
and mounts their home directory as the default path for the [homes] service.
i might add this as to the %substitution system, so that you can
specify subdirectories for the user profiles, mainly.
lkcl
(This used to be commit 0bb6acc358243c49e19de9d5cc95f5124ac11b7c)
Diffstat (limited to 'source3/smbd/ipc.c')
-rw-r--r-- | source3/smbd/ipc.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index 3a2df56b3e..9a80a8d062 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -1947,6 +1947,7 @@ There is no auxiliary data in the response. #define AF_OP_SERVER 2 #define AF_OP_ACCOUNTS 3 + static BOOL api_RNetUserGetInfo(int cnum,uint16 vuid, char *param,char *data, int mdrcnt,int mprcnt, char **rdata,char **rparam, @@ -1959,10 +1960,17 @@ static BOOL api_RNetUserGetInfo(int cnum,uint16 vuid, char *param,char *data, int uLevel = SVAL(p,0); char *p2; - *rparam_len = 6; - *rparam = REALLOC(*rparam,*rparam_len); + /* get NIS home of a previously validated user - simeon */ + user_struct *vuser = get_valid_user_struct(vuid); + DEBUG(3,(" Username of UID %d is %s\n", vuser->uid, vuser->name)); + #if (defined(NETGROUP) && defined(AUTOMOUNT)) + DEBUG(3,(" HOMESHR for %s is %s\n", vuser->name, vuser->home_share)); + #endif - /* check it's a supported varient */ + *rparam_len = 6; + *rparam = REALLOC(*rparam,*rparam_len); + + /* check it's a supported variant */ if (strcmp(str1,"zWrLh") != 0) return False; switch( uLevel ) { @@ -2005,12 +2013,10 @@ static BOOL api_RNetUserGetInfo(int cnum,uint16 vuid, char *param,char *data, /* EEK! the cifsrap.txt doesn't have this in!!!! */ SIVAL(p,usri11_full_name,PTR_DIFF(p2,p)); /* full name */ -#if 0 - strcpy(p2,"FullName"); -#endif - strcpy(p2,UserName); /* suggest copying the user name, for now... */ + strcpy(p2,vuser->real_name); /* simeon */ p2 = skip_string(p2,1); } + if (uLevel == 11) /* modelled after NTAS 3.51 reply */ { SSVAL(p,usri11_priv,Connections[cnum].admin_user?USER_PRIV_ADMIN:USER_PRIV_USER); @@ -2023,7 +2029,11 @@ static BOOL api_RNetUserGetInfo(int cnum,uint16 vuid, char *param,char *data, } else { +#if (defined(NETGROUP) && defined(AUTOMOUNT)) + strcpy(p2, vuser->home_share); +#else strcpy(p2,"\\\\%L\\%U"); +#endif } standard_sub_basic(p2); p2 = skip_string(p2,1); @@ -2067,7 +2077,11 @@ static BOOL api_RNetUserGetInfo(int cnum,uint16 vuid, char *param,char *data, } else { +#if (defined(NETGROUP) && defined(AUTOMOUNT)) + strcpy(p2, vuser->home_share); +#else strcpy(p2,"\\\\%L\\%U"); +#endif } standard_sub_basic(p2); p2 = skip_string(p2,1); @@ -2079,7 +2093,7 @@ static BOOL api_RNetUserGetInfo(int cnum,uint16 vuid, char *param,char *data, { SIVAL(p,60,0); /* auth_flags */ SIVAL(p,64,PTR_DIFF(p2,*rdata)); /* full_name */ - strcpy(p2,"<Full Name>"); + strcpy(p2,vuser->real_name); /* simeon */ p2 = skip_string(p2,1); SIVAL(p,68,0); /* urs_comment */ SIVAL(p,72,PTR_DIFF(p2,*rdata)); /* parms */ @@ -3066,5 +3080,3 @@ int reply_trans(char *inbuf,char *outbuf) return(outsize); } - - |