1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Override account options with connect options

With this feature user can configure TLS policy for an account and
override it for a single login with /connect command.

Example:
 /account set <jid> tls force
 /connect <jid> tls trust
The example shows how to trust server's certificate only once.

Fixes #1021.
This commit is contained in:
Dmitry Podgorny 2018-11-07 14:56:43 +02:00
parent 7f65aaa9a2
commit 3fd6f70bd9
3 changed files with 28 additions and 0 deletions

View File

@ -393,6 +393,14 @@ cmd_connect(ProfWin *window, const char *const command, gchar **args)
// connect with account
ProfAccount *account = accounts_get_account(lower);
if (account) {
// override account options with connect options
if (altdomain != NULL)
account_set_server(account, altdomain);
if (port != 0)
account_set_port(account, port);
if (tls_policy != NULL)
account_set_tls_policy(account, tls_policy);
// use password if set
if (account->password) {
conn_status = cl_ev_connect_account(account);

View File

@ -241,3 +241,20 @@ account_free(ProfAccount *account)
g_list_free_full(account->otr_always, g_free);
free(account);
}
void account_set_server(ProfAccount *account, const char *server)
{
free(account->server);
account->server = strdup(server);
}
void account_set_port(ProfAccount *account, int port)
{
account->port = port;
}
void account_set_tls_policy(ProfAccount *account, const char *tls_policy)
{
free(account->tls_policy);
account->tls_policy = strdup(tls_policy);
}

View File

@ -77,5 +77,8 @@ ProfAccount* account_new(const gchar *const name, const gchar *const jid,
char* account_create_connect_jid(ProfAccount *account);
gboolean account_eval_password(ProfAccount *account);
void account_free(ProfAccount *account);
void account_set_server(ProfAccount *account, const char *server);
void account_set_port(ProfAccount *account, int port);
void account_set_tls_policy(ProfAccount *account, const char *tls_policy);
#endif