summaryrefslogtreecommitdiff
path: root/source3/netlogond
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1999-12-12 20:03:42 +0000
committerLuke Leighton <lkcl@samba.org>1999-12-12 20:03:42 +0000
commit4f8a24522c683761c6f2ee23dba56f6c7913377b (patch)
treefef9baa89fc7695fe462cbace85a0f4276845d53 /source3/netlogond
parent0ce128e3550794d4dbbd1def00e87c020f72c992 (diff)
downloadsamba-4f8a24522c683761c6f2ee23dba56f6c7913377b.tar.gz
samba-4f8a24522c683761c6f2ee23dba56f6c7913377b.tar.bz2
samba-4f8a24522c683761c6f2ee23dba56f6c7913377b.zip
final part of "first" phase converting over to msrpc daemon architecture.
done a minimal amout of clean-up in the Makefile, removing unnecessary modules from the link stage. this is not complete, yet, and will involve some changes, for example to smbd, to remove dependencies on the password database API that shouldn't be there. for example, smbd should not ever call getsmbpwXXX() it should call the Samr or Lsa API. this first implementation has minor problems with not reinstantiating the same services as the caller. the "homes" service is a good example. (This used to be commit caa50525220b0d0250fa139367593c2de2c12135)
Diffstat (limited to 'source3/netlogond')
-rw-r--r--source3/netlogond/netlogond.c134
1 files changed, 134 insertions, 0 deletions
diff --git a/source3/netlogond/netlogond.c b/source3/netlogond/netlogond.c
new file mode 100644
index 0000000000..fb0ace784d
--- /dev/null
+++ b/source3/netlogond/netlogond.c
@@ -0,0 +1,134 @@
+/*
+ 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 an msrpc service
+ *************************************************************************/
+void msrpc_service_init(void)
+{
+ 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())
+ {
+ exit(-1);
+ }
+
+ if (!get_member_domain_sid())
+ {
+ DEBUG(0,("ERROR: Samba cannot obtain PDC SID from PDC(s) %s.\n",
+ lp_passwordserver()));
+ exit(-1);
+ }
+}
+
+/****************************************************************************
+ reload the services file
+ **************************************************************************/
+BOOL reload_services(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_services(True);
+
+ reopen_logs();
+
+ load_interfaces();
+
+ return(ret);
+}
+
+/****************************************************************************
+ main program
+****************************************************************************/
+ int main(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, "NETLOGON");
+ slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
+ add_msrpc_command_processor( pipe_name, argv[0], api_netlog_rpc );
+
+ return msrpc_main(argc, argv);
+}