torture: fix compiler warnings
[samba.git] / source4 / torture / util_provision.c
index 5873b9f4854cc4eb4b25e4efda1e0e1d15af40db..d214fc120f3e65da56ed2fc13e8de57d439ca32c 100644 (file)
 */
 
 #include "includes.h"
-#include "dsdb/samdb/samdb.h"
-#include "lib/appweb/ejs/ejs.h"
-#include "lib/appweb/ejs/ejsInternal.h"
-#include "scripting/ejs/smbcalls.h"
 #include "auth/auth.h"
 #include "lib/ldb_wrap.h"
-
-static EjsId eid;
-static int ejs_error;
-
-static void test_ejs_exception(const char *reason)
-{
-       Ejs *ep = ejsPtr(eid);
-       ejsSetErrorMsg(eid, "%s", reason);
-       fprintf(stderr, "%s", ep->error);
-       ejs_error = 127;
-}
-
-static int test_run_ejs(char *script)
-{
-       EjsHandle handle = 0;
-       MprVar result;
-       char *emsg;
-       TALLOC_CTX *mem_ctx = talloc_new(NULL);
-       struct MprVar *return_var;
-
-       mprSetCtx(mem_ctx);
-
-       if (ejsOpen(NULL, NULL, NULL) != 0) {
-               d_printf("ejsOpen(): unable to initialise EJS subsystem\n");
-               ejs_error = 127;
-               goto failed;
-       }
-
-       smb_setup_ejs_functions(test_ejs_exception);
-
-       if ((eid = ejsOpenEngine(handle, 0)) == (EjsId)-1) {
-               d_printf("smbscript: ejsOpenEngine(): unable to initialise an EJS engine\n");
-               ejs_error = 127;
-               goto failed;
-       }
-
-       mprSetVar(ejsGetGlobalObject(eid), "ARGV", mprList("ARGV", NULL));
-
-       /* run the script */
-       if (ejsEvalScript(eid, script, &result, &emsg) == -1) {
-               d_printf("smbscript: ejsEvalScript(): %s\n", emsg);
-               if (ejs_error == 0) ejs_error = 127;
-               goto failed;
-       }
-
-       return_var = ejsGetReturnValue(eid);
-       ejs_error = mprVarToNumber(return_var);
-
-failed:
-       ejsClose();
-       talloc_free(mem_ctx);
-       return ejs_error;
-}
-
-static NTSTATUS provision_bare_ejs(TALLOC_CTX *mem_ctx, 
-                                                                  struct loadparm_context *lp_ctx,
-                                                                  const char *dns_name,
-                                                                  const char *site_name,
-                                                                  const char *root_dn_str,
-                                                                  const char *domain_dn_str,
-                                                                  const char *config_dn_str,
-                                                                  const char *schema_dn_str,
-                                                                  const struct GUID *invocation_id,
-                                                                  const char *netbios_name,
-                                                                  const char *realm,
-                                                                  const char *domain,
-                                                                  const struct GUID *ntds_guid,
-                                                                  const char *ntds_dn_str,
-                                                                  const char *machine_password,
-                                                                  const char *samdb_ldb,
-                                                                  const char *secrets_ldb,
-                                                                  const char *secrets_keytab, 
-                                                                  const char *schemadn_ldb,
-                                                                  const char *configdn_ldb,
-                                                                  const char *domaindn_ldb,
-                                                                  const char *templates_ldb,
-                                                                  const char *dns_keytab)
-{
-       char *ejs;
-       int ret;
-       bool ok;
-       struct ldb_context *ldb;
-
-       DEBUG(0,("Provision for Become-DC test using EJS\n"));
-
-       DEBUG(0,("New Server[%s] in Site[%s]\n", dns_name, site_name));
-
-       DEBUG(0,("DSA Instance [%s]\n"
-               "\tobjectGUID[%s]\n"
-               "\tinvocationId[%s]\n",
-               ntds_dn_str,
-               GUID_string(mem_ctx, ntds_guid),
-               GUID_string(mem_ctx, invocation_id)));
-
-       DEBUG(0,("Pathes under PRIVATEDIR[%s]\n"
-                "SAMDB[%s] SECRETS[%s] KEYTAB[%s]\n",
-               lp_private_dir(lp_ctx),
-               samdb_ldb,
-               secrets_ldb,
-               secrets_keytab));
-
-       DEBUG(0,("Schema Partition[%s => %s]\n",
-               schema_dn_str, schemadn_ldb));
-
-       DEBUG(0,("Config Partition[%s => %s]\n",
-               config_dn_str, configdn_ldb));
-
-       DEBUG(0,("Domain Partition[%s => %s]\n",
-               domain_dn_str, domaindn_ldb));
-
-       ejs = talloc_asprintf(mem_ctx,
-               "libinclude(\"base.js\");\n"
-               "libinclude(\"provision.js\");\n"
-               "\n"
-               "function message() { print(vsprintf(arguments)); }\n"
-               "\n"
-               "var subobj = provision_guess();\n"
-               "subobj.ROOTDN       = \"%s\";\n"
-               "subobj.DOMAINDN     = \"%s\";\n"
-               "subobj.DOMAINDN_LDB = \"%s\";\n"
-               "subobj.CONFIGDN     = \"%s\";\n"
-               "subobj.CONFIGDN_LDB = \"%s\";\n"
-               "subobj.SCHEMADN     = \"%s\";\n"
-               "subobj.SCHEMADN_LDB = \"%s\";\n"
-               "subobj.HOSTNAME     = \"%s\";\n"
-               "subobj.REALM        = \"%s\";\n"
-               "subobj.DOMAIN       = \"%s\";\n"
-               "subobj.DEFAULTSITE  = \"%s\";\n"
-               "\n"
-               "subobj.KRBTGTPASS   = \"_NOT_USED_\";\n"
-               "subobj.MACHINEPASS  = \"%s\";\n"
-               "subobj.ADMINPASS    = \"_NOT_USED_\";\n"
-               "\n"
-               "var paths = provision_default_paths(subobj);\n"
-               "paths.samdb = \"%s\";\n"
-               "paths.secrets = \"%s\";\n"
-               "paths.templates = \"%s\";\n"
-               "paths.keytab = \"%s\";\n"
-               "paths.dns_keytab = \"%s\";\n"
-               "\n"
-               "var system_session = system_session();\n"
-               "\n"
-               "var ok = provision_become_dc(subobj, message, true, paths, system_session);\n"
-               "assert(ok);\n"
-               "\n"
-               "return 0;\n",
-               root_dn_str,            /* subobj.ROOTDN */
-               domain_dn_str,          /* subobj.DOMAINDN */
-               domaindn_ldb,           /* subobj.DOMAINDN_LDB */
-               config_dn_str,  /* subobj.CONFIGDN */
-               configdn_ldb,           /* subobj.CONFIGDN_LDB */
-               schema_dn_str,  /* subobj.SCHEMADN */
-               schemadn_ldb,           /* subobj.SCHEMADN_LDB */
-               netbios_name,   /* subobj.HOSTNAME */
-               realm,/* subobj.REALM */
-               domain,/* subobj.DOMAIN */
-               site_name,              /* subobj.DEFAULTSITE */
-               machine_password,/* subobj.MACHINEPASS */
-               samdb_ldb,              /* paths.samdb */
-               templates_ldb,          /* paths.templates */
-               secrets_ldb,            /* paths.secrets */
-               secrets_keytab,         /* paths.keytab */
-               dns_keytab);            /* paths.dns_keytab */
-       NT_STATUS_HAVE_NO_MEMORY(ejs);
-
-       ret = test_run_ejs(ejs);
-       if (ret != 0) {
-               DEBUG(0,("Failed to run ejs script: %d:\n%s",
-                       ret, ejs));
-               talloc_free(ejs);
-               return NT_STATUS_FOOBAR;
-       }
-       talloc_free(ejs);
-
-       DEBUG(0,("Open the SAM LDB with system credentials: %s\n", 
-                samdb_ldb));
-
-       ldb = ldb_wrap_connect(mem_ctx, lp_ctx, samdb_ldb,
-                                 system_session(mem_ctx, lp_ctx),
-                                 NULL, 0, NULL);
-       if (!ldb) {
-               DEBUG(0,("Failed to open '%s'\n",
-                       samdb_ldb));
-               return NT_STATUS_INTERNAL_DB_ERROR;
-       }
-
-       ok = samdb_set_ntds_invocation_id(ldb, invocation_id);
-       if (!ok) {
-               DEBUG(0,("Failed to set cached ntds invocationId\n"));
-               return NT_STATUS_FOOBAR;
-       }
-       ok = samdb_set_ntds_objectGUID(ldb, ntds_guid);
-       if (!ok) {
-               DEBUG(0,("Failed to set cached ntds objectGUID\n"));
-               return NT_STATUS_FOOBAR;
-       }
-
-       return NT_STATUS_OK;
-}
+#include "torture/torture.h"
+#include "libcli/raw/libcliraw.h"
+#include "torture/util.h"
 
 #include "param/param.h"
 #include <Python.h>
 #include "scripting/python/modules.h"
 
-static NTSTATUS provision_bare_py(TALLOC_CTX *mem_ctx, 
-                                                                 struct loadparm_context *lp_ctx,
-                                                                 const char *dns_name,
-                                                                 const char *site_name,
-                                                                 const char *root_dn_str,
-                                                                 const char *domain_dn_str,
-                                                                 const char *config_dn_str,
-                                                                 const char *schema_dn_str,
-                                                                 const struct GUID *invocation_id,
-                                                                 const char *netbios_name, const char *realm,
-                                                                 const char *domain,
-                                                                 const struct GUID *ntds_guid,
-                                                                 const char *ntds_dn_str,
-                                                                 const char *machine_password,
-                                                                 const char *samdb_ldb,
-                                                                 const char *secrets_ldb,
-                                                                 const char *secrets_keytab,
-                                                                 const char *schemadn_ldb,
-                                                                 const char *configdn_ldb,
-                                                                 const char *domaindn_ldb,
-                                                                 const char *templates_ldb,
-                                                                 const char *dns_keytab)
+NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
+                       struct provision_settings *settings)
 {
-       bool ok;
        PyObject *provision_mod, *provision_dict, *provision_fn, *result, *parameters;
-       struct ldb_context *ldb;
-
-       DEBUG(0,("Provision for Become-DC test using PYTHON\n"));
+       
+       DEBUG(0,("Provision for Become-DC test using python\n"));
 
        py_load_samba_modules();
        Py_Initialize();
@@ -276,68 +54,62 @@ static NTSTATUS provision_bare_py(TALLOC_CTX *mem_ctx,
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       provision_fn = PyDict_GetItemString(provision_dict, "provision");
+       provision_fn = PyDict_GetItemString(provision_dict, "provision_become_dc");
        if (provision_fn == NULL) {
                PyErr_Print();
-               DEBUG(0, ("Unable to get provision function\n"));
+               DEBUG(0, ("Unable to get provision_become_dc function\n"));
                return NT_STATUS_UNSUCCESSFUL;
        }
        
-       DEBUG(0,("New Server[%s] in Site[%s]\n", dns_name, site_name));
+       DEBUG(0,("New Server[%s] in Site[%s]\n", settings->dns_name, 
+                        settings->site_name));
 
        DEBUG(0,("DSA Instance [%s]\n"
                "\tobjectGUID[%s]\n"
                "\tinvocationId[%s]\n",
-               ntds_dn_str,
-               ntds_guid == NULL?"None":GUID_string(mem_ctx, ntds_guid),
-               invocation_id == NULL?"None":GUID_string(mem_ctx, invocation_id)));
-
-       DEBUG(0,("Pathes under PRIVATEDIR[%s]\n"
-                "SAMDB[%s] SECRETS[%s] KEYTAB[%s]\n",
-               lp_private_dir(lp_ctx),
-               samdb_ldb,
-               secrets_ldb,
-               secrets_keytab));
-
-       DEBUG(0,("Schema Partition[%s => %s]\n",
-               schema_dn_str, schemadn_ldb));
-
-       DEBUG(0,("Config Partition[%s => %s]\n",
-               config_dn_str, configdn_ldb));
-
-       DEBUG(0,("Domain Partition[%s => %s]\n",
-               domain_dn_str, domaindn_ldb));
+               settings->ntds_dn_str,
+               settings->ntds_guid == NULL?"None":GUID_string(mem_ctx, settings->ntds_guid),
+               settings->invocation_id == NULL?"None":GUID_string(mem_ctx, settings->invocation_id)));
 
+       DEBUG(0,("Pathes under targetdir[%s]\n",
+                settings->targetdir));
        parameters = PyDict_New();
 
-       PyDict_SetItemString(parameters, "rootdn", PyString_FromString(root_dn_str));
-       if (domaindn_ldb != NULL)
-               PyDict_SetItemString(parameters, "domaindn_ldb", 
-                                                        PyString_FromString(domaindn_ldb));
-       if (config_dn_str != NULL)
+       PyDict_SetItemString(parameters, "rootdn", 
+                                                PyString_FromString(settings->root_dn_str));
+       if (settings->targetdir != NULL)
+               PyDict_SetItemString(parameters, "targetdir", 
+                                                        PyString_FromString(settings->targetdir));
+       PyDict_SetItemString(parameters, "setup_dir", 
+                            PyString_FromString("setup"));
+       PyDict_SetItemString(parameters, "hostname", 
+                                                PyString_FromString(settings->netbios_name));
+       PyDict_SetItemString(parameters, "domain", 
+                                                PyString_FromString(settings->domain));
+       PyDict_SetItemString(parameters, "realm", 
+                                                PyString_FromString(settings->realm));
+       if (settings->root_dn_str)
+               PyDict_SetItemString(parameters, "rootdn", 
+                                    PyString_FromString(settings->root_dn_str));
+
+       if (settings->domain_dn_str) 
+               PyDict_SetItemString(parameters, "domaindn", 
+                                    PyString_FromString(settings->domain_dn_str));
+
+       if (settings->schema_dn_str) 
+               PyDict_SetItemString(parameters, "schemadn", 
+                                    PyString_FromString(settings->schema_dn_str));
+       
+       if (settings->config_dn_str) 
                PyDict_SetItemString(parameters, "configdn", 
-                                                        PyString_FromString(config_dn_str));
-       if (configdn_ldb != NULL)
-               PyDict_SetItemString(parameters, "configdn_ldb", 
-                                                        PyString_FromString(configdn_ldb));
-       if (schema_dn_str != NULL)
-               PyDict_SetItemString(parameters, "schema_dn_str", 
-                                                        PyString_FromString(schema_dn_str));
-       if (schemadn_ldb != NULL)
-               PyDict_SetItemString(parameters, "schemadn_ldb", 
-                                                        PyString_FromString(schemadn_ldb));
-       PyDict_SetItemString(parameters, "hostname", PyString_FromString(netbios_name));
-       PyDict_SetItemString(parameters, "sitename", PyString_FromString(site_name));
-       PyDict_SetItemString(parameters, "machinepass", PyString_FromString(machine_password));
-       if (samdb_ldb != NULL)
-               PyDict_SetItemString(parameters, "samdb", 
-                                                        PyString_FromString(samdb_ldb));
-       if (secrets_ldb != NULL)
-               PyDict_SetItemString(parameters, "secrets_ldb", 
-                                                        PyString_FromString(secrets_ldb));
-       if (secrets_keytab != NULL)
-               PyDict_SetItemString(parameters, "secrets_keytab", 
-                                                        PyString_FromString(secrets_keytab));
+                                    PyString_FromString(settings->config_dn_str));
+       
+       if (settings->site_name) 
+               PyDict_SetItemString(parameters, "sitename", 
+                                    PyString_FromString(settings->site_name));
+
+       PyDict_SetItemString(parameters, "machinepass", 
+                            PyString_FromString(settings->machine_password));
 
        result = PyEval_CallObjectWithKeywords(provision_fn, NULL, parameters);
 
@@ -349,69 +121,5 @@ static NTSTATUS provision_bare_py(TALLOC_CTX *mem_ctx,
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       DEBUG(0,("Open the SAM LDB with system credentials: %s\n", 
-                samdb_ldb));
-
-       ldb = ldb_wrap_connect(mem_ctx, lp_ctx, samdb_ldb,
-                                 system_session(mem_ctx, lp_ctx),
-                                 NULL, 0, NULL);
-       if (!ldb) {
-               DEBUG(0,("Failed to open '%s'\n",
-                       samdb_ldb));
-               return NT_STATUS_INTERNAL_DB_ERROR;
-       }
-
-       ok = samdb_set_ntds_invocation_id(ldb, invocation_id);
-       if (!ok) {
-               DEBUG(0,("Failed to set cached ntds invocationId\n"));
-               return NT_STATUS_FOOBAR;
-       }
-       ok = samdb_set_ntds_objectGUID(ldb, ntds_guid);
-       if (!ok) {
-               DEBUG(0,("Failed to set cached ntds objectGUID\n"));
-               return NT_STATUS_FOOBAR;
-       }
-
        return NT_STATUS_OK;
 }
-
-NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
-                                               const char *dns_name, const char *site_name,
-                                               const char *root_dn_str, const char *domain_dn_str,
-                                               const char *config_dn_str, const char *schema_dn_str,
-                                               const struct GUID *invocation_id, 
-                                               const char *netbios_name, const char *realm,
-                                               const char *domain, const struct GUID *ntds_guid,
-                                               const char *ntds_dn_str, 
-                                               const char *machine_password,
-                                               const char *samdb_ldb,
-                                               const char *secrets_ldb,
-                                               const char *secrets_keytab,
-                                               const char *schemadn_ldb,
-                                               const char *configdn_ldb,
-                                               const char *domaindn_ldb,
-                                               const char *templates_ldb,
-                                               const char *dns_keytab)
-{
-       if (getenv("PROVISION_EJS")) {
-               return provision_bare_ejs(mem_ctx, lp_ctx, dns_name, site_name, 
-                                                                 root_dn_str, domain_dn_str, config_dn_str, 
-                                                                 schema_dn_str, invocation_id, netbios_name, 
-                                                                 realm, domain, ntds_guid, ntds_dn_str, 
-                                                                 machine_password, samdb_ldb, secrets_ldb,
-                                                                 secrets_keytab, schemadn_ldb, configdn_ldb,
-                                                                 domaindn_ldb, templates_ldb, 
-                                                                 dns_keytab);
-       } else {
-               return provision_bare_py(mem_ctx, lp_ctx, dns_name, site_name, 
-                                                                root_dn_str, domain_dn_str, config_dn_str, 
-                                                                schema_dn_str, invocation_id, netbios_name, 
-                                                                realm, domain, ntds_guid, ntds_dn_str, 
-                                                                machine_password, samdb_ldb, secrets_ldb,
-                                                                secrets_keytab, schemadn_ldb, configdn_ldb,
-                                                                domaindn_ldb, templates_ldb,
-                                                                dns_keytab);
-       }
-}
-
-