/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2001-2012 Match Grun and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2001-2015 Match Grun and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
*/
/*
#include "manage_window.h"
#include "gtkutils.h"
#include "prefs_gtk.h"
+#include "passwordstore.h"
#define PAGE_BASIC 0
#define PAGE_SEARCH 1
GtkWidget *spinbtn_queryage;
GtkWidget *check_dynsearch;
GtkWidget *check_matchoption;
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
GtkWidget *enable_ssl;
GtkWidget *enable_tls;
#endif
sPass = gtk_editable_get_chars( GTK_EDITABLE(ldapedit.entry_bindPW), 0, -1 );
iPort = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( ldapedit.spinbtn_port ) );
iTime = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( ldapedit.spinbtn_timeout ) );
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
tls = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ldapedit.enable_tls));
ssl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ldapedit.enable_ssl));
#endif
- g_strchomp( sHost ); g_strchug( sHost );
- g_strchomp( sBind ); g_strchug( sBind );
- g_strchomp( sPass ); g_strchug( sPass );
+ g_strstrip( sHost );
+ g_strstrip( sBind );
+ g_strstrip( sPass );
if( *sHost != '\0' ) {
/* Test connection to server */
debug_print("ldap server: %s\nport: %d\nssl: %d\ntls: %d\nbindDN: %s\n", sHost, iPort, ssl, tls, sBind);
}
node = g_list_next( node );
}
- mgu_free_dlist( baseDN );
+ g_list_free_full( baseDN, g_free );
baseDN = node = NULL;
flg = TRUE;
} else {
sPass = gtk_editable_get_chars( GTK_EDITABLE(ldapedit.entry_bindPW), 0, -1 );
iPort = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( ldapedit.spinbtn_port ) );
iTime = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( ldapedit.spinbtn_timeout ) );
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
tls = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ldapedit.enable_tls));
ssl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ldapedit.enable_ssl));
#endif
- g_strchomp( sHost ); g_strchug( sHost );
- g_strchomp( sBind ); g_strchug( sBind );
- g_strchomp( sPass ); g_strchug( sPass );
+ g_strstrip( sHost );
+ g_strstrip( sBind );
+ g_strstrip( sPass );
debug_print("ldap server: %s\nport: %d\nssl: %d\ntls: %d\nbindDN: %s\n", sHost, iPort, ssl, tls, sBind);
selectDN = edit_ldap_basedn_selection( sHost, iPort, sBase, iTime, sBind, sPass, ssl, tls );
if( selectDN ) {
debug_print("creating edit_ldap_dialog\n");
window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "editldap");
- gtk_widget_set_size_request(window, 450, -1);
gtk_container_set_border_width(GTK_CONTAINER(window), 0);
gtk_window_set_title(GTK_WINDOW(window), _("Edit LDAP Server"));
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+ gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG);
g_signal_connect(G_OBJECT(window), "delete_event",
G_CALLBACK(edit_ldap_delete_event),
cancelled);
GtkWidget *hbox_spin;
GtkAdjustment *spinbtn_port_adj;
GtkWidget *spinbtn_port;
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
GtkWidget *enable_ssl_checkbtn, *enable_tls_checkbtn;
#endif
GtkWidget *entry_baseDN;
CLAWS_SET_TIP(entry_server, _(
"This is the hostname of the server. For example, " \
- "\"ldap.mydomain.com\" may be appropriate for the " \
- "\"mydomain.com\" organization. An IP address may also be " \
+ "\"ldap.example.org\" may be appropriate for the " \
+ "\"example.org\" organization. An IP address may also be " \
"used. You may specify \"localhost\" if running an LDAP " \
"server on the same computer as Claws Mail." ));
spinbtn_port_adj = GTK_ADJUSTMENT(gtk_adjustment_new (389, 1, 65535, 1, 1000, 0));
spinbtn_port = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_port_adj), 1, 0);
gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_port, TRUE, FALSE, 0);
- gtk_widget_set_size_request (spinbtn_port, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_port), TRUE);
-#ifdef USE_LDAP_TLS
- enable_tls_checkbtn = gtk_check_button_new_with_label(_("TLS"));
- enable_ssl_checkbtn = gtk_check_button_new_with_label(_("SSL"));
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
+ enable_tls_checkbtn = gtk_check_button_new_with_label(_("STARTTLS"));
+ enable_ssl_checkbtn = gtk_check_button_new_with_label(_("SSL/TLS"));
SET_TOGGLE_SENSITIVITY_REVERSE(enable_tls_checkbtn, enable_ssl_checkbtn);
SET_TOGGLE_SENSITIVITY_REVERSE(enable_ssl_checkbtn, enable_tls_checkbtn);
CLAWS_SET_TIP(enable_tls_checkbtn, _(
- "Enable secure connection to the LDAP server via TLS. "
+ "Enable secure connection to the LDAP server via STARTTLS. "
+ "Connection starts unencrypted and is secured by STARTTLS command. "
"If connection fails, be sure to check the correct "
"configuration in ldap.conf (TLS_CACERTDIR and TLS_REQCERT fields)." ));
CLAWS_SET_TIP(enable_ssl_checkbtn, _(
- "Enable secure connection to the LDAP server via SSL. "
+ "Enable secure connection to the LDAP server via SSL/TLS. "
"If connection fails, be sure to check the correct "
"configuration in ldap.conf (TLS_CACERTDIR and TLS_REQCERT fields)." ));
ldapedit.entry_server = entry_server;
ldapedit.spinbtn_port = spinbtn_port;
ldapedit.entry_baseDN = entry_baseDN;
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
ldapedit.enable_ssl = enable_ssl_checkbtn;
ldapedit.enable_tls = enable_tls_checkbtn;
LDAPCTL_DFL_QUERY_AGE, 1, LDAPCTL_MAX_QUERY_AGE, 10, 1000, 0 ));
spinbtn_queryage = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_queryage_adj), 1, 0);
gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_queryage, FALSE, FALSE, 0);
- gtk_widget_set_size_request (spinbtn_queryage, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_queryage), TRUE);
gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
ldapedit.check_matchoption = check_matchoption;
}
+static void showpwd_checkbtn_toggled(GtkToggleButton *button,
+ gpointer user_data)
+{
+ gboolean active = gtk_toggle_button_get_active(button);
+ GtkWidget *entry = GTK_WIDGET(user_data);
+
+ gtk_entry_set_visibility(GTK_ENTRY(entry), active);
+}
+
static void addressbook_edit_ldap_page_extended( gint pageNum, gchar *pageLbl ) {
GtkWidget *vbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *entry_bindDN;
GtkWidget *entry_bindPW;
+ GtkWidget *showpwd_checkbtn;
GtkWidget *hbox_spin;
GtkAdjustment *spinbtn_timeout_adj;
GtkWidget *spinbtn_timeout;
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
entry_bindDN = gtk_entry_new();
- gtk_table_attach(GTK_TABLE(table), entry_bindDN, 1, 2, top, (top + 1),
+ gtk_table_attach(GTK_TABLE(table), entry_bindDN, 1, 3, top, (top + 1),
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
CLAWS_SET_TIP(entry_bindDN, _(
gtk_table_attach(GTK_TABLE(table), entry_bindPW, 1, 2, top, (top + 1),
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
gtk_entry_set_visibility(GTK_ENTRY(entry_bindPW), FALSE);
-#ifdef MAEMO
- hildon_gtk_entry_set_input_mode(GTK_ENTRY(entry_bindPW),
- HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_INVISIBLE);
-#endif
CLAWS_SET_TIP(entry_bindPW, _(
"The password to be used when connecting as the \"Bind DN\" " \
"user." ));
+ showpwd_checkbtn = gtk_check_button_new_with_label (_("Show password"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showpwd_checkbtn), FALSE);
+ g_signal_connect(G_OBJECT(showpwd_checkbtn), "toggled",
+ G_CALLBACK(showpwd_checkbtn_toggled), entry_bindPW);
+ gtk_table_attach(GTK_TABLE(table), showpwd_checkbtn, 2, 3, top, (top + 1),
+ 0, 0, 0, 0);
+
/* Next row */
++top;
label = gtk_label_new(_("Timeout (secs)"));
spinbtn_timeout_adj = GTK_ADJUSTMENT(gtk_adjustment_new (0, 0, 300, 1, 10, 0));
spinbtn_timeout = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_timeout_adj), 1, 0);
gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_timeout, FALSE, FALSE, 0);
- gtk_widget_set_size_request (spinbtn_timeout, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_timeout), TRUE);
gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
spinbtn_maxentry_adj = GTK_ADJUSTMENT(gtk_adjustment_new (0, 0, 500, 1, 10, 0));
spinbtn_maxentry = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_maxentry_adj), 1, 0);
gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_maxentry, FALSE, FALSE, 0);
- gtk_widget_set_size_request (spinbtn_maxentry, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_maxentry), TRUE);
gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
GTK_TOGGLE_BUTTON( ldapedit.check_dynsearch), TRUE );
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON( ldapedit.check_matchoption), FALSE );
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON( ldapedit.enable_ssl), FALSE );
gtk_toggle_button_set_active(
*/
static void edit_ldap_set_fields( LdapServer *server ) {
LdapControl *ctl;
- gchar *crit;
- gchar *pwd;
+ gchar *crit, *pwd;
if( ldapsvr_get_name( server ) )
gtk_entry_set_text(GTK_ENTRY(ldapedit.entry_name),
if( ctl->bindDN )
gtk_entry_set_text(
GTK_ENTRY(ldapedit.entry_bindDN), ctl->bindDN );
- if( ctl->bindPass ) {
- pwd = ldapctl_get_bind_password( ctl );
- gtk_entry_set_text( GTK_ENTRY(ldapedit.entry_bindPW), pwd );
+
+ pwd = passwd_store_get(PWS_CORE, "LDAP", ctl->hostName);
+ gtk_entry_set_text( GTK_ENTRY(ldapedit.entry_bindPW),
+ (pwd ? pwd : ""));
+ if (pwd != NULL) {
+ memset(pwd, 0, strlen(pwd));
g_free(pwd);
}
+
gtk_spin_button_set_value(
GTK_SPIN_BUTTON(ldapedit.spinbtn_timeout), ctl->timeOut );
gtk_spin_button_set_value(
GTK_SPIN_BUTTON(ldapedit.spinbtn_maxentry), ctl->maxEntries );
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(ldapedit.enable_tls), ctl->enableTLS );
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON( ldapedit.check_dynsearch ) );
bMatch = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON( ldapedit.check_matchoption ) );
-#ifdef USE_LDAP_TLS
+#if (defined USE_LDAP_TLS || defined G_OS_WIN32)
ssl = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON( ldapedit.enable_ssl ) );
tls = gtk_toggle_button_get_active(
ldapctl_set_host( ctl, sHost );
ldapctl_set_base_dn( ctl, sBase );
ldapctl_set_bind_dn( ctl, sBind );
- ldapctl_set_bind_password( ctl, sPass, TRUE, TRUE );
ldapctl_set_port( ctl, iPort );
ldapctl_set_max_entries( ctl, iMaxE );
ldapctl_set_timeout( ctl, iTime );
addrindex_save_data(addrIndex);
+ passwd_store_set(PWS_CORE, "LDAP", sHost, sPass, FALSE);
+ passwd_store_write_config();
+
/* Save attributes */
editldap_parse_criteria( sCrit, ctl );
g_free( sHost );
g_free( sBase );
g_free( sBind );
- g_free( sPass );
g_free( sCrit );
+ if (sPass != NULL && strlen(sPass) > 0)
+ memset(sPass, 0, strlen(sPass));
+ g_free( sPass );
+
return ads;
}