diff --git a/sflphone-client-gnome/src/config/tlsadvanceddialog.c b/sflphone-client-gnome/src/config/tlsadvanceddialog.c index bb0adea2805b8a4770f8fd1cc127665786994426..f93616bbbdb4e0ad49d8a937ed40c9b2fa9dd4c7 100644 --- a/sflphone-client-gnome/src/config/tlsadvanceddialog.c +++ b/sflphone-client-gnome/src/config/tlsadvanceddialog.c @@ -61,15 +61,7 @@ void show_advanced_tls_options(GHashTable * properties) gtk_label_set_markup(GTK_LABEL(label), description); gtk_table_attach(GTK_TABLE(table), label, 0, 3, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - label = gtk_label_new(_("TLS listener port")); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - GtkWidget * spinTlsPort; - spinTlsPort = gtk_spin_button_new_with_range(1, 65535, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinTlsPort); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinTlsPort), 5061); - gtk_table_attach(GTK_TABLE(table), spinTlsPort, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - + gchar * tls_port; gchar * tls_ca_list_file; gchar * tls_certificate_file; gchar * tls_private_key_file; @@ -84,6 +76,7 @@ void show_advanced_tls_options(GHashTable * properties) gchar * negotiation_timeout_msec; if (properties != NULL) { + tls_port = g_hash_table_lookup(properties, TLS_PORT); tls_ca_list_file = g_hash_table_lookup(properties, TLS_CA_LIST_FILE); tls_certificate_file = g_hash_table_lookup(properties, TLS_CERTIFICATE_FILE); tls_private_key_file = g_hash_table_lookup(properties, TLS_PRIVATE_KEY_FILE); @@ -99,13 +92,23 @@ void show_advanced_tls_options(GHashTable * properties) DEBUG("ca_list_file %s", tls_ca_list_file); DEBUG("certificate_file %s", tls_certificate_file); + DEBUG("tls port %s", tls_port); } + label = gtk_label_new(_("TLS listener port")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + GtkWidget * spinTlsPort; + spinTlsPort = gtk_spin_button_new_with_range(1, 65535, 1); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinTlsPort); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinTlsPort), g_ascii_strtod(tls_port, NULL)); + gtk_table_attach(GTK_TABLE(table), spinTlsPort, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + label = gtk_label_new( _("Certificate of Authority list")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_table_attach (GTK_TABLE(table), label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); GtkWidget * caListFileChooser; - caListFileChooser = gtk_file_chooser_button_new(_("Choose a CA list file"), GTK_FILE_CHOOSER_ACTION_OPEN); + caListFileChooser = gtk_file_chooser_button_new(_("Choose a CA list file (optional)"), GTK_FILE_CHOOSER_ACTION_OPEN); gtk_table_attach (GTK_TABLE(table), caListFileChooser, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); if (tls_ca_list_file == NULL) { @@ -120,7 +123,7 @@ void show_advanced_tls_options(GHashTable * properties) gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_table_attach (GTK_TABLE(table), label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); GtkWidget * certificateFileChooser; - certificateFileChooser = gtk_file_chooser_button_new(_("Choose a CA list file"), GTK_FILE_CHOOSER_ACTION_OPEN); + certificateFileChooser = gtk_file_chooser_button_new(_("Choose a public endpoint certificate (optional)"), GTK_FILE_CHOOSER_ACTION_OPEN); gtk_table_attach (GTK_TABLE(table), certificateFileChooser, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); if (tls_certificate_file == NULL) { @@ -131,23 +134,21 @@ void show_advanced_tls_options(GHashTable * properties) g_object_unref(file); } - label = gtk_label_new_with_mnemonic (_("Certificate private key")); + label = gtk_label_new(("Private key file")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_table_attach (GTK_TABLE(table), label, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - GtkWidget * privateKeyEntry; -#if GTK_CHECK_VERSION(2,16,0) - privateKeyEntry = gtk_entry_new(); - gtk_entry_set_icon_from_stock (GTK_ENTRY (privateKeyEntry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_DIALOG_AUTHENTICATION); -#else - privateKeyEntry = sexy_icon_entry_new(); - image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION , GTK_ICON_SIZE_SMALL_TOOLBAR ); - sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(privateKeyEntry), SEXY_ICON_ENTRY_PRIMARY , GTK_IMAGE(image) ); -#endif - gtk_entry_set_visibility(GTK_ENTRY(privateKeyEntry), FALSE); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), privateKeyEntry); - gtk_entry_set_text(GTK_ENTRY(privateKeyEntry), tls_private_key_file); - gtk_table_attach (GTK_TABLE(table), privateKeyEntry, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - + gtk_table_attach (GTK_TABLE(table), label, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + GtkWidget * privateKeyFileChooser; + privateKeyFileChooser = gtk_file_chooser_button_new(_("Choose a private key file (optional)"), GTK_FILE_CHOOSER_ACTION_OPEN); + gtk_table_attach (GTK_TABLE(table), privateKeyFileChooser, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + if (tls_private_key_file == NULL) { + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(privateKeyFileChooser), g_get_home_dir()); + } else { + GFile * file = g_file_new_for_path(tls_private_key_file); + gtk_file_chooser_set_file (GTK_FILE_CHOOSER(privateKeyFileChooser), file, NULL); + g_object_unref(file); + } + label = gtk_label_new_with_mnemonic (_("Password for the private key")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_table_attach (GTK_TABLE(table), label, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); @@ -259,16 +260,18 @@ void show_advanced_tls_options(GHashTable * properties) gtk_widget_show_all(ret); if(gtk_dialog_run(GTK_DIALOG(tlsDialog)) == GTK_RESPONSE_ACCEPT) { - + g_hash_table_replace(properties, + g_strdup(TLS_PORT), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(spinTlsPort)))); + g_hash_table_replace(properties, g_strdup(TLS_CA_LIST_FILE), g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(caListFileChooser)))); g_hash_table_replace(properties, g_strdup(TLS_CERTIFICATE_FILE), g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(certificateFileChooser)))); - g_hash_table_replace(properties, - g_strdup(TLS_PRIVATE_KEY_FILE), - g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(privateKeyEntry)))); + g_hash_table_replace(properties, + g_strdup(TLS_PRIVATE_KEY_FILE), g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(privateKeyFileChooser)))); g_hash_table_replace(properties, g_strdup(TLS_PASSWORD), diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h index 7a1b5aff3821596cdc2cd1c61cc72f341119ee4f..b1c1dc78ec560c281e2338a14ac237e11be2fd15 100644 --- a/sflphone-client-gnome/src/sflphone_const.h +++ b/sflphone-client-gnome/src/sflphone_const.h @@ -68,6 +68,7 @@ #define SDES_TLS "2" #define TLS_ENABLE "TLS.enable" +#define TLS_PORT "TLS.port" #define TLS_CA_LIST_FILE "TLS.certificateListFile" #define TLS_CERTIFICATE_FILE "TLS.certificateFile" #define TLS_PRIVATE_KEY_FILE "TLS.privateKeyFile" diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index 4470d12c969be2fcdd5e812bf1aae016e0154b01..bb8d112322b9d6f895ffa0ad050d1987ff6c6556 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -2792,7 +2792,7 @@ void ManagerImpl::setAccountDetails (const std::string& accountID, const std::ma setConfig(accountID, SRTP_KEY_EXCHANGE, srtpKeyExchange); setConfig(accountID, TLS_ENABLE, tlsEnable); - setConfig(accountID, TLS_ENABLE, tlsPort); + setConfig(accountID, TLS_PORT, tlsPort); setConfig(accountID, TLS_CA_LIST_FILE, tlsCaListFile); setConfig(accountID, TLS_CERTIFICATE_FILE, tlsCertificateFile); setConfig(accountID, TLS_PRIVATE_KEY_FILE, tlsPrivateKeyFile);