added new smb.conf option "panic action". see my samba-technical
[samba.git] / source3 / param / loadparm.c
index 2a425466623bda8eaee2b23292c2b9c62fb24be6..765fae4f5c1dd11fb49c02fba48c032ba415a030 100644 (file)
@@ -152,6 +152,7 @@ typedef struct
   char *szLdapFilter;
   char *szLdapRoot;
   char *szLdapRootPassword; 
+  char *szPanicAction;
   int max_log_size;
   int mangled_stack;
   int max_xmit;
@@ -176,6 +177,7 @@ typedef struct
   int client_code_page;
   int announce_as;   /* This is initialised in init_globals */
   int machine_password_timeout;
+  int change_notify_timeout;
 #ifdef WITH_LDAP
   int ldap_port;
 #endif /* WITH_LDAP */
@@ -223,6 +225,7 @@ typedef struct
   BOOL bUnixPasswdSync;
   BOOL bPasswdChatDebug;
   BOOL bOleLockingCompat;
+  BOOL bTimestampLogs;
 } global;
 
 static global Globals;
@@ -552,6 +555,8 @@ static struct parm_struct parm_table[] =
   {"syslog only",      P_BOOL,    P_GLOBAL, &Globals.bSyslogOnly,       NULL,   NULL,  0},
   {"log file",         P_STRING,  P_GLOBAL, &Globals.szLogFile,         NULL,   NULL,  0},
   {"max log size",     P_INTEGER, P_GLOBAL, &Globals.max_log_size,      NULL,   NULL,  0},
+  {"timestamp logs",   P_BOOL,    P_GLOBAL, &Globals.bTimestampLogs,    NULL,   NULL,  0},
+  {"debug timestamp",  P_BOOL,    P_GLOBAL, &Globals.bTimestampLogs,    NULL,   NULL,  0},
   {"status",           P_BOOL,    P_LOCAL,  &sDefault.status,           NULL,   NULL,  FLAG_GLOBAL},
 
   {"Protocol Options", P_SEP, P_SEPARATOR},
@@ -573,6 +578,7 @@ static struct parm_struct parm_table[] =
   {"time server",      P_BOOL,    P_GLOBAL, &Globals.bTimeServer,      NULL,   NULL,  0},
 
   {"Tuning Options", P_SEP, P_SEPARATOR},
+  {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL,   NULL,  0},
   {"max disk size",    P_INTEGER, P_GLOBAL, &Globals.maxdisksize,       NULL,   NULL,  0},
   {"lpq cache time",   P_INTEGER, P_GLOBAL, &Globals.lpqcachetime,      NULL,   NULL,  0},
   {"getwd cache",      P_BOOL,    P_GLOBAL, &use_getwd_cache,           NULL,   NULL,  0},
@@ -729,6 +735,8 @@ static struct parm_struct parm_table[] =
   {"dos filetime resolution",P_BOOL,P_LOCAL,&sDefault.bDosFiletimeResolution,   NULL,  NULL,  FLAG_GLOBAL},
   
   {"fake directory create times", P_BOOL,P_LOCAL,  &sDefault.bFakeDirCreateTimes, NULL,   NULL, FLAG_GLOBAL},
+  {"panic action",     P_STRING,  P_GLOBAL, &Globals.szPanicAction,     NULL,   NULL,  0},
+
   {NULL,               P_BOOL,    P_NONE,   NULL,                       NULL,   NULL, 0}
 };
 
@@ -808,11 +816,13 @@ static void init_globals(void)
   Globals.bStripDot = False;
   Globals.syslog = 1;
   Globals.bSyslogOnly = False;
+  Globals.bTimestampLogs = True;
   Globals.os_level = 0;
-  Globals.max_ttl = 60*60*24*3; /* 3 days default */
-  Globals.max_wins_ttl = 60*60*24*6; /* 6 days default */
-  Globals.min_wins_ttl = 60*60*6; /* 6 hours default */
-  Globals.machine_password_timeout = 60*60*24*7; /* 7 days default */
+  Globals.max_ttl = 60*60*24*3; /* 3 days default. */
+  Globals.max_wins_ttl = 60*60*24*6; /* 6 days default. */
+  Globals.min_wins_ttl = 60*60*6; /* 6 hours default. */
+  Globals.machine_password_timeout = 60*60*24*7; /* 7 days default. */
+  Globals.change_notify_timeout = 60; /* 1 minute default. */
   Globals.ReadSize = 16*1024;
   Globals.lm_announce = 2;   /* = Auto: send only if LM clients found */
   Globals.lm_interval = 60;
@@ -821,7 +831,7 @@ static void init_globals(void)
   Globals.bUnixRealname = False;
 #if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT))
   Globals.bNISHomeMap = False;
-#ifdef NISPLUS_HOME
+#ifdef WITH_NISPLUS_HOME
   string_set(&Globals.szNISHomeMapName, "auto_home.org_dir");
 #else
   string_set(&Globals.szNISHomeMapName, "auto.home");
@@ -1058,6 +1068,7 @@ FN_GLOBAL_STRING(lp_nis_home_map_name,&Globals.szNISHomeMapName)
 FN_GLOBAL_STRING(lp_announce_version,&Globals.szAnnounceVersion)
 FN_GLOBAL_STRING(lp_netbios_aliases,&Globals.szNetbiosAliases)
 FN_GLOBAL_STRING(lp_driverfile,&Globals.szDriverFile)
+FN_GLOBAL_STRING(lp_panic_action,&Globals.szPanicAction);
 
 FN_GLOBAL_STRING(lp_domain_sid,&Globals.szDomainSID)
 FN_GLOBAL_STRING(lp_domain_other_sids,&Globals.szDomainOtherSIDs)
@@ -1115,6 +1126,7 @@ FN_GLOBAL_BOOL(lp_strip_dot,&Globals.bStripDot)
 FN_GLOBAL_BOOL(lp_encrypted_passwords,&Globals.bEncryptPasswords)
 FN_GLOBAL_BOOL(lp_update_encrypted,&Globals.bUpdateEncrypt)
 FN_GLOBAL_BOOL(lp_syslog_only,&Globals.bSyslogOnly)
+FN_GLOBAL_BOOL(lp_timestamp_logs,&Globals.bTimestampLogs)
 FN_GLOBAL_BOOL(lp_browse_list,&Globals.bBrowseList)
 FN_GLOBAL_BOOL(lp_unix_realname,&Globals.bUnixRealname)
 FN_GLOBAL_BOOL(lp_nis_home_map,&Globals.bNISHomeMap)
@@ -1150,6 +1162,7 @@ FN_GLOBAL_INTEGER(lp_announce_as,&Globals.announce_as)
 FN_GLOBAL_INTEGER(lp_lm_announce,&Globals.lm_announce)
 FN_GLOBAL_INTEGER(lp_lm_interval,&Globals.lm_interval)
 FN_GLOBAL_INTEGER(lp_machine_password_timeout,&Globals.machine_password_timeout)
+FN_GLOBAL_INTEGER(lp_change_notify_timeout,&Globals.change_notify_timeout)
 
 #ifdef WITH_LDAP
 FN_GLOBAL_INTEGER(lp_ldap_port,&Globals.ldap_port)
@@ -1702,17 +1715,17 @@ BOOL lp_file_list_changed(void)
     pstrcpy(n2,f->name);
     standard_sub_basic(n2);
 
-    DEBUG(6,("file %s -> %s  last mod_time: %s\n",
-             f->name, n2, ctime(&f->modtime)));
+    DEBUGADD( 6, ( "file %s -> %s  last mod_time: %s\n",
+                   f->name, n2, ctime(&f->modtime) ) );
 
     mod_time = file_modtime(n2);
 
     if (f->modtime != mod_time) {
-           DEBUG(6,("file %s modified: %s\n", n2, ctime(&mod_time)));
+           DEBUGADD(6,("file %s modified: %s\n", n2, ctime(&mod_time)));
            f->modtime = mod_time;
            return(True);
     }
-    f = f->next;   
+    f = f->next;
   }
   return(False);
 }
@@ -2289,68 +2302,46 @@ BOOL lp_snum_ok(int iService)
 
 
 /***************************************************************************
-auto-load some homes and printer services
+auto-load some home services
 ***************************************************************************/
 static void lp_add_auto_services(char *str)
 {
-  char *s;
-  char *p;
-  int homes, printers;
-
-  if (!str)
-    return;
-
-  s = strdup(str);
-  if (!s) return;
+       char *s;
+       char *p;
+       int homes;
 
-  homes = lp_servicenumber(HOMES_NAME);
-  printers = lp_servicenumber(PRINTERS_NAME);
+       if (!str) return;
 
-  for (p=strtok(s,LIST_SEP);p;p=strtok(NULL,LIST_SEP))
-    {
-      char *home = get_home_dir(p);
-
-      if (lp_servicenumber(p) >= 0) continue;
+       s = strdup(str);
+       if (!s) return;
 
-      if (home && homes >= 0)
-       {
-         lp_add_home(p,homes,home);
-         continue;
+       homes = lp_servicenumber(HOMES_NAME);
+       
+       for (p=strtok(s,LIST_SEP);p;p=strtok(NULL,LIST_SEP)) {
+               char *home = get_home_dir(p);
+               
+               if (lp_servicenumber(p) >= 0) continue;
+               
+               if (home && homes >= 0) {
+                       lp_add_home(p,homes,home);
+               }
        }
-
-      if (printers >= 0 && pcap_printername_ok(p,NULL))
-       lp_add_printer(p,printers);
-    }
-  free(s);
+       free(s);
 }
 
 /***************************************************************************
 auto-load one printer
 ***************************************************************************/
-static void lp_add_one_printer(char *name,char *comment)
-{
-  int printers = lp_servicenumber(PRINTERS_NAME);
-  int i;
-
-  if (lp_servicenumber(name) < 0)
-    {
-      lp_add_printer(name,printers);
-      if ((i=lp_servicenumber(name)) >= 0)
-       string_set(&iSERVICE(i).comment,comment);
-    }      
-}
-
-
-/***************************************************************************
-auto-load printer services
-***************************************************************************/
-static void lp_add_all_printers(void)
+void lp_add_one_printer(char *name,char *comment)
 {
-  int printers = lp_servicenumber(PRINTERS_NAME);
-
-  if (printers < 0) return;
+       int printers = lp_servicenumber(PRINTERS_NAME);
+       int i;
 
-  pcap_printer_fn(lp_add_one_printer);
+       if (lp_servicenumber(name) < 0)  {
+               lp_add_printer(name,printers);
+               if ((i=lp_servicenumber(name)) >= 0)
+                       string_set(&iSERVICE(i).comment,comment);
+       }
 }
 
 /***************************************************************************
@@ -2452,8 +2443,6 @@ BOOL lp_load(char *pszFname,BOOL global_only, BOOL save_defaults, BOOL add_ipc)
       bRetval = service_ok(iServiceIndex);        
 
   lp_add_auto_services(lp_auto_services());
-  if (lp_load_printers())
-    lp_add_all_printers();
 
   if (add_ipc)
          lp_add_ipc();
@@ -2532,26 +2521,6 @@ char *volume_label(int snum)
   return(ret);
 }
 
-#if 0
-/*
- * nmbd only loads the global section. There seems to be no way to
- * determine exactly is a service is printable by only looking at the
- * [global] section so for now always announce as a print server. This
- * will need looking at in the future. Jeremy (jallison@whistle.com).
- */
-/*******************************************************************
- Return true if any printer services are defined.
-  ******************************************************************/
-static BOOL lp_printer_services(void)
-{
-  int iService;
-
-  for (iService = iNumServices - 1; iService >= 0; iService--)
-      if (VALID(iService) && iSERVICE(iService).bPrint_ok)
-          return True;
-  return False;
-}
-#endif
 
 /*******************************************************************
  Set the server type we will announce as via nmbd.
@@ -2567,15 +2536,6 @@ static void set_default_server_announce_type()
   else if(lp_announce_as() == ANNOUNCE_AS_WFW)
     default_server_announce |= SV_TYPE_WFW;
   default_server_announce |= (lp_time_server() ? SV_TYPE_TIME_SOURCE : 0);
-/*
- * nmbd only loads the [global] section. There seems to be no way to
- * determine exactly if any service is printable by only looking at the
- * [global] section so for now always announce as a print server. This
- * will need looking at in the future. Jeremy (jallison@whistle.com).
- */
-#if 0
-  default_server_announce |= (lp_printer_services() ? SV_TYPE_PRINTQ_SERVER : 0);
-#endif
 }