Store the type of 'sec channel' that we establish to the DC. If we are a
[jra/samba/.git] / source3 / utils / net_ads.c
index 5a8265f0b9e59a6c37432cb66f8acbd563f09adf..91f82a5dbe01542a56cdd4dc1e8cd513055f764c 100644 (file)
@@ -575,7 +575,7 @@ static int net_ads_leave(int argc, const char **argv)
        if (!opt_password) {
                char *user_name;
                asprintf(&user_name, "%s$", global_myname());
-               opt_password = secrets_fetch_machine_password();
+               opt_password = secrets_fetch_machine_password(opt_target_workgroup, NULL, NULL);
                opt_user_name = user_name;
        }
 
@@ -607,7 +607,7 @@ static int net_ads_join_ok(void)
 
        asprintf(&user_name, "%s$", global_myname());
        opt_user_name = user_name;
-       opt_password = secrets_fetch_machine_password();
+       opt_password = secrets_fetch_machine_password(opt_target_workgroup, NULL, NULL);
 
        if (!(ads = ads_startup())) {
                return -1;
@@ -648,6 +648,8 @@ int net_ads_join(int argc, const char **argv)
        void *res;
        DOM_SID dom_sid;
        char *ou_str;
+       uint32 sec_channel_type;
+       uint32 account_type = UF_WORKSTATION_TRUST_ACCOUNT;
 
        if (argc > 0) org_unit = argv[0];
 
@@ -656,6 +658,11 @@ int net_ads_join(int argc, const char **argv)
                return -1;
        }
 
+       /* check what type of join 
+          TODO: make this variable like RPC
+       */
+       account_type = UF_WORKSTATION_TRUST_ACCOUNT;
+
        tmp_password = generate_random_str(DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH);
        password = strdup(tmp_password);
 
@@ -680,7 +687,7 @@ int net_ads_join(int argc, const char **argv)
                return -1;
        }       
 
-       rc = ads_join_realm(ads, global_myname(), org_unit);
+       rc = ads_join_realm(ads, global_myname(), account_type, org_unit);
        if (!ADS_ERR_OK(rc)) {
                d_printf("ads_join_realm: %s\n", ads_errstr(rc));
                return -1;
@@ -703,7 +710,7 @@ int net_ads_join(int argc, const char **argv)
                return -1;
        }
 
-       if (!secrets_store_machine_password(password)) {
+       if (!secrets_store_machine_password(password, lp_workgroup(), sec_channel_type)) {
                DEBUG(1,("Failed to save machine password\n"));
                return -1;
        }
@@ -956,7 +963,7 @@ int net_ads_changetrustpw(int argc, const char **argv)
     asprintf(&user_name, "%s$", global_myname());
     opt_user_name = user_name;
 
-    opt_password = secrets_fetch_machine_password();
+    opt_password = secrets_fetch_machine_password(opt_target_workgroup, NULL, NULL);
 
     use_in_memory_ccache();