first pass at updating head branch to be to be the same as the SAMBA_2_0 branch
[metze/samba/wip.git] / source3 / netlogond / netlogond.c
1 /* 
2    Unix SMB/Netbios implementation.
3    Version 1.9.
4    Main SMB server routines
5    Copyright (C) Andrew Tridgell 1992-1998
6    
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11    
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16    
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22 #include "includes.h"
23
24 fstring pipe_name;
25
26 pstring servicesf = CONFIGFILE;
27 extern pstring debugf;
28 extern BOOL append_log;
29 extern int DEBUGLEVEL;
30
31 /*************************************************************************
32  initialise an msrpc service
33  *************************************************************************/
34 void msrpc_service_init(void)
35 {
36         if (!pwdb_initialise(True))
37         {
38                 exit(-1);
39         }
40
41         if(!initialise_sam_password_db())
42         {
43                 exit(-1);
44         }
45
46         if(!initialise_passgrp_db())
47         {
48                 exit(-1);
49         }
50
51         if(!initialise_group_db())
52         {
53                 exit(-1);
54         }
55
56         if(!initialise_alias_db())
57         {
58                 exit(-1);
59         }
60
61         if(!initialise_builtin_db())
62         {
63                 exit(-1);
64         }
65
66         if (!get_member_domain_sid())
67         {
68                 DEBUG(0,("ERROR: Samba cannot obtain PDC SID from PDC(s) %s.\n",
69                           lp_passwordserver()));
70                 exit(-1);
71         }
72 }
73
74 /****************************************************************************
75   reload the services file
76   **************************************************************************/
77 BOOL reload_services(BOOL test)
78 {
79         BOOL ret;
80
81         if (lp_loaded()) {
82                 pstring fname;
83                 pstrcpy(fname,lp_configfile());
84                 if (file_exist(fname,NULL) && !strcsequal(fname,servicesf)) {
85                         pstrcpy(servicesf,fname);
86                         test = False;
87                 }
88         }
89
90         reopen_logs();
91
92         if (test && !lp_file_list_changed())
93                 return(True);
94
95         lp_killunused(NULL);
96
97         ret = lp_load(servicesf,False,False,True);
98
99         /* perhaps the config filename is now set */
100         if (!test)
101                 reload_services(True);
102
103         reopen_logs();
104
105         load_interfaces();
106
107         return(ret);
108 }
109
110 /****************************************************************************
111   main program
112 ****************************************************************************/
113  int main(int argc,char *argv[])
114 {
115 #ifdef HAVE_SET_AUTH_PARAMETERS
116         set_auth_parameters(argc,argv);
117 #endif
118
119 #ifdef HAVE_SETLUID
120         /* needed for SecureWare on SCO */
121         setluid(0);
122 #endif
123
124         append_log = True;
125
126         TimeInit();
127
128         setup_logging(argv[0],False);
129         fstrcpy(pipe_name, "NETLOGON");
130         slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
131         add_msrpc_command_processor( pipe_name, argv[0], api_netlog_rpc );
132
133         return msrpc_main(argc, argv);
134 }