]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
netdomjoin-gui: before prompting for creds, ask dsgetdcname for a dc.
authorGünther Deschner <gd@samba.org>
Wed, 7 May 2008 23:07:10 +0000 (01:07 +0200)
committerGünther Deschner <gd@samba.org>
Wed, 7 May 2008 23:09:14 +0000 (01:09 +0200)
Guenther
(This used to be commit 47146effc1c2bca516d4fbccf221b5b0e02737bf)

source3/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c

index 5ce4ca2c87b62ff2c3c83d38ee0c424cda6f9eb7..a11b0eb0a4037dc19ef02fae0417024bae6b7b53 100644 (file)
@@ -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");