ChangeLog for gtk-tool
+29/11/1998 - Pele
+ * Added Gtk_LdapServer class
+ * Started using cn=config, ldap_get_option (not sure about get_option
+ though, cn=config looks much nicer for the future-proofing)
+ * Can traverse, display and serve two (or possibly/hopefully) more
+ databases on the local machine - remote machines also possible -
+ need to use "-s hostname"
+ * The program needs the "-s" switch! Without it it won't run (temporary
+ "feature")
+
28/11/1998 - Pele
* Fixes, enhancements, started using ldap utility api
* It now traverses the whole tree at startup, not sure if it's smart
+++ /dev/null
-#include "Gtk_LdapItem.h"
-
-Gtk_LdapItem::Gtk_LdapItem() : Gtk_TreeItem() {
- cout << "Gtk_LdapItem()" << endl;
-}
-
-Gtk_LdapItem::Gtk_LdapItem(char *c) : Gtk_TreeItem() {
- cout << "Gtk_LdapItem(" << c << ")" << endl;
- this->dn = c;
-}
-
-Gtk_LdapItem::Gtk_LdapItem(Gtk_TreeItem *item) : Gtk_TreeItem(*item) {
- cout << "Gtk_LdapItem(*item)" << endl;
-}
-
-Gtk_LdapItem::Gtk_LdapItem(Gtk_TreeItem &item) : Gtk_TreeItem(item) {
- cout << "Gtk_LdapItem(&item)" << endl;
-}
-
-void Gtk_LdapItem::expand_impl() {
- cout << this->dn << " expanded" << endl;
-}
-
-void Gtk_LdapItem::collapse_impl() {
- cout << this->dn << " collapsed" << endl;
-}
-
-void Gtk_LdapItem::select_impl() {
- cout << this->dn << " selected" << endl;
-}
-
-void Gtk_LdapItem::deselect_impl() {
- cout << this->dn << " deselected" << endl;
-}
-
-void Gtk_LdapItem::toggle_impl() {
- cout << this->dn << " toggled" << endl;
-}
public:
Gtk_Tree *tree;
Gtk_LdapTreeItem *treeitem;
+ G_List<gchar> *value_list;
+ char *attribute_name;
+ G_List<Gtk_LdapItem> *attribute_list;
+ char *entry_name;
};
#endif
--- /dev/null
+#include "Gtk_LdapServer.h"
+#include <gtk--/base.h>
+
+Gtk_LdapServer::Gtk_LdapServer() : Gtk_TreeItem() {
+ this->hostname = NULL;
+ this->par = NULL;
+ this->base_dn = NULL;
+ this->port = 0;
+}
+
+Gtk_LdapServer::Gtk_LdapServer(My_Window *w, char *h, int p) : Gtk_TreeItem() {
+ this->par = w;
+ this->hostname = h;
+ this->port = p;
+ cout << this->hostname << this->port << endl;
+ this->getConfig();
+}
+
+Gtk_LdapServer::Gtk_LdapServer(GtkTreeItem *t) : Gtk_TreeItem(t) {
+}
+
+Gtk_LdapServer::~Gtk_LdapServer() {
+ cout << "Bye" << endl;
+ delete this;
+}
+
+void Gtk_LdapServer::setType(int t) {
+ cout << "Gtk_LdapServer::setType(" << t << ")" << endl;
+ Gtk_Pixmap *xpm_icon;
+ Gtk_Label *label;
+ if (this->getchild() != NULL) {
+ xpm_label = new Gtk_HBox(GTK_HBOX(this->getchild()->gtkobj()));
+ xpm_label->remove_c(xpm_label->children()->nth_data(0));
+ xpm_label->remove_c(xpm_label->children()->nth_data(0));
+ }
+ else xpm_label = new Gtk_HBox();
+ cout << this->hostname << endl;
+ if (strcasecmp(this->hostname,"localhost") == 0)
+ xpm_icon=new Gtk_Pixmap(*xpm_label, local_server);
+ else xpm_icon=new Gtk_Pixmap(*xpm_label, remote_server);
+ label = new Gtk_Label(this->hostname);
+ xpm_label->pack_start(*xpm_icon, false, false, 1);
+ xpm_label->pack_start(*label, false, false, 1);
+ if (this->getchild() == NULL) this->add(xpm_label);
+ label->show();
+ xpm_label->show();
+ xpm_icon->show();
+}
+
+int Gtk_LdapServer::showDetails() {
+ cout << "Gtk_LdapServer::showDetails()" << endl;
+ this->getDetails();
+ /*
+ if (this->notebook != NULL) {
+ if (par->viewport->getchild() != NULL) {
+ par->viewport->remove_c(par->viewport->getchild()->gtkobj());
+ }
+ par->viewport->add(this->notebook);
+ this->notebook->show();
+ par->viewport->show();
+ return 0;
+ }
+ else this->getDetails();
+ this->showDetails();
+ */
+ return 0;
+}
+
+int Gtk_LdapServer::getConfig() {
+ cout << "Gtk_LdapServer::getConfig()" << endl;
+ int error, entriesCount;
+ LDAPMessage *entry, *result_identifier;
+ BerElement *ber;
+ char *attribute, **t;
+
+ if ((this->ld = ldap_open(this->hostname, this->port)) == NULL) {
+ perror("connection");
+ }
+
+ error = ldap_search_s(this->ld, "cn=config", LDAP_SCOPE_BASE, "objectclass=*", NULL, 0, &result_identifier);
+ entriesCount = ldap_count_entries(this->ld, result_identifier);
+ if (entriesCount == 0) {
+ return 0;
+ }
+
+ cout << entriesCount << " entry" << endl;
+ for (entry = ldap_first_entry(this->ld, result_identifier); entry != NULL; entry = ldap_next_entry(this->ld, result_identifier)) {
+ for (attribute = ldap_first_attribute(this->ld, entry, &ber); attribute != NULL; attribute = ldap_next_attribute(this->ld, entry, ber)) {
+ cout << "Attrib: " << attribute << endl;
+ if (strcasecmp(attribute, "database") == 0) {
+ cout << "have database here" << endl;
+ this->databases = new G_List<char>;
+ t = ldap_get_values(this->ld, entry, attribute);
+ for (int i=0; i<ldap_count_values(t); i++) {
+ this->databases->append(strdup(t[i]));
+ }
+ ldap_value_free(t);
+ cout << "databases loaded" << endl;
+ for (int i=0; i<this->databases->length(); i++) {
+ cout << "database(" << i << ") " << this->databases->nth_data(i) << endl;
+ }
+ }
+ }
+ cout << "entry done" << endl;
+ }
+// cout << "got " << entriesCount << " entries" << endl;
+ return entriesCount;
+}
+
+int Gtk_LdapServer::getDetails() {
+ cout << "Gtk_LdapServer::getDetails()" << endl;
+ Gtk_HBox *hbox;
+ Gtk_VBox *vbox;
+ Gtk_Label *label;
+ Gtk_RadioButton *radio1, *radio2;
+ char *val;
+ int ival;
+
+ if (GTK_TREE_ITEM(this->gtkobj())->subtree == NULL) {
+ this->getSubtree();
+ }
+
+/*
+ cout << "getting ldap options";
+ vbox = new Gtk_VBox();
+ opt_util = new LdapOpts();
+
+ for (int i=0; i<sizeof(things); i++) {
+ cout << i << endl;
+ hbox = new Gtk_HBox();
+ label = new Gtk_Label(LdapOpts->getOption(things[i]);
+ hbox->pack_start(*label);
+ label->show();
+ int tipus = opt_util->getType(things[i]);
+ switch (tipus) {
+ case 0:
+ ldap_get_option(NULL, things[i], &val);
+ label = new Gtk_Label(val);
+ break;
+ case 1:
+ ldap_get_option(NULL, numerals[i], &ival);
+ sprintf(val, "%i", ival);
+ label = new Gtk_Label(val);
+ break;
+ case 2:
+ ldap_get_option(NULL, booleans[i], &ival);
+ sprintf(val, "%s", ival == (int) LDAP_OPT_ON ? "on" : "off");
+ label = new Gtk_Label(val);
+ break;
+ default:
+ break;
+ }
+
+ hbox->pack_start(*label);
+ label->show();
+ vbox->pack_start(*hbox);
+ hbox->show();
+
+ }
+
+ vbox->border_width(2);
+ this->notebook = new Gtk_Viewport();
+ this->notebook->add(*vbox);
+ vbox->show();
+*/
+ this->setType(1);
+ return 0;
+}
+
+int Gtk_LdapServer::getSubtree() {
+ cout << "Gtk_LdapServer::getSubtree()" << endl;
+ Gtk_LdapItem *treeresult;
+ Gtk_Tree *tree, *subtree;
+ Gtk_LdapTreeItem *treeitem;
+ int entries;
+
+ cout << "this->hostname=" << this->hostname << endl;
+ cout << "this->port=" << this->port << endl;
+/* if ((this->ld = ldap_open(this->hostname, this->port)) == NULL) {
+ perror("connection");
+ }
+*/
+
+ char *c;
+ char *tok;
+
+ int len = this->databases->length();
+ cout << "this->databases->length()=" << len << endl;
+
+ tree = new Gtk_Tree();
+ for (int i=0; i<len; i++) {
+ tok = strdup(this->databases->nth_data(i));
+ tok = strtok(tok, ":");
+ c = strtok(NULL, "\0");
+ cout << "database " << i << " " << c << endl;
+ treeresult = this->par->make_tree(this->par, this->ld, c);
+ treeitem = new Gtk_LdapTreeItem(*treeresult->treeitem);
+ tree->append(*treeitem);
+ if (treeresult->tree != NULL) {
+ subtree = new Gtk_Tree(*treeresult->tree);
+ treeitem->set_subtree(*subtree);
+ }
+ treeitem->show();
+ // tree->show();
+ }
+ this->set_subtree(*tree);
+ cout << "getTree() done" << endl;
+ return 0;
+}
+
+void Gtk_LdapServer::select_impl() {
+ cout << this->hostname << " selected" << endl;
+// gtk_item_select(GTK_ITEM(GTK_TREE_ITEM(this->gtkobj())));
+ Gtk_c_signals_Item *sig=(Gtk_c_signals_Item *)internal_getsignalbase();
+ if (!sig->select) return;
+ sig->select(GTK_ITEM(gtkobj()));
+ this->showDetails();
+}
+
+void Gtk_LdapServer::collapse_impl() {
+// cout << this->dn << " collapsed" << endl;
+ Gtk_c_signals_TreeItem *sig=(Gtk_c_signals_TreeItem *)internal_getsignalbase();
+ if (!sig->collapse) return;
+ sig->collapse(GTK_TREE_ITEM(gtkobj()));
+// gtk_widget_hide(GTK_WIDGET(GTK_TREE(GTK_TREE_ITEM (this->gtkobj())->subtree)));
+}
+
+void Gtk_LdapServer::expand_impl() {
+// cout << this->dn << " expanded" << endl;
+ Gtk_c_signals_TreeItem *sig=(Gtk_c_signals_TreeItem *)internal_getsignalbase();
+ if (!sig->expand) return;
+ sig->expand(GTK_TREE_ITEM(gtkobj()));
+// Gtk_Tree *t;
+// t = new Gtk_Tree(GTK_TREE(GTK_TREE_ITEM(this->gtkobj())->subtree));
+// bool vis = t->visible();
+// if (vis == false) {
+// gtk_widget_show(GTK_WIDGET(GTK_TREE(GTK_TREE_ITEM (this->gtkobj())->subtree)));
+// cout << this->dn << " expanded" << endl;
+// }
+// else {
+// gtk_widget_hide(GTK_WIDGET(GTK_TREE(GTK_TREE_ITEM (this->gtkobj())->subtree)));
+// cout << this->dn << " collapsed" << endl;
+// }
+}
--- /dev/null
+#ifndef GTK_LDAPSERVER_H
+#define GTK_LDAPSERVER_H
+#include "gtk.h"
+#include <My_Window.h>
+/*#include <LdapOpts.h>*/
+#include <Gtk_LdapItem.h>
+#include <Gtk_LdapTreeItem.h>
+#include <lber.h>
+#include <ldap.h>
+#include "icons/local_server.h"
+#include "icons/remote_server.h"
+
+#define LOCAL_SERVER 1
+#define REMOTE_SERVER 2
+
+class My_Window;
+
+class Gtk_LdapServer : public Gtk_TreeItem {
+public:
+ char *dn;
+ char *hostname;
+ LDAPMessage **thing;
+ LDAP *ld;
+ char *host;
+ char *base_dn;
+ int c, port;
+ My_Window *par;
+// Gtk_Notebook *notebook;
+ Gtk_Viewport *notebook;
+ Gtk_HBox *xpm_label;
+// Gtk_Tree *subtree;
+ G_List<char> *databases;
+ Gtk_LdapServer();
+ Gtk_LdapServer(My_Window *w, char *c, int p);
+ Gtk_LdapServer(GtkTreeItem *t);
+ ~Gtk_LdapServer();
+ void setType(int t);
+ int getConfig();
+ int getSubtree();
+ int getDetails();
+ int showDetails();
+ void select_impl();
+ void collapse_impl();
+ void expand_impl();
+};
+#endif
}
void Gtk_LdapTreeItem::setType(int t) {
- cout << "Gtk_LdapTreeItem::setType(" << t << ")" << endl;
+// cout << "Gtk_LdapTreeItem::setType(" << t << ")" << endl;
Gtk_Pixmap *xpm_icon;
Gtk_Label *label;
if (this->getchild() != NULL) {
}
int Gtk_LdapTreeItem::showDetails() {
- cout << "Gtk_LdapTreeItem::showDetails()" << endl;
+// cout << "Gtk_LdapTreeItem::showDetails()" << endl;
if (this->notebook != NULL) {
if (par->viewport->getchild() != NULL) {
par->viewport->remove_c(par->viewport->getchild()->gtkobj());
}
else this->getDetails();
this->showDetails();
+ return 0;
}
int Gtk_LdapTreeItem::getDetails() {
- cout << "Gtk_LdapTreeItem::getDetails()" << endl;
+// cout << "Gtk_LdapTreeItem::getDetails()" << endl;
int error, entriesCount;
BerElement *ber;
LDAPMessage *entry;
}
}
this->setType(1);
- cout << ".";
+// cout << ".";
return 0;
}
void Gtk_LdapTreeItem::select_impl() {
+++ /dev/null
-#include "LdapEntry.h"
-
-LdapEntry* LdapEntry::get_entries(LDAP *ld, char *base_dn, int level,char *filter) {
- printf("get_entries(%s)\n", base_dn);
- LDAPMessage **result, *entry;
- Entry *thing;
- char *pele;
- int res;
- res = ldap_search(ld, base_dn, level, filter, NULL, 0);
- res = ldap_result(ld, res, 1, NULL, result);
- printf("%s\n", ldap_err2string(ldap_result2error(ld, *result, 1)));
- int num_entries = ldap_count_entries(ld, *result);
- printf("%i results\n", num_entries);
- int i=0;
- entry = ldap_first_entry(ld, *result);
- thing->dn = ldap_get_dn(ld, entry);
- pele = ldap_get_dn(ld, entry);
- printf("%s\n", thing->dn);
- while (entry) {
- printf("Child %i\n", i);
- thing->child[i] = get_entries(ld, pele, LDAP_SCOPE_ONELEVEL, filter);
- i++;
- entry = ldap_next_entry(ld, entry);
- }
- return thing;
-}
-
-Gtk_Tree *LdapEntry::make_tree(Entry *thing) {
- Gtk_Tree *tree, **subtree;
- Gtk_TreeItem *treeitem;
- gchar *c;
- tree = new Gtk_Tree();
- tree->set_selection_mode(GTK_SELECTION_BROWSE);
- tree->set_view_mode(GTK_TREE_VIEW_ITEM);
- tree->set_view_lines(false);
- c = g_strdup_printf("%s", thing->dn);
- printf("%s\n", c);
- treeitem = new Gtk_TreeItem(c);
- tree->append(treeitem);
- treeitem->show();
- int i=0;
- while (thing->child[i]) {
- subtree[i] = make_tree(thing->child[i]);
- treeitem->set_subtree(subtree[i]);
- i++;
- }
- tree->show();
- return tree;
-}
+++ /dev/null
-#ifdef MY_LDAP_ENTRY_H
-#define MY_LDAP_ENTRY_H
-#include "common.h"
-#include "gtk.h"
-#include <lber.h>
-#include <ldap.h>
-
-class LdapEntry {
-public:
- char *dn;
- LdapEntry **children;
- LdapEntry* get_entries(LDAP *ld, char *base_dn, int level, char *filter);
- Gtk_Tree* make_tree(LdapEntry *thing);
-}
-#endif
.EXPORT_ALL_VARIABLES:
-SOURCES= My_Window.cc Gtk_LdapTreeItem.cc main.cc
-OBJECTS= My_Window.o Gtk_LdapTreeItem.o main.o
+SOURCES= My_Window.cc Gtk_LdapTreeItem.cc Gtk_LdapServer.cc main.cc
+OBJECTS= My_Window.o Gtk_LdapTreeItem.o Gtk_LdapServer.o main.o
################################################################################
+++ /dev/null
-#include "My_Scroller.h"
-
-#include <gtk--/container.h>
-
-void My_Scroller::remove_child(int i) {
- cout << "Unparenting child[" << i << "]" << endl;
- this->children[i]->unparent();
- cout << "Deleting child[" << i << "] from children" << endl;
-// this->remove(children()->first());
- delete this->children[i];
- cout << "done" << endl;
-}
-void My_Scroller::add_child(Gtk_Widget *w) {
- cout << "My_Scroller::add_child()" << endl;
-// w->reparent(this);
- this->add(w);
- cout << "done" << endl;
- this->children[0] = w;
-}
+++ /dev/null
-#ifndef MY_SCROLLER_H
-#define MY_SCROLLER_H
-#include <gtk--/container.h>
-#include "gtk.h"
-
-class My_Scroller : public Gtk_ScrolledWindow {
-public:
- Gtk_Widget *children[2];
- void add_child(Gtk_Widget *w);
- void remove_child(int i);
-};
-#endif
cout << "My_Window(t)" << endl;
Gtk_VBox *main_hbox;
Gtk_HBox *top_hbox;
+ Gtk_Menu *menu;
+ Gtk_MenuItem *file_menu, *menuitem;
pane = new Gtk_HPaned();
this->scroller = new Gtk_ScrolledWindow();
this->scroller2->show();
top_hbox = new Gtk_HBox();
+ menu = new Gtk_Menu();
+ menuitem = new Gtk_MenuItem("Quit");
+ menu->append(*menuitem);
+ this->menubar = new Gtk_MenuBar();
+ file_menu = new Gtk_MenuItem("File");
+ file_menu->set_submenu(menu);
+ this->menubar->append(*file_menu);
+ menuitem->show();
+ menu->show();
+ file_menu->show();
+// top_hbox->pack_start(*this->menubar, TRUE, TRUE, 1);
+ this->menubar->show();
this->urlfield = new Gtk_Entry();
top_hbox->pack_start(*this->urlfield, TRUE, TRUE, 1);
this->urlfield->show();
this->display_button->show();
main_hbox = new Gtk_VBox();
+ main_hbox->pack_start(*this->menubar, FALSE, FALSE, 1);
main_hbox->pack_start(*top_hbox, FALSE, TRUE, 1);
main_hbox->pack_end(*pane, TRUE, TRUE, 1);
top_hbox->show();
g_print("%s selected\n", name);
}
-gint My_Window::delete_event_impl(GdkEventAny *) {
+gint My_Window::delete_event_impl(GdkEventAny*) {
Gtk_Main::instance()->quit();
return 0;
}
Gtk_Entry *urlfield;
Gtk_Button *display_button;
Gtk_Paned *pane;
+ Gtk_MenuBar *menubar;
My_Window(GtkWindowType t);
~My_Window();
void do_display();
+++ /dev/null
-/* XPM */
-static char * db_node_xpm[] = {
-"100 100 261 2",
-" c None",
-". c #010101",
-"+ c #080808",
-"@ c #090909",
-"# c #0A0909",
-"$ c #121111",
-"% c #222121",
-"& c #2A2929",
-"* c #191919",
-"= c #0E0E0E",
-"- c #060606",
-"; c #000000",
-"> c #030303",
-", c #1A1919",
-"' c #1C1B1B",
-") c #2F2E2E",
-"! c #3D3C3C",
-"~ c #424141",
-"{ c #545252",
-"] c #565454",
-"^ c #555353",
-"/ c #4F4D4D",
-"( c #3E3D3D",
-"_ c #212121",
-": c #080707",
-"< c #101010",
-"[ c #2F2D2D",
-"} c #383737",
-"| c #504E4E",
-"1 c #514F4F",
-"2 c #4B4949",
-"3 c #302F2F",
-"4 c #252424",
-"5 c #0D0D0D",
-"6 c #020202",
-"7 c #212020",
-"8 c #4E4C4C",
-"9 c #464444",
-"0 c #323131",
-"a c #151515",
-"b c #525050",
-"c c #474646",
-"d c #141313",
-"e c #4D4B4B",
-"f c #424040",
-"g c #201F1F",
-"h c #1B1A1A",
-"i c #454444",
-"j c #676767",
-"k c #242424",
-"l c #3B3A3A",
-"m c #535151",
-"n c #4C4A4A",
-"o c #1B1B1B",
-"p c #AEAEAE",
-"q c #DBDBDB",
-"r c #D0D0D0",
-"s c #777777",
-"t c #1F1F1F",
-"u c #464545",
-"v c #3C3A3A",
-"w c #3F3F3F",
-"x c #8C8C8C",
-"y c #EEEEEE",
-"z c #FFFFFF",
-"A c #E7E7E7",
-"B c #AAAAAA",
-"C c #575757",
-"D c #403F3F",
-"E c #393838",
-"F c #2E2D2D",
-"G c #171616",
-"H c #272727",
-"I c #949494",
-"J c #BEBEBE",
-"K c #F3F3F3",
-"L c #C7C7C7",
-"M c #8F8F8F",
-"N c #606060",
-"O c #2F2F2F",
-"P c #222222",
-"Q c #474545",
-"R c #4A4848",
-"S c #2B2A2A",
-"T c #303030",
-"U c #868686",
-"V c #F7F7F7",
-"W c #FEFEFE",
-"X c #636363",
-"Y c #4B4B4B",
-"Z c #111111",
-"` c #121212",
-" . c #131313",
-".. c #2C2A2A",
-"+. c #343333",
-"@. c #232222",
-"#. c #171717",
-"$. c #181818",
-"%. c #646464",
-"&. c #9E9E9E",
-"*. c #D5D5D5",
-"=. c #9B9B9B",
-"-. c #D4D4D4",
-";. c #F9F9F9",
-">. c #F4F4F4",
-",. c #C6C6C6",
-"'. c #6D6D6D",
-"). c #CCCCCC",
-"!. c #292929",
-"~. c #9F9F9F",
-"{. c #BCBCBC",
-"]. c #8B8B8B",
-"^. c #999999",
-"/. c #FAFAFA",
-"(. c #DFDFDF",
-"_. c #D9D9D9",
-":. c #1A1A1A",
-"<. c #EBEBEB",
-"[. c #202020",
-"}. c #C4C4C4",
-"|. c #686868",
-"1. c #727272",
-"2. c #FCFCFC",
-"3. c #BDBDBD",
-"4. c #A6A6A6",
-"5. c #9A9A9A",
-"6. c #CACACA",
-"7. c #D7D7D7",
-"8. c #2E2E2E",
-"9. c #A5A5A5",
-"0. c #EAEAEA",
-"a. c #B5B5B5",
-"b. c #A8A8A8",
-"c. c #B9B9B9",
-"d. c #989898",
-"e. c #D6D6D6",
-"f. c #E9E9E9",
-"g. c #B1B1B1",
-"h. c #ABABAB",
-"i. c #BABABA",
-"j. c #969696",
-"k. c #DCDCDC",
-"l. c #B3B3B3",
-"m. c #BBBBBB",
-"n. c #909090",
-"o. c #A1A1A1",
-"p. c #B7B7B7",
-"q. c #EDEDED",
-"r. c #ECECEC",
-"s. c #0C0C0C",
-"t. c #8D8D8D",
-"u. c #E1E1E1",
-"v. c #232323",
-"w. c #E2E2E2",
-"x. c #DADADA",
-"y. c #1E1E1E",
-"z. c #E5E5E5",
-"A. c #D3D3D3",
-"B. c #2A2A2A",
-"C. c #141414",
-"D. c #AFAFAF",
-"E. c #656565",
-"F. c #717171",
-"G. c #C1C1C1",
-"H. c #313131",
-"I. c #B0B0B0",
-"J. c #4F4F4F",
-"K. c #CECECE",
-"L. c #343434",
-"M. c #B8B8B8",
-"N. c #363636",
-"O. c #E0E0E0",
-"P. c #050505",
-"Q. c #C5C5C5",
-"R. c #C8C8C8",
-"S. c #262626",
-"T. c #252525",
-"U. c #CFCFCF",
-"V. c #F8F8F8",
-"W. c #0A0A0A",
-"X. c #161616",
-"Y. c #0B0B0B",
-"Z. c #282828",
-"`. c #595959",
-" + c #505050",
-".+ c #494949",
-"++ c #D1D1D1",
-"@+ c #666666",
-"#+ c #6A6A6A",
-"$+ c #2C2C2C",
-"%+ c #ACACAC",
-"&+ c #EFEFEF",
-"*+ c #5C5C5C",
-"=+ c #797979",
-"-+ c #BFBFBF",
-";+ c #535353",
-">+ c #838383",
-",+ c #F2F2F2",
-"'+ c #828282",
-")+ c #404040",
-"!+ c #353535",
-"~+ c #3B3B3B",
-"{+ c #A9A9A9",
-"]+ c #FDFDFD",
-"^+ c #4C4C4C",
-"/+ c #FBFBFB",
-"(+ c #CDCDCD",
-"_+ c #2B2B2B",
-":+ c #F6F6F6",
-"<+ c #585858",
-"[+ c #C9C9C9",
-"}+ c #7E7E7E",
-"|+ c #E4E4E4",
-"1+ c #919191",
-"2+ c #393939",
-"3+ c #ADADAD",
-"4+ c #A3A3A3",
-"5+ c #B4B4B4",
-"6+ c #B2B2B2",
-"7+ c #E6E6E6",
-"8+ c #D2D2D2",
-"9+ c #A4A4A4",
-"0+ c #CBCBCB",
-"a+ c #F0F0F0",
-"b+ c #3A3A3A",
-"c+ c #E3E3E3",
-"d+ c #9D9D9D",
-"e+ c #767676",
-"f+ c #C3C3C3",
-"g+ c #5A5A5A",
-"h+ c #707070",
-"i+ c #747474",
-"j+ c #808080",
-"k+ c #C0C0C0",
-"l+ c #DDDDDD",
-"m+ c #3D3D3D",
-"n+ c #898989",
-"o+ c #959595",
-"p+ c #F5F5F5",
-"q+ c #848484",
-"r+ c #545454",
-"s+ c #888888",
-"t+ c #383838",
-"u+ c #7D7D7D",
-"v+ c #878787",
-"w+ c #626262",
-"x+ c #6E6E6E",
-"y+ c #4A4A4A",
-"z+ c #616161",
-"A+ c #858585",
-"B+ c #929292",
-"C+ c #F1F1F1",
-"D+ c #3C3C3C",
-"E+ c #757575",
-"F+ c #6B6B6B",
-"G+ c #C2C2C2",
-"H+ c #373737",
-"I+ c #E8E8E8",
-"J+ c #7C7C7C",
-"K+ c #565656",
-"L+ c #5F5F5F",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" . + @ @ # $ % & & & & & & & & & & & & & & * = @ @ @ - ; ",
-" ; ; > , ' ) ! ! ~ { ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] / ( ! ! _ ' $ ; ; ",
-" ; : < [ } | 1 ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] { | 2 3 4 5 6 ",
-" 6 7 ! 8 ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] 9 0 a ; ",
-" + 0 b ^ ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ c _ 6 ",
-" d e ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ! > ",
-" ; f ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] g ",
-" h b ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ i = ",
-" j k l m ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] n & o p ",
-" q r s t & u 1 ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] e v t w x y q ",
-" q z z A B C 5 , } D ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] 1 E F G H I J z z z q ",
-" q z z z z z K L M N O F P 4 } Q Q R ^ ] ] ] ] ] ] ] ] ] ] ] ] ^ ] ] ] ] ] ] ] ] ] ] ] 1 c Q Q S 4 k T O U M y V z z z z z q ",
-" q z z z z z W z z z z V L L s X X Y Z ` ` .h ..+.+.+.+.+.+.+.+.+.+.+.+.+.+.@.#.` ` ` $.%.X X &.L *.z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z p =.=.=.=.=.=.=.=.=.=.=.=.=.=.-.z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z ;.>.>.>.>.;.z z z z z z z z z z W W z z z z z z z ,.'.z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z ).!.~.L {.].^./.z z z z z z z z r (.z z z z z z z _.:.z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z <.[.}.z z ;.|.1.2.3.4.{.5.6.W 7.8.9.0.a.b.c.d.e.z _.:.f.L 9.B V ;.g.h.i.j.k.z 2.i.l.m.n.*.z 7.o.p.9.q.z z z z q ",
-" q z z z z z r._ }.z z z ,.s.r t.V z u.v.w.x.y.b.z.M 2.z A.B.f._.C.D.2.2.E.F.A 5.z z G.H.>.I.J.W z e.*.K.L.z.z M.N.r.z z z q ",
-" q z z z z z r._ }.z z z O.P.h./.(.Q.R.S.p z T.U.z V.q Q.U.W.R._.X.O.z z Q.Y.q.;.7.L {.$.r I Z.p.k.<.2.`. +{.{.m..+,.z z z q ",
-" q z z z z z r._ }.z z z ++- m.@+#+-.u.$+%+z T.U.&+*+=+e.<.Y.L _.:.z z z q ; -+;+>+x.*.:.U.,+'+)+!+t ].!+>+z z z z z z z z q ",
-" q z z z z z r._ }.z z z ].~+i.Z w.z K B.%+z T.U.{+ ./.z ;.Y.L _.$.q.z z M.< t.[.W z w.:.U.V.z ]+2.&.T.%.J.z z z <.3.z z z q ",
-" q z z z z z K.s.h.;.;.{.^+e.f.t {+/+++L.9.z S.D.A.t J /+R.v.-+(+_+o./.:+<+5.L * U./.}.t [+}+|+2./.n.1+k.2+Q./+:+3+&+z z z q ",
-" q z z z z z L 4+h.G.J 6.;.z z &+5+A.y [+3.z }.3+/+f.6+-.>.-+L L L q.6.p -.z z 7+5+*.>.c.(+8+9+J m.0+]+z >.3+i.Q./+z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z W A %+a.g.d.*.z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z a+b+A.z z U.1.z z W u.V z z z ]+2.V.:+z z z z z z z z z K |+z z z z /+z &+z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z i.y.c+z z z ,+z b.1.++d+e+,+f+2+3+2+-.g+2+/+z z #+d.K 1.~.K.h+I.]+i+1.j+`.z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z q s._+@+1+k+V _.[.l+z /.m+n+u.` j.7+/.e._ 7.z z o+p+q+r+z z U.$._.s+B.r f.z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z _.F.w _+Y.t+u+S.{.{.{.{.++u.X._.W z z v+w+]+_._.2.$+x+{.{.{.{.<.s+y+z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z V.z z z p+l. .z+_+V z z z O.u.X._.W z z q.!.,.[+]+2.B.A+z z z V.A s+y+z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z B+u.z z z w.T ).$.).z z C+{+u.X._.W z z z n.~+0.z W n+D+2.z z L A.s+y+z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z 5. +g.*.L E+Q.z 3.F+G+,.m.p+5+y.l.W z z z f.'+z z z p+x v+r m.r /.%.H+&+z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z f.z.A 2.z z z W I+>.z z z z z W z z z z /+z z z z z V A 2.z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z q ",
-" ; q z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z 4. ",
-" ; p.z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z z z ;+ ",
-" Y.n+A z z z W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z z z z z 0+^+ ",
-" :.J+U./+W z z z z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z z z z ]+/+b.K+- ",
-" ; ; L+].f+V z z z z z z z z z z z z z z z z z z z z z W z z z z z z z z z z z z z z z z z z z z O.f+%.b+; ",
-" ; P H *+].].x.&+&+K z z z z z z z z z z z z z W z z z z z z z z z z z ]+&+&+&+l.].].!+H .; ",
-" ; ; ; #.;+;+;+;+;+9+p.p.p.p.p.p.p.p.p.p.p.p.p.p.u+;+;+;+;+y+; ; ; ; ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
+++ /dev/null
-#include "ldap_entry.h"
-
-class ldap_manager {
- ldap_entry *entries;
- int result_identifier;
- char *search_filter, *base_dn;
- char *ldap_action, *host;
- int link_identifier;
- int entriesCount;
-
- int connect(char *host) {
- this->link_identifier = ldap_connect(host);
- if (this->link_identifier) return 1;
- return 0;
- }
-
- void disconnect() {
- // ldap_close($this->link_identifier);
- }
-
- int ldapTakeAction(char *a) {
- char *func_ptr = "ldap_".$a;
- if (this->result_identifier = func_ptr(this->link_identifier, this->base_dn, this->search_filter)) {
- this->entriesCount = ldap_count_entries(this->link_identifier, this->result_identifier);
- return 1;
- }
- return 0;
- }
-
- int getEntries() {
- int i=0;
- entry = new ldap_entry(this->link_identifier);
- entry->r_e_i = ldap_first_entry(this->link_identifier, this->result_identifier);
- while(entry->r_e_i) {
- entry->dn = ldap_get_dn(this->link_identifier, entry->r_e_i);
- entry->getAttributes();
- this->entries[i] = $entry;
- i++;
- r = entry->r_e_i;
- entry = new ldap_entry(this->link_identifier);
- entry->r_e_i = ldap_next_entry(this->link_identifier, r);
- }
-// ldap_free_result(this->result_identifier);
- }
-
- void displayEntries() {
- printf(this->formatHTMLEntries());
- }
-
- void loadAttributeNames() {
- global $attribute_names;
- fp = fopen("at.conf2", "r");
- int i = 0;
- while (!feof(fp)) {
- string = "";
- foo = "";
- string = fgets(fp, 80);
- foo = strtok(string, " ");
- attribute_names[i][0] = foo;
- foo = strtok("\n");
- attribute_names[i][1] = foo;
- i++;
- }
- return $attribute_names;
- }
- char* formatHTMLBaseDN(char *dn) {
- global $FILE, $host;
- char *string = "";
- attribs = ldap_explode_dn(dn, 0);
- names = ldap_explode_dn(dn, 1);
- for (int i=0; i<attribs["count"]; i++) {
- s = attribs[i];
- for (j=i+1; j<attribs["count"]; j++) {
- s = sprintf(",", attribs[j]);
- }
- if ((s[0] == "c") && (s[1] == "n")) {
- string = sprintf("<a href=".$FILE."?ldap_action=read&base_dn=".urlencode($s).">".$names[$i]."</a>, ";
- }
- else {
- $string .= "<a href=".$FILE."?ldap_action=list&base_dn=".urlencode($s).">".$names[$i]."</a>, ";
- }
- }
- return $string;
- }
-
- cfunction formatHTMLEntries() {
- $string = "";
- $string .= '<table width="100%" border=1 cellpadding=0 cellspacing=0>';
- $string .= "\n";
- for ($i=0; $i<count($this->entries); $i++) {
- $e = $this->entries[$i];
- $string .= $e->formatHTMLAttributes();
- }
- $string .= "</table>\n";
- return $string;
- }
-
- cfunction calculateTime($string, $s_t, $e_t) {
- $tok1 = strtok($s_t, " ");
- $msecs1 = $tok1;
- $tok1 = strtok(" ");
- $secs1 = $tok1;
-
- $tok2 = strtok($e_t, " ");
- $msecs2 = $tok2;
- $tok2 = strtok(" ");
- $secs2 = $tok2;
- $t_t = (float) ($secs2 + $msecs2) - (float) ($secs1 + $msecs1);
- echo "execution time for <b>".$string."</b> : <b>".$t_t."</b> seconds<br>\n";
- // echo "start: ".$secs1."<br>\n";
- // echo "end: ".$secs2."<br>\n";
- return (float) $t_t;
- }
-
- cfunction stripString($string, $tokens) {
- $s = $string;
- for ($i=0; $i<count($tokens); $i++) {
- $result = "";
- $tok = strtok($s, $tokens[$i]);
- while($tok) {
- $result .= $tok;
- // echo "result = ".$result."\n";
- $tok = strtok($tokens[$i]);
- }
- $s = $result;
- // echo "s = ".$s."\n";
- }
- // echo "result = ".$result."\n";
- return $result;
- }
-}
-?>
#include <ldap.h>
#include <My_Window.h>
#include <Gtk_LdapItem.h>
-#include <Gtk_LdapTreeItem.h>
+#include <Gtk_LdapServer.h>
int main(int argc, char **argv) {
My_Window *window;
Gtk_LdapItem *treeresult;
Gtk_Tree *tree, *subtree;
- Gtk_LdapTreeItem *treeitem;
+ Gtk_Tree *machine, *machinetree;
+ Gtk_LdapServer *treeitem;
Gtk_Viewport *viewport;
- LDAPMessage **thing;
- LDAP *ld;
char *host = NULL;
char *base_dn = NULL;
int c, port = 0;
}
}
-// if (base_dn == NULL) base_dn = ldap_get_option(NULL, LDAP_OPT_BASE);
- if (base_dn == NULL) base_dn = "o=University of Michigan, c=US";
+// if (base_dn == NULL) base_dn = "o=University of Michigan, c=US";
if (host == NULL) ldap_get_option(NULL, LDAP_OPT_HOST_NAME, host);
//host = "localhost";
+ cout << host << endl;
if (port == 0) port = LDAP_PORT;
Gtk_Main m(&argc, &argv);
window = new My_Window(GTK_WINDOW_TOPLEVEL);
- if ((ld = ldap_open(host, port)) == NULL) {
- perror("connection");
- }
-
tree = new Gtk_Tree();
- treeresult = window->make_tree(window, ld, base_dn);
- treeitem = new Gtk_LdapTreeItem(*treeresult->treeitem);
-// treeresult->treeitem->setType(ROOT_NODE);
+ treeitem = new Gtk_LdapServer(window, host, port);
tree->append(*treeitem);
- if (treeresult->tree != NULL) {
- subtree = new Gtk_Tree(*treeresult->tree);
- // cout << "Inserting " << base_dn << " into root" << endl;
- treeitem->set_subtree(*subtree);
- }
treeitem->show();
viewport = new Gtk_Viewport();
viewport->add(tree);