svn commit: samba r4787 - in branches/SAMBA_4_0/source/gtk/tools: .

jelmer at samba.org jelmer at samba.org
Sun Jan 16 22:54:01 GMT 2005


Author: jelmer
Date: 2005-01-16 22:54:01 +0000 (Sun, 16 Jan 2005)
New Revision: 4787

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=4787

Log:
Clean up gepdump code somewhat.

Modified:
   branches/SAMBA_4_0/source/gtk/tools/gepdump.c


Changeset:
Modified: branches/SAMBA_4_0/source/gtk/tools/gepdump.c
===================================================================
--- branches/SAMBA_4_0/source/gtk/tools/gepdump.c	2005-01-16 22:41:43 UTC (rev 4786)
+++ branches/SAMBA_4_0/source/gtk/tools/gepdump.c	2005-01-16 22:54:01 UTC (rev 4787)
@@ -35,13 +35,16 @@
  */
 
 static GtkWidget *mainwin;
-static GtkWidget *entry_binding;
 static GtkTreeStore *store_eps;
 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;
 TALLOC_CTX *eps_ctx = NULL;
+TALLOC_CTX *conn_ctx = NULL;
 
+struct dcerpc_pipe *epmapper_pipe;
+struct dcerpc_pipe *mgmt_pipe;
+
 static void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
 	gtk_main_quit();
@@ -106,36 +109,24 @@
 	}
 }
 
-static void on_dump_clicked (GtkButton *btn, gpointer user_data)
+static void refresh_eps(void)
 {
 	NTSTATUS status;
 	struct epm_Lookup r;
 	struct GUID uuid;
 	struct rpc_if_id_t iface;
 	struct policy_handle handle;
-	struct dcerpc_pipe *p;
 	TALLOC_CTX *mem_ctx = talloc_init("dump");
 
 	talloc_destroy(eps_ctx);
 
-	status = dcerpc_pipe_connect(&p, gtk_entry_get_text(GTK_ENTRY(entry_binding)), DCERPC_EPMAPPER_UUID, DCERPC_EPMAPPER_VERSION, lp_workgroup(), "", "");
-
-	if (NT_STATUS_IS_ERR(status)) {
-		gtk_show_ntstatus(mainwin, status);
-		talloc_destroy(mem_ctx);
-		return;
-	}
-
-	ZERO_STRUCT(uuid);
-	ZERO_STRUCT(iface);
 	ZERO_STRUCT(handle);
 
 	r.in.inquiry_type = 0;
 	r.in.object = &uuid;
 	r.in.interface_id = &iface;
 	r.in.vers_option = 0;
-	r.in.entry_handle = &handle;
-	r.out.entry_handle = &handle;
+	r.in.entry_handle = r.out.entry_handle = &handle;
 	r.in.max_ents = 10;
 
 	gtk_tree_store_clear(store_eps);
@@ -144,13 +135,17 @@
 
 	do {
 		int i;
-		status = dcerpc_epm_Lookup(p, eps_ctx, &r);
+		ZERO_STRUCT(uuid);
+		ZERO_STRUCT(iface);
+
+		status = dcerpc_epm_Lookup(epmapper_pipe, eps_ctx, &r);
 		if (!NT_STATUS_IS_OK(status) || r.out.result != 0) {
 			break;
 		}
 		for (i=0;i<r.out.num_ents;i++) {
 			add_epm_entry(mem_ctx, r.out.entries[i].annotation, &r.out.entries[i].tower->tower);
 		}
+
 	} while (NT_STATUS_IS_OK(status) && 
 		 r.out.result == 0 && 
 		 r.out.num_ents == r.in.max_ents);
@@ -163,10 +158,17 @@
 	talloc_destroy(mem_ctx);
 }
 
-static void on_select_target_clicked(GtkButton *btn, gpointer         user_data)
+static void on_refresh_clicked (GtkButton *btn, gpointer user_data)
 {
+	refresh_eps();
+}
+
+static void on_connect_clicked(GtkButton *btn, gpointer         user_data)
+{
 	GtkRpcBindingDialog *d;
+	const char *bs;
 	TALLOC_CTX *mem_ctx;
+	NTSTATUS status;
 	gint result;
 
 	d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(TRUE, NULL));
@@ -179,32 +181,41 @@
 		return;
 	}
 
-	mem_ctx = talloc_init("select_target");
-	gtk_entry_set_text(GTK_ENTRY(entry_binding), gtk_rpc_binding_dialog_get_binding_string (d, mem_ctx));
-	talloc_destroy(mem_ctx);
+	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(), "", "");
+
+	if (NT_STATUS_IS_ERR(status)) {
+		gtk_show_ntstatus(mainwin, status);
+		goto fail;
+	}
+
+	refresh_eps();
+
+	status = dcerpc_secondary_context(epmapper_pipe, &mgmt_pipe, DCERPC_MGMT_UUID, DCERPC_MGMT_VERSION);
+
+	if (NT_STATUS_IS_ERR(status)) {
+		mgmt_pipe = NULL;
+		gtk_show_ntstatus(NULL, status);
+		goto fail;
+	}
+
+fail:
 	gtk_widget_destroy(GTK_WIDGET(d));
 }
 
 static gboolean on_eps_select(GtkTreeSelection *selection,
     GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data)
 {
-	struct dcerpc_pipe *p;
 	NTSTATUS status;
-	struct dcerpc_binding bd;
-	TALLOC_CTX *mem_ctx = talloc_init("eps");
-
-	ZERO_STRUCT(bd);
-	bd.host = "192.168.4.26";
-	bd.endpoint = "samr";
-	bd.transport = NCACN_NP;
-
-	status = dcerpc_pipe_connect_b(&p, &bd, DCERPC_MGMT_UUID, DCERPC_MGMT_VERSION, "", "administrator", "penguin");
-
-	if (NT_STATUS_IS_ERR(status)) {
-		gtk_show_ntstatus(NULL, status);
+	TALLOC_CTX *mem_ctx;
+	
+	if (mgmt_pipe == NULL) 
 		return FALSE;
-	}
 	
+	mem_ctx = talloc_init("eps");
+
 	{
 		/* Do an InqStats call */
 		struct mgmt_inq_stats r;
@@ -212,7 +223,7 @@
 		r.in.max_count = MGMT_STATS_ARRAY_MAX_SIZE;
 		r.in.unknown = 0;
 
-		status = dcerpc_mgmt_inq_stats(p, mem_ctx, &r);
+		status = dcerpc_mgmt_inq_stats(mgmt_pipe, mem_ctx, &r);
 		if (NT_STATUS_IS_ERR(status)) {
 			gtk_show_ntstatus(NULL, status);
 			return TRUE;
@@ -237,7 +248,7 @@
 			r.in.authn_proto = i;  /* DCERPC_AUTH_TYPE_* */
 			r.in.princ_name_size = 100;
 
-			status = dcerpc_mgmt_inq_princ_name(p, mem_ctx, &r);
+			status = dcerpc_mgmt_inq_princ_name(mgmt_pipe, mem_ctx, &r);
 			if (!NT_STATUS_IS_OK(status)) {
 				continue;
 			}
@@ -268,13 +279,10 @@
 	GtkWidget *quit1;
 	GtkWidget *menuitem4;
 	GtkWidget *menuitem4_menu;
+	GtkWidget *mnu_connect;
+	GtkWidget *mnu_refresh;
 	GtkWidget *about1;
-	GtkWidget *handlebox1;
-	GtkWidget *hbox1;
 	GtkWidget *hbox2;
-	GtkWidget *label1;
-	GtkWidget *btn_select_target;
-	GtkWidget *btn_dump;
 	GtkWidget *scrolledwindow1;
 	GtkWidget *frame1;
 	GtkWidget *tree_eps;
@@ -303,6 +311,12 @@
 	menuitem1_menu = gtk_menu_new ();
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);
 
+	mnu_connect = gtk_menu_item_new_with_mnemonic ("_Connect");
+	gtk_container_add(GTK_CONTAINER(menuitem1_menu), mnu_connect);
+
+	mnu_refresh = gtk_menu_item_new_with_mnemonic ("_Refresh");
+	gtk_container_add(GTK_CONTAINER(menuitem1_menu), mnu_refresh);
+
 	quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group);
 	gtk_container_add (GTK_CONTAINER (menuitem1_menu), quit1);
 
@@ -315,25 +329,6 @@
 	about1 = gtk_menu_item_new_with_mnemonic ("_About");
 	gtk_container_add (GTK_CONTAINER (menuitem4_menu), about1);
 
-	handlebox1 = gtk_handle_box_new ();
-	gtk_box_pack_start (GTK_BOX (vbox1), handlebox1, FALSE, TRUE, 0);
-
-	hbox1 = gtk_hbox_new (FALSE, 0);
-	gtk_container_add (GTK_CONTAINER (handlebox1), hbox1);
-
-	label1 = gtk_label_new ("Location:");
-	gtk_box_pack_start (GTK_BOX (hbox1), label1, FALSE, FALSE, 0);
-
-	entry_binding = gtk_entry_new ();
-	gtk_entry_set_text(GTK_ENTRY(entry_binding), "ncalrpc:");
-	gtk_box_pack_start (GTK_BOX (hbox1), entry_binding, FALSE, FALSE, 0);
-
-	btn_select_target = gtk_button_new_with_mnemonic ("_Select Target");
-	gtk_box_pack_start (GTK_BOX (hbox1), btn_select_target, FALSE, FALSE, 0);
-
-	btn_dump = gtk_button_new_with_mnemonic ("_Dump");
-	gtk_box_pack_start (GTK_BOX (hbox1), btn_dump, FALSE, FALSE, 0);
-
 	hbox2 = gtk_hbox_new (FALSE, 0);
 	gtk_container_add (GTK_CONTAINER (vbox1), hbox2);
 
@@ -406,11 +401,11 @@
 	g_signal_connect ((gpointer) about1, "activate",
 					  G_CALLBACK (on_about1_activate),
 					  NULL);
-	g_signal_connect ((gpointer) btn_select_target, "clicked",
-					  G_CALLBACK (on_select_target_clicked),
+	g_signal_connect ((gpointer) mnu_connect, "activate",
+					  G_CALLBACK (on_connect_clicked),
 					  NULL);
-	g_signal_connect ((gpointer) btn_dump, "clicked",
-					  G_CALLBACK (on_dump_clicked),
+	g_signal_connect ((gpointer) mnu_refresh, "activate",
+					  G_CALLBACK (on_refresh_clicked),
 					  NULL);
 
 	gtk_window_add_accel_group (GTK_WINDOW (mainwindow), accel_group);



More information about the samba-cvs mailing list