#include "librpc/gen_ndr/ndr_mgmt.h"
#include "gtk/common/select.h"
#include "gtk/common/gtk-smb.h"
+#include "lib/cmdline/popt_common.h"
/*
* Show:
static GtkWidget *table_statistics;
static GtkWidget *lbl_calls_in, *lbl_calls_out, *lbl_pkts_in, *lbl_pkts_out;
static GtkWidget *lbl_iface_version, *lbl_iface_uuid, *lbl_iface_name;
+static GtkListStore *store_princ_names;
TALLOC_CTX *eps_ctx = NULL;
TALLOC_CTX *conn_ctx = NULL;
static void add_epm_entry(TALLOC_CTX *mem_ctx, const char *annotation, struct epm_tower *t)
{
- struct dcerpc_binding bd;
+ struct dcerpc_binding *bd;
int i;
NTSTATUS status;
GtkTreeIter toweriter;
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;
}
/* Don't show UUID's */
- ZERO_STRUCT(bd.object);
+ ZERO_STRUCT(bd->object);
gtk_tree_store_append(store_eps, &toweriter, NULL);
- gtk_tree_store_set(store_eps, &toweriter, 0, strdup(annotation), 1, strdup(dcerpc_binding_string(mem_ctx, &bd)), 2, t, -1);
+ gtk_tree_store_set(store_eps, &toweriter, 0, strdup(annotation), 1, strdup(dcerpc_binding_string(mem_ctx, bd)), 2, t, -1);
for (i = 0; i < t->num_floors; i++) {
const char *data;
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;
}
TALLOC_CTX *mem_ctx;
NTSTATUS status;
gint result;
+ struct cli_credentials *credentials;
d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(TRUE, NULL));
result = gtk_dialog_run(GTK_DIALOG(d));
mem_ctx = talloc_init("connect");
bs = gtk_rpc_binding_dialog_get_binding_string (d, mem_ctx);
- status = dcerpc_pipe_connect(&epmapper_pipe, bs, DCERPC_EPMAPPER_UUID, DCERPC_EPMAPPER_VERSION, lp_workgroup(), "", "");
+ credentials = cli_credentials_init(mem_ctx);
+ cli_credentials_guess(credentials);
+ cli_credentials_set_gtk_callbacks(credentials);
+
+ status = dcerpc_pipe_connect(talloc_autofree_context(), &epmapper_pipe, bs,
+ DCERPC_EPMAPPER_UUID, DCERPC_EPMAPPER_VERSION,
+ credentials);
if (NT_STATUS_IS_ERR(status)) {
- gtk_show_ntstatus(mainwin, status);
+ gtk_show_ntstatus(mainwin, "Error connecting to endpoint mapper", status);
goto fail;
}
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;
}
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;
}
struct mgmt_inq_princ_name r;
int i;
+ gtk_list_store_clear(store_princ_names);
+
for (i=0;i<100;i++) {
r.in.authn_proto = i; /* DCERPC_AUTH_TYPE_* */
r.in.princ_name_size = 100;
continue;
}
if (W_ERROR_IS_OK(r.out.result)) {
+ GtkTreeIter iter;
const char *name = gensec_get_name_by_authtype(i);
+ char *protocol;
if (name) {
- printf("\tprinciple name for proto %u (%s) is '%s'\n",
- i, name, r.out.princ_name);
+ protocol = talloc_asprintf(mem_ctx, "%u (%s)", i, name);
} else {
- printf("\tprinciple name for proto %u is '%s'\n",
- i, r.out.princ_name);
+ protocol = talloc_asprintf(mem_ctx, "%u", i);
}
+ gtk_list_store_append(store_princ_names, &iter);
+ gtk_list_store_set(store_princ_names, &iter,
+ 0, protocol,
+ 1, r.out.princ_name,
+ -1);
+
}
}
}
GtkWidget *menuitem4_menu;
GtkWidget *mnu_connect;
GtkWidget *mnu_refresh;
+ GtkWidget *treeview_princ_names;
GtkWidget *about1;
GtkWidget *hbox2;
GtkWidget *scrolledwindow1;
frame1 = gtk_frame_new("Authentication");
gtk_container_add (GTK_CONTAINER(vbox2), frame1);
+ treeview_princ_names = gtk_tree_view_new();
+
+ curcol = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_title(curcol, "Protocol");
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(curcol, renderer, True);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_princ_names), curcol);
+ gtk_tree_view_column_add_attribute(curcol, renderer, "text", 0);
+
+ curcol = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_title(curcol, "Principal Name");
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(curcol, renderer, True);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_princ_names), curcol);
+ gtk_tree_view_column_add_attribute(curcol, renderer, "text", 1);
+
+ gtk_container_add (GTK_CONTAINER(frame1), treeview_princ_names);
+
+ store_princ_names = gtk_list_store_new(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_princ_names), GTK_TREE_MODEL(store_princ_names));
+ g_object_unref(store_princ_names);
+
statusbar = gtk_statusbar_new ();
gtk_box_pack_start (GTK_BOX (vbox1), statusbar, FALSE, FALSE, 0);
}
-int main(int argc, char **argv)
+ int main(int argc, char **argv)
{
- gtk_init(&argc, &argv);
gepdump_init_subsystems;
lp_load(dyn_CONFIGFILE,True,False,False);
load_interfaces();
- setup_logging("gepdump", True);
+ setup_logging(argv[0], DEBUG_STDERR);
+
+ gtk_init(&argc, &argv);
mainwin = create_mainwindow();
gtk_widget_show_all(mainwin);
- gtk_main();
- return 0;
+
+ return gtk_event_loop();
}