summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>2000-02-04 22:38:07 +0000
committerLuke Leighton <lkcl@samba.org>2000-02-04 22:38:07 +0000
commit33afc9ad91efb6038888c7fb6965ed5a947fe064 (patch)
treee49f1a5b4925bac867ae16a16b76f2f6cf2134fc
parent651bdf00556ab7284780e7499976cfde445fd4d0 (diff)
downloadsamba-33afc9ad91efb6038888c7fb6965ed5a947fe064.tar.gz
samba-33afc9ad91efb6038888c7fb6965ed5a947fe064.tar.xz
samba-33afc9ad91efb6038888c7fb6965ed5a947fe064.zip
finally getting somewhere by creating an _samr* API as a library.
the idea is to never, ever call passdb/*.c or groupdb/*.c functions [which are an abomination] but to use _samr_*() instead. e.g, smbpasswd calls _samr_set_userinfo() instead of mod_smbpwd_entry().
-rw-r--r--source/Makefile.in121
-rw-r--r--source/include/lib_smb_proto.h11
-rw-r--r--source/include/proto.h11
-rw-r--r--source/netlogond/netlogond.c25
-rw-r--r--source/passdb/passdb.c2
-rw-r--r--source/samrd/samrd.c25
-rw-r--r--source/samrd/samrnt5ldapd.c159
-rw-r--r--source/samrd/samrtdbd.c159
-rw-r--r--source/samrd/srv_samr_nt5ldap.c5
-rw-r--r--source/samrd/srv_samr_passdb.c9
-rw-r--r--source/samrd/srv_samr_tdb_init.c5
11 files changed, 107 insertions, 425 deletions
diff --git a/source/Makefile.in b/source/Makefile.in
index 637f87c7506..86711af875d 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -131,6 +131,9 @@ SMBLIB = bin/libsmb.la
NMBLIB = bin/libnmb.la
MSRPCLIB = bin/libmsrpc.la
SMBPWLIB = bin/libsmbpw.la
+SAMRPASSLIB = bin/libsamrpass.la
+SAMRTDBLIB = bin/libsamrtdb.la
+SAMRNT5LDAPLIB = bin/libsamrnt5ldap.la
SAMBA_LIBS = $(MSRPCLIB) $(SMBLIB) $(NMBLIB) $(SAMBALIB)
@@ -169,6 +172,7 @@ LIBSMB_OBJ = libsmb/clientgen.o \
libsmb/smberr.o libsmb/credentials.o \
libsmb/pwd_cache.o \
lib/crc32.o lib/md5.o lib/hmacmd5.o \
+ passdb/smbpassfile.o \
rpc_parse/parse_creds.o \
rpc_parse/parse_net.o \
rpc_parse/parse_ntlmssp.o rpc_parse/parse_prs.o \
@@ -236,7 +240,7 @@ GROUPDB_OBJ = groupdb/groupdb.o groupdb/aliasdb.o groupdb/builtindb.o \
SAMPASSDB_OBJ = passdb/sampassdb.o passdb/sampass.o passdb/sampassldap.o passdb/mysqlsampass.o passdb/sampassnt5ldap.o
-PASSDB_OBJ = passdb/passdb.o passdb/smbpassfile.o passdb/smbpass.o \
+PASSDB_OBJ = passdb/passdb.o passdb/smbpass.o \
passdb/pass_check.o passdb/ldap.o passdb/ldapdb.o passdb/nt5ldap.o passdb/nispass.o \
passdb/smbpasschange.o passdb/mysqlpass.o passdb/smbpassnt5ldap.o \
lib/util_pwdb.o lib/domain_namemap.o
@@ -255,7 +259,6 @@ SMBD_OBJ1 = smbd/server.o smbd/files.o smbd/connection.o \
smbd/process.o smbd/oplock.o smbd/service.o smbd/error.o smbd/vfs.o \
smbd/vfs-wrap.o smbd/dfs.o \
smbd/challenge.o \
- passdb/smbpassfile.o \
passdb/pass_check.o \
lib/util_pwdb.o
@@ -267,21 +270,17 @@ MSRPCD_OBJ = msrpc/msrpcd.o \
lib/set_uid.o
BROWSERD_OBJ1 = browserd/browserd.o \
- passdb/smbpassfile.o \
rpc_server/srv_brs.o
WKSSVCD_OBJ1 = wkssvcd/wkssvcd.o \
- passdb/smbpassfile.o \
rpc_server/srv_wkssvc.o \
wkssvcd/srv_wkssvc_nt.o
SRVSVCD_OBJ1 = srvsvcd/srvsvcd.o \
srvsvcd/srv_srvsvc_nt.o \
- passdb/smbpassfile.o \
rpc_server/srv_srvsvc.o
WINREGD_OBJ1 = winregd/winregd.o \
- passdb/smbpassfile.o \
rpc_server/srv_reg.o
NETLOGOND_OBJ1 = netlogond/netlogond.o \
@@ -290,15 +289,9 @@ NETLOGOND_OBJ1 = netlogond/netlogond.o \
rpc_server/srv_netlog.o \
rpc_server/srv_pipe_netsec.o \
rpc_server/srv_lookup.o \
- samrd/srv_samr_passdb.o \
- lib/passcheck.o \
- smbd/chgpasswd.o
+ lib/passcheck.o
-SAMRTDBD_OBJ1 = samrd/samrtdbd.o \
- rpc_server/srv_pipe_ntlmssp.o \
- rpc_server/srv_samr.o \
- passdb/smbpassfile.o \
- lib/sursalgdomonly.o \
+SAMRTDBLIB_OBJ = lib/sursalgdomonly.o \
lib/util_pwdb.o lib/domain_namemap.o \
samrd/srv_samr_tdb_init.o \
samrd/srv_samr_dom_tdb.o \
@@ -308,28 +301,7 @@ SAMRTDBD_OBJ1 = samrd/samrtdbd.o \
samrd/srv_samr_als_tdb.o \
samrd/srv_samr_tdb.o
-NETLOGONTDBD_OBJ1 = netlogond/netlogond.o \
- netlogond/creds_db.o \
- netlogond/srv_netlogon_nt.o \
- rpc_server/srv_netlog.o \
- rpc_server/srv_pipe_netsec.o \
- rpc_server/srv_lookup.o \
- lib/passcheck.o \
- smbd/chgpasswd.o \
- samrd/srv_samr_tdb_init.o \
- samrd/srv_samr_dom_tdb.o \
- samrd/srv_samr_sam_tdb.o \
- samrd/srv_samr_usr_tdb.o \
- samrd/srv_samr_grp_tdb.o \
- samrd/srv_samr_als_tdb.o \
- samrd/srv_samr_tdb.o
-
-
-SAMRNT5LDAPD_OBJ1 = samrd/samrnt5ldapd.o \
- rpc_server/srv_pipe_ntlmssp.o \
- rpc_server/srv_samr.o \
- passdb/smbpassfile.o \
- lib/sursalgdomonly.o \
+SAMRNT5LDAPLIB_OBJ = lib/sursalgdomonly.o \
lib/sursalgnt5ldap.o \
lib/util_pwdb.o lib/domain_namemap.o \
samrd/srv_samr_usr_nt5ldap.o \
@@ -339,27 +311,25 @@ SAMRNT5LDAPD_OBJ1 = samrd/samrnt5ldapd.o \
# samrd/srv_samr_grp_nt5ldap.o \
# samrd/srv_samr_als_nt5ldap.o \
-SAMRD_OBJ1 = samrd/samrd.o \
- rpc_server/srv_lookup.o \
- rpc_server/srv_pipe_ntlmssp.o \
- rpc_server/srv_samr.o \
+SAMRPASSLIB_OBJ = rpc_server/srv_lookup.o \
samrd/srv_samr_passdb.o \
smbd/chgpasswd.o
+SAMRD_OBJ1 = samrd/samrd.o \
+ rpc_server/srv_pipe_ntlmssp.o \
+ rpc_server/srv_samr.o
+
SVCCTLD_OBJ1 = svcctld/svcctld.o \
- passdb/smbpassfile.o \
rpc_server/srv_svcctl.o
LSARPCD_OBJ1 = lsarpcd/lsarpcd.o \
lsarpcd/srv_lsa.o \
lsarpcd/srv_lsa_samdb.o \
- rpc_server/srv_lookup.o \
- passdb/smbpassfile.o
+ rpc_server/srv_lookup.o
SPOOLSSD_OBJ1 = spoolssd/spoolssd.o \
rpc_server/srv_spoolss.o \
spoolssd/srv_spoolss_nt.o \
- passdb/smbpassfile.o \
printing/nt_printing.o
SMBD_OBJ = $(SMBD_OBJ1) \
@@ -409,7 +379,12 @@ NETLOGOND_OBJ = $(MSRPCD_OBJ) $(NETLOGOND_OBJ1) \
$(LOCKING_OBJ) \
$(SIDDB_OBJ) \
$(LIBSTATUS_OBJ) $(PROFILE_OBJ)
-NETLOGOND_LIBS = $(SAMBA_LIBS) $(SMBPWLIB) $(UBIQXLIB)
+
+NETLOGOND_LIBS = $(SAMBA_LIBS) $(UBIQXLIB) $(SMBPWLIB) $(SAMRPASSLIB)
+
+NETLOGONTDBD_LIBS = $(SAMBA_LIBS) $(UBIQXLIB) $(SIDDB_OBJ) $(SAMRTDBLIB)
+
+NETLOGONNT5LDAPD_LIBS = $(SAMBA_LIBS) $(UBIQXLIB) $(SAMRNT5LDAPLIB)
SAMRTDBD_OBJ = $(MSRPCD_OBJ) $(SAMRTDBD_OBJ1) \
$(RPC_SRVUTIL_OBJ) \
@@ -428,7 +403,12 @@ SAMRD_OBJ = $(MSRPCD_OBJ) $(SAMRD_OBJ1) \
$(LOCKING_OBJ) \
$(SIDDB_OBJ) \
$(PROFILE_OBJ)
-SAMRD_LIBS = $(SAMBA_LIBS) $(SMBPWLIB) $(UBIQXLIB)
+
+SAMRD_LIBS = $(SAMBA_LIBS) $(UBIQXLIB) $(SMBPWLIB) $(SAMRPASSLIB)
+
+SAMRTDBD_LIBS = $(SAMBA_LIBS) $(UBIQXLIB) $(SAMRTDBLIB)
+
+SAMRNT5LDAPD_LIBS = $(SAMBA_LIBS) $(UBIQXLIB) $(SAMRNT5LDAPLIB)
NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
@@ -549,6 +529,9 @@ RPCTORTURE_OBJ = utils/rpctorture.o \
PROTO_OBJ = $(LIB_OBJ) $(LIBNMB_OBJ) $(PARAM_OBJ) \
$(MSRPCD_OBJ) $(SVCCTLD_OBJ1) $(WINREGD_OBJ1) \
$(SAMRD_OBJ1) \
+ $(SAMRTDBLIB_OBJ) \
+ $(SAMRNT5LDAPLIB_OBJ) \
+ $(SAMRPASSLIB_OBJ) \
$(SAMRTDBD_OBJ1) \
$(SAMRNT5LDAPD_OBJ1) \
$(SRVSVCD_OBJ1) $(WKSSVCD_OBJ1) $(BROWSERD_OBJ1) \
@@ -559,12 +542,17 @@ PROTO_OBJ = $(LIB_OBJ) $(LIBNMB_OBJ) $(PARAM_OBJ) \
$(GROUPDB_OBJ) $(PASSDB_OBJ) $(SAMPASSDB_OBJ) \
$(SMBPASSWD_OBJ) $(SIDDB_OBJ) \
$(RPC_SRVUTIL_OBJ) \
- $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ2) \
- $(PASSDB_OBJ) $(SAMPASSDB_OBJ) $(GROUPDB_OBJ)
+ $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ2)
SMBWRAPPERPICOBJS = $(SMBWRAPPER_OBJ:.o=.po)
SMBWRAPPERPICOBJS32 = $(SMBWRAPPER_OBJ:.o=.po32)
+LIBSAMRTDB_LTOBJS = $(SAMRTDBLIB_OBJ:.o=.lo)
+
+LIBSAMRPASS_LTOBJS = $(SAMRPASSLIB_OBJ:.o=.lo)
+
+LIBSAMRNT5LDAP_LTOBJS = $(SAMRNT5LDAPLIB_OBJ:.o=.lo)
+
LIBSMBPW_LTOBJS = $(GROUPDB_OBJ:.o=.lo) $(SAMPASSDB_OBJ:.o=.lo) \
$(PASSDB_OBJ:.o=.lo)
@@ -584,6 +572,12 @@ LIBMSRPC_LTOBJS = $(RPC_CLIENT_OBJ:.o=.lo) $(RPC_PARSE_OBJ:.o=.lo)
all : CHECK $(SPROGS) $(PROGS)
+libsamrpass : CHECK $(SAMRPASSLIB)
+
+libsamrtdb : CHECK $(SAMRTDBLIB)
+
+libsamrnt5ldap : CHECK $(SAMRNT5LDAPLIB)
+
libnmb : CHECK $(NMBLIB)
libsmb : CHECK $(SMBLIB)
@@ -714,6 +708,21 @@ bin/libsamba.la: $(LIBSAMBA_LTOBJS) bin/.dummy
@$(LINK) -o $@ -rpath $(LIBDIR) -version-info 0:1:0 \
$(LIBSAMBA_LTOBJS)
+bin/libsamrpass.la: $(LIBSAMRPASS_LTOBJS) bin/.dummy
+ @echo Linking shared library $@
+ @$(LINK) -o $@ -rpath $(LIBDIR) -version-info 0:1:0 \
+ $(LIBSAMRPASS_LTOBJS)
+
+bin/libsamrnt5ldap.la: $(LIBSAMRNT5LDAP_LTOBJS) bin/.dummy
+ @echo Linking shared library $@
+ @$(LINK) -o $@ -rpath $(LIBDIR) -version-info 0:1:0 \
+ $(LIBSAMRNT5LDAP_LTOBJS)
+
+bin/libsamrtdb.la: $(LIBSAMRTDB_LTOBJS) bin/.dummy
+ @echo Linking shared library $@
+ @$(LINK) -o $@ -rpath $(LIBDIR) -version-info 0:1:0 \
+ $(LIBSAMRTDB_LTOBJS)
+
bin/smbd: $(SMBD_LIBS) $(SMBD_OBJ) bin/.dummy
@echo Linking $@
@$(LINK) -o $@ $(SMBD_OBJ) $(SMBD_LIBS) $(LIBS)
@@ -750,17 +759,25 @@ bin/netlogond: $(NETLOGOND_LIBS) $(NETLOGOND_OBJ) bin/.dummy
@echo Linking $@
@$(LINK) -o $@ $(NETLOGOND_OBJ) $(NETLOGOND_LIBS) $(LIBS)
+bin/netlogontdbd: $(NETLOGONTDBD_LIBS) $(NETLOGOND_OBJ) bin/.dummy
+ @echo Linking $@
+ @$(LINK) -o $@ $(NETLOGOND_OBJ) $(NETLOGONTDBD_LIBS) $(LIBS)
+
+bin/netlogonnt5ldapd: $(NETLOGONNT5LDAPD_LIBS) $(NETLOGOND_OBJ) bin/.dummy
+ @echo Linking $@
+ @$(LINK) -o $@ $(NETLOGOND_OBJ) $(NETLOGONNT5LDAPD_LIBS) $(LIBS)
+
bin/samrd: $(SAMRD_LIBS) $(SAMRD_OBJ) bin/.dummy
@echo Linking $@
@$(LINK) -o $@ $(SAMRD_OBJ) $(SAMRD_LIBS) $(LIBS)
-bin/samrtdbd: $(SAMBA_LIBS) $(UBIQXLIB) $(SAMRTDBD_OBJ) bin/.dummy
+bin/samrtdbd: $(SAMRTDBD_LIBS) $(SAMRD_OBJ) bin/.dummy
@echo Linking $@
- @$(LINK) -o $@ $(SAMRTDBD_OBJ) $(SAMBA_LIBS) $(UBIQXLIB) $(LIBS)
+ @$(LINK) -o $@ $(SAMRD_OBJ) $(SAMRTDBD_LIBS) $(LIBS)
-bin/samrnt5ldapd: $(SAMBA_LIBS) $(UBIQXLIB) $(SMBPWLIB) $(SAMRNT5LDAPD_OBJ) bin/.dummy
+bin/samrnt5ldapd: $(SAMRNT5LDAPD_LIBS) $(SAMRD_OBJ) bin/.dummy
@echo Linking $@
- @$(LINK) -o $@ $(SAMRNT5LDAPD_OBJ) $(SAMBA_LIBS) $(UBIQXLIB) $(SMBPWLIB) $(LIBS)
+ @$(LINK) -o $@ $(SAMRD_OBJ) $(SAMRNT5LDAPD_LIBS) $(LIBS)
bin/nmbd: $(NMBD_LIBS) $(NMBD_OBJ) bin/.dummy
@echo Linking $@
diff --git a/source/include/lib_smb_proto.h b/source/include/lib_smb_proto.h
index 01d65fed265..c847ff09fba 100644
--- a/source/include/lib_smb_proto.h
+++ b/source/include/lib_smb_proto.h
@@ -243,6 +243,17 @@ BOOL smb_safe_err_msg(uint8 class, uint32 num, char *ret, size_t len);
BOOL smb_safe_errstr(char *inbuf, char *msg, size_t len);
char *smb_errstr(char *inbuf);
+/*The following definitions come from passdb/smbpassfile.c */
+
+BOOL trust_password_lock( char *domain, char *name, BOOL update);
+BOOL trust_password_unlock(void);
+BOOL trust_password_delete( char *domain, char *name );
+BOOL get_trust_account_password( uchar *ret_pwd, time_t *pass_last_set_time);
+BOOL set_trust_account_password( uchar *md4_new_pwd);
+BOOL trust_get_passwd( uchar trust_passwd[16],
+ const char *domain, const char *myname);
+BOOL create_trust_account_file(char *domain, char *name, uchar pass[16]);
+
/*The following definitions come from rpc_parse/parse_creds.c */
BOOL make_creds_unix(CREDS_UNIX *r_u, const char* user_name,
diff --git a/source/include/proto.h b/source/include/proto.h
index eafffb768dc..238df2270d4 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -3513,14 +3513,6 @@ void readline_init(void);
msrpc_service_fns *get_service_fns(void);
-/*The following definitions come from samrd/samrnt5ldapd.c */
-
-msrpc_service_fns *get_service_fns(void);
-
-/*The following definitions come from samrd/samrtdbd.c */
-
-msrpc_service_fns *get_service_fns(void);
-
/*The following definitions come from samrd/srv_samr_als_tdb.c */
uint32 _samr_add_aliasmem(const POLICY_HND *alias_pol, const DOM_SID *sid);
@@ -3679,6 +3671,7 @@ BOOL get_nt5ldapsid(struct policy_cache *cache, const POLICY_HND *hnd,
LDAPDB **hds, DOM_SID *sid);
uint32 samr_open_by_nt5ldaprid( LDAPDB *hds,
POLICY_HND *pol, uint32 access_mask, uint32 rid);
+BOOL pwdbsam_initialise(void);
/*The following definitions come from samrd/srv_samr_passdb.c */
@@ -3805,6 +3798,7 @@ uint32 _samr_open_group(const POLICY_HND *domain_pol, uint32 access_mask,
uint32 _samr_lookup_domain(const POLICY_HND *connect_pol,
const UNISTR2 *uni_domain,
DOM_SID *dom_sid);
+BOOL pwdbsam_initialise(void);
/*The following definitions come from samrd/srv_samr_sam_tdb.c */
@@ -3862,6 +3856,7 @@ uint32 samr_open_by_tdbrid( TDB_CONTEXT *tdb,
uint32 initialise_dom_tdb(const DOM_SID *sid);
uint32 initialise_sam_tdb( const char* sam_name, const DOM_SID *sam_sid);
+BOOL pwdbsam_initialise(void);
/*The following definitions come from samrd/srv_samr_usr_nt5ldap.c */
diff --git a/source/netlogond/netlogond.c b/source/netlogond/netlogond.c
index f14f3a76aad..8d31c44261a 100644
--- a/source/netlogond/netlogond.c
+++ b/source/netlogond/netlogond.c
@@ -43,36 +43,15 @@ static void auth_init(rpcsrv_struct *l)
static void service_init(char* service_name)
{
add_msrpc_command_processor( pipe_name, service_name, api_netlog_rpc );
- if (!pwdb_initialise(True) || !initialise_password_db())
+ if (!pwdb_initialise(True))
{
exit(-1);
}
- if(!initialise_sam_password_db())
+ if(!pwdbsam_initialise())
{
exit(-1);
}
-
- if(!initialise_passgrp_db())
- {
- exit(-1);
- }
-
- if(!initialise_group_db())
- {
- exit(-1);
- }
-
- if(!initialise_alias_db())
- {
- exit(-1);
- }
-
- if(!initialise_builtin_db())
- {
- exit(-1);
- }
-
if (!cred_init_db())
{
exit(-1);
diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c
index cbe6c0ef8a5..8c596f96acb 100644
--- a/source/passdb/passdb.c
+++ b/source/passdb/passdb.c
@@ -78,7 +78,7 @@ BOOL initialise_password_db(void)
pwdb_ops = file_initialise_password_db();
#endif
- return (pwdb_ops != NULL);
+ return pwdb_ops != NULL;
}
/*
diff --git a/source/samrd/samrd.c b/source/samrd/samrd.c
index 06f0b3a5868..ec2faa27e23 100644
--- a/source/samrd/samrd.c
+++ b/source/samrd/samrd.c
@@ -46,32 +46,11 @@ static void service_init(char* service_name)
add_msrpc_command_processor( pipe_name, service_name, api_samr_rpc );
- if (!pwdb_initialise(True) || !initialise_password_db())
+ if (!pwdb_initialise(True))
{
exit(-1);
}
-
- if(!initialise_sam_password_db())
- {
- exit(-1);
- }
-
- if(!initialise_passgrp_db())
- {
- exit(-1);
- }
-
- if(!initialise_group_db())
- {
- exit(-1);
- }
-
- if(!initialise_alias_db())
- {
- exit(-1);
- }
-
- if(!initialise_builtin_db())
+ if (!pwdbsam_initialise())
{
exit(-1);
}
diff --git a/source/samrd/samrnt5ldapd.c b/source/samrd/samrnt5ldapd.c
deleted file mode 100644
index a1cd0a98af9..00000000000
--- a/source/samrd/samrnt5ldapd.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Main SMB server routines
- Copyright (C) Andrew Tridgell 1992-1998
-
- 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"
-
-fstring pipe_name;
-
-pstring servicesf = CONFIGFILE;
-extern pstring debugf;
-extern BOOL append_log;
-extern int DEBUGLEVEL;
-
-/*****************************************************************************
- initialise srv_auth_fns array
- *****************************************************************************/
-static void auth_init(rpcsrv_struct *l)
-{
- extern srv_auth_fns ntlmssp_fns;
- add_srv_auth_fn(l, &ntlmssp_fns);
-}
-
-/*************************************************************************
- initialise an msrpc service
- *************************************************************************/
-static void service_init(char* service_name)
-{
- DEBUG(10,("msrpc_service_init\n"));
-
- add_msrpc_command_processor( pipe_name, service_name, api_samr_rpc );
-
- if (!pwdb_initialise(True))
- {
- exit(-1);
- }
-
-#if 0
- if (!initialise_password_db())
- {
- exit(-1);
- }
-
- if(!initialise_sam_password_db())
- {
- exit(-1);
- }
-
- if(!initialise_passgrp_db())
- {
- exit(-1);
- }
-
- if(!initialise_group_db())
- {
- exit(-1);
- }
-
- if(!initialise_alias_db())
- {
- exit(-1);
- }
-
- if(!initialise_builtin_db())
- {
- exit(-1);
- }
-#endif
-}
-
-/****************************************************************************
- reload the services file
- **************************************************************************/
-static BOOL reload_msrpc(BOOL test)
-{
- BOOL ret;
-
- if (lp_loaded()) {
- pstring fname;
- pstrcpy(fname,lp_configfile());
- if (file_exist(fname,NULL) && !strcsequal(fname,servicesf)) {
- pstrcpy(servicesf,fname);
- test = False;
- }
- }
-
- reopen_logs();
-
- if (test && !lp_file_list_changed())
- return(True);
-
- lp_killunused(NULL);
-
- ret = lp_load(servicesf,False,False,True);
-
- /* perhaps the config filename is now set */
- if (!test)
- reload_msrpc(True);
-
- reopen_logs();
-
- load_interfaces();
-
- return(ret);
-}
-
-/****************************************************************************
- main program
-****************************************************************************/
-static int main_init(int argc,char *argv[])
-{
-#ifdef HAVE_SET_AUTH_PARAMETERS
- set_auth_parameters(argc,argv);
-#endif
-
-#ifdef HAVE_SETLUID
- /* needed for SecureWare on SCO */
- setluid(0);
-#endif
-
- append_log = True;
-
- TimeInit();
-
- setup_logging(argv[0],False);
- fstrcpy(pipe_name, "samr");
- slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
-
- return 0;
-}
-
-static msrpc_service_fns fn_table =
-{
- auth_init,
- service_init,
- reload_msrpc,
- main_init
-};
-
-msrpc_service_fns *get_service_fns(void)
-{
- return &fn_table;
-}
diff --git a/source/samrd/samrtdbd.c b/source/samrd/samrtdbd.c
deleted file mode 100644
index a1cd0a98af9..00000000000
--- a/source/samrd/samrtdbd.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Main SMB server routines
- Copyright (C) Andrew Tridgell 1992-1998
-
- 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"
-
-fstring pipe_name;
-
-pstring servicesf = CONFIGFILE;
-extern pstring debugf;
-extern BOOL append_log;
-extern int DEBUGLEVEL;
-
-/*****************************************************************************
- initialise srv_auth_fns array
- *****************************************************************************/
-static void auth_init(rpcsrv_struct *l)
-{
- extern srv_auth_fns ntlmssp_fns;
- add_srv_auth_fn(l, &ntlmssp_fns);
-}
-
-/*************************************************************************
- initialise an msrpc service
- *************************************************************************/
-static void service_init(char* service_name)
-{
- DEBUG(10,("msrpc_service_init\n"));
-
- add_msrpc_command_processor( pipe_name, service_name, api_samr_rpc );
-
- if (!pwdb_initialise(True))
- {
- exit(-1);
- }
-
-#if 0
- if (!initialise_password_db())
- {
- exit(-1);
- }
-
- if(!initialise_sam_password_db())
- {
- exit(-1);
- }
-
- if(!initialise_passgrp_db())
- {
- exit(-1);
- }
-
- if(!initialise_group_db())
- {
- exit(-1);
- }
-
- if(!initialise_alias_db())
- {
- exit(-1);
- }
-
- if(!initialise_builtin_db())
- {
- exit(-1);
- }
-#endif
-}
-
-/****************************************************************************
- reload the services file
- **************************************************************************/
-static BOOL reload_msrpc(BOOL test)
-{
- BOOL ret;
-
- if (lp_loaded()) {
- pstring fname;
- pstrcpy(fname,lp_configfile());
- if (file_exist(fname,NULL) && !strcsequal(fname,servicesf)) {
- pstrcpy(servicesf,fname);
- test = False;
- }
- }
-
- reopen_logs();
-
- if (test && !lp_file_list_changed())
- return(True);
-
- lp_killunused(NULL);
-
- ret = lp_load(servicesf,False,False,True);
-
- /* perhaps the config filename is now set */
- if (!test)
- reload_msrpc(True);
-
- reopen_logs();
-
- load_interfaces();
-
- return(ret);
-}
-
-/****************************************************************************
- main program
-****************************************************************************/
-static int main_init(int argc,char *argv[])
-{
-#ifdef HAVE_SET_AUTH_PARAMETERS
- set_auth_parameters(argc,argv);
-#endif
-
-#ifdef HAVE_SETLUID
- /* needed for SecureWare on SCO */
- setluid(0);
-#endif
-
- append_log = True;
-
- TimeInit();
-
- setup_logging(argv[0],False);
- fstrcpy(pipe_name, "samr");
- slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
-
- return 0;
-}
-
-static msrpc_service_fns fn_table =
-{
- auth_init,
- service_init,
- reload_msrpc,
- main_init
-};
-
-msrpc_service_fns *get_service_fns(void)
-{
- return &fn_table;
-}
diff --git a/source/samrd/srv_samr_nt5ldap.c b/source/samrd/srv_samr_nt5ldap.c
index 86fec68b344..0731cbd27f7 100644
--- a/source/samrd/srv_samr_nt5ldap.c
+++ b/source/samrd/srv_samr_nt5ldap.c
@@ -323,3 +323,8 @@ uint32 samr_open_by_nt5ldaprid( LDAPDB *hds,
return 0x0;
}
+BOOL pwdbsam_initialise(void)
+{
+ DEBUG(0,("TODO: initialise SAM NT5 LDAP Database\n"));
+ return True;
+}
diff --git a/source/samrd/srv_samr_passdb.c b/source/samrd/srv_samr_passdb.c
index e50682bc7b5..992df3cc13d 100644
--- a/source/samrd/srv_samr_passdb.c
+++ b/source/samrd/srv_samr_passdb.c
@@ -2473,3 +2473,12 @@ uint32 _samr_lookup_domain(const POLICY_HND *connect_pol,
return NT_STATUS_NO_SUCH_DOMAIN;
}
+BOOL pwdbsam_initialise(void)
+{
+ return initialise_password_db() &&
+ initialise_sam_password_db() &&
+ initialise_passgrp_db() &&
+ initialise_group_db() &&
+ initialise_alias_db() &&
+ initialise_builtin_db();
+}
diff --git a/source/samrd/srv_samr_tdb_init.c b/source/samrd/srv_samr_tdb_init.c
index 212690ec4f3..f86b518d7d2 100644
--- a/source/samrd/srv_samr_tdb_init.c
+++ b/source/samrd/srv_samr_tdb_init.c
@@ -134,3 +134,8 @@ uint32 initialise_sam_tdb( const char* sam_name, const DOM_SID *sam_sid)
return init_dom_tdbs(sam_sid);
}
+BOOL pwdbsam_initialise(void)
+{
+ return initialise_sam_tdb(global_sam_name, &global_sam_sid) ==
+ NT_STATUS_NOPROBLEMO;
+}