diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-03 09:11:36 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:05:33 -0500 |
commit | 86a2f18b964c358eb8c8d59381be5eb5962f3b4b (patch) | |
tree | f6809775428c2ee956d976d73ec8768025f236f0 /source4/gtk/common/select.c | |
parent | 37aa2c5e8ff628d8ad51497a165da8a58cb2d1f5 (diff) | |
download | samba-86a2f18b964c358eb8c8d59381be5eb5962f3b4b.tar.gz samba-86a2f18b964c358eb8c8d59381be5eb5962f3b4b.tar.bz2 samba-86a2f18b964c358eb8c8d59381be5eb5962f3b4b.zip |
r15408: Fix some small bugs in the GTK+ tools
Add utility function for connection to an interface
(This used to be commit 266f7472209e6ae4f70688cf06b8efa63d036d04)
Diffstat (limited to 'source4/gtk/common/select.c')
-rw-r--r-- | source4/gtk/common/select.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/source4/gtk/common/select.c b/source4/gtk/common/select.c index c3e73b5c13..0547525cf3 100644 --- a/source4/gtk/common/select.c +++ b/source4/gtk/common/select.c @@ -23,6 +23,7 @@ #include "librpc/gen_ndr/ndr_samr_c.h" #include "gtk/common/select.h" #include "gtk/common/gtk-smb.h" +#include "auth/credentials/credentials.h" /* GtkSelectDomainDialog */ @@ -260,3 +261,43 @@ GtkWidget *gtk_select_host_dialog_new (struct dcerpc_pipe *sam_pipe) { return GTK_WIDGET ( g_object_new (gtk_select_host_dialog_get_type (), NULL )); } + +/** + * Connect to a specific interface, but ask the user + * for information not specified + */ +struct dcerpc_pipe *gtk_connect_rpc_interface(TALLOC_CTX *mem_ctx, const struct dcerpc_interface_table *table) +{ + GtkRpcBindingDialog *d; + NTSTATUS status; + struct dcerpc_pipe *pipe; + struct cli_credentials *cred; + gint result; + + d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(NULL)); + result = gtk_dialog_run(GTK_DIALOG(d)); + + if (result != GTK_RESPONSE_ACCEPT) { + gtk_widget_destroy(GTK_WIDGET(d)); + return NULL; + } + + cred = cli_credentials_init(mem_ctx); + cli_credentials_guess(cred); + cli_credentials_set_gtk_callbacks(cred); + + status = dcerpc_pipe_connect_b(mem_ctx, &pipe, + gtk_rpc_binding_dialog_get_binding(d, mem_ctx), + table, cred, NULL); + + if(!NT_STATUS_IS_OK(status)) { + gtk_show_ntstatus(NULL, "While connecting to interface", status); + gtk_widget_destroy(GTK_WIDGET(d)); + talloc_free(mem_ctx); + return NULL; + } + + gtk_widget_destroy(GTK_WIDGET(d)); + + return pipe; +} |