[balsa/wip/gtk4: 220/351] server: Declare it derivable
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 220/351] server: Declare it derivable
- Date: Wed, 23 May 2018 21:35:27 +0000 (UTC)
commit 585119dc8157396bb331e397eef4eb3e0bc0357a
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Wed Mar 14 22:48:16 2018 -0400
server: Declare it derivable
Use G_DECLARE_DERIVABLE_TYPE for LibBalsaServer, make it
private, and provide a complete set of getters and setters.
Still need to check for leaked strings.
libbalsa/imap-server.c | 149 +++++----
libbalsa/imap/imap-commands.c | 2 +-
libbalsa/mailbox_imap.c | 46 ++--
libbalsa/mailbox_pop3.c | 26 +-
libbalsa/mailbox_remote.h | 4 +-
libbalsa/send.c | 14 +-
libbalsa/server.c | 546 ++++++++++++++++++++----------
libbalsa/server.h | 76 +++--
libbalsa/smtp-server.c | 54 ++--
libinit_balsa/assistant_page_directory.c | 4 +-
libinit_balsa/assistant_page_user.c | 14 +-
src/balsa-app.c | 48 ++--
src/folder-conf.c | 27 +-
src/mailbox-conf.c | 89 +++---
src/mailbox-node.c | 11 +-
src/save-restore.c | 23 +-
16 files changed, 681 insertions(+), 452 deletions(-)
---
diff --git a/libbalsa/imap-server.c b/libbalsa/imap-server.c
index 4426a23..ed20750 100644
--- a/libbalsa/imap-server.c
+++ b/libbalsa/imap-server.c
@@ -42,7 +42,7 @@
#include "imap-commands.h"
#include <glib/gi18n.h>
-#define REQ_SSL(s) (LIBBALSA_SERVER(s)->use_ssl)
+#define REQ_SSL(s) libbalsa_server_get_use_ssl(LIBBALSA_SERVER(s))
/** wait 60 seconds for packets */
#define IMAP_CMD_TIMEOUT (60*1000)
@@ -137,13 +137,14 @@ libbalsa_imap_server_get_type(void)
static void libbalsa_imap_server_set_username(LibBalsaServer * server,
const gchar * name)
{
- if(server->host && name) { /* we have been initialized... */
+ if(libbalsa_server_get_host(server) && name) { /* we have been initialized... */
LibBalsaImapServer *imap_server = LIBBALSA_IMAP_SERVER(server);
g_mutex_lock(&imap_servers_lock);
g_hash_table_steal(imap_servers, imap_server->key);
g_free(imap_server->key);
- imap_server->key = g_strdup_printf("%s@%s", name, server->host);
+ imap_server->key =
+ g_strdup_printf("%s@%s", name, libbalsa_server_get_host(server));
g_hash_table_insert(imap_servers, imap_server->key, imap_server);
g_mutex_unlock(&imap_servers_lock);
}
@@ -153,12 +154,13 @@ static void
libbalsa_imap_server_set_host(LibBalsaServer * server,
const gchar * host, gboolean use_ssl)
{
- if(server->user && host) { /* we have been initialized... */
+ if(libbalsa_server_get_user(server) && host) { /* we have been initialized... */
LibBalsaImapServer *imap_server = LIBBALSA_IMAP_SERVER(server);
g_mutex_lock(&imap_servers_lock);
g_hash_table_steal(imap_servers, imap_server->key);
g_free(imap_server->key);
- imap_server->key = g_strdup_printf("%s@%s", server->user, host);
+ imap_server->key =
+ g_strdup_printf("%s@%s", libbalsa_server_get_user(server), host);
g_hash_table_insert(imap_servers, imap_server->key, imap_server);
g_mutex_unlock(&imap_servers_lock);
}
@@ -187,7 +189,7 @@ libbalsa_imap_server_class_init(LibBalsaImapServerClass * klass)
static void
libbalsa_imap_server_init(LibBalsaImapServer * imap_server)
{
- LIBBALSA_SERVER(imap_server)->protocol = "imap";
+ libbalsa_server_set_protocol(LIBBALSA_SERVER(imap_server), "imap");
imap_server->key = NULL;
g_mutex_init(&imap_server->lock);
imap_server->max_connections = MAX_CONNECTIONS_PER_SERVER;
@@ -296,7 +298,7 @@ is_info_cb(ImapMboxHandle *h, ImapResponse rc, const gchar* str, void *arg)
default:
return;
}
- libbalsa_information(it, fmt, is->host, str);
+ libbalsa_information(it, fmt, libbalsa_server_get_host(is), str);
}
@@ -319,14 +321,15 @@ lb_imap_server_info_new(LibBalsaServer *server)
imap_handle_set_monitorcb(handle, monitor_cb, info);
imap_handle_set_infocb(handle, is_info_cb, server);
imap_handle_set_usercb(handle, libbalsa_server_user_cb, server);
- switch(server->tls_mode) {
+ switch(libbalsa_server_get_tls_mode(server)) {
case LIBBALSA_TLS_DISABLED: mode = IMAP_TLS_DISABLED; break;
default:
case LIBBALSA_TLS_ENABLED : mode = IMAP_TLS_ENABLED; break;
case LIBBALSA_TLS_REQUIRED: mode = IMAP_TLS_REQUIRED; break;
}
imap_handle_set_tls_mode(handle, mode);
- imap_handle_set_option(handle, IMAP_OPT_ANONYMOUS, server->try_anonymous);
+ imap_handle_set_option(handle, IMAP_OPT_ANONYMOUS,
+ libbalsa_server_get_try_anonymous(server));
imap_handle_set_option(handle, IMAP_OPT_CLIENT_SORT, TRUE);
#ifdef HAVE_GPGME
/* binary fetches change encoding and the checksums, and
@@ -463,40 +466,47 @@ LibBalsaImapServer* libbalsa_imap_server_new(const gchar *username,
LibBalsaImapServer*
libbalsa_imap_server_new_from_config(void)
{
- LibBalsaServer tmp_server;
+ gchar *user;
+ gchar *host;
LibBalsaImapServer *imap_server;
LibBalsaServer *server;
gboolean d, d1;
gint tls_mode, conn_limit;
- tmp_server.host = libbalsa_conf_get_string("Server");
- if(strrchr(tmp_server.host, ':') == NULL) {
+ host = libbalsa_conf_get_string("Server");
+ if(strrchr(host, ':') == NULL) {
gint port;
port = libbalsa_conf_get_int_with_default("Port", &d);
if (!d) {
- gchar *newhost = g_strdup_printf("%s:%d", tmp_server.host, port);
- g_free(tmp_server.host);
- tmp_server.host = newhost;
+ gchar *newhost = g_strdup_printf("%s:%d", host, port);
+ g_free(host);
+ host = newhost;
}
- }
- tmp_server.user = libbalsa_conf_private_get_string("Username");
- if (!tmp_server.user)
- tmp_server.user = g_strdup(getenv("USER"));
+ }
+ user = libbalsa_conf_private_get_string("Username");
+ if (user == NULL)
+ user = g_strdup(getenv("USER"));
- imap_server = get_or_create(tmp_server.user, tmp_server.host);
+ imap_server = get_or_create(user, host);
server = LIBBALSA_SERVER(imap_server);
- if (server->user) {
- g_free(tmp_server.user);
- g_free(tmp_server.host);
- } else {
- server->user = tmp_server.user;
- server->host = tmp_server.host;
+
+ if (libbalsa_server_get_user(server) == NULL) {
+ gboolean use_ssl;
+
+ libbalsa_server_set_username(server, user);
+ use_ssl = libbalsa_conf_get_bool("SSL=false");
+ use_ssl = use_ssl || libbalsa_server_get_use_ssl(server);
+ libbalsa_server_set_host(server, host, use_ssl);
}
+ g_free(user);
+ g_free(host);
+
d1 = libbalsa_conf_get_bool_with_default("Anonymous", &d);
- if(!d) server->try_anonymous = !!d1;
- server->use_ssl |= libbalsa_conf_get_bool("SSL=false");
+ if(!d) libbalsa_server_set_try_anonymous(server, !!d1);
+
tls_mode = libbalsa_conf_get_int_with_default("TLSMode", &d);
- if(!d) server->tls_mode = tls_mode;
+ if(!d) libbalsa_server_set_tls_mode(server, tls_mode);
+
conn_limit = libbalsa_conf_get_int_with_default("ConnectionLimit", &d);
if(!d) imap_server->max_connections = conn_limit;
d1 = libbalsa_conf_get_bool_with_default("PersistentCache", &d);
@@ -507,62 +517,71 @@ libbalsa_imap_server_new_from_config(void)
if(!d) imap_server->use_status = !!d1;
d1 = libbalsa_conf_get_bool_with_default("UseIdle", &d);
if(!d) imap_server->use_idle = !!d1;
- if (!server->passwd) {
- server->remember_passwd = libbalsa_conf_get_bool("RememberPasswd=false");
- if(server->remember_passwd) {
+
+ if (libbalsa_server_get_passwd(server) == NULL) {
+ gboolean remember_passwd;
+ gchar *passwd = NULL;
+
+ remember_passwd = libbalsa_conf_get_bool("RememberPasswd=false");
+ libbalsa_server_set_remember_passwd(server, remember_passwd);
+ if (remember_passwd) {
#if defined(HAVE_LIBSECRET)
+ const gchar *const_host;
+ const gchar *const_user;
GError *err = NULL;
- server->passwd =
- secret_password_lookup_sync(LIBBALSA_SERVER_SECRET_SCHEMA,
- NULL, &err,
- "protocol", server->protocol,
- "server", server->host,
- "user", server->user,
- NULL);
+ const_host = libbalsa_server_get_host(server);
+ const_user = libbalsa_server_get_user(server);
+ passwd = secret_password_lookup_sync(LIBBALSA_SERVER_SECRET_SCHEMA,
+ NULL, &err,
+ "protocol",
+ libbalsa_server_get_protocol(server),
+ "server", const_host,
+ "user", const_user,
+ NULL);
if (err) {
- libbalsa_free_password(server->passwd);
- server->passwd = NULL;
+ libbalsa_free_password(passwd);
printf(_("Error looking up password for %s@%s: %s\n"),
- server->user, server->host, err->message);
+ const_user, const_host, err->message);
printf(_("Falling back\n"));
g_clear_error(&err);
- server->passwd =
- libbalsa_conf_private_get_string("Password");
- if (server->passwd != NULL) {
- gchar *buff = libbalsa_rot(server->passwd);
- libbalsa_free_password(server->passwd);
- server->passwd = buff;
+
+ passwd = libbalsa_conf_private_get_string("Password");
+ if (passwd != NULL) {
+ gchar *buff = libbalsa_rot(passwd);
+ libbalsa_free_password(passwd);
+ passwd = buff;
+
secret_password_store_sync
(LIBBALSA_SERVER_SECRET_SCHEMA, NULL,
- _("Balsa passwords"), server->passwd, NULL, &err,
- "protocol", server->protocol,
- "server", server->host,
- "user", server->user,
+ _("Balsa passwords"), passwd, NULL, &err,
+ "protocol", libbalsa_server_get_protocol(server),
+ "server", const_host,
+ "user", const_user,
NULL);
/* We could in principle clear the password in the
* config file here but we do not for the backward
* compatibility. */
if (err) {
printf(_("Error storing password for %s@%s: %s\n"),
- server->user, server->host, err->message);
+ const_user, const_host, err->message);
g_error_free(err);
}
}
}
#else
- server->passwd = libbalsa_conf_private_get_string("Password");
- if (server->passwd != NULL) {
- gchar *buff = libbalsa_rot(server->passwd);
- libbalsa_free_password(server->passwd);
- server->passwd = buff;
+ passwd = libbalsa_conf_private_get_string("Password");
+ if (passwd != NULL) {
+ gchar *buff = libbalsa_rot(passwd);
+ libbalsa_free_password(passwd);
+ passwd = buff;
}
#endif /* defined(HAVE_LIBSECRET) */
}
- if(server->passwd && server->passwd[0] == '\0') {
- libbalsa_free_password(server->passwd);
- server->passwd = NULL;
+ if (passwd != NULL && passwd[0] == '\0') {
+ g_clear_pointer(&passwd, libbalsa_free_password);
}
+ libbalsa_server_set_password(server, passwd);
}
return imap_server;
}
@@ -591,7 +610,7 @@ handle_connection_error(int rc, struct handle_info *info,
case IMAP_CONNECT_FAILED:
g_set_error(err, LIBBALSA_MAILBOX_ERROR,
LIBBALSA_MAILBOX_NETWORK_ERROR,
- _("Cannot connect to %s"), server->host);
+ _("Cannot connect to %s"), libbalsa_server_get_host(server));
break;
case IMAP_AUTH_CANCELLED:
g_set_error(err, LIBBALSA_MAILBOX_ERROR,
@@ -661,7 +680,7 @@ libbalsa_imap_server_get_handle(LibBalsaImapServer *imap_server, GError **err)
if(imap_mbox_is_disconnected(info->handle)) {
ImapResult rc;
- rc=imap_mbox_handle_connect(info->handle, server->host,
+ rc=imap_mbox_handle_connect(info->handle, libbalsa_server_get_host(server),
REQ_SSL(server));
if(rc != IMAP_SUCCESS) {
handle_connection_error(rc, info, server, err);
@@ -751,7 +770,7 @@ libbalsa_imap_server_get_handle_with_user(LibBalsaImapServer *imap_server,
g_set_error(err, LIBBALSA_MAILBOX_ERROR,
LIBBALSA_MAILBOX_TOOMANYOPEN_ERROR,
_("Exceeded the number of connections per server %s"),
- server->host);
+ libbalsa_server_get_host(server));
g_mutex_unlock(&imap_server->lock);
return NULL;
}
@@ -759,7 +778,7 @@ libbalsa_imap_server_get_handle_with_user(LibBalsaImapServer *imap_server,
if (imap_mbox_is_disconnected(info->handle)) {
ImapResult rc;
- rc=imap_mbox_handle_connect(info->handle, server->host,
+ rc=imap_mbox_handle_connect(info->handle, libbalsa_server_get_host(server),
REQ_SSL(server));
if(rc != IMAP_SUCCESS) {
handle_connection_error(rc, info, server, err);
diff --git a/libbalsa/imap/imap-commands.c b/libbalsa/imap/imap-commands.c
index 6cfbc9e..57f3838 100644
--- a/libbalsa/imap/imap-commands.c
+++ b/libbalsa/imap/imap-commands.c
@@ -1395,7 +1395,7 @@ imap_mbox_handle_fetch_body(ImapMboxHandle* handle,
ImapFetchBodyOptions options,
ImapFetchBodyCb body_cb, void *arg)
{
- char cmd[160];
+ char cmd[200];
ImapFetchBodyInternalCb fcb;
void *farg;
ImapResponse rc;
diff --git a/libbalsa/mailbox_imap.c b/libbalsa/mailbox_imap.c
index 2bbb8ed..0433502 100644
--- a/libbalsa/mailbox_imap.c
+++ b/libbalsa/mailbox_imap.c
@@ -363,7 +363,7 @@ libbalsa_mailbox_imap_new(void)
void
libbalsa_mailbox_imap_update_url(LibBalsaMailboxImap* mailbox)
{
- LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
g_free(LIBBALSA_MAILBOX(mailbox)->url);
LIBBALSA_MAILBOX(mailbox)->url = libbalsa_imap_url(s, mailbox->path);
@@ -470,7 +470,7 @@ get_header_cache_path(LibBalsaMailboxImap *mimap)
LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE(mimap)->server;
gchar *cache_dir = get_cache_dir(TRUE); /* FIXME */
gchar *header_file = g_strdup_printf("%s@%s-%s-%u-headers2",
- s->user, s->host,
+ libbalsa_server_get_user(s), libbalsa_server_get_host(s),
(mimap->path ? mimap->path : "INBOX"),
mimap->uid_validity);
gchar *encoded_path = libbalsa_urlencode(header_file);
@@ -495,7 +495,7 @@ get_cache_name_pair(LibBalsaMailboxImap* mailbox, const gchar *type,
res[0] = get_cache_dir(is_persistent);
fname = g_strdup_printf("%s@%s-%s-%u-%u-%s",
- s->user, s->host,
+ libbalsa_server_get_user(s), libbalsa_server_get_host(s),
(mailbox->path ? mailbox->path : "INBOX"),
uid_validity, uid, type);
res[1] = libbalsa_urlencode(fname);
@@ -566,7 +566,7 @@ clean_dir(const char *dir_name, off_t cache_size)
static gboolean
clean_cache(LibBalsaMailbox* mailbox)
{
- LibBalsaServer *s= LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ LibBalsaServer *s= LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
gboolean is_persistent =
libbalsa_imap_server_has_persistent_cache(LIBBALSA_IMAP_SERVER(s));
gchar* dir;
@@ -642,7 +642,7 @@ libbalsa_mailbox_imap_get_handle(LibBalsaMailboxImap *mimap, GError **err)
g_return_val_if_fail(LIBBALSA_MAILBOX_IMAP(mimap), NULL);
if(!mimap->handle) {
- LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_SERVER(mimap);
+ LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mimap);
LibBalsaImapServer *imap_server;
if (!LIBBALSA_IS_IMAP_SERVER(server))
return NULL;
@@ -657,7 +657,7 @@ libbalsa_mailbox_imap_get_handle(LibBalsaMailboxImap *mimap, GError **err)
#define RELEASE_HANDLE(mailbox,handle) \
libbalsa_imap_server_release_handle( \
- LIBBALSA_IMAP_SERVER(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox)),\
+ LIBBALSA_IMAP_SERVER(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox)),\
handle)
static void
@@ -979,7 +979,7 @@ libbalsa_mailbox_imap_get_selected_handle(LibBalsaMailboxImap *mimap,
g_return_val_if_fail(LIBBALSA_MAILBOX_IMAP(mimap), NULL);
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mimap);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mimap);
if (!LIBBALSA_IS_IMAP_SERVER(server))
return NULL;
imap_server = LIBBALSA_IMAP_SERVER(server);
@@ -1285,7 +1285,7 @@ static gboolean
lbm_imap_check(LibBalsaMailbox * mailbox)
{
LibBalsaMailboxImap *mimap = LIBBALSA_MAILBOX_IMAP(mailbox);
- LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
ImapMboxHandle *handle;
gulong id;
@@ -1646,7 +1646,7 @@ libbalsa_mailbox_imap_save_config(LibBalsaMailbox * mailbox,
libbalsa_conf_set_string("Path", mimap->path);
- libbalsa_server_save_config(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox));
+ libbalsa_server_save_config(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox));
if (LIBBALSA_MAILBOX_CLASS(parent_class)->save_config)
LIBBALSA_MAILBOX_CLASS(parent_class)->save_config(mailbox, prefix);
@@ -1750,15 +1750,14 @@ libbalsa_mailbox_imap_reconnect(LibBalsaMailboxImap* mimap)
if (mimap->handle &&
imap_mbox_is_disconnected (mimap->handle)) {
- printf("Reconnecting %s (%u)\n",
- LIBBALSA_MAILBOX_REMOTE_SERVER(mimap)->host,
- (unsigned)time(NULL));
+ const gchar *host =
+ libbalsa_server_get_host(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mimap));
+
+ printf("Reconnecting %s (%u)\n", host, (unsigned)time(NULL));
if (imap_mbox_handle_reconnect
(mimap->handle, &(LIBBALSA_MAILBOX(mimap)->readonly))
== IMAP_SUCCESS)
- printf("Reconnected %s (%u)\n",
- LIBBALSA_MAILBOX_REMOTE_SERVER(mimap)->host,
- (unsigned)time(NULL));
+ printf("Reconnected %s (%u)\n", host, (unsigned)time(NULL));
}
}
@@ -1896,14 +1895,14 @@ libbalsa_imap_delete_folder(LibBalsaMailboxImap *mailbox, GError **err)
gchar *
libbalsa_imap_url(LibBalsaServer * server, const gchar * path)
{
- gchar *enc = libbalsa_urlencode(server->user);
+ gchar *enc = libbalsa_urlencode(libbalsa_server_get_user(server));
gchar *url = g_strdup_printf("imap%s://%s@%s/%s",
#ifdef USE_SSL_TO_SET_IMAPS_IN_URL
server->use_ssl ? "s" : "",
#else
"",
#endif
- enc, server->host,
+ enc, libbalsa_server_get_host(server),
path ? path : "");
g_free(enc);
@@ -2236,7 +2235,7 @@ libbalsa_mailbox_imap_fetch_structure(LibBalsaMailbox *mailbox,
something else, like "audio", "*" - we do not prefetch such
parts yet. Also, we save some RTTS for very small messages by
fetching them in their entirety. */
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
if(!imap_mbox_handle_can_do(mimap->handle, IMCAP_FETCHBODY) ||
libbalsa_imap_server_has_bug(LIBBALSA_IMAP_SERVER(server),
ISBUG_FETCH) ||
@@ -2997,8 +2996,8 @@ libbalsa_mailbox_imap_add_messages(LibBalsaMailbox * mailbox,
struct append_to_cache_data atcd;
gchar *cache_dir;
- atcd.user = s->user;
- atcd.host = s->host;
+ atcd.user = libbalsa_server_get_user(s);
+ atcd.host = libbalsa_server_get_host(s);
atcd.path = mimap->path ? mimap->path : "INBOX";
atcd.cache_dir = cache_dir = get_cache_dir(is_persistent);
atcd.curr_name = macd.outfiles;
@@ -3350,7 +3349,7 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
libbalsa_imap_server_has_persistent_cache(is);
gchar *dir_name = get_cache_dir(is_persistent);
gchar *src_prefix = g_strdup_printf("%s@%s-%s-%u-",
- s->user, s->host,
+ libbalsa_server_get_user(s), libbalsa_server_get_host(s),
(mimap->path
? mimap->path : "INBOX"),
mimap->uid_validity);
@@ -3376,8 +3375,9 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
g_build_filename(dir_name, filename, NULL);
gchar *dst_prefix =
g_strdup_printf("%s@%s-%s-%u-%u%s",
- s->user, s->host,
- (dst_imap->path
+ libbalsa_server_get_user(s),
+ libbalsa_server_get_host(s),
+ (dst_imap->path
? dst_imap->path : "INBOX"),
uid_sequence.uid_validity,
nth, tail);
diff --git a/libbalsa/mailbox_pop3.c b/libbalsa/mailbox_pop3.c
index 6459404..2fe870a 100644
--- a/libbalsa/mailbox_pop3.c
+++ b/libbalsa/mailbox_pop3.c
@@ -468,10 +468,10 @@ libbalsa_mailbox_pop3_startup(LibBalsaServer *server,
guint allow_auth;
/* create the mailbox connection */
- if (server->security == NET_CLIENT_CRYPT_ENCRYPTED) {
- pop = net_client_pop_new(server->host, 995U, server->security, mbox->enable_pipe);
+ if (libbalsa_server_get_security(server) == NET_CLIENT_CRYPT_ENCRYPTED) {
+ pop = net_client_pop_new(libbalsa_server_get_host(server), 995U,
libbalsa_server_get_security(server), mbox->enable_pipe);
} else {
- pop = net_client_pop_new(server->host, 110U, server->security, mbox->enable_pipe);
+ pop = net_client_pop_new(libbalsa_server_get_host(server), 110U,
libbalsa_server_get_security(server), mbox->enable_pipe);
}
if (pop == NULL) {
return NULL;
@@ -488,10 +488,10 @@ libbalsa_mailbox_pop3_startup(LibBalsaServer *server,
net_client_set_timeout(NET_CLIENT(pop), 60U);
/* load client certificate if configured */
- if (server->client_cert) {
+ if (libbalsa_server_get_client_cert(server)) {
g_signal_connect(G_OBJECT(pop), "cert-pass", G_CALLBACK(libbalsa_server_get_cert_pass),
server);
- if (!net_client_set_cert_from_file(NET_CLIENT(pop), server->cert_file, &error)) {
- libbalsa_information(LIBBALSA_INFORMATION_ERROR, _("Cannot load certificate file %s:
%s"), server->cert_file,
+ if (!net_client_set_cert_from_file(NET_CLIENT(pop), libbalsa_server_get_cert_file(server),
&error)) {
+ libbalsa_information(LIBBALSA_INFORMATION_ERROR, _("Cannot load certificate file %s:
%s"), libbalsa_server_get_cert_file(server),
error->message);
g_error_free(error);
g_object_unref(G_OBJECT(pop));
@@ -504,9 +504,9 @@ libbalsa_mailbox_pop3_startup(LibBalsaServer *server,
g_signal_connect(G_OBJECT(pop), "auth", G_CALLBACK(libbalsa_server_get_auth), server);
/* connect server */
- libbalsa_mailbox_progress_notify(LIBBALSA_MAILBOX(mbox), LIBBALSA_NTFY_INIT, INFINITY, _("Connecting
%s…"), server->host);
+ libbalsa_mailbox_progress_notify(LIBBALSA_MAILBOX(mbox), LIBBALSA_NTFY_INIT, INFINITY, _("Connecting
%s…"), libbalsa_server_get_host(server));
if (!net_client_pop_connect(pop, NULL, &error)) {
- libbalsa_information(LIBBALSA_INFORMATION_ERROR, _("POP3 mailbox %s: cannot connect %s: %s"),
name, server->host,
+ libbalsa_information(LIBBALSA_INFORMATION_ERROR, _("POP3 mailbox %s: cannot connect %s: %s"),
name, libbalsa_server_get_host(server),
error->message);
g_error_free(error);
net_client_shutdown(NET_CLIENT(pop));
@@ -542,7 +542,7 @@ update_msg_list(struct fetch_data *fd,
/* load uid's if messages shall be left on the server */
if (!mbox->delete_from_server) {
- uid_prefix = g_strconcat(server->user, "@", server->host, NULL);
+ uid_prefix = g_strconcat(libbalsa_server_get_user(server), "@",
libbalsa_server_get_host(server), NULL);
prefix_len = strlen(uid_prefix);
uids = mp_load_uids(uid_prefix);
*current_uids = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
@@ -623,7 +623,7 @@ libbalsa_mailbox_pop3_check(LibBalsaMailbox * mailbox)
return;
}
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mbox);
/* open the mailbox connection and get the messages list (note: initiates the progress dialogue) */
pop = libbalsa_mailbox_pop3_startup(server, mbox, mailbox->name, &msg_list);
@@ -674,7 +674,7 @@ libbalsa_mailbox_pop3_check(LibBalsaMailbox * mailbox)
/* store uid list */
if (result && !mbox->delete_from_server) {
- gchar *uid_prefix = g_strconcat(server->user, "@", server->host, NULL);
+ gchar *uid_prefix = g_strconcat(libbalsa_server_get_user(server), "@",
libbalsa_server_get_host(server), NULL);
mp_save_uids(current_uids, uid_prefix, &err);
g_free(uid_prefix);
@@ -709,7 +709,7 @@ libbalsa_mailbox_pop3_save_config(LibBalsaMailbox * mailbox,
pop = LIBBALSA_MAILBOX_POP3(mailbox);
- libbalsa_server_save_config(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox));
+ libbalsa_server_save_config(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox));
libbalsa_conf_set_bool("Check", pop->check);
libbalsa_conf_set_bool("Delete", pop->delete_from_server);
@@ -734,7 +734,7 @@ libbalsa_mailbox_pop3_load_config(LibBalsaMailbox * mailbox,
pop = LIBBALSA_MAILBOX_POP3(mailbox);
- libbalsa_server_load_config(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox));
+ libbalsa_server_load_config(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox));
pop->check = libbalsa_conf_get_bool("Check=false");
pop->delete_from_server = libbalsa_conf_get_bool("Delete=false");
diff --git a/libbalsa/mailbox_remote.h b/libbalsa/mailbox_remote.h
index 1e9594f..38749e9 100644
--- a/libbalsa/mailbox_remote.h
+++ b/libbalsa/mailbox_remote.h
@@ -46,8 +46,8 @@
#define LIBBALSA_IS_MAILBOX_REMOTE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), LIBBALSA_TYPE_MAILBOX_REMOTE))
-#define LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox) \
- (LIBBALSA_SERVER(LIBBALSA_MAILBOX_REMOTE(mailbox)->server))
+#define LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox) \
+ ((LibBalsaServer *) LIBBALSA_MAILBOX_REMOTE(mailbox)->server)
typedef struct _LibBalsaMailboxRemoteClass LibBalsaMailboxRemoteClass;
diff --git a/libbalsa/send.c b/libbalsa/send.c
index 97a1952..e23703c 100644
--- a/libbalsa/send.c
+++ b/libbalsa/send.c
@@ -646,7 +646,7 @@ lbs_check_reachable_cb(GObject *object,
libbalsa_information(LIBBALSA_INFORMATION_WARNING,
_("Cannot reach SMTP server %s (%s), any queued message will remain in %s."),
libbalsa_smtp_server_get_name(smtp_server),
- LIBBALSA_SERVER(smtp_server)->host,
+
libbalsa_server_get_host(LIBBALSA_SERVER(smtp_server)),
send_info->outbox->name);
}
@@ -771,20 +771,20 @@ lbs_process_queue_init_session(LibBalsaServer* server)
{
NetClientSmtp* session;
- if (server->security == NET_CLIENT_CRYPT_ENCRYPTED) {
- session = net_client_smtp_new(server->host, 465U, server->security);
+ if (libbalsa_server_get_security(server) == NET_CLIENT_CRYPT_ENCRYPTED) {
+ session = net_client_smtp_new(libbalsa_server_get_host(server), 465U,
libbalsa_server_get_security(server));
} else {
// FIXME - submission (587) is the standard, but most isp's use 25...
- session = net_client_smtp_new(server->host, 587U, server->security);
+ session = net_client_smtp_new(libbalsa_server_get_host(server), 587U,
libbalsa_server_get_security(server));
}
/* load client certificate if configured */
- if (server->client_cert) {
+ if (libbalsa_server_get_client_cert(server)) {
GError* error = NULL;
g_signal_connect(G_OBJECT(session), "cert-pass", G_CALLBACK(libbalsa_server_get_cert_pass),
server);
- if (!net_client_set_cert_from_file(NET_CLIENT(session), server->cert_file, &error)) {
- libbalsa_information(LIBBALSA_INFORMATION_ERROR, _("Cannot load certificate file %s:
%s"), server->cert_file,
+ if (!net_client_set_cert_from_file(NET_CLIENT(session),
libbalsa_server_get_cert_file(server), &error)) {
+ libbalsa_information(LIBBALSA_INFORMATION_ERROR, _("Cannot load certificate file %s:
%s"), libbalsa_server_get_cert_file(server),
error->message);
g_error_free(error);
g_object_unref(session);
diff --git a/libbalsa/server.c b/libbalsa/server.c
index acea0dd..ac51f74 100644
--- a/libbalsa/server.c
+++ b/libbalsa/server.c
@@ -51,7 +51,6 @@ static const SecretSchema server_schema = {
const SecretSchema *LIBBALSA_SERVER_SECRET_SCHEMA = &server_schema;
#endif /* defined(HAVE_LIBSECRET) */
-static GObjectClass *parent_class = NULL;
static void libbalsa_server_class_init(LibBalsaServerClass * klass);
static void libbalsa_server_init(LibBalsaServer * server);
static void libbalsa_server_finalize(GObject * object);
@@ -64,8 +63,6 @@ static void libbalsa_server_real_set_host(LibBalsaServer * server,
/* static gchar* libbalsa_server_real_get_password(LibBalsaServer *server); */
enum {
- SET_USERNAME,
- SET_HOST,
CONFIG_CHANGED,
GET_PASSWORD,
LAST_SIGNAL
@@ -73,31 +70,27 @@ enum {
static guint libbalsa_server_signals[LAST_SIGNAL];
-GType
-libbalsa_server_get_type(void)
-{
- static GType server_type = 0;
-
- if (!server_type) {
- static const GTypeInfo server_info = {
- sizeof(LibBalsaServerClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) libbalsa_server_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(LibBalsaServer),
- 0, /* n_preallocs */
- (GInstanceInitFunc) libbalsa_server_init
- };
-
- server_type =
- g_type_register_static(G_TYPE_OBJECT, "LibBalsaServer",
- &server_info, 0);
- }
+typedef struct {
+ GObject object;
+ gchar *protocol; /**< type of the server: imap, pop3, or smtp. */
- return server_type;
-}
+ gchar *host;
+ gchar *user;
+ gchar *passwd;
+ NetClientCryptMode security;
+ gboolean client_cert;
+ gchar *cert_file;
+ gchar *cert_passphrase;
+ /* We include SSL support in UI unconditionally to preserve config
+ * between SSL and non-SSL builds. We just fail if SSL is requested
+ * in non-SSL build. */
+ LibBalsaTlsMode tls_mode;
+ unsigned use_ssl:1;
+ unsigned remember_passwd:1;
+ unsigned try_anonymous:1; /* user wants anonymous access */
+} LibBalsaServerPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE(LibBalsaServer, libbalsa_server, G_TYPE_OBJECT)
static void
libbalsa_server_class_init(LibBalsaServerClass * klass)
@@ -106,31 +99,8 @@ libbalsa_server_class_init(LibBalsaServerClass * klass)
object_class = G_OBJECT_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
-
object_class->finalize = libbalsa_server_finalize;
- libbalsa_server_signals[SET_USERNAME] =
- g_signal_new("set-username",
- G_TYPE_FROM_CLASS(object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(LibBalsaServerClass,
- set_username),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1,
- G_TYPE_STRING);
- libbalsa_server_signals[SET_HOST] =
- g_signal_new("set-host",
- G_TYPE_FROM_CLASS(object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(LibBalsaServerClass,
- set_host),
- NULL, NULL,
- libbalsa_VOID__POINTER_INT,
- G_TYPE_NONE, 2,
- G_TYPE_POINTER, G_TYPE_INT
- );
libbalsa_server_signals[CONFIG_CHANGED] =
g_signal_new("config-changed",
G_TYPE_FROM_CLASS(object_class),
@@ -154,47 +124,48 @@ libbalsa_server_class_init(LibBalsaServerClass * klass)
LIBBALSA_TYPE_MAILBOX);
klass->set_username = libbalsa_server_real_set_username;
- klass->set_host = libbalsa_server_real_set_host;
+ klass->set_host = libbalsa_server_real_set_host;
klass->get_password = NULL; /* libbalsa_server_real_get_password; */
}
static void
libbalsa_server_init(LibBalsaServer * server)
{
- server->protocol = "pop3"; /* Is this a sane default value? */
- server->host = NULL;
- server->user = NULL;
- server->passwd = NULL;
- server->remember_passwd = TRUE;
- server->use_ssl = FALSE;
- server->tls_mode = LIBBALSA_TLS_ENABLED;
- server->security = NET_CLIENT_CRYPT_STARTTLS;
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ priv->protocol = "pop3"; /* Is this a sane default value? */
+ priv->host = NULL;
+ priv->user = NULL;
+ priv->passwd = NULL;
+ priv->remember_passwd = TRUE;
+ priv->use_ssl = FALSE;
+ priv->tls_mode = LIBBALSA_TLS_ENABLED;
+ priv->security = NET_CLIENT_CRYPT_STARTTLS;
}
static void
libbalsa_server_finalize(GObject * object)
{
- LibBalsaServer *server;
-
- g_return_if_fail(LIBBALSA_IS_SERVER(object));
+ LibBalsaServer *server = (LibBalsaServer *) object;
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
- server = LIBBALSA_SERVER(object);
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
- g_free(server->host);
- g_free(server->user);
- g_free(server->cert_file);
+ g_free(priv->host);
+ g_free(priv->user);
+ g_free(priv->cert_file);
- if (server->passwd != NULL) {
- memset(server->passwd, 0, strlen(server->passwd));
+ if (priv->passwd != NULL) {
+ memset(priv->passwd, 0, strlen(priv->passwd));
}
- libbalsa_free_password(server->passwd);
+ libbalsa_free_password(priv->passwd);
- if (server->cert_passphrase != NULL) {
- memset(server->cert_passphrase, 0, strlen(server->cert_passphrase));
+ if (priv->cert_passphrase != NULL) {
+ memset(priv->cert_passphrase, 0, strlen(priv->cert_passphrase));
}
- g_free(server->cert_passphrase);
+ g_free(priv->cert_passphrase);
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ G_OBJECT_CLASS(libbalsa_server_parent_class)->finalize(object);
}
LibBalsaServer *
@@ -214,18 +185,19 @@ libbalsa_server_set_username(LibBalsaServer * server,
g_return_if_fail(server != NULL);
g_return_if_fail(LIBBALSA_IS_SERVER(server));
- g_signal_emit(G_OBJECT(server),
- libbalsa_server_signals[SET_USERNAME], 0, username);
+ LIBBALSA_SERVER_GET_CLASS(server)->set_username(server, username);
}
void
libbalsa_server_set_password(LibBalsaServer * server,
const gchar * passwd)
{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
g_return_if_fail(LIBBALSA_IS_SERVER(server));
- libbalsa_free_password(server->passwd);
- server->passwd = g_strdup(passwd);
+ libbalsa_free_password(priv->passwd);
+ priv->passwd = g_strdup(passwd);
}
void
@@ -235,9 +207,7 @@ libbalsa_server_set_host(LibBalsaServer * server, const gchar * host,
g_return_if_fail(server != NULL);
g_return_if_fail(LIBBALSA_IS_SERVER(server));
- g_signal_emit(G_OBJECT(server), libbalsa_server_signals[SET_HOST],
- 0, host, use_ssl);
-
+ LIBBALSA_SERVER_GET_CLASS(server)->set_host(server, host, use_ssl);
}
void
@@ -268,21 +238,25 @@ static void
libbalsa_server_real_set_username(LibBalsaServer * server,
const gchar * username)
{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
g_return_if_fail(LIBBALSA_IS_SERVER(server));
- g_free(server->user);
- server->user = g_strdup(username);
+ g_free(priv->user);
+ priv->user = g_strdup(username);
}
static void
libbalsa_server_real_set_host(LibBalsaServer * server, const gchar * host,
gboolean use_ssl)
{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
g_return_if_fail(LIBBALSA_IS_SERVER(server));
- g_free(server->host);
- server->host = g_strdup(host);
- server->use_ssl = use_ssl;
+ g_free(priv->host);
+ priv->host = g_strdup(host);
+ priv->use_ssl = use_ssl;
}
@@ -290,9 +264,11 @@ libbalsa_server_real_set_host(LibBalsaServer * server, const gchar * host,
static gchar *
libbalsa_server_real_get_password(LibBalsaServer * server)
{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
- return g_strdup(server->passwd);
+ return g_strdup(priv->passwd);
}
#endif
@@ -306,98 +282,105 @@ libbalsa_server_real_get_password(LibBalsaServer * server)
void
libbalsa_server_load_config(LibBalsaServer * server)
{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
gboolean d;
- server->host = libbalsa_conf_get_string("Server");
- if(server->host && strrchr(server->host, ':') == NULL) {
+
+ priv->host = libbalsa_conf_get_string("Server");
+ if(priv->host != NULL && strrchr(priv->host, ':') == NULL) {
gint port;
port = libbalsa_conf_get_int_with_default("Port", &d);
if (!d) {
- gchar *newhost = g_strdup_printf("%s:%d", server->host, port);
- g_free(server->host);
- server->host = newhost;
+ gchar *newhost = g_strdup_printf("%s:%d", priv->host, port);
+ g_free(priv->host);
+ priv->host = newhost;
}
- }
- server->use_ssl = libbalsa_conf_get_bool("SSL=false");
+ }
+
+ priv->use_ssl = libbalsa_conf_get_bool("SSL=false");
+
d = FALSE;
- server->tls_mode = libbalsa_conf_get_int_with_default("TLSMode", &d);
- if(d) server->tls_mode = LIBBALSA_TLS_ENABLED;
+ priv->tls_mode = libbalsa_conf_get_int_with_default("TLSMode", &d);
+ if (d)
+ priv->tls_mode = LIBBALSA_TLS_ENABLED;
+
d = FALSE;
- server->security = libbalsa_conf_get_int_with_default("Security", &d);
+ priv->security = libbalsa_conf_get_int_with_default("Security", &d);
if (d) {
- server->security = NET_CLIENT_CRYPT_STARTTLS;
+ priv->security = NET_CLIENT_CRYPT_STARTTLS;
}
- server->user = libbalsa_conf_private_get_string("Username");
- if (!server->user)
- server->user = g_strdup(getenv("USER"));
- server->try_anonymous = libbalsa_conf_get_bool("Anonymous=false");
- server->remember_passwd = libbalsa_conf_get_bool("RememberPasswd=false");
+ priv->user = libbalsa_conf_private_get_string("Username");
+ if (priv->user == NULL)
+ priv->user = g_strdup(getenv("USER"));
+
+ priv->try_anonymous = libbalsa_conf_get_bool("Anonymous=false");
+ priv->remember_passwd = libbalsa_conf_get_bool("RememberPasswd=false");
- if(server->remember_passwd) {
+ if(priv->remember_passwd) {
#if defined(HAVE_LIBSECRET)
GError *err = NULL;
- server->passwd =
+ priv->passwd =
secret_password_lookup_sync(LIBBALSA_SERVER_SECRET_SCHEMA,
NULL, &err,
- "protocol", server->protocol,
- "server", server->host,
- "user", server->user,
+ "protocol", priv->protocol,
+ "server", priv->host,
+ "user", priv->user,
NULL);
if (err) {
- libbalsa_free_password(server->passwd);
- server->passwd = NULL;
+ libbalsa_free_password(priv->passwd);
+ priv->passwd = NULL;
printf(_("Error looking up password for %s@%s: %s\n"),
- server->user, server->host, err->message);
+ priv->user, priv->host, err->message);
printf(_("Falling back\n"));
g_clear_error(&err);
- server->passwd = libbalsa_conf_private_get_string("Password");
- if (server->passwd != NULL) {
- gchar *buff = libbalsa_rot(server->passwd);
- libbalsa_free_password(server->passwd);
- server->passwd = buff;
+ priv->passwd = libbalsa_conf_private_get_string("Password");
+ if (priv->passwd != NULL) {
+ gchar *buff = libbalsa_rot(priv->passwd);
+ libbalsa_free_password(priv->passwd);
+ priv->passwd = buff;
secret_password_store_sync
(LIBBALSA_SERVER_SECRET_SCHEMA, NULL,
- _("Balsa passwords"), server->passwd, NULL, &err,
- "protocol", server->protocol,
- "server", server->host,
- "user", server->user,
+ _("Balsa passwords"), priv->passwd, NULL, &err,
+ "protocol", priv->protocol,
+ "server", priv->host,
+ "user", priv->user,
NULL);
/* We could in principle clear the password in the
* config file here but we do not for the backward
* compatibility. */
if (err) {
printf(_("Error storing password for %s@%s: %s\n"),
- server->user, server->host, err->message);
+ priv->user, priv->host, err->message);
g_error_free(err);
}
}
}
#else
- server->passwd = libbalsa_conf_private_get_string("Password");
- if (server->passwd != NULL) {
- gchar *buff = libbalsa_rot(server->passwd);
- libbalsa_free_password(server->passwd);
- server->passwd = buff;
+ priv->passwd = libbalsa_conf_private_get_string("Password");
+ if (priv->passwd != NULL) {
+ gchar *buff = libbalsa_rot(priv->passwd);
+ libbalsa_free_password(priv->passwd);
+ priv->passwd = buff;
}
#endif
}
- if(server->passwd && server->passwd[0] == '\0') {
- libbalsa_free_password(server->passwd);
- server->passwd = NULL;
+ if(priv->passwd && priv->passwd[0] == '\0') {
+ libbalsa_free_password(priv->passwd);
+ priv->passwd = NULL;
}
- server->client_cert = libbalsa_conf_get_bool("NeedClientCert=false");
- server->cert_file = libbalsa_conf_get_string("UserCertificateFile");
- server->cert_passphrase = libbalsa_conf_private_get_string("CertificatePassphrase");
- if ((server->cert_passphrase != NULL) && (server->cert_passphrase[0] != '\0')) {
- gchar *tmp = libbalsa_rot(server->cert_passphrase);
+ priv->client_cert = libbalsa_conf_get_bool("NeedClientCert=false");
+ priv->cert_file = libbalsa_conf_get_string("UserCertificateFile");
+ priv->cert_passphrase = libbalsa_conf_private_get_string("CertificatePassphrase");
+ if ((priv->cert_passphrase != NULL) && (priv->cert_passphrase[0] != '\0')) {
+ gchar *tmp = libbalsa_rot(priv->cert_passphrase);
- g_free(server->cert_passphrase);
- server->cert_passphrase = tmp;
+ g_free(priv->cert_passphrase);
+ priv->cert_passphrase = tmp;
} else {
- g_free(server->cert_passphrase);
- server->cert_passphrase = NULL;
+ g_free(priv->cert_passphrase);
+ priv->cert_passphrase = NULL;
}
}
@@ -410,49 +393,51 @@ libbalsa_server_load_config(LibBalsaServer * server)
void
libbalsa_server_save_config(LibBalsaServer * server)
{
- libbalsa_conf_set_string("Server", server->host);
- libbalsa_conf_private_set_string("Username", server->user);
- libbalsa_conf_set_bool("Anonymous", server->try_anonymous);
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ libbalsa_conf_set_string("Server", priv->host);
+ libbalsa_conf_private_set_string("Username", priv->user);
+ libbalsa_conf_set_bool("Anonymous", priv->try_anonymous);
libbalsa_conf_set_bool("RememberPasswd",
- server->remember_passwd && server->passwd != NULL);
+ priv->remember_passwd && priv->passwd != NULL);
- if (server->remember_passwd && server->passwd != NULL) {
+ if (priv->remember_passwd && priv->passwd != NULL) {
#if defined(HAVE_LIBSECRET)
GError *err = NULL;
secret_password_store_sync(LIBBALSA_SERVER_SECRET_SCHEMA, NULL,
- _("Balsa passwords"), server->passwd,
+ _("Balsa passwords"), priv->passwd,
NULL, &err,
- "protocol", server->protocol,
- "server", server->host,
- "user", server->user,
+ "protocol", priv->protocol,
+ "server", priv->host,
+ "user", priv->user,
NULL);
if (err) {
printf(_("Error storing password for %s@%s: %s\n"),
- server->user, server->host, err->message);
+ priv->user, priv->host, err->message);
g_error_free(err);
}
#else
- gchar *buff = libbalsa_rot(server->passwd);
+ gchar *buff = libbalsa_rot(priv->passwd);
libbalsa_conf_private_set_string("Password", buff);
g_free(buff);
#endif /* defined(HAVE_LIBSECRET) */
}
- libbalsa_conf_set_bool("NeedClientCert", server->client_cert);
- if (server->cert_file != NULL) {
- libbalsa_conf_set_string("UserCertificateFile", server->cert_file);
+ libbalsa_conf_set_bool("NeedClientCert", priv->client_cert);
+ if (priv->cert_file != NULL) {
+ libbalsa_conf_set_string("UserCertificateFile", priv->cert_file);
}
- if (server->cert_passphrase != NULL) {
- gchar *tmp = libbalsa_rot(server->cert_passphrase);
+ if (priv->cert_passphrase != NULL) {
+ gchar *tmp = libbalsa_rot(priv->cert_passphrase);
libbalsa_conf_private_set_string("CertificatePassphrase", tmp);
g_free(tmp);
}
- libbalsa_conf_set_bool("SSL", server->use_ssl);
- libbalsa_conf_set_int("TLSMode", server->tls_mode);
- libbalsa_conf_set_int("Security", server->security);
+ libbalsa_conf_set_bool("SSL", priv->use_ssl);
+ libbalsa_conf_set_int("TLSMode", priv->tls_mode);
+ libbalsa_conf_set_int("Security", priv->security);
}
void
@@ -461,6 +446,7 @@ libbalsa_server_user_cb(ImapUserEventType ue, void *arg, ...)
va_list alist;
int *ok;
LibBalsaServer *is = LIBBALSA_SERVER(arg);
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(is);
va_start(alist, arg);
switch(ue) {
@@ -469,17 +455,17 @@ libbalsa_server_user_cb(ImapUserEventType ue, void *arg, ...)
gchar **user = va_arg(alist, gchar**);
gchar **pass = va_arg(alist, gchar**);
ok = va_arg(alist, int*);
- if(!is->passwd) {
- is->passwd = libbalsa_server_get_password(is, NULL);
+ if(!priv->passwd) {
+ priv->passwd = libbalsa_server_get_password(is, NULL);
}
- *ok = is->passwd != NULL;
+ *ok = priv->passwd != NULL;
if(*ok) {
- g_free(*user); *user = g_strdup(is->user);
- g_free(*pass); *pass = g_strdup(is->passwd);
+ g_free(*user); *user = g_strdup(priv->user);
+ g_free(*pass); *pass = g_strdup(priv->passwd);
libbalsa_information(LIBBALSA_INFORMATION_DEBUG,
/* host, authentication method */
_("Logging in to %s using %s"),
- is->host, method);
+ priv->host, method);
}
break;
}
@@ -489,7 +475,7 @@ libbalsa_server_user_cb(ImapUserEventType ue, void *arg, ...)
user = va_arg(alist, gchar**);
ok = va_arg(alist, int*);
*ok = 1; /* consider popping up a dialog window here */
- g_free(*user); *user = g_strdup(is->user);
+ g_free(*user); *user = g_strdup(priv->user);
break;
}
case IME_TLS_VERIFY_ERROR: {
@@ -523,7 +509,7 @@ libbalsa_server_user_cb(ImapUserEventType ue, void *arg, ...)
}
case IME_TIMEOUT: {
ok = va_arg(alist, int*); *ok = 1;
- /* *ok = libbalsa_abort_on_timeout(is->host); */
+ /* *ok = libbalsa_abort_on_timeout(priv->host); */
/* For now, always timeout. The UI needs some work. */
break;
}
@@ -537,8 +523,8 @@ libbalsa_server_user_cb(ImapUserEventType ue, void *arg, ...)
* popped up the corresponding number of times, so we'll ignore the
* request if a callback is already connected. */
void
-libbalsa_server_connect_signals(LibBalsaServer * server, GCallback cb,
- gpointer cb_data)
+libbalsa_server_connect_get_password(LibBalsaServer * server, GCallback cb,
+ gpointer cb_data)
{
if (!g_signal_has_handler_pending(server,
libbalsa_server_signals
@@ -553,16 +539,17 @@ libbalsa_server_get_auth(NetClient *client,
gpointer user_data)
{
LibBalsaServer *server = LIBBALSA_SERVER(user_data);
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
gchar **result = NULL;
g_debug("%s: %p %p: encrypted = %d", __func__, client, user_data,
net_client_is_encrypted(client));
- if (server->try_anonymous == 0U) {
+ if (priv->try_anonymous == 0U) {
result = g_new0(gchar *, 3U);
- result[0] = g_strdup(server->user);
+ result[0] = g_strdup(priv->user);
if (need_passwd) {
- if ((server->passwd != NULL) && (server->passwd[0] != '\0')) {
- result[1] = g_strdup(server->passwd);
+ if ((priv->passwd != NULL) && (priv->passwd[0] != '\0')) {
+ result[1] = g_strdup(priv->passwd);
} else {
result[1] = libbalsa_server_get_password(server, NULL);
}
@@ -630,8 +617,11 @@ libbalsa_server_get_cert_pass(NetClient *client,
const GByteArray *cert_der,
gpointer user_data)
{
+ LibBalsaServer *server = LIBBALSA_SERVER(user_data);
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
/* FIXME - we just return the passphrase from the config, but we may also want to show a dialogue
here... */
- return g_strdup(LIBBALSA_SERVER(user_data)->cert_passphrase);
+ return g_strdup(priv->cert_passphrase);
}
/* Test whether a server is reachable */
@@ -663,6 +653,7 @@ libbalsa_server_test_can_reach_full(LibBalsaServer * server,
gpointer cb_data,
GObject * source_object)
{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
CanReachInfo *info;
gchar *host;
gchar *colon;
@@ -676,7 +667,7 @@ libbalsa_server_test_can_reach_full(LibBalsaServer * server,
monitor = g_network_monitor_get_default();
- host = g_strdup(server->host);
+ host = g_strdup(priv->host);
colon = strchr(host, ':');
if (colon != NULL) {
colon[0] = '\0';
@@ -695,3 +686,214 @@ libbalsa_server_test_can_reach(LibBalsaServer * server,
{
libbalsa_server_test_can_reach_full(server, cb, cb_data, (GObject *) server);
}
+
+/*
+ * Getters
+ */
+
+LibBalsaTlsMode
+libbalsa_server_get_tls_mode(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), (LibBalsaTlsMode) 0);
+
+ return priv->tls_mode;
+}
+
+NetClientCryptMode
+libbalsa_server_get_security(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), (NetClientCryptMode) 0);
+
+ return priv->security;
+}
+
+gboolean
+libbalsa_server_get_use_ssl(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), FALSE);
+
+ return priv->use_ssl;
+}
+
+gboolean
+libbalsa_server_get_client_cert(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), FALSE);
+
+ return priv->client_cert;
+}
+
+gboolean
+libbalsa_server_get_try_anonymous(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), FALSE);
+
+ return priv->try_anonymous;
+}
+
+gboolean
+libbalsa_server_get_remember_passwd(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), FALSE);
+
+ return priv->remember_passwd;
+}
+
+const gchar *
+libbalsa_server_get_user(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
+
+ return priv->user;
+}
+
+const gchar *
+libbalsa_server_get_host(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
+
+ return priv->host;
+}
+
+const gchar *
+libbalsa_server_get_protocol(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
+
+ return priv->protocol;
+}
+
+const gchar *
+libbalsa_server_get_cert_file(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
+
+ return priv->cert_file;
+}
+
+const gchar *
+libbalsa_server_get_cert_passphrase(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
+
+ return priv->cert_passphrase;
+}
+
+const gchar *
+libbalsa_server_get_passwd(LibBalsaServer * server)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_val_if_fail(LIBBALSA_IS_SERVER(server), NULL);
+
+ return priv->passwd;
+}
+
+/*
+ * Setters
+ */
+
+void
+libbalsa_server_set_tls_mode(LibBalsaServer * server, LibBalsaTlsMode tls_mode)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ priv->tls_mode = tls_mode;
+}
+
+void
+libbalsa_server_set_security(LibBalsaServer * server, NetClientCryptMode security)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ priv->security = security;
+}
+
+void
+libbalsa_server_set_try_anonymous(LibBalsaServer * server, gboolean try_anonymous)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ priv->try_anonymous = try_anonymous;
+}
+
+void
+libbalsa_server_set_remember_passwd(LibBalsaServer * server, gboolean remember_passwd)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ priv->remember_passwd = remember_passwd;
+}
+
+void
+libbalsa_server_set_client_cert(LibBalsaServer * server, gboolean client_cert)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ priv->client_cert = client_cert;
+}
+
+void
+libbalsa_server_set_protocol(LibBalsaServer * server, const gchar * protocol)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ g_free(priv->protocol);
+ priv->protocol = g_strdup(protocol);
+}
+
+void
+libbalsa_server_set_cert_file(LibBalsaServer * server, const gchar * cert_file)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ g_free(priv->cert_file);
+ priv->cert_file = g_strdup(cert_file);
+}
+
+void
+libbalsa_server_set_cert_passphrase(LibBalsaServer * server, const gchar * cert_passphrase)
+{
+ LibBalsaServerPrivate *priv = libbalsa_server_get_instance_private(server);
+
+ g_return_if_fail(LIBBALSA_IS_SERVER(server));
+
+ g_free(priv->cert_passphrase);
+ priv->cert_passphrase = g_strdup(cert_passphrase);
+}
diff --git a/libbalsa/server.h b/libbalsa/server.h
index 2f47088..f76892a 100644
--- a/libbalsa/server.h
+++ b/libbalsa/server.h
@@ -37,21 +37,13 @@ extern const SecretSchema *LIBBALSA_SERVER_SECRET_SCHEMA;
#define libbalsa_free_password g_free
#endif /* defined(HAVE_LIBSECRET) */
-#define LIBBALSA_TYPE_SERVER \
- (libbalsa_server_get_type())
-#define LIBBALSA_SERVER(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST (obj, LIBBALSA_TYPE_SERVER, LibBalsaServer))
-#define LIBBALSA_SERVER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST (klass, LIBBALSA_TYPE_SERVER, \
- LibBalsaServerClass))
-#define LIBBALSA_IS_SERVER(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE (obj, LIBBALSA_TYPE_SERVER))
-#define LIBBALSA_IS_SERVER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE (klass, LIBBALSA_TYPE_SERVER))
-
-GType libbalsa_server_get_type(void);
-
-typedef struct _LibBalsaServerClass LibBalsaServerClass;
+#define LIBBALSA_TYPE_SERVER (libbalsa_server_get_type())
+
+G_DECLARE_DERIVABLE_TYPE(LibBalsaServer,
+ libbalsa_server,
+ LIBBALSA,
+ SERVER,
+ GObject)
typedef enum {
LIBBALSA_TLS_DISABLED,
@@ -59,26 +51,6 @@ typedef enum {
LIBBALSA_TLS_REQUIRED
} LibBalsaTlsMode;
-struct _LibBalsaServer {
- GObject object;
- const gchar *protocol; /**< type of the server: imap, pop3, or smtp. */
-
- gchar *host;
- gchar *user;
- gchar *passwd;
- NetClientCryptMode security;
- gboolean client_cert;
- gchar *cert_file;
- gchar *cert_passphrase;
- /* We include SSL support in UI unconditionally to preserve config
- * between SSL and non-SSL builds. We just fail if SSL is requested
- * in non-SSL build. */
- LibBalsaTlsMode tls_mode;
- unsigned use_ssl:1;
- unsigned remember_passwd:1;
- unsigned try_anonymous:1; /* user wants anonymous access */
-};
-
struct _LibBalsaServerClass {
GObjectClass parent_class;
@@ -119,8 +91,8 @@ gchar *libbalsa_server_get_cert_pass(NetClient *client,
const GByteArray *cert_der,
gpointer user_data);
-void libbalsa_server_connect_signals(LibBalsaServer * server, GCallback cb,
- gpointer cb_data);
+void libbalsa_server_connect_get_password(LibBalsaServer * server, GCallback cb,
+ gpointer cb_data);
/* Check whether a server can be reached */
@@ -134,4 +106,34 @@ void libbalsa_server_test_can_reach_full(LibBalsaServer * server,
gpointer cb_data,
GObject * source_object);
+/*
+ * Getters
+ */
+
+LibBalsaTlsMode libbalsa_server_get_tls_mode(LibBalsaServer * server);
+NetClientCryptMode libbalsa_server_get_security(LibBalsaServer * server);
+gboolean libbalsa_server_get_use_ssl(LibBalsaServer * server);
+gboolean libbalsa_server_get_client_cert(LibBalsaServer * server);
+gboolean libbalsa_server_get_try_anonymous(LibBalsaServer * server);
+gboolean libbalsa_server_get_remember_passwd(LibBalsaServer * server);
+const gchar * libbalsa_server_get_user(LibBalsaServer * server);
+const gchar * libbalsa_server_get_host(LibBalsaServer * server);
+const gchar * libbalsa_server_get_protocol(LibBalsaServer * server);
+const gchar * libbalsa_server_get_cert_file(LibBalsaServer * server);
+const gchar * libbalsa_server_get_cert_passphrase(LibBalsaServer * server);
+const gchar * libbalsa_server_get_passwd(LibBalsaServer * server);
+
+/*
+ * Setters
+ */
+
+void libbalsa_server_set_tls_mode(LibBalsaServer * server, LibBalsaTlsMode tls_mode);
+void libbalsa_server_set_security(LibBalsaServer * server, NetClientCryptMode security);
+void libbalsa_server_set_try_anonymous(LibBalsaServer * server, gboolean try_anonymous);
+void libbalsa_server_set_remember_passwd(LibBalsaServer * server, gboolean remember_passwd);
+void libbalsa_server_set_client_cert(LibBalsaServer * server, gboolean client_cert);
+void libbalsa_server_set_protocol(LibBalsaServer * server, const gchar * protocol);
+void libbalsa_server_set_cert_file(LibBalsaServer * server, const gchar * cert_file);
+void libbalsa_server_set_cert_passphrase(LibBalsaServer * server, const gchar * cert_passphrase);
+
#endif /* __LIBBALSA_SERVER_H__ */
diff --git a/libbalsa/smtp-server.c b/libbalsa/smtp-server.c
index 7020018..c4f59db 100644
--- a/libbalsa/smtp-server.c
+++ b/libbalsa/smtp-server.c
@@ -86,7 +86,7 @@ libbalsa_smtp_server_class_init(LibBalsaSmtpServerClass * klass)
static void
libbalsa_smtp_server_init(LibBalsaSmtpServer * smtp_server)
{
- LIBBALSA_SERVER(smtp_server)->protocol = "smtp";
+ libbalsa_server_set_protocol(LIBBALSA_SERVER(smtp_server), "smtp");
}
/* Class boilerplate */
@@ -136,7 +136,7 @@ libbalsa_smtp_server_new(void)
smtp_server = g_object_new(LIBBALSA_TYPE_SMTP_SERVER, NULL);
/* Change the default. */
- LIBBALSA_SERVER(smtp_server)->remember_passwd = TRUE;
+ libbalsa_server_set_remember_passwd(LIBBALSA_SERVER(smtp_server), TRUE);
return smtp_server;
}
@@ -296,7 +296,7 @@ smtp_server_tls_widget(LibBalsaSmtpServer * smtp_server)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), _("TLS if possible (not recommended)"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), _("None (not recommended)"));
- gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), (gint) server->security - 1);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), (gint) libbalsa_server_get_security(server) - 1);
return combo_box;
}
@@ -327,20 +327,27 @@ smtp_server_response(GtkDialog * dialog, gint response,
libbalsa_server_set_host(server,
gtk_entry_get_text(GTK_ENTRY(sdi->host)),
FALSE);
- server->try_anonymous = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sdi->auth_button)) ? 0U : 1U;
+ libbalsa_server_set_try_anonymous
+ (server,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sdi->auth_button)) ? 0U : 1U);
libbalsa_server_set_username(server,
gtk_entry_get_text(GTK_ENTRY
(sdi->user)));
libbalsa_server_set_password(server,
gtk_entry_get_text(GTK_ENTRY
(sdi->pass)));
- server->security = (NetClientCryptMode) (gtk_combo_box_get_active(GTK_COMBO_BOX(sdi->tlsm)) + 1);
- server->client_cert = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sdi->cert_button));
- g_free(server->cert_file);
- server->cert_file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(sdi->cert_file));
- g_free(server->cert_passphrase);
- server->cert_passphrase =
- gtk_editable_get_chars(GTK_EDITABLE(sdi->cert_pass), 0, -1);
+ libbalsa_server_set_security
+ (server,
+ (NetClientCryptMode) (gtk_combo_box_get_active(GTK_COMBO_BOX(sdi->tlsm)) + 1));
+ libbalsa_server_set_client_cert
+ (server,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sdi->cert_button)));
+ libbalsa_server_set_cert_file
+ (server,
+ gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(sdi->cert_file)));
+ libbalsa_server_set_cert_passphrase
+ (server,
+ gtk_editable_get_chars(GTK_EDITABLE(sdi->cert_pass), 0, -1));
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sdi->split_button))) {
/* big_message is stored in kB, but the widget is in MB. */
sdi->smtp_server->big_message =
@@ -496,8 +503,8 @@ libbalsa_smtp_server_dialog(LibBalsaSmtpServer * smtp_server,
/* host and port */
sdi->host = gtk_entry_new();
smtp_server_add_widget(grid, ++row, _("_Server:"), sdi->host);
- if (server->host != NULL) {
- gtk_entry_set_text(GTK_ENTRY(sdi->host), server->host);
+ if (libbalsa_server_get_host(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(sdi->host), libbalsa_server_get_host(server));
}
g_signal_connect(sdi->host, "changed", G_CALLBACK(smtp_server_changed), sdi);
@@ -510,13 +517,14 @@ libbalsa_smtp_server_dialog(LibBalsaSmtpServer * smtp_server,
sdi->auth_button = gtk_check_button_new_with_mnemonic(_("Server requires authentication"));
smtp_server_add_widget(grid, ++row, _("_Authentication:"), sdi->auth_button);
g_signal_connect(sdi->auth_button, "toggled", G_CALLBACK(smtp_server_changed), sdi);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sdi->auth_button), server->try_anonymous == 0U);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sdi->auth_button),
+ libbalsa_server_get_try_anonymous(server) == 0U);
/* user name and password */
sdi->user = gtk_entry_new();
smtp_server_add_widget(grid, ++row, _("_User Name:"), sdi->user);
- if (server->user != NULL) {
- gtk_entry_set_text(GTK_ENTRY(sdi->user), server->user);
+ if (libbalsa_server_get_user(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(sdi->user), libbalsa_server_get_user(server));
}
g_signal_connect(sdi->user, "changed", G_CALLBACK(smtp_server_changed), sdi);
@@ -524,8 +532,8 @@ libbalsa_smtp_server_dialog(LibBalsaSmtpServer * smtp_server,
smtp_server_add_widget(grid, ++row, _("_Pass Phrase:"), sdi->pass);
g_object_set(G_OBJECT(sdi->pass), "input-purpose", GTK_INPUT_PURPOSE_PASSWORD, NULL);
gtk_entry_set_visibility(GTK_ENTRY(sdi->pass), FALSE);
- if (server->passwd != NULL) {
- gtk_entry_set_text(GTK_ENTRY(sdi->pass), server->passwd);
+ if (libbalsa_server_get_passwd(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(sdi->pass), libbalsa_server_get_passwd(server));
}
g_signal_connect(sdi->pass, "changed", G_CALLBACK(smtp_server_changed), sdi);
@@ -540,13 +548,13 @@ libbalsa_smtp_server_dialog(LibBalsaSmtpServer * smtp_server,
sdi->cert_button = gtk_check_button_new_with_mnemonic(_("Server requires client certificate"));
smtp_server_add_widget(grid, row, _("_Client Certificate:"), sdi->cert_button);
g_signal_connect(sdi->cert_button, "toggled", G_CALLBACK(smtp_server_changed), sdi);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sdi->cert_button), server->client_cert);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sdi->cert_button),
libbalsa_server_get_client_cert(server));
sdi->cert_file = gtk_file_chooser_button_new(_("Choose Client Certificate"),
GTK_FILE_CHOOSER_ACTION_OPEN);
gtk_widget_set_hexpand(sdi->cert_file, TRUE);
smtp_server_add_widget(grid, ++row, _("Certificate _File:"), sdi->cert_file);
- if (server->cert_file != NULL) {
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(sdi->cert_file), server->cert_file);
+ if (libbalsa_server_get_cert_file(server) != NULL) {
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(sdi->cert_file),
libbalsa_server_get_cert_file(server));
}
g_signal_connect(sdi->cert_file, "file-set", G_CALLBACK(smtp_server_changed), sdi);
@@ -554,8 +562,8 @@ libbalsa_smtp_server_dialog(LibBalsaSmtpServer * smtp_server,
smtp_server_add_widget(grid, ++row, _("Certificate _Pass Phrase:"), sdi->cert_pass);
g_object_set(G_OBJECT(sdi->cert_pass), "input-purpose", GTK_INPUT_PURPOSE_PASSWORD, NULL);
gtk_entry_set_visibility(GTK_ENTRY(sdi->cert_pass), FALSE);
- if (server->cert_passphrase != NULL) {
- gtk_entry_set_text(GTK_ENTRY(sdi->cert_pass), server->cert_passphrase);
+ if (libbalsa_server_get_cert_passphrase(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(sdi->cert_pass), libbalsa_server_get_cert_passphrase(server));
}
g_signal_connect(sdi->cert_pass, "changed", G_CALLBACK(smtp_server_changed), sdi);
diff --git a/libinit_balsa/assistant_page_directory.c b/libinit_balsa/assistant_page_directory.c
index 4606ab7..405c07f 100644
--- a/libinit_balsa/assistant_page_directory.c
+++ b/libinit_balsa/assistant_page_directory.c
@@ -128,9 +128,9 @@ unconditional_mailbox(const gchar * path, const gchar * prettyname,
}
if (is_remote) {
- libbalsa_server_set_host(LIBBALSA_MAILBOX_REMOTE_SERVER(*box),
+ libbalsa_server_set_host(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(*box),
url.host, ssl);
- libbalsa_server_set_username(LIBBALSA_MAILBOX_REMOTE_SERVER(*box),
+ libbalsa_server_set_username(LIBBALSA_MAILBOX_REMOTE_GET_SERVER(*box),
getenv("USER"));
}
g_free(dup);
diff --git a/libinit_balsa/assistant_page_user.c b/libinit_balsa/assistant_page_user.c
index e363330..1c10402 100644
--- a/libinit_balsa/assistant_page_user.c
+++ b/libinit_balsa/assistant_page_user.c
@@ -200,13 +200,13 @@ create_pop3_mbx(const gchar *name, const gchar* host, gint security,
{
LibBalsaMailboxPop3 *pop = libbalsa_mailbox_pop3_new();
LibBalsaMailbox *mbx = LIBBALSA_MAILBOX(pop);
- LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_SERVER(pop);
+ LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(pop);
libbalsa_server_set_username(server, login);
libbalsa_server_set_password(server, passwd);
libbalsa_server_set_host(server, host, FALSE);
- server->security = security;
- server->remember_passwd = remember;
+ libbalsa_server_set_security(server, security);
+ libbalsa_server_set_remember_passwd(server, remember);
mbx->name = g_strdup(name && *name ? name : host);
pop->check = TRUE;
pop->disable_apop = FALSE;
@@ -230,15 +230,15 @@ create_imap_mbx(const gchar *name, const gchar* host, gint security,
libbalsa_server_set_host(server, host, security == NET_CLIENT_CRYPT_ENCRYPTED);
switch (security) {
case NET_CLIENT_CRYPT_STARTTLS:
- server->tls_mode = LIBBALSA_TLS_REQUIRED;
+ libbalsa_server_set_tls_mode(server, LIBBALSA_TLS_REQUIRED);
break;
case NET_CLIENT_CRYPT_STARTTLS_OPT:
- server->tls_mode = LIBBALSA_TLS_ENABLED;
+ libbalsa_server_set_tls_mode(server, LIBBALSA_TLS_ENABLED);
break;
default:
- server->tls_mode = LIBBALSA_TLS_DISABLED;
+ libbalsa_server_set_tls_mode(server, LIBBALSA_TLS_DISABLED);
}
- server->remember_passwd = remember;
+ libbalsa_server_set_remember_passwd(server, remember);
mbnode = balsa_mailbox_node_new_imap_folder(server, NULL);
mbnode->name = g_strdup(name && *name ? name : host);
diff --git a/src/balsa-app.c b/src/balsa-app.c
index 5df0232..f5d9505 100644
--- a/src/balsa-app.c
+++ b/src/balsa-app.c
@@ -72,11 +72,11 @@ ask_password_real(LibBalsaServer * server, LibBalsaMailbox * mbox)
prompt =
g_strdup_printf(_("Opening remote mailbox %s.\n"
"The _password for %s@%s:"),
- mbox->name, server->user, server->host);
+ mbox->name, libbalsa_server_get_user(server), libbalsa_server_get_host(server));
else
prompt =
- g_strdup_printf(_("_Password for %s@%s (%s):"), server->user,
- server->host, server->protocol);
+ g_strdup_printf(_("_Password for %s@%s (%s):"), libbalsa_server_get_user(server),
+ libbalsa_server_get_host(server), libbalsa_server_get_protocol(server));
dialog = gtk_dialog_new_with_buttons(_("Password needed"),
GTK_WINDOW(balsa_app.main_window),
@@ -101,7 +101,7 @@ ask_password_real(LibBalsaServer * server, LibBalsaMailbox * mbox)
rememb = gtk_check_button_new_with_mnemonic(_(remember_password_message));
gtk_box_pack_start(GTK_BOX(content_area), rememb);
- if(server->remember_passwd)
+ if(libbalsa_server_get_remember_passwd(server))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rememb), TRUE);
gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
@@ -109,12 +109,12 @@ ask_password_real(LibBalsaServer * server, LibBalsaMailbox * mbox)
gtk_widget_grab_focus (entry);
if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
- unsigned old_rem = server->remember_passwd;
+ unsigned old_rem = libbalsa_server_get_remember_passwd(server);
passwd = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
- server->remember_passwd =
- !!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rememb));
+ libbalsa_server_set_remember_passwd(server,
+ !!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rememb)));
libbalsa_server_set_password(server, passwd);
- if( server->remember_passwd || old_rem )
+ if( libbalsa_server_get_remember_passwd(server) || old_rem )
libbalsa_server_config_changed(server);
}
gtk_widget_destroy(dialog);
@@ -190,31 +190,29 @@ set_passwd_from_matching_server(GtkTreeModel *model,
g_return_val_if_fail(LIBBALSA_IS_MAILBOX(mbox), FALSE);
if (!LIBBALSA_IS_MAILBOX_REMOTE(mbox)) return FALSE;
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mbox);
g_return_val_if_fail(server != NULL, FALSE);
}
- g_return_val_if_fail(server->host != NULL, FALSE);
- g_return_val_if_fail(server->user != NULL, FALSE);
- if (server->passwd == NULL) return FALSE;
+ g_return_val_if_fail(libbalsa_server_get_host(server) != NULL, FALSE);
+ g_return_val_if_fail(libbalsa_server_get_user(server) != NULL, FALSE);
+ if (libbalsa_server_get_passwd(server) == NULL) return FALSE;
master = (LibBalsaServer *)data;
g_return_val_if_fail(LIBBALSA_IS_SERVER(master), FALSE);
if (master == server) return FALSE;
- g_return_val_if_fail(server->host != NULL, FALSE);
- g_return_val_if_fail(server->user != NULL, FALSE);
+ g_return_val_if_fail(libbalsa_server_get_host(server) != NULL, FALSE);
+ g_return_val_if_fail(libbalsa_server_get_user(server) != NULL, FALSE);
- if ((strcmp(server->host, master->host) == 0) &&
- (strcmp(server->user, master->user) == 0)) {
- g_free(master->passwd);
- master->passwd = g_strdup(server->passwd);
+ if ((strcmp(libbalsa_server_get_host(server), libbalsa_server_get_host(master)) == 0) &&
+ (strcmp(libbalsa_server_get_user(server), libbalsa_server_get_user(master)) == 0)) {
+ libbalsa_server_set_password(master, libbalsa_server_get_passwd(server));
return TRUE;
};
-
+
return FALSE;
}
/* ask_password:
- when called from thread, gdk lock must not be held.
*/
gchar *
ask_password(LibBalsaServer *server, LibBalsaMailbox *mbox)
@@ -222,16 +220,16 @@ ask_password(LibBalsaServer *server, LibBalsaMailbox *mbox)
gchar *password;
g_return_val_if_fail(server != NULL, NULL);
-
+
password = NULL;
if (mbox) {
gtk_tree_model_foreach(GTK_TREE_MODEL(balsa_app.mblist_tree_store),
(GtkTreeModelForeachFunc)
set_passwd_from_matching_server, server);
- if (server->passwd != NULL) {
- password = server->passwd;
- server->passwd = NULL;
+ if (libbalsa_server_get_passwd(server) != NULL) {
+ password = g_strdup(libbalsa_server_get_passwd(server));
+ libbalsa_server_set_password(server, NULL);
}
}
@@ -698,7 +696,7 @@ balsa_get_short_mailbox_name(const gchar *url)
if ((mbnode = balsa_find_url(url)) && mbnode->mailbox) {
if (mbnode->server) {
- return g_strconcat(mbnode->server->host, ":",
+ return g_strconcat(libbalsa_server_get_host(mbnode->server), ":",
mbnode->mailbox->name, NULL);
} else {
return g_strdup(mbnode->mailbox->name);
diff --git a/src/folder-conf.c b/src/folder-conf.c
index 3c04206..69d7274 100644
--- a/src/folder-conf.c
+++ b/src/folder-conf.c
@@ -184,11 +184,10 @@ folder_conf_clicked_ok(FolderDialogData * fcw)
} else {
insert = TRUE;
s = LIBBALSA_SERVER(libbalsa_imap_server_new(username, host));
- g_signal_connect(G_OBJECT(s), "get-password",
- G_CALLBACK(ask_password), NULL);
+ libbalsa_server_connect_get_password(s, G_CALLBACK(ask_password), NULL);
}
- s->tls_mode = balsa_server_conf_get_tls_mode(&fcw->bsc);
+ libbalsa_server_set_tls_mode(s, balsa_server_conf_get_tls_mode(&fcw->bsc));
libbalsa_imap_server_set_max_connections
(LIBBALSA_IMAP_SERVER(s),
gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
@@ -206,10 +205,10 @@ folder_conf_clicked_ok(FolderDialogData * fcw)
(LIBBALSA_IMAP_SERVER(s),
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(fcw->use_status)));
libbalsa_server_set_username(s, username);
- s->try_anonymous =
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(fcw->anonymous));
- s->remember_passwd =
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(fcw->remember));
+ libbalsa_server_set_try_anonymous(s,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(fcw->anonymous)));
+ libbalsa_server_set_remember_passwd(s,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(fcw->remember)));
libbalsa_server_set_password(s,
gtk_entry_get_text(GTK_ENTRY
(fcw->password)));
@@ -372,7 +371,7 @@ folder_conf_imap_node(BalsaMailboxNode *mn)
label = libbalsa_create_grid_label(_("_Server:"), grid, 1);
fcw->bsc.server =
libbalsa_create_grid_entry(grid, G_CALLBACK(validate_folder),
- fcw, r++, s ? s->host : default_server,
+ fcw, r++, s ? libbalsa_server_get_host(s) : default_server,
label);
fcw->bsc.default_ports = IMAP_DEFAULT_PORTS;
g_free(default_server);
@@ -380,23 +379,23 @@ folder_conf_imap_node(BalsaMailboxNode *mn)
label= libbalsa_create_grid_label(_("Use_r name:"), grid, r);
fcw->username =
libbalsa_create_grid_entry(grid, G_CALLBACK(validate_folder),
- fcw, r++, s ? s->user : g_get_user_name(),
+ fcw, r++, s ? libbalsa_server_get_user(s) : g_get_user_name(),
label);
label = libbalsa_create_grid_label(_("_Password:"), grid, r);
fcw->password =
libbalsa_create_grid_entry(grid, NULL, NULL, r++,
- s ? s->passwd : NULL, label);
+ s ? libbalsa_server_get_passwd(s) : NULL, label);
gtk_entry_set_visibility(GTK_ENTRY(fcw->password), FALSE);
fcw->anonymous =
libbalsa_create_grid_check(_("_Anonymous access"), grid, r++,
- s ? s->try_anonymous : FALSE);
+ s ? libbalsa_server_get_try_anonymous(s) : FALSE);
g_signal_connect(G_OBJECT(fcw->anonymous), "toggled",
G_CALLBACK(anonymous_cb), fcw);
fcw->remember =
libbalsa_create_grid_check(_(remember_password_message), grid, r++,
- s ? s->remember_passwd : TRUE);
+ s ? libbalsa_server_get_remember_passwd(s) : TRUE);
g_signal_connect(G_OBJECT(fcw->remember), "toggled",
G_CALLBACK(remember_cb), fcw);
@@ -502,7 +501,7 @@ browse_button_response(GtkDialog * dialog, gint response,
mbnode->dir);
if(mbnode->server)
gtk_label_set_label(GTK_LABEL(bbd->sdd->host_label),
- mbnode->server->host);
+ libbalsa_server_get_host(mbnode->server));
}
validate_sub_folder(NULL, bbd->sdd);
gtk_widget_set_sensitive(bbd->button, TRUE);
@@ -836,7 +835,7 @@ folder_conf_imap_sub_node(BalsaMailboxNode * mn)
(void) libbalsa_create_grid_label(_("Host:"), grid, row);
sdd->host_label =
gtk_label_new(sdd->mbnode && sdd->mbnode->server
- ? sdd->mbnode->server->host : "");
+ ? libbalsa_server_get_host(sdd->mbnode->server) : "");
gtk_widget_set_halign(sdd->host_label, GTK_ALIGN_START);
gtk_widget_set_hexpand(sdd->host_label, TRUE);
gtk_grid_attach(GTK_GRID(grid), sdd->host_label, 1, row, 1, 1);
diff --git a/src/mailbox-conf.c b/src/mailbox-conf.c
index aca5cfd..d6226c3 100644
--- a/src/mailbox-conf.c
+++ b/src/mailbox-conf.c
@@ -211,7 +211,7 @@ balsa_server_conf_get_advanced_widget(BalsaServerConf *bsc, LibBalsaServer *s,
};
GtkWidget *label;
GtkWidget *box;
- gboolean use_ssl = s && s->use_ssl;
+ gboolean use_ssl = s && libbalsa_server_get_use_ssl(s);
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
@@ -233,7 +233,7 @@ balsa_server_conf_get_advanced_widget(BalsaServerConf *bsc, LibBalsaServer *s,
mailbox_conf_combo_box_make(GTK_COMBO_BOX_TEXT(bsc->tls_option),
G_N_ELEMENTS(tls_menu), tls_menu);
gtk_combo_box_set_active(GTK_COMBO_BOX(bsc->tls_option),
- s ? s->tls_mode : LIBBALSA_TLS_ENABLED);
+ s ? libbalsa_server_get_tls_mode(s) : LIBBALSA_TLS_ENABLED);
gtk_grid_attach(bsc->grid, bsc->tls_option, 1, 1, 1, 1);
gtk_label_set_mnemonic_widget(GTK_LABEL(label), bsc->tls_option);
@@ -309,10 +309,10 @@ balsa_server_conf_set_values(BalsaServerConf *bsc, LibBalsaServer *server)
g_return_if_fail(server);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bsc->use_ssl),
- server->use_ssl);
+ libbalsa_server_get_use_ssl(server));
gtk_combo_box_set_active(GTK_COMBO_BOX(bsc->tls_option),
- server->tls_mode);
- gtk_widget_set_sensitive(bsc->tls_option, !server->use_ssl);
+ libbalsa_server_get_tls_mode(server));
+ gtk_widget_set_sensitive(bsc->tls_option, !libbalsa_server_get_use_ssl(server));
}
@@ -681,20 +681,20 @@ mailbox_conf_set_values_pop3(LibBalsaMailbox *mailbox,
gboolean sensitive;
pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
/* basic settings */
- if (server->host != NULL) {
- gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.bsc.server), server->host);
+ if (libbalsa_server_get_host(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.bsc.server), libbalsa_server_get_host(server));
}
- gtk_combo_box_set_active(GTK_COMBO_BOX(mcw->mb_data.pop3.security), server->security - 1);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(mcw->mb_data.pop3.security),
libbalsa_server_get_security(server) - 1);
- if (server->user != NULL) {
- gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.username), server->user);
+ if (libbalsa_server_get_user(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.username), libbalsa_server_get_user(server));
}
- if (server->passwd != NULL) {
- gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.password), server->passwd);
+ if (libbalsa_server_get_passwd(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.password), libbalsa_server_get_passwd(server));
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.delete_from_server),
pop3->delete_from_server);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.check), pop3->check);
@@ -705,18 +705,18 @@ mailbox_conf_set_values_pop3(LibBalsaMailbox *mailbox,
gtk_widget_set_sensitive(mcw->mb_data.pop3.filter_cmd, pop3->filter);
/* advanced settings */
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.bsc.need_client_cert),
server->client_cert);
- sensitive = (server->security != NET_CLIENT_CRYPT_NONE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.bsc.need_client_cert),
libbalsa_server_get_client_cert(server));
+ sensitive = (libbalsa_server_get_security(server) != NET_CLIENT_CRYPT_NONE);
gtk_widget_set_sensitive(mcw->mb_data.pop3.bsc.need_client_cert, sensitive);
- sensitive = sensitive & server->client_cert;
+ sensitive = sensitive & libbalsa_server_get_client_cert(server);
- if (server->cert_file != NULL) {
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(mcw->mb_data.pop3.bsc.client_cert_file),
server->cert_file);
+ if (libbalsa_server_get_cert_file(server) != NULL) {
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(mcw->mb_data.pop3.bsc.client_cert_file),
libbalsa_server_get_cert_file(server));
}
gtk_widget_set_sensitive(mcw->mb_data.pop3.bsc.client_cert_file, sensitive);
- if (server->cert_passphrase != NULL) {
- gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.bsc.client_cert_passwd),
server->cert_passphrase);
+ if (libbalsa_server_get_cert_passphrase(server) != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.pop3.bsc.client_cert_passwd),
libbalsa_server_get_cert_passphrase(server));
}
gtk_widget_set_sensitive(mcw->mb_data.pop3.bsc.client_cert_passwd, sensitive);
@@ -757,23 +757,23 @@ mailbox_conf_set_values(MailboxConfWindow *mcw)
LibBalsaServer *server;
const gchar *path;
imap = LIBBALSA_MAILBOX_IMAP(mailbox);
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
- if (server->host)
+ if (libbalsa_server_get_host(server))
gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.imap.bsc.server),
- server->host);
- if (server->user)
+ libbalsa_server_get_host(server));
+ if (libbalsa_server_get_user(server))
gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.imap.username),
- server->user);
+ libbalsa_server_get_user(server));
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(mcw->mb_data.imap.anonymous),
- server->try_anonymous);
+ libbalsa_server_get_try_anonymous(server));
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(mcw->mb_data.imap.remember),
- server->remember_passwd);
- if (server->passwd)
+ libbalsa_server_get_remember_passwd(server));
+ if (libbalsa_server_get_passwd(server))
gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.imap.password),
- server->passwd);
+ libbalsa_server_get_passwd(server));
path = libbalsa_mailbox_imap_get_path(imap);
if (path)
gtk_entry_set_text(GTK_ENTRY(mcw->mb_data.imap.folderpath),
@@ -789,10 +789,10 @@ mailbox_conf_set_values(MailboxConfWindow *mcw)
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(mcw->mb_data.imap.has_bugs),
TRUE);
- if(!server->try_anonymous)
+ if(!libbalsa_server_get_try_anonymous(server))
gtk_widget_set_sensitive(GTK_WIDGET(mcw->mb_data.imap.anonymous),
FALSE);
- if(!server->remember_passwd)
+ if(!libbalsa_server_get_remember_passwd(server))
gtk_widget_set_sensitive(GTK_WIDGET(mcw->mb_data.imap.password),
FALSE);
}
@@ -892,7 +892,7 @@ update_pop_mailbox(MailboxConfWindow *mcw)
BalsaServerConf *bsc;
mailbox = LIBBALSA_MAILBOX_POP3(mcw->mailbox);
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
bsc = &mcw->mb_data.pop3.bsc;
/* basic data */
@@ -901,7 +901,7 @@ update_pop_mailbox(MailboxConfWindow *mcw)
gtk_editable_get_chars(GTK_EDITABLE(mcw->mailbox_name), 0, -1);
libbalsa_server_set_host(server, gtk_entry_get_text(GTK_ENTRY(mcw->mb_data.pop3.bsc.server)), FALSE);
- server->security = gtk_combo_box_get_active(GTK_COMBO_BOX(mcw->mb_data.pop3.security)) + 1;
+ libbalsa_server_set_security(server, gtk_combo_box_get_active(GTK_COMBO_BOX(mcw->mb_data.pop3.security)) +
1);
libbalsa_server_set_username(server, gtk_entry_get_text(GTK_ENTRY(mcw->mb_data.pop3.username)));
libbalsa_server_set_password(server, gtk_entry_get_text(GTK_ENTRY(mcw->mb_data.pop3.password)));
@@ -915,11 +915,9 @@ update_pop_mailbox(MailboxConfWindow *mcw)
gtk_editable_get_chars(GTK_EDITABLE(mcw->mb_data.pop3.filter_cmd), 0, -1);
/* advanced settings */
- server->client_cert = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bsc->need_client_cert));
- g_free(server->cert_file);
- server->cert_file = g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(bsc->client_cert_file)));;
- g_free(server->cert_passphrase);
- server->cert_passphrase = gtk_editable_get_chars(GTK_EDITABLE(bsc->client_cert_passwd), 0, -1);
+ libbalsa_server_set_client_cert(server,
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bsc->need_client_cert)));
+ libbalsa_server_set_cert_file(server,
g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(bsc->client_cert_file))));;
+ libbalsa_server_set_cert_passphrase(server, gtk_editable_get_chars(GTK_EDITABLE(bsc->client_cert_passwd),
0, -1));
mailbox->disable_apop =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.disable_apop));
mailbox->enable_pipe = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.enable_pipe));
}
@@ -935,7 +933,7 @@ update_imap_mailbox(MailboxConfWindow *mcw)
LibBalsaServer* server;
mailbox = LIBBALSA_MAILBOX_IMAP(mcw->mailbox);
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
+ server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
if (!server) {
server = LIBBALSA_SERVER(libbalsa_imap_server_new("",""));
libbalsa_mailbox_remote_set_server(LIBBALSA_MAILBOX_REMOTE(mailbox),
@@ -949,13 +947,13 @@ update_imap_mailbox(MailboxConfWindow *mcw)
libbalsa_server_set_username(server,
gtk_entry_get_text(GTK_ENTRY
(mcw->mb_data.imap.username)));
- server->try_anonymous =
+ libbalsa_server_set_try_anonymous(server,
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->
- mb_data.imap.anonymous));
- server->remember_passwd =
+ mb_data.imap.anonymous)));
+ libbalsa_server_set_remember_passwd(server,
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->
- mb_data.imap.remember));
- server->tls_mode = balsa_server_conf_get_tls_mode(&mcw->mb_data.imap.bsc);
+ mb_data.imap.remember)));
+ libbalsa_server_set_tls_mode(server, balsa_server_conf_get_tls_mode(&mcw->mb_data.imap.bsc));
libbalsa_server_set_password(server,
gtk_entry_get_text(GTK_ENTRY
(mcw->mb_data.imap.password)));
@@ -975,8 +973,7 @@ update_imap_mailbox(MailboxConfWindow *mcw)
balsa_server_conf_get_use_ssl
(&mcw->mb_data.imap.bsc));
libbalsa_server_config_changed(server);
- g_signal_connect(G_OBJECT(server), "get-password",
- G_CALLBACK(ask_password), mailbox);
+ libbalsa_server_connect_get_password(server, G_CALLBACK(ask_password), mailbox);
libbalsa_mailbox_imap_set_path(mailbox,
(path == NULL || path[0] == '\0')
diff --git a/src/mailbox-node.c b/src/mailbox-node.c
index e4e90d1..fcaf96e 100644
--- a/src/mailbox-node.c
+++ b/src/mailbox-node.c
@@ -512,7 +512,7 @@ imap_dir_cb(BalsaMailboxNode* mb)
? _("Scanning of %s failed: %s\n"
"Check network connectivity.")
: _("Scanning of %s failed: %s"),
- mb->server->host,
+ libbalsa_server_get_host(mb->server),
error->message);
g_error_free(error);
imap_scan_destroy_tree(&imap_tree);
@@ -605,16 +605,17 @@ balsa_mailbox_node_new_from_config(const gchar* group)
folder->server = LIBBALSA_SERVER(libbalsa_imap_server_new_from_config());
if(balsa_app.debug)
- printf("Server loaded, host: %s, %s.\n", folder->server->host,
- folder->server->use_ssl ? "SSL" : "no SSL");
+ printf("Server loaded, host: %s, %s.\n",
+ libbalsa_server_get_host(folder->server),
+ libbalsa_server_get_use_ssl(folder->server) ? "SSL" : "no SSL");
g_signal_connect_swapped(G_OBJECT(folder->server), "config-changed",
G_CALLBACK(config_folder_update), folder);
g_signal_connect(G_OBJECT(folder), "show-prop-dialog",
G_CALLBACK(folder_conf_imap_node), NULL);
g_signal_connect(G_OBJECT(folder), "append-subtree",
G_CALLBACK(imap_dir_cb), NULL);
- libbalsa_server_connect_signals(folder->server,
- G_CALLBACK(ask_password), NULL);
+ libbalsa_server_connect_get_password(folder->server,
+ G_CALLBACK(ask_password), NULL);
balsa_mailbox_node_load_config(folder, group);
folder->dir = libbalsa_conf_get_string("Directory");
diff --git a/src/save-restore.c b/src/save-restore.c
index 98fe1b8..5bc287f 100644
--- a/src/save-restore.c
+++ b/src/save-restore.c
@@ -385,9 +385,9 @@ config_mailbox_init(const gchar * prefix)
if (mailbox == NULL)
return FALSE;
if (LIBBALSA_IS_MAILBOX_REMOTE(mailbox)) {
- LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
- libbalsa_server_connect_signals(server,
- G_CALLBACK(ask_password), mailbox);
+ LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_GET_SERVER(mailbox);
+ libbalsa_server_connect_get_password(server,
+ G_CALLBACK(ask_password), mailbox);
g_signal_connect_swapped(server, "config-changed",
G_CALLBACK(config_mailbox_update),
mailbox);
@@ -467,8 +467,8 @@ config_load_smtp_server(const gchar * key, const gchar * value, gpointer data)
libbalsa_conf_push_group(key);
smtp_server = libbalsa_smtp_server_new_from_config(value);
- libbalsa_server_connect_signals(LIBBALSA_SERVER(smtp_server),
- G_CALLBACK(ask_password), NULL);
+ libbalsa_server_connect_get_password(LIBBALSA_SERVER(smtp_server),
+ G_CALLBACK(ask_password), NULL);
libbalsa_conf_pop_group();
libbalsa_smtp_server_add_to_list(smtp_server, smtp_servers);
@@ -912,6 +912,7 @@ config_global_load(void)
LibBalsaSmtpServer *smtp_server;
LibBalsaServer *server;
gchar *passphrase, *hostname;
+ gchar *esmtp_user;
smtp_server = libbalsa_smtp_server_new();
libbalsa_smtp_server_set_name(smtp_server,
@@ -925,8 +926,10 @@ config_global_load(void)
&def_used);
libbalsa_server_set_host(server, hostname, FALSE);
g_free(hostname);
- libbalsa_server_set_username(server,
- libbalsa_conf_get_string("ESMTPUser"));
+
+ esmtp_user = libbalsa_conf_get_string("ESMTPUser");
+ libbalsa_server_set_username(server, esmtp_user);
+ g_free(esmtp_user);
passphrase = libbalsa_conf_private_get_string("ESMTPPassphrase");
if (passphrase) {
@@ -937,15 +940,15 @@ config_global_load(void)
}
/* default set to "Use TLS if possible" */
- server->tls_mode = libbalsa_conf_get_int("ESMTPTLSMode=1");
+ libbalsa_server_set_tls_mode(server, libbalsa_conf_get_int("ESMTPTLSMode=1"));
passphrase =
libbalsa_conf_private_get_string("ESMTPCertificatePassphrase");
if (passphrase) {
gchar* passphrase_rot = libbalsa_rot(passphrase);
g_free(passphrase);
- g_free(server->cert_passphrase);
- server->cert_passphrase = passphrase_rot;
+ libbalsa_server_set_cert_passphrase(server, passphrase_rot);
+ g_free(passphrase_rot);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]