Thread: [gq-commit] gq/src util.c,1.46,1.47 common.h,1.18,1.19 configfile.h,1.17,1.18 prefs.c,1.25,1.26
Status: Beta
Brought to you by:
sur5r
From: <sta...@us...> - 2002-09-18 09:49:26
|
Update of /cvsroot/gqclient/gq/src In directory usw-pr-cvs1:/tmp/cvs-serv4619/src Modified Files: util.c common.h configfile.h prefs.c Log Message: * Allow for ldap/ldaps URIs instead of an LDAP Host/Port combination * Add some timeout options to the LDAP connection Index: util.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/util.c,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** util.c 18 Sep 2002 07:22:04 -0000 1.46 --- util.c 18 Sep 2002 09:49:23 -0000 1.47 *************** *** 93,107 **** *ld_out = NULL; ! ld = ldap_init(server->ldaphost, server->ldapport); ! server->server_down = 0; ! ! i = 30; ! ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &i); ! ! #ifdef LDAP_OPT_NETWORK_TIMEOUT ! nettimeout.tv_sec = 15; ! nettimeout.tv_usec = 0; ! ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &nettimeout); #endif if(!ld) { --- 93,111 ---- *ld_out = NULL; ! if (strchr(server->ldaphost, ':') != NULL) { ! #ifdef HAVE_LDAP_INITIALIZE ! rc = ldap_initialize(&ld, server->ldaphost); ! if (rc != LDAP_SUCCESS) { ! ld = NULL; ! } ! #else ! ld = NULL; ! snprintf(message, sizeof(message), ! _("Sorry. No URI support available. Your LDAP toolkit does not support LDAP URIs.")); ! error_push(open_context, message); #endif + } else { + ld = ldap_init(server->ldaphost, server->ldapport); + } if(!ld) { *************** *** 111,115 **** --- 115,130 ---- } else { + server->server_down = 0; server->version = LDAP_VERSION2; + + /* setup timeouts */ + i = DEFAULT_LDAP_TIMEOUT; + ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &i); + + #ifdef LDAP_OPT_NETWORK_TIMEOUT + nettimeout.tv_sec = DEFAULT_NETWORK_TIMEOUT; + nettimeout.tv_usec = 0; + ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &nettimeout); + #endif #ifndef HAVE_OPENLDAP12 Index: common.h =================================================================== RCS file: /cvsroot/gqclient/gq/src/common.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** common.h 2 Aug 2002 06:10:11 -0000 1.18 --- common.h 18 Sep 2002 09:49:24 -0000 1.19 *************** *** 33,37 **** #define MAX_SERVERNAME_LEN 64 ! #define MAX_HOSTNAME_LEN 64 #define MAX_NUM_ATTRIBUTES 256 --- 33,37 ---- #define MAX_SERVERNAME_LEN 64 ! #define MAX_HOSTNAME_LEN 1024 #define MAX_NUM_ATTRIBUTES 256 Index: configfile.h =================================================================== RCS file: /cvsroot/gqclient/gq/src/configfile.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** configfile.h 23 Jul 2002 13:50:06 -0000 1.17 --- configfile.h 18 Sep 2002 09:49:24 -0000 1.18 *************** *** 115,118 **** --- 115,125 ---- #define DEFAULT_SHOW_REF 0 + /* The following do not _really_ belong in here right now... */ + /* LDAP Timeout in seconds */ + #define DEFAULT_LDAP_TIMEOUT 30 + + #ifdef LDAP_OPT_NETWORK_TIMEOUT + #define DEFAULT_NETWORK_TIMEOUT 15 + #endif enum searchtype { ST_SEARCH, *************** *** 200,204 **** int config_get_bool(struct configfile *f); void init_ldapserver(struct ldapserver *server); ! char *filename_config(int context); void load_config(void); void config_write(struct writeconfig *wc, char *string); --- 207,215 ---- int config_get_bool(struct configfile *f); void init_ldapserver(struct ldapserver *server); ! ! /* filename_config returns the name of the config file. The returned ! pointer must g_free'd. */ ! gchar *filename_config(int context); ! void load_config(void); void config_write(struct writeconfig *wc, char *string); Index: prefs.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/prefs.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** prefs.c 23 Jul 2002 13:50:06 -0000 1.25 --- prefs.c 18 Sep 2002 09:49:24 -0000 1.26 *************** *** 63,66 **** --- 63,67 ---- char *text, *passwdtext, *passwdtext2; gboolean passwdmatch; + char *ep = NULL; #if HAVE_LDAP_CLIENT_CACHE char *ep; *************** *** 138,142 **** field = get_widget(window, "ldapport"); text = gtk_entry_get_text(GTK_ENTRY(field)); ! server->ldapport = atoi(text); /* Base DN */ --- 139,153 ---- field = get_widget(window, "ldapport"); text = gtk_entry_get_text(GTK_ENTRY(field)); ! ep = NULL; ! server->ldapport = strtol(text, &ep, 10); ! if (ep && *ep) { ! if (*text) { ! single_warning_popup(_("Port must be numeric or empty")); ! return; ! } else { ! /* empty, might have LDAP URI */ ! server->ldapport = -1; ! } ! } /* Base DN */ *************** *** 161,165 **** field = get_widget(window, "maxentries"); text = gtk_entry_get_text(GTK_ENTRY(field)); ! server->maxentries = atoi(text); /* Ask password */ --- 172,185 ---- field = get_widget(window, "maxentries"); text = gtk_entry_get_text(GTK_ENTRY(field)); ! ep = NULL; ! server->maxentries = strtol(text, &ep, 10); ! if (ep && *ep) { ! if (*text) { ! single_warning_popup(_("Maximum number of entries must be numeric or empty")); ! } else { ! /* empty, might have LDAP URI */ ! server->maxentries = 0; ! } ! } /* Ask password */ *************** *** 214,217 **** --- 234,247 ---- } + void host_changed_callback(GtkEditable *host, GtkWidget *port) + { + gchar *s = gtk_editable_get_chars(host, 0, -1); + + if (s) { + gtk_widget_set_sensitive(GTK_WIDGET(port), + (strchr(s, ':') == NULL)); + g_free(s); + } + } void destroy_edit_server_window(GtkWidget *this, gpointer data) *************** *** 279,283 **** GtkWidget *label, *entry, *button; GtkWidget *okbutton, *cancelbutton; ! GtkWidget *bindpw, *bindpw2; int y, z, editing_new_server; char title[MAX_SERVERNAME_LEN + 8]; --- 309,313 ---- GtkWidget *label, *entry, *button; GtkWidget *okbutton, *cancelbutton; ! GtkWidget *bindpw, *bindpw2, *host; int y, z, editing_new_server; char title[MAX_SERVERNAME_LEN + 8]; *************** *** 357,361 **** /* LDAP host */ ! label = gtk_label_new(_("LDAP host")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, .5); gtk_widget_show(label); --- 387,391 ---- /* LDAP host */ ! label = gtk_label_new(_("LDAP Host/URI")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, .5); gtk_widget_show(label); *************** *** 363,367 **** GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); ! entry = gtk_entry_new(); gtk_object_set_data(GTK_OBJECT(editwindow), "ldaphost", entry); gtk_entry_set_text(GTK_ENTRY(entry), server->ldaphost); --- 393,397 ---- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); ! host = entry = gtk_entry_new(); gtk_object_set_data(GTK_OBJECT(editwindow), "ldaphost", entry); gtk_entry_set_text(GTK_ENTRY(entry), server->ldaphost); *************** *** 381,385 **** entry = gtk_entry_new(); gtk_object_set_data(GTK_OBJECT(editwindow), "ldapport", entry); ! snprintf(tmp, sizeof(tmp), "%d", server->ldapport); gtk_entry_set_text(GTK_ENTRY(entry), tmp); gtk_widget_show(entry); --- 411,419 ---- entry = gtk_entry_new(); gtk_object_set_data(GTK_OBJECT(editwindow), "ldapport", entry); ! if (server->ldapport != 0) { ! snprintf(tmp, sizeof(tmp), "%d", server->ldapport); ! } else { ! *tmp = 0; ! } gtk_entry_set_text(GTK_ENTRY(entry), tmp); gtk_widget_show(entry); *************** *** 388,391 **** --- 422,434 ---- gtk_table_attach(GTK_TABLE(table1), entry, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + + /* Callback on HOST to enable/disable port if user enters a colon... */ + + gtk_signal_connect(GTK_OBJECT(host), "changed", + GTK_SIGNAL_FUNC(host_changed_callback), entry); + gtk_editable_changed(GTK_EDITABLE(host)); /* use callback to set + selectable state of + port entry */ /* Base DN */ |