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:
parent
7f65aaa9a2
commit
3fd6f70bd9
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user