[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 */
 |