summaryrefslogtreecommitdiff
path: root/source3/passdb/sampass.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/passdb/sampass.c')
-rw-r--r--source3/passdb/sampass.c278
1 files changed, 0 insertions, 278 deletions
diff --git a/source3/passdb/sampass.c b/source3/passdb/sampass.c
deleted file mode 100644
index b9be8a7bae..0000000000
--- a/source3/passdb/sampass.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Unix SMB/Netbios implementation. Version 1.9. SMB parameters and setup
- * Copyright (C) Andrew Tridgell 1992-1998 Modified by Jeremy Allison 1995.
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-#ifdef USE_SMBPASS_DB
-
-extern int DEBUGLEVEL;
-extern pstring samlogon_user;
-extern BOOL sam_logon_in_ssb;
-
-extern DOM_SID global_sam_sid;
-
-/***************************************************************
- Start to enumerate the smbpasswd list. Returns a void pointer
- to ensure no modification outside this module.
-****************************************************************/
-
-static void *startsamfilepwent(BOOL update)
-{
- return startsmbpwent(update);
-}
-
-/***************************************************************
- End enumeration of the smbpasswd list.
-****************************************************************/
-
-static void endsamfilepwent(void *vp)
-{
- endsmbpwent(vp);
-}
-
-/*************************************************************************
- Return the current position in the smbpasswd list as an SMB_BIG_UINT.
- This must be treated as an opaque token.
-*************************************************************************/
-
-static SMB_BIG_UINT getsamfilepwpos(void *vp)
-{
- return getsmbpwpos(vp);
-}
-
-/*************************************************************************
- Set the current position in the smbpasswd list from an SMB_BIG_UINT.
- This must be treated as an opaque token.
-*************************************************************************/
-
-static BOOL setsamfilepwpos(void *vp, SMB_BIG_UINT tok)
-{
- return setsmbpwpos(vp, tok);
-}
-
-/*************************************************************************
- Routine to return the next entry in the smbpasswd list.
- this function is a nice, messy combination of reading:
- - the smbpasswd file
- - the unix password database
- - smb.conf options (not done at present).
- *************************************************************************/
-
-static struct sam_passwd *getsamfile21pwent(void *vp)
-{
- struct sam_passwd *user;
-
- static pstring full_name;
- static pstring home_dir;
- static pstring home_drive;
- static pstring logon_script;
- static pstring profile_path;
- static pstring acct_desc;
- static pstring workstations;
-
- DEBUG(5,("getsamfile21pwent\n"));
-
- user = pwdb_smb_to_sam(getsmbfilepwent(vp));
- if (user == NULL)
- {
- return NULL;
- }
-
- /*
- * get all the other gubbins we need. substitute unix name for %U
- * as putting the nt name in is a bit meaningless.
- */
-
- pstrcpy(samlogon_user, user->unix_name);
-
- if (samlogon_user[strlen(samlogon_user)-1] == '$' &&
- user->group_rid != DOMAIN_GROUP_RID_USERS)
- {
- DEBUG(0,("trust account %s should be in DOMAIN_GROUP_RID_USERS\n",
- samlogon_user));
- }
-
- /* XXXX hack to get standard_sub_basic() to use sam logon username */
- /* possibly a better way would be to do a become_user() call */
- sam_logon_in_ssb = True;
-
- pstrcpy(full_name , "");
- pstrcpy(logon_script , lp_logon_script ());
- pstrcpy(profile_path , lp_logon_path ());
- pstrcpy(home_drive , lp_logon_drive ());
- pstrcpy(home_dir , lp_logon_home ());
- pstrcpy(acct_desc , "");
- pstrcpy(workstations , "");
-
- sam_logon_in_ssb = False;
-
- /*
- only overwrite values with defaults IIF specific backend
- didn't filled the values
- */
-
- if (user->full_name == NULL)
- user->full_name = full_name;
- if (user->home_dir == NULL)
- user->home_dir = home_dir;
- if (user->dir_drive == NULL)
- user->dir_drive = home_drive;
- if (user->logon_script == NULL)
- user->logon_script = logon_script;
- if (user->profile_path == NULL)
- user->profile_path = profile_path;
- if (user->acct_desc == NULL)
- user->acct_desc = acct_desc;
- if (user->workstations == NULL)
- user->workstations = workstations;
-
- user->unknown_str = NULL; /* don't know, yet! */
- user->munged_dial = NULL; /* "munged" dial-back telephone number */
-
- user->unknown_3 = 0xffffff; /* don't know */
- user->logon_divs = 168; /* hours per week */
- user->hours_len = 21; /* 21 times 8 bits = 168 */
- memset(user->hours, 0xff, user->hours_len); /* available at all hours */
- user->unknown_5 = 0x00020000; /* don't know */
- user->unknown_6 = 0x000004ec; /* don't know */
-
- return user;
-}
-
-/************************************************************************
-search sam db by uid.
-*************************************************************************/
-static struct sam_passwd *getsamfilepwuid(uid_t uid)
-{
- struct sam_passwd *pwd = NULL;
- void *fp = NULL;
-
- DEBUG(10, ("search by uid: %x\n", (int)uid));
-
- /* Open the smb password file - not for update. */
- fp = startsam21pwent(False);
-
- if (fp == NULL)
- {
- DEBUG(0, ("unable to open sam password database.\n"));
- return NULL;
- }
-
- while ((pwd = getsamfile21pwent(fp)) != NULL && pwd->unix_uid != uid)
- {
- }
-
- if (pwd != NULL)
- {
- DEBUG(10, ("found by unix_uid: %x\n", (int)uid));
- }
-
- endsam21pwent(fp);
-
- return pwd;
-}
-
-/************************************************************************
-search sam db by rid.
-*************************************************************************/
-static struct sam_passwd *getsamfilepwrid(uint32 user_rid)
-{
- DOM_NAME_MAP gmep;
- DOM_SID sid;
- sid_copy(&sid, &global_sam_sid);
- sid_append_rid(&sid, user_rid);
-
- if (!lookupsmbpwsid(&sid, &gmep))
- {
- return NULL;
- }
-
- return getsamfilepwuid((uid_t)gmep.unix_id);
-}
-
-/************************************************************************
-search sam db by nt name.
-*************************************************************************/
-static struct sam_passwd *getsamfilepwntnam(const char *nt_name)
-{
- DOM_NAME_MAP gmep;
-
- if (!lookupsmbpwntnam(nt_name, &gmep))
- {
- return NULL;
- }
-
- return getsamfilepwuid((uid_t)gmep.unix_id);
-}
-
-/*
- * Stub functions - implemented in terms of others.
- */
-
-static BOOL mod_samfile21pwd_entry(struct sam_passwd* pwd, BOOL override)
-{
- return mod_smbpwd_entry(pwdb_sam_to_smb(pwd), override);
-}
-
-static BOOL add_samfile21pwd_entry(struct sam_passwd *newpwd)
-{
- return add_smbpwd_entry(pwdb_sam_to_smb(newpwd));
-}
-
-static struct sam_disp_info *getsamfiledispntnam(const char *ntname)
-{
- return pwdb_sam_to_dispinfo(getsam21pwntnam(ntname));
-}
-
-static struct sam_disp_info *getsamfiledisprid(uint32 rid)
-{
- return pwdb_sam_to_dispinfo(getsam21pwrid(rid));
-}
-
-static struct sam_disp_info *getsamfiledispent(void *vp)
-{
- return pwdb_sam_to_dispinfo(getsam21pwent(vp));
-}
-
-static struct sam_passdb_ops sam_file_ops =
-{
- startsamfilepwent,
- endsamfilepwent,
- getsamfilepwpos,
- setsamfilepwpos,
- getsamfilepwntnam,
- getsamfilepwuid,
- getsamfilepwrid,
- getsamfile21pwent,
- add_samfile21pwd_entry,
- mod_samfile21pwd_entry,
- getsamfiledispntnam,
- getsamfiledisprid,
- getsamfiledispent
-};
-
-struct sam_passdb_ops *file_initialise_sam_password_db(void)
-{
- return &sam_file_ops;
-}
-
-#else
- /* Do *NOT* make this function static. It breaks the compile on gcc. JRA */
- void sampass_dummy_function(void) { } /* stop some compilers complaining */
-#endif /* USE_SMBPASS_DB */