lib:cmdline: Rename to cmdline_sanity_checker
[samba.git] / lib / cmdline / cmdline_s3.c
index b95e917ab362535e0f34feb121c617be64aca562..d9bda695203a8ea9ac7b23fdc78f5f3120e0ef2e 100644 (file)
 #include "lib/util/debug.h"
 #include "lib/util/fault.h"
 #include "source3/param/loadparm.h"
+#include "dynconfig/dynconfig.h"
+#include "source3/lib/interface.h"
+#include "auth/credentials/credentials.h"
+#include "dynconfig/dynconfig.h"
 #include "cmdline_private.h"
 
 static bool _require_smbconf;
+static enum samba_cmdline_config_type _config_type;
 
-bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf)
+static bool _samba_cmdline_load_config_s3(void)
+{
+       struct loadparm_context *lp_ctx = samba_cmdline_get_lp_ctx();
+       const char *config_file = NULL;
+       bool ok = false;
+
+       /* Load smb conf */
+       config_file = lpcfg_configfile(lp_ctx);
+       if (config_file == NULL) {
+               if (is_default_dyn_CONFIGFILE()) {
+                       const char *env = getenv("SMB_CONF_PATH");
+                       if (env != NULL && strlen(env) > 0) {
+                               set_dyn_CONFIGFILE(env);
+                       }
+               }
+       }
+
+       config_file = get_dyn_CONFIGFILE();
+
+       switch (_config_type) {
+       case SAMBA_CMDLINE_CONFIG_CLIENT:
+               ok = lp_load_client(config_file);
+               break;
+       case SAMBA_CMDLINE_CONFIG_SERVER:
+               ok = lp_load_initial_only(config_file);
+               break;
+       }
+
+       if (!ok) {
+               fprintf(stderr,
+                       "Can't load %s - run testparm to debug it\n",
+                       config_file);
+
+               if (_require_smbconf) {
+                       return false;
+               }
+       }
+
+       load_interfaces();
+
+       return true;
+}
+
+bool samba_cmdline_init(TALLOC_CTX *mem_ctx,
+                       enum samba_cmdline_config_type config_type,
+                       bool require_smbconf)
 {
        struct loadparm_context *lp_ctx = NULL;
+       struct cli_credentials *creds = NULL;
        bool ok;
 
        ok = samba_cmdline_init_common(mem_ctx);
@@ -45,6 +96,18 @@ bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf)
        }
 
        _require_smbconf = require_smbconf;
+       _config_type = config_type;
+
+       creds = cli_credentials_init(mem_ctx);
+       if (creds == NULL) {
+               return false;
+       }
+       ok = samba_cmdline_set_creds(creds);
+       if (!ok) {
+               return false;
+       }
+
+       samba_cmdline_set_load_config_fn(_samba_cmdline_load_config_s3);
 
        return true;
 }