The branch, v3-2-stable has been updated
       via  b6be3a4426dca340459ed60ea328d7855fd3f5d4 (commit)
       via  f522c9bc3981d7558f4a6dc5407db284f8a8ca72 (commit)
      from  a8d27e49003ce43c353c5b3938adb0e11da0a2fa (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-stable


- Log -----------------------------------------------------------------
commit b6be3a4426dca340459ed60ea328d7855fd3f5d4
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Fri May 16 12:11:43 2008 +0200

    netdomjoin-gui: before prompting for creds (for receiving joinable ous), 
find a dc.
    
    Guenther
    (cherry picked from commit ae60695a349bccd1128e6c439664b0607627ef23)

commit f522c9bc3981d7558f4a6dc5407db284f8a8ca72
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Thu May 8 01:07:10 2008 +0200

    netdomjoin-gui: before prompting for creds, ask dsgetdcname for a dc.
    
    Guenther
    (cherry picked from commit 47146effc1c2bca516d4fbccf221b5b0e02737bf)

-----------------------------------------------------------------------

Summary of changes:
 .../examples/netdomjoin-gui/netdomjoin-gui.c       |   67 +++++++++++++++++++-
 1 files changed, 66 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c 
b/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
index 5ce4ca2..df81937 100644
--- a/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
+++ b/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
@@ -670,6 +670,41 @@ static void callback_do_join(GtkWidget *widget,
 
        }
 
+       /* before prompting for creds, make sure we can find a dc */
+
+       if (domain_join) {
+
+               struct DOMAIN_CONTROLLER_INFO *dc_info = NULL;
+
+               status = DsGetDcName(NULL,
+                                    state->name_buffer_new,
+                                    NULL,
+                                    NULL,
+                                    0,
+                                    &dc_info);
+               if (status != 0) {
+                       err_str = libnetapi_get_error_string(state->ctx, 
status);
+                       g_print("callback_do_join: failed find dc (%s)\n", 
err_str);
+
+                       dialog = 
gtk_message_dialog_new(GTK_WINDOW(state->window_parent),
+                                                       
GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                       GTK_MESSAGE_ERROR,
+                                                       GTK_BUTTONS_CLOSE,
+                                                       "Failed to find a 
domain controller for domain: \"%s\": %s",
+                                                       state->name_buffer_new,
+                                                       err_str);
+
+                       gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
+                       g_signal_connect_swapped(dialog, "response",
+                                                G_CALLBACK(gtk_widget_destroy),
+                                                dialog);
+
+                       gtk_widget_show(dialog);
+
+                       return;
+               }
+       }
+
        if (join_creds_required) {
                if (!state->account || !state->password) {
                        debug("callback_do_join: no creds yet\n");
@@ -897,6 +932,9 @@ static void callback_do_getous(GtkWidget *widget,
        const char **ous = NULL;
        int i;
        const char *domain = NULL;
+       struct DOMAIN_CONTROLLER_INFO *dc_info = NULL;
+       const char *err_str = NULL;
+       GtkWidget *dialog;
 
        struct join_state *state = (struct join_state *)data;
 
@@ -904,6 +942,34 @@ static void callback_do_getous(GtkWidget *widget,
 
        domain = state->name_buffer_new ? state->name_buffer_new : 
state->name_buffer_initial;
 
+       status = DsGetDcName(NULL,
+                            domain,
+                            NULL,
+                            NULL,
+                            0,
+                            &dc_info);
+       if (status != 0) {
+               err_str = libnetapi_get_error_string(state->ctx, status);
+               g_print("callback_do_getous: failed find dc (%s)\n", err_str);
+
+               dialog = 
gtk_message_dialog_new(GTK_WINDOW(state->window_parent),
+                                               GTK_DIALOG_DESTROY_WITH_PARENT,
+                                               GTK_MESSAGE_ERROR,
+                                               GTK_BUTTONS_CLOSE,
+                                               "Failed to find a domain 
controller for domain: \"%s\": %s",
+                                               domain,
+                                               err_str);
+
+               gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
+               g_signal_connect_swapped(dialog, "response",
+                                        G_CALLBACK(gtk_widget_destroy),
+                                        dialog);
+
+               gtk_widget_show(dialog);
+
+               return;
+       }
+
        if (!state->account || !state->password) {
                debug("callback_do_getous: no creds yet\n");
                callback_creds_prompt(NULL, state,
@@ -921,7 +987,6 @@ static void callback_do_getous(GtkWidget *widget,
                                   state->password,
                                   &num_ous, &ous);
        if (status != NET_API_STATUS_SUCCESS) {
-               GtkWidget *dialog;
                callback_do_freeauth(NULL, state);
                debug("failed to call NetGetJoinableOUs: %s\n",
                        libnetapi_get_error_string(state->ctx, status));


-- 
Samba Shared Repository

Reply via email to