X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=source4%2Fparam%2Floadparm.c;h=8fc061b53fdbb8910a1e698a5d3e86dd44cb4f63;hb=dfc517b05395d925a4d7b1ce9633a849f9468e70;hp=08abc3aa480ce1972aa5858d6c9ea050ed4074b6;hpb=78c50015bb8bd5a1d831a6e7ec796b3367c73145;p=bbaumbach%2Fsamba-autobuild%2F.git diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 08abc3aa480..8fc061b53fd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -61,23 +61,13 @@ #include "system/iconv.h" #include "librpc/gen_ndr/ndr_svcctl.h" #include "librpc/gen_ndr/ndr_samr.h" +#include "smb_server/smb_server.h" +#include "libcli/raw/signing.h" #include "dlinklist.h" #include "param/loadparm.h" static BOOL bLoaded = False; -#ifndef GLOBAL_NAME -#define GLOBAL_NAME "global" -#endif - -#ifndef PRINTERS_NAME -#define PRINTERS_NAME "printers" -#endif - -#ifndef HOMES_NAME -#define HOMES_NAME "homes" -#endif - /* some helpful bits */ #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) #define VALID(i) ServicePtrs[i]->valid @@ -139,6 +129,7 @@ typedef struct char **server_services; char *ntptr_providor; char *szWinbindSeparator; + char *szWinbinddSocketDirectory; BOOL bWinbindSealedPipes; char *swat_directory; BOOL tls_enabled; @@ -166,6 +157,7 @@ typedef struct char *socket_options; BOOL bWINSsupport; BOOL bWINSdnsProxy; + char *szWINSHook; BOOL bLocalMaster; BOOL bPreferredMaster; BOOL bEncryptPasswords; @@ -522,6 +514,7 @@ static struct parm_struct parm_table[] = { {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, {"Locking Options", P_SEP, P_SEPARATOR}, @@ -555,6 +548,7 @@ static struct parm_struct parm_table[] = { {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbindd socket directory", P_STRING, P_GLOBAL, &Globals.szWinbinddSocketDirectory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {"winbind sealed pipes", P_BOOL, P_GLOBAL, &Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} @@ -609,7 +603,7 @@ static void init_globals(void) do_parameter("max connections", "-1", NULL); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup", NULL); - do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc", NULL); + do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc winbind", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); @@ -680,6 +674,7 @@ static void init_globals(void) do_parameter("winbind separator", "\\", NULL); do_parameter("winbind sealed pipes", "True", NULL); + do_parameter("winbindd socket directory", dyn_WINBINDD_SOCKET_DIR, NULL); do_parameter("client signing", "Yes", NULL); do_parameter("server signing", "auto", NULL); @@ -704,8 +699,14 @@ static void init_globals(void) do_parameter("tls keyfile", "tls/key.pem", NULL); do_parameter("tls certfile", "tls/cert.pem", NULL); do_parameter("tls cafile", "tls/ca.pem", NULL); - do_parameter_var("js include", "%s/js", dyn_LIBDIR); - do_parameter_var("setup directory", "%s/setup", dyn_LIBDIR); + do_parameter_var("js include", "%s", dyn_JSDIR); + do_parameter_var("setup directory", "%s", dyn_SETUPDIR); + + for (i = 0; parm_table[i].label; i++) { + if (!(parm_table[i].flags & FLAG_CMDLINE)) { + parm_table[i].flags |= FLAG_DEFAULT; + } + } } static TALLOC_CTX *lp_talloc; @@ -824,6 +825,7 @@ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) +FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &Globals.szWinbinddSocketDirectory) FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) @@ -852,6 +854,7 @@ FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) FN_GLOBAL_BOOL(lp_wins_dns_proxy, &Globals.bWINSdnsProxy) +FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) @@ -915,7 +918,6 @@ FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) /* local prototypes */ static int map_parameter(const char *pszParmName); -static BOOL set_boolean(BOOL *pb, const char *pszParmValue); static int getservicebyname(const char *pszServiceName, service * pserviceDest); static void copy_service(service * pserviceDest, @@ -1007,7 +1009,7 @@ static BOOL lp_bool(const char *s) return False; } - if (!set_boolean(&ret,s)) { + if (!set_boolean(s, &ret)) { DEBUG(0,("lp_bool(%s): value is not boolean!\n",s)); return False; } @@ -1376,34 +1378,6 @@ void *lp_parm_ptr(int snum, struct parm_struct *parm) return ((char *)ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); } -/*************************************************************************** - Set a boolean variable from the text value stored in the passed string. - Returns True in success, False if the passed string does not correctly - represent a boolean. -***************************************************************************/ - -static BOOL set_boolean(BOOL *pb, const char *pszParmValue) -{ - BOOL bRetval; - - bRetval = True; - if (strwicmp(pszParmValue, "yes") == 0 || - strwicmp(pszParmValue, "true") == 0 || - strwicmp(pszParmValue, "1") == 0) - *pb = True; - else if (strwicmp(pszParmValue, "no") == 0 || - strwicmp(pszParmValue, "False") == 0 || - strwicmp(pszParmValue, "0") == 0) - *pb = False; - else { - DEBUG(0, - ("ERROR: Badly formed boolean in configuration file: \"%s\".\n", - pszParmValue)); - bRetval = False; - } - return (bRetval); -} - /*************************************************************************** Find a service by name. Otherwise works like get_service. ***************************************************************************/ @@ -1844,7 +1818,10 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue switch (parm_table[parmnum].type) { case P_BOOL: - set_boolean(parm_ptr, pszParmValue); + if (!set_boolean(pszParmValue, parm_ptr)) { + DEBUG(0,("lp_do_parameter(%s): value is not boolean!\n", pszParmValue)); + return False; + } break; case P_INTEGER: @@ -1886,6 +1863,17 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; } + if (parm_table[parmnum].flags & FLAG_DEFAULT) { + parm_table[parmnum].flags &= ~FLAG_DEFAULT; + /* we have to also unset FLAG_DEFAULT on aliases */ + for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) { + parm_table[i].flags &= ~FLAG_DEFAULT; + } + for (i=parmnum+1;i