Re-enable _wkssvc_NetrJoinDomain2 remote join implementation now that we are ready...
authorGünther Deschner <gd@samba.org>
Thu, 28 Feb 2008 19:01:32 +0000 (20:01 +0100)
committerGünther Deschner <gd@samba.org>
Thu, 28 Feb 2008 19:06:09 +0000 (20:06 +0100)
"netdom join SAMBAHOST" from a windows workstation nicely demonstrates it.

Guenther

source/rpc_server/srv_wkssvc_nt.c

index 43bd20d2d72fac0dd45f11ed9882191a1df36c97..e559248ef8b7599cfd34a6eed26e28f0fe8aff70 100644 (file)
@@ -281,11 +281,12 @@ WERROR _wkssvc_NetrGetJoinableOus(pipes_struct *p, struct wkssvc_NetrGetJoinable
 }
 
 /********************************************************************
+ _wkssvc_NetrJoinDomain2
  ********************************************************************/
 
-WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p, struct wkssvc_NetrJoinDomain2 *r)
+WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p,
+                              struct wkssvc_NetrJoinDomain2 *r)
 {
-#if 0
        struct libnet_JoinCtx *j = NULL;
        char *cleartext_pwd = NULL;
        char *admin_domain = NULL;
@@ -302,6 +303,8 @@ WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p, struct wkssvc_NetrJoinDomain2 *r
        if (!user_has_privileges(token, &se_machine_account) &&
            !nt_token_check_domain_rid(token, DOMAIN_GROUP_RID_ADMINS) &&
            !nt_token_check_domain_rid(token, BUILTIN_ALIAS_RID_ADMINS)) {
+               DEBUG(5,("_wkssvc_NetrJoinDomain2: account doesn't have "
+                       "sufficient privileges\n"));
                return WERR_ACCESS_DENIED;
        }
 
@@ -341,16 +344,20 @@ WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p, struct wkssvc_NetrJoinDomain2 *r
        j->in.join_flags        = r->in.join_flags;
        j->in.admin_account     = admin_account;
        j->in.admin_password    = cleartext_pwd;
-       j->in.modify_config     = true;
+       j->in.debug             = true;
 
        become_root();
        werr = libnet_Join(p->mem_ctx, j);
        unbecome_root();
 
+       if (!W_ERROR_IS_OK(werr)) {
+               DEBUG(5,("_wkssvc_NetrJoinDomain2: libnet_Join gave %s\n",
+                       j->out.error_string ? j->out.error_string :
+                       dos_errstr(werr)));
+       }
+
+       TALLOC_FREE(j);
        return werr;
-#endif
-       p->rng_fault_state = True;
-       return WERR_NOT_SUPPORTED;
 }
 
 /********************************************************************