diff options
Diffstat (limited to 'src/config')
-rw-r--r-- | src/config/account.c | 10 | ||||
-rw-r--r-- | src/config/account.h | 4 | ||||
-rw-r--r-- | src/config/accounts.c | 28 | ||||
-rw-r--r-- | src/config/accounts.h | 3 |
4 files changed, 39 insertions, 6 deletions
diff --git a/src/config/account.c b/src/config/account.c index 71b05a96..534d1138 100644 --- a/src/config/account.c +++ b/src/config/account.c @@ -51,7 +51,8 @@ account_new(const gchar * const name, const gchar * const jid, int priority_away, int priority_xa, int priority_dnd, const gchar * const muc_service, const gchar * const muc_nick, const gchar * const otr_policy, GList *otr_manual, GList *otr_opportunistic, - GList *otr_always, const gchar * const pgp_keyid, const char *const startscript) + GList *otr_always, const gchar * const pgp_keyid, const char *const startscript, + gchar *tls_policy) { ProfAccount *new_account = malloc(sizeof(ProfAccount)); @@ -156,6 +157,12 @@ account_new(const gchar * const name, const gchar * const jid, new_account->startscript = NULL; } + if (tls_policy != NULL) { + new_account->tls_policy = strdup(tls_policy); + } else { + new_account->tls_policy = NULL; + } + return new_account; } @@ -224,6 +231,7 @@ account_free(ProfAccount *account) free(account->otr_policy); free(account->pgp_keyid); free(account->startscript); + free(account->tls_policy); g_list_free_full(account->otr_manual, g_free); g_list_free_full(account->otr_opportunistic, g_free); g_list_free_full(account->otr_always, g_free); diff --git a/src/config/account.h b/src/config/account.h index d2b55569..bb5f27ce 100644 --- a/src/config/account.h +++ b/src/config/account.h @@ -61,6 +61,7 @@ typedef struct prof_account_t { GList *otr_always; gchar *pgp_keyid; gchar *startscript; + gchar *tls_policy; } ProfAccount; ProfAccount* account_new(const gchar * const name, const gchar * const jid, @@ -70,7 +71,8 @@ ProfAccount* account_new(const gchar * const name, const gchar * const jid, int priority_away, int priority_xa, int priority_dnd, const gchar * const muc_service, const gchar * const muc_nick, const gchar * const otr_policy, GList *otr_manual, GList *otr_opportunistic, - GList *otr_always, const gchar * const pgp_keyid, const char *const startscript); + GList *otr_always, const gchar * const pgp_keyid, const char *const startscript, + gchar *tls_policy); char* account_create_full_jid(ProfAccount *account); gboolean account_eval_password(ProfAccount *account); void account_free(ProfAccount *account); diff --git a/src/config/accounts.c b/src/config/accounts.c index 7ae34983..43239d76 100644 --- a/src/config/accounts.c +++ b/src/config/accounts.c @@ -120,7 +120,7 @@ accounts_reset_enabled_search(void) } void -accounts_add(const char *account_name, const char *altdomain, const int port) +accounts_add(const char *account_name, const char *altdomain, const int port, const char *const tls_policy) { // set account name and resource const char *barejid = account_name; @@ -144,6 +144,9 @@ accounts_add(const char *account_name, const char *altdomain, const int port) if (port != 0) { g_key_file_set_integer(accounts, account_name, "port", port); } + if (tls_policy) { + g_key_file_set_string(accounts, account_name, "tls.policy", tls_policy); + } Jid *jidp = jid_create(barejid); GString *muc_service = g_string_new("conference."); @@ -269,11 +272,19 @@ accounts_get_account(const char * const name) startscript = g_key_file_get_string(accounts, name, "script.start", NULL); } + gchar *tls_policy = g_key_file_get_string(accounts, name, "tls.policy", NULL); + if (tls_policy && ((g_strcmp0(tls_policy, "force") != 0) && + (g_strcmp0(tls_policy, "allow") != 0) && + (g_strcmp0(tls_policy, "disable") != 0))) { + g_free(tls_policy); + tls_policy = NULL; + } + ProfAccount *new_account = account_new(name, jid, password, eval_password, enabled, server, port, resource, last_presence, login_presence, priority_online, priority_chat, priority_away, priority_xa, priority_dnd, muc_service, muc_nick, otr_policy, otr_manual, - otr_opportunistic, otr_always, pgp_keyid, startscript); + otr_opportunistic, otr_always, pgp_keyid, startscript, tls_policy); g_free(jid); g_free(password); @@ -287,6 +298,7 @@ accounts_get_account(const char * const name) g_free(otr_policy); g_free(pgp_keyid); g_free(startscript); + g_free(tls_policy); return new_account; } @@ -354,7 +366,8 @@ accounts_rename(const char * const account_name, const char * const new_name) "otr.always", "pgp.keyid", "last.activity", - "script.start" + "script.start", + "tls.policy" }; int i; @@ -679,6 +692,15 @@ accounts_set_otr_policy(const char * const account_name, const char * const valu } void +accounts_set_tls_policy(const char * const account_name, const char * const value) +{ + if (accounts_account_exists(account_name)) { + g_key_file_set_string(accounts, account_name, "tls.policy", value); + _save_accounts(); + } +} + +void accounts_set_priority_online(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { diff --git a/src/config/accounts.h b/src/config/accounts.h index 610ed6a3..bd9d9307 100644 --- a/src/config/accounts.h +++ b/src/config/accounts.h @@ -47,7 +47,7 @@ char * accounts_find_all(const char * const prefix); char * accounts_find_enabled(const char * const prefix); void accounts_reset_all_search(void); void accounts_reset_enabled_search(void); -void accounts_add(const char *jid, const char *altdomain, const int port); +void accounts_add(const char *jid, const char *altdomain, const int port, const char *const tls_policy); int accounts_remove(const char *jid); gchar** accounts_get_list(void); ProfAccount* accounts_get_account(const char * const name); @@ -65,6 +65,7 @@ void accounts_set_eval_password(const char * const account_name, const char * co void accounts_set_muc_service(const char * const account_name, const char * const value); void accounts_set_muc_nick(const char * const account_name, const char * const value); void accounts_set_otr_policy(const char * const account_name, const char * const value); +void accounts_set_tls_policy(const char * const account_name, const char * const value); void accounts_set_last_presence(const char * const account_name, const char * const value); void accounts_set_last_status(const char * const account_name, const char * const value); void accounts_set_last_activity(const char * const account_name); |