From 33afc9ad91efb6038888c7fb6965ed5a947fe064 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 4 Feb 2000 22:38:07 +0000 Subject: 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(). --- source/Makefile.in | 121 ++++++++++++++++------------- source/include/lib_smb_proto.h | 11 +++ source/include/proto.h | 11 +-- source/netlogond/netlogond.c | 25 +----- source/passdb/passdb.c | 2 +- source/samrd/samrd.c | 25 +----- source/samrd/samrnt5ldapd.c | 159 --------------------------------------- source/samrd/samrtdbd.c | 159 --------------------------------------- source/samrd/srv_samr_nt5ldap.c | 5 ++ source/samrd/srv_samr_passdb.c | 9 +++ source/samrd/srv_samr_tdb_init.c | 5 ++ 11 files changed, 107 insertions(+), 425 deletions(-) delete mode 100644 source/samrd/samrnt5ldapd.c delete mode 100644 source/samrd/samrtdbd.c 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; +} -- cgit