From 455be8fb8271bd97058390dca5a76db81ea2928b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 22 Mar 2005 01:35:12 +0000 Subject: r5932: Use cli_credentials somewhat more in the Gtk+ code Support ncacn_spx in DCE/RPC bindings. (This used to be commit a0233a3a9a83176ae46873d3a25ed601758a1511) --- source4/gtk/common/gtk-smb.c | 34 +++++++++++++++++++++------------- source4/gtk/common/gtk-smb.h | 5 +++-- source4/gtk/common/select.c | 6 +++--- source4/gtk/tools/gepdump.c | 10 +++++----- source4/gtk/tools/gregedit.c | 32 ++++++++++++++++---------------- source4/gtk/tools/gwcrontab.c | 8 ++++---- source4/gtk/tools/gwsam.c | 6 +++--- 7 files changed, 55 insertions(+), 46 deletions(-) (limited to 'source4/gtk') diff --git a/source4/gtk/common/gtk-smb.c b/source4/gtk/common/gtk-smb.c index 06bca9bf86..e03c4096f0 100644 --- a/source4/gtk/common/gtk-smb.c +++ b/source4/gtk/common/gtk-smb.c @@ -2,7 +2,7 @@ Unix SMB/CIFS implementation. SMB-related GTK+ functions - Copyright (C) Jelmer Vernooij 2004 + Copyright (C) Jelmer Vernooij 2004-2005 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,25 +23,25 @@ #include "gtk/common/select.h" #include "gtk/common/gtk-smb.h" -void gtk_show_werror(GtkWidget *win, WERROR err) +void gtk_show_werror(GtkWidget *win, const char *message, WERROR err) { GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, - "Windows error: %s\n", + "%s: %s\n", message?message: "Windows error", win_errstr(err)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } -void gtk_show_ntstatus(GtkWidget *win, NTSTATUS status) +void gtk_show_ntstatus(GtkWidget *win, const char *message, NTSTATUS status) { GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, - "Windows error: %s\n", + "%s: %s\n", message?message:"Windows error", nt_errstr(status)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); @@ -94,6 +94,10 @@ static void gtk_rpc_binding_dialog_init (GtkRpcBindingDialog *gtk_rpc_binding_di GSList *transport_smb_group = NULL; gtk_rpc_binding_dialog->mem_ctx = talloc_init("gtk_rcp_binding_dialog"); + + gtk_rpc_binding_dialog->credentials = talloc(gtk_rpc_binding_dialog->mem_ctx, struct cli_credentials); + + cli_credentials_guess(gtk_rpc_binding_dialog->credentials); gtk_window_set_title (GTK_WINDOW (gtk_rpc_binding_dialog), "Connect"); @@ -205,14 +209,16 @@ static void gtk_rpc_binding_dialog_init (GtkRpcBindingDialog *gtk_rpc_binding_di (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_text(GTK_ENTRY(gtk_rpc_binding_dialog->entry_username), getenv("LOGNAME")); + gtk_entry_set_text(GTK_ENTRY(gtk_rpc_binding_dialog->entry_username), + cli_credentials_get_username(gtk_rpc_binding_dialog->credentials)); gtk_rpc_binding_dialog->entry_userdomain = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table1), gtk_rpc_binding_dialog->entry_userdomain, 1,2, 1,2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_text(GTK_ENTRY(gtk_rpc_binding_dialog->entry_userdomain), lp_workgroup()); + gtk_entry_set_text(GTK_ENTRY(gtk_rpc_binding_dialog->entry_userdomain), + cli_credentials_get_domain(gtk_rpc_binding_dialog->credentials)); gtk_rpc_binding_dialog->entry_password = gtk_entry_new (); gtk_entry_set_visibility (GTK_ENTRY (gtk_rpc_binding_dialog->entry_password), FALSE); @@ -220,6 +226,9 @@ static void gtk_rpc_binding_dialog_init (GtkRpcBindingDialog *gtk_rpc_binding_di (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + gtk_entry_set_text(GTK_ENTRY(gtk_rpc_binding_dialog->entry_password), + cli_credentials_get_password(gtk_rpc_binding_dialog->credentials)); + gtk_rpc_binding_dialog->krb5_chk_button = gtk_check_button_new_with_mnemonic ("_Use kerberos"); gtk_table_attach (GTK_TABLE (table1), gtk_rpc_binding_dialog->krb5_chk_button, 1,2, 3,4, (GtkAttachOptions) (GTK_FILL), @@ -299,12 +308,11 @@ GtkWidget *gtk_rpc_binding_dialog_new (BOOL nocredentials, struct sam_pipe *sam_ struct cli_credentials *gtk_rpc_binding_dialog_get_credentials(GtkRpcBindingDialog *d) { - struct cli_credentials *ret = talloc(d->mem_ctx, struct cli_credentials); - cli_credentials_set_username(ret, gtk_entry_get_text(GTK_ENTRY(d->entry_username)), CRED_SPECIFIED); - cli_credentials_set_password(ret, gtk_entry_get_text(GTK_ENTRY(d->entry_password)), CRED_SPECIFIED); - cli_credentials_set_domain(ret, gtk_entry_get_text(GTK_ENTRY(d->entry_userdomain)), CRED_SPECIFIED); + cli_credentials_set_username(d->credentials, gtk_entry_get_text(GTK_ENTRY(d->entry_username)), CRED_SPECIFIED); + cli_credentials_set_password(d->credentials, gtk_entry_get_text(GTK_ENTRY(d->entry_password)), CRED_SPECIFIED); + cli_credentials_set_domain(d->credentials, gtk_entry_get_text(GTK_ENTRY(d->entry_userdomain)), CRED_SPECIFIED); - return ret; + return d->credentials; } const char *gtk_rpc_binding_dialog_get_host(GtkRpcBindingDialog *d) @@ -378,7 +386,7 @@ GtkWidget *create_gtk_samba_about_dialog (const char *appname) label3 = gtk_label_new_with_mnemonic ("Part of Samba "); gtk_box_pack_start (GTK_BOX (dialog_vbox1), label3, FALSE, FALSE, 0); - label4 = gtk_label_new ("\302\251 1992-2004 The Samba Team"); + label4 = gtk_label_new ("\302\251 1992-2005 The Samba Team"); gtk_box_pack_start (GTK_BOX (dialog_vbox1), label4, FALSE, FALSE, 0); dialog_action_area1 = GTK_DIALOG (samba_about_dialog)->action_area; diff --git a/source4/gtk/common/gtk-smb.h b/source4/gtk/common/gtk-smb.h index e78e8541f8..0a7bbcba00 100644 --- a/source4/gtk/common/gtk-smb.h +++ b/source4/gtk/common/gtk-smb.h @@ -45,6 +45,7 @@ struct _GtkRpcBindingDialog GtkWidget *frame_credentials; TALLOC_CTX *mem_ctx; struct sam_pipe *sam_pipe; + struct cli_credentials *credentials; }; typedef struct _GtkRpcBindingDialogClass GtkRpcBindingDialogClass; @@ -62,14 +63,14 @@ struct _GtkRpcBindingDialogClass /* subsystem prototypes */ GtkWidget *create_gtk_samba_about_dialog (const char *appname); -void gtk_show_ntstatus(GtkWidget *win, NTSTATUS status); +void gtk_show_ntstatus(GtkWidget *win, const char *, NTSTATUS status); GtkWidget *gtk_rpc_binding_dialog_new (BOOL nocredentials, struct sam_pipe *sam_pipe); GType gtk_rpc_binding_dialog_get_type (void); struct dcerpc_binding *gtk_rpc_binding_dialog_get_binding(GtkRpcBindingDialog *d, TALLOC_CTX *mem_ctx); GtkWidget *gtk_select_host_dialog_new (struct sam_pipe *sam_pipe, BOOL nocredentials); const char *gtk_select_host_dialog_get_host (GtkSelectHostDialog *d); GType gtk_select_host_dialog_get_type (void); -void gtk_show_werror(GtkWidget *win, WERROR err); +void gtk_show_werror(GtkWidget *win, const char *, WERROR err); const char *gtk_rpc_binding_dialog_get_binding_string(GtkRpcBindingDialog *d, TALLOC_CTX *mem_ctx); struct cli_credentials *gtk_rpc_binding_dialog_get_credentials(GtkRpcBindingDialog *d); const char *gtk_rpc_binding_dialog_get_host(GtkRpcBindingDialog *d); diff --git a/source4/gtk/common/select.c b/source4/gtk/common/select.c index 082f449a0c..269a840220 100644 --- a/source4/gtk/common/select.c +++ b/source4/gtk/common/select.c @@ -141,7 +141,7 @@ GtkWidget *gtk_select_domain_dialog_new (struct dcerpc_pipe *sam_pipe) status = dcerpc_samr_Connect(sam_pipe, mem_ctx, &cr); if (!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(NULL, status); + gtk_show_ntstatus(NULL, "Running Connect on SAMR", status); talloc_free(mem_ctx); return GTK_WIDGET(d); } @@ -153,7 +153,7 @@ GtkWidget *gtk_select_domain_dialog_new (struct dcerpc_pipe *sam_pipe) status = dcerpc_samr_EnumDomains(sam_pipe, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(NULL, status); + gtk_show_ntstatus(NULL, "Enumerating domains", status); } else if (r.out.sam) { for (i=0;icount;i++) { GtkTreeIter iter; @@ -167,7 +167,7 @@ GtkWidget *gtk_select_domain_dialog_new (struct dcerpc_pipe *sam_pipe) status = dcerpc_samr_Close(sam_pipe, mem_ctx, &dr); if (!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(NULL, status); + gtk_show_ntstatus(NULL, "Closing SAMR connection", status); talloc_free(mem_ctx); return GTK_WIDGET ( d ); } diff --git a/source4/gtk/tools/gepdump.c b/source4/gtk/tools/gepdump.c index 9a7d363a5e..28234c006e 100644 --- a/source4/gtk/tools/gepdump.c +++ b/source4/gtk/tools/gepdump.c @@ -85,7 +85,7 @@ static void add_epm_entry(TALLOC_CTX *mem_ctx, const char *annotation, struct ep status = dcerpc_binding_from_tower(mem_ctx, t, &bd); if (!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error creating binding from tower", status); return; } @@ -155,7 +155,7 @@ static void refresh_eps(void) r.out.num_ents == r.in.max_ents); if (!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error adding endpoint mapper entry", status); talloc_free(mem_ctx); return; } @@ -193,7 +193,7 @@ static void on_connect_clicked(GtkButton *btn, gpointer user_data) cmdline_credentials); if (NT_STATUS_IS_ERR(status)) { - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error connecting to endpoint mapper", status); goto fail; } @@ -203,7 +203,7 @@ static void on_connect_clicked(GtkButton *btn, gpointer user_data) if (NT_STATUS_IS_ERR(status)) { mgmt_pipe = NULL; - gtk_show_ntstatus(NULL, status); + gtk_show_ntstatus(NULL, "Error connecting to mgmt interface over secondary connection", status); goto fail; } @@ -231,7 +231,7 @@ static gboolean on_eps_select(GtkTreeSelection *selection, status = dcerpc_mgmt_inq_stats(mgmt_pipe, mem_ctx, &r); if (NT_STATUS_IS_ERR(status)) { - gtk_show_ntstatus(NULL, status); + gtk_show_ntstatus(NULL, "Error inquiring statistics", status); return TRUE; } diff --git a/source4/gtk/tools/gregedit.c b/source4/gtk/tools/gregedit.c index ec4be2f57c..28423040bf 100644 --- a/source4/gtk/tools/gregedit.c +++ b/source4/gtk/tools/gregedit.c @@ -292,7 +292,9 @@ static void expand_key(GtkTreeView *treeview, GtkTreeIter *parent, GtkTreePath * gtk_tree_store_append(store_keys, &tmpiter, &iter); } - if(!W_ERROR_EQUAL(error, WERR_NO_MORE_ITEMS)) gtk_show_werror(mainwin, error); + if(!W_ERROR_EQUAL(error, WERR_NO_MORE_ITEMS)) { + gtk_show_werror(mainwin, "While enumerating subkeys", error); + } } static void registry_load_hive(struct registry_key *root) @@ -349,7 +351,7 @@ static void on_open_file_activate (GtkMenuItem *menuitem, gpointer user_data) filename = strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(openfilewin))); error = reg_open_hive(NULL, user_data, filename, NULL, &root); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while opening hive", error); break; } @@ -371,7 +373,7 @@ static void on_open_gconf_activate(GtkMenuItem *menuitem, gpointer user_data) struct registry_key *root; WERROR error = reg_open_hive(NULL, "gconf", NULL, NULL, &root); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while opening GConf", error); return; } @@ -385,7 +387,7 @@ static void on_open_local_activate(GtkMenuItem *menuitem, gpointer user_data) { WERROR error = reg_open_local(®istry); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while opening local registry", error); return; } registry_load_root(); @@ -409,7 +411,7 @@ static void on_open_remote_activate(GtkMenuItem *menuitem, gpointer user_data) gtk_rpc_binding_dialog_get_binding_string(GTK_RPC_BINDING_DIALOG(rpcwin), mem_ctx)); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while opening remote registry", error); gtk_widget_destroy(rpcwin); return; } @@ -429,7 +431,7 @@ static void on_save_activate(GtkMenuItem *menuitem, gpointer user_data) { WERROR error = reg_save(registry, NULL); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while saving", error); } } @@ -444,7 +446,7 @@ static void on_save_as_activate(GtkMenuItem *menuitem, gpointer user_data) case GTK_RESPONSE_OK: error = reg_save(registry, gtk_file_selection_get_filename(GTK_FILE_SELECTION(savefilewin))); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while saving as", error); } break; @@ -477,7 +479,7 @@ static void on_delete_value_activate(GtkMenuItem *menuitem, gpointer user_data) error = reg_del_value(current_key, value); if (!W_ERROR_IS_OK(error)) { - gtk_show_werror(NULL, error); + gtk_show_werror(NULL, "Error while deleting value", error); return; } } @@ -501,7 +503,7 @@ static void on_delete_key_activate(GtkMenuItem *menuitem, gpointer user_data) error = reg_key_del(parent_key, current_key->name); if (!W_ERROR_IS_OK(error)) { - gtk_show_werror(NULL, error); + gtk_show_werror(NULL, "Error while deleting key", error); return; } } @@ -518,7 +520,7 @@ static void on_add_key_activate(GtkMenuItem *menuitem, gpointer user_data) WERROR error = reg_key_add_name(mem_ctx, current_key, gtk_entry_get_text(GTK_ENTRY(entry)), 0, NULL, &newkey); if (!W_ERROR_IS_OK(error)) { - gtk_show_werror(NULL, error); + gtk_show_werror(NULL, "Error while adding key", error); } } @@ -554,7 +556,7 @@ static void on_value_activate(GtkTreeView *treeview, GtkTreePath *arg1, error = reg_val_set(current_key, gtk_entry_get_text(GTK_ENTRY(entry_name)), val->data_type, val->data_blk, val->data_len); if (!W_ERROR_IS_OK(error)) { - gtk_show_werror(NULL, error); + gtk_show_werror(NULL, "Error while setting value", error); } } gtk_widget_destroy(GTK_WIDGET(addwin)); @@ -575,7 +577,7 @@ static void on_set_value_activate(GtkMenuItem *menuitem, gpointer user_data) error = reg_val_set(current_key, gtk_entry_get_text(GTK_ENTRY(entry_name)), val->data_type, val->data_blk, val->data_len); if (!W_ERROR_IS_OK(error)) { - gtk_show_werror(NULL, error); + gtk_show_werror(NULL, "Error while setting value", error); } } gtk_widget_destroy(GTK_WIDGET(addwin)); @@ -645,7 +647,7 @@ static gboolean on_key_activate(GtkTreeSelection *selection, } if(!W_ERROR_EQUAL(error, WERR_NO_MORE_ITEMS)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while enumerating values", error); return FALSE; } return TRUE; @@ -952,7 +954,7 @@ static int gregedit_load_defaults(void) { WERROR error = reg_open_local(®istry); if(!W_ERROR_IS_OK(error)) { - gtk_show_werror(mainwin, error); + gtk_show_werror(mainwin, "Error while loading local registry", error); return -1; } registry_load_root(); @@ -984,5 +986,3 @@ failed: talloc_free(mem_ctx); return ret; } - - diff --git a/source4/gtk/tools/gwcrontab.c b/source4/gtk/tools/gwcrontab.c index ad3c58ca83..47a7d68dc9 100644 --- a/source4/gtk/tools/gwcrontab.c +++ b/source4/gtk/tools/gwcrontab.c @@ -54,7 +54,7 @@ void update_joblist(void) status = dcerpc_atsvc_JobEnum(at_pipe, mem_ctx, &r); if(!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error while enumerating first job", status); return; } @@ -110,7 +110,7 @@ on_connect_activate (GtkMenuItem *menuitem, gtk_rpc_binding_dialog_get_credentials(d)); if(!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error while connecting to at service", status); at_pipe = NULL; gtk_widget_destroy(GTK_WIDGET(d)); talloc_free(mem_ctx); @@ -163,7 +163,7 @@ on_new_activate (GtkMenuItem *menuitem, status = dcerpc_atsvc_JobAdd(at_pipe, mem_ctx, &r); if(!NT_STATUS_IS_OK(status)) { talloc_free(mem_ctx); - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error while adding job", status); return; } @@ -200,7 +200,7 @@ on_delete_activate (GtkMenuItem *menuitem, status = dcerpc_atsvc_JobDel(at_pipe, mem_ctx, &r); talloc_free(mem_ctx); if(!NT_STATUS_IS_OK(status)) { - gtk_show_ntstatus(mainwin, status); + gtk_show_ntstatus(mainwin, "Error deleting job", status); return; } diff --git a/source4/gtk/tools/gwsam.c b/source4/gtk/tools/gwsam.c index 0d435b278c..75a4b532f2 100644 --- a/source4/gtk/tools/gwsam.c +++ b/source4/gtk/tools/gwsam.c @@ -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; } @@ -135,7 +135,7 @@ static void connect_sam(void) ); 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); @@ -148,7 +148,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); -- cgit