mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -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
|
// connect with account
|
||||||
ProfAccount *account = accounts_get_account(lower);
|
ProfAccount *account = accounts_get_account(lower);
|
||||||
if (account) {
|
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
|
// use password if set
|
||||||
if (account->password) {
|
if (account->password) {
|
||||||
conn_status = cl_ev_connect_account(account);
|
conn_status = cl_ev_connect_account(account);
|
||||||
|
@ -241,3 +241,20 @@ account_free(ProfAccount *account)
|
|||||||
g_list_free_full(account->otr_always, g_free);
|
g_list_free_full(account->otr_always, g_free);
|
||||||
free(account);
|
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);
|
char* account_create_connect_jid(ProfAccount *account);
|
||||||
gboolean account_eval_password(ProfAccount *account);
|
gboolean account_eval_password(ProfAccount *account);
|
||||||
void account_free(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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user