r14363: Remove credentials.h from the global includes.
[abartlet/samba.git/.git] / source4 / gtk / tools / gwsam.c
index 7d9abde3d3d2b13c242dcbc4ce5286cd79a4ae5e..633b04851aa39a0d42420021592f2f5106305d7c 100644 (file)
 */
 
 #include "includes.h"
-#include "dynconfig.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 #include "gtk/common/select.h"
 #include "gtk/common/gtk-smb.h"
+#include "auth/credentials/credentials.h"
 
 struct policy_handle sam_handle;
 struct dcerpc_pipe *sam_pipe = NULL;
-struct policy_handle domain_handle;
+static struct policy_handle domain_handle;
 GtkWidget *mainwin;
 GtkWidget *seldomain;
-GtkWidget *mnu_disconnect;
+static GtkWidget *mnu_disconnect;
 
-void update_grouplist(void)
+static void update_grouplist(void)
 {
        if(!sam_pipe) return;
        //FIXME
 }
 
-void update_userlist(void)
+static void update_userlist(void)
 {
        NTSTATUS status;
        struct samr_EnumDomainUsers r;
@@ -57,7 +57,7 @@ void update_userlist(void)
 
        status = dcerpc_samr_EnumDomainUsers(sam_pipe, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
-               gtk_show_ntstatus(mainwin, status);
+               gtk_show_ntstatus(mainwin, "While enumerating domain users", status);
                talloc_free(mem_ctx);
                return;
        }
@@ -78,16 +78,12 @@ void update_userlist(void)
        talloc_free(mem_ctx);
 }
 
-void
-on_new1_activate                       (GtkMenuItem     *menuitem,
-                                                                               gpointer         user_data)
+static void on_new1_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
 
 }
 
-void
-on_select_domain_activate                       (GtkMenuItem     *menuitem,
-                                                                                                gpointer         user_data)
+static void on_select_domain_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        GtkSelectDomainDialog *d;
        gint result;
@@ -113,10 +109,11 @@ static void connect_sam(void)
        GtkRpcBindingDialog *d;
        NTSTATUS status;
        struct samr_Connect r;
+       struct cli_credentials *cred;
        TALLOC_CTX *mem_ctx;
        gint result;
 
-       d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(FALSE, NULL));
+       d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(NULL));
        result = gtk_dialog_run(GTK_DIALOG(d));
        switch(result) {
        case GTK_RESPONSE_ACCEPT:
@@ -127,16 +124,17 @@ static void connect_sam(void)
        }
 
        mem_ctx = talloc_init("gwsam_connect");
+       cred = cli_credentials_init(mem_ctx);
+       cli_credentials_guess(cred);
+       cli_credentials_set_gtk_callbacks(cred);
+
        /* If connected, get list of jobs */
-       status = dcerpc_pipe_connect_b(&sam_pipe,
-                                       gtk_rpc_binding_dialog_get_binding(d, mem_ctx),
-                                       DCERPC_SAMR_UUID, DCERPC_SAMR_VERSION,
-                                       gtk_rpc_binding_dialog_get_userdomain(d),
-                                       gtk_rpc_binding_dialog_get_username(d),
-                                       gtk_rpc_binding_dialog_get_password(d));
+       status = dcerpc_pipe_connect_b(mem_ctx, &sam_pipe,
+                                      gtk_rpc_binding_dialog_get_binding(d, mem_ctx),
+                                      &dcerpc_table_samr, cred, NULL);
 
        if(!NT_STATUS_IS_OK(status)) {
-               gtk_show_ntstatus(mainwin, status);
+               gtk_show_ntstatus(mainwin, "While connecting to SAMR interface", status);
                sam_pipe = NULL;
                gtk_widget_destroy(GTK_WIDGET(d));
                talloc_free(mem_ctx);
@@ -149,7 +147,7 @@ static void connect_sam(void)
 
        status = dcerpc_samr_Connect(sam_pipe, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
-               gtk_show_ntstatus(mainwin, status);
+               gtk_show_ntstatus(mainwin, "While running connect on SAMR", status);
                sam_pipe = NULL;
                gtk_widget_destroy(GTK_WIDGET(d));
                talloc_free(mem_ctx);
@@ -160,6 +158,8 @@ static void connect_sam(void)
        gtk_widget_set_sensitive (mnu_disconnect, TRUE);
        gtk_window_set_title (GTK_WINDOW (mainwin), talloc_asprintf(mem_ctx, "User Manager - Connected to %s", gtk_rpc_binding_dialog_get_host(d)));
        gtk_widget_destroy(GTK_WIDGET(d));
+
+       sam_pipe = talloc_reference(talloc_autofree_context(), sam_pipe);
        talloc_free(mem_ctx);
 
 }
@@ -175,67 +175,52 @@ static void on_disconnect_activate (GtkMenuItem *menuitem, gpointer user_data)
        gtk_window_set_title (GTK_WINDOW (mainwin), "User Manager");
 }
 
-void
-on_quit_activate                      (GtkMenuItem     *menuitem,
-                                                                          gpointer         user_data)
+static void on_quit_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
-       if(sam_pipe)dcerpc_pipe_close(sam_pipe);
+       talloc_free(sam_pipe);
+
        gtk_main_quit();
 }
 
-
-void
-on_account_activate                    (GtkMenuItem     *menuitem,
-                                                                               gpointer         user_data)
+static void on_account_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        //FIXME
 }
 
 
-void
-on_user_rights_activate                (GtkMenuItem     *menuitem,
-                                                                               gpointer         user_data)
+static void on_user_rights_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        //FIXME
 }
 
 
-void
-on_audit_activate                      (GtkMenuItem     *menuitem,
-                                                                               gpointer         user_data)
+static void on_audit_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        //FIXME
 }
 
 
-void
-on_trust_relations_activate            (GtkMenuItem     *menuitem,
-                                                                               gpointer         user_data)
+static void on_trust_relations_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        //FIXME
 }
 
 
-void
-on_refresh_activate                    (GtkMenuItem     *menuitem,
-                                                                               gpointer         user_data)
+static void on_refresh_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        update_userlist();
        update_grouplist();
 }
 
 
-void
-on_about_activate                     (GtkMenuItem     *menuitem,
-                                                                          gpointer         user_data)
+static void on_about_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        GtkDialog *aboutwin = GTK_DIALOG(create_gtk_samba_about_dialog("gwsam"));
        gtk_dialog_run(aboutwin);
        gtk_widget_destroy(GTK_WIDGET(aboutwin));
 }
 
-GtkWidget*
-create_mainwindow (void)
+static GtkWidget* create_mainwindow (void)
 {
        GtkWidget *vbox1;
        GtkWidget *mnu_connect;
@@ -413,20 +398,15 @@ create_mainwindow (void)
        return mainwin;
 }
 
-
-
- int main(int argc, char **argv)
+int main(int argc, char **argv)
 {
-       gwsam_init_subsystems;
-       lp_load(dyn_CONFIGFILE,True,False,False);
-       load_interfaces();
-       setup_logging("gwsam", True);
+       lp_load();
+       setup_logging(argv[0], DEBUG_STDERR);
 
        gtk_init(&argc, &argv);
        mainwin = create_mainwindow();
        connect_sam();
        gtk_widget_show_all(mainwin);
-       gtk_main();
 
-       return 0;
+       return gtk_event_loop();
 }