1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 22:36:38 +02:00

Merge branch 'secured-data'

This commit is contained in:
Sebastien Helleu
2013-08-02 19:19:25 +02:00
26 changed files with 1956 additions and 106 deletions
+34 -14
View File
@@ -317,23 +317,32 @@ irc_server_strncasecmp (struct t_irc_server *server,
int
irc_server_sasl_enabled (struct t_irc_server *server)
{
int sasl_mechanism;
const char *sasl_username, *sasl_password;
int sasl_mechanism, rc;
char *sasl_username, *sasl_password;
sasl_mechanism = IRC_SERVER_OPTION_INTEGER(server,
IRC_SERVER_OPTION_SASL_MECHANISM);
sasl_username = IRC_SERVER_OPTION_STRING(server,
IRC_SERVER_OPTION_SASL_USERNAME);
sasl_password = IRC_SERVER_OPTION_STRING(server,
IRC_SERVER_OPTION_SASL_PASSWORD);
sasl_username = weechat_string_eval_expression (IRC_SERVER_OPTION_STRING(server,
IRC_SERVER_OPTION_SASL_USERNAME),
NULL, NULL);
sasl_password = weechat_string_eval_expression (IRC_SERVER_OPTION_STRING(server,
IRC_SERVER_OPTION_SASL_PASSWORD),
NULL, NULL);
/*
* SASL is enabled if using mechanism "external"
* or if both username AND password are set
*/
return ((sasl_mechanism == IRC_SASL_MECHANISM_EXTERNAL)
|| (sasl_username && sasl_username[0]
&& sasl_password && sasl_password[0])) ? 1 : 0;
rc = ((sasl_mechanism == IRC_SASL_MECHANISM_EXTERNAL)
|| (sasl_username && sasl_username[0]
&& sasl_password && sasl_password[0])) ? 1 : 0;
if (sasl_username)
free (sasl_username);
if (sasl_password)
free (sasl_password);
return rc;
}
/*
@@ -1176,9 +1185,11 @@ irc_server_alloc_with_url (const char *irc_url)
}
}
if (pos_password && pos_password[0])
{
weechat_config_option_set (ptr_server->options[IRC_SERVER_OPTION_PASSWORD],
pos_password,
1);
}
weechat_config_option_set (ptr_server->options[IRC_SERVER_OPTION_AUTOCONNECT],
"on",
1);
@@ -3039,10 +3050,12 @@ irc_server_reconnect_schedule (struct t_irc_server *server)
void
irc_server_login (struct t_irc_server *server)
{
const char *password, *username, *realname, *capabilities;
char *username2;
const char *username, *realname, *capabilities;
char *password, *username2;
password = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_PASSWORD);
password = weechat_string_eval_expression (IRC_SERVER_OPTION_STRING(server,
IRC_SERVER_OPTION_PASSWORD),
NULL, NULL);
username = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_USERNAME);
realname = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_REALNAME);
capabilities = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_CAPABILITIES);
@@ -3050,6 +3063,9 @@ irc_server_login (struct t_irc_server *server)
if (password && password[0])
irc_server_sendf (server, 0, NULL, "PASS %s", password);
if (password)
free (password);
if (!server->nick)
{
irc_server_set_nick (server,
@@ -4104,7 +4120,7 @@ void
irc_server_autojoin_channels (struct t_irc_server *server)
{
struct t_irc_channel *ptr_channel;
const char *autojoin;
char *autojoin;
/* auto-join after disconnection (only rejoins opened channels) */
if (!server->disable_autojoin && server->reconnect_join && server->channels)
@@ -4136,9 +4152,13 @@ irc_server_autojoin_channels (struct t_irc_server *server)
else
{
/* auto-join when connecting to server for first time */
autojoin = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_AUTOJOIN);
autojoin = weechat_string_eval_expression (IRC_SERVER_OPTION_STRING(server,
IRC_SERVER_OPTION_AUTOJOIN),
NULL, NULL);
if (!server->disable_autojoin && autojoin && autojoin[0])
irc_command_join_server (server, autojoin, 0, 0);
if (autojoin)
free (autojoin);
}
server->disable_autojoin = 0;