mirror of
https://github.com/weechat/weechat.git
synced 2026-06-26 12:56:37 +02:00
Merge branch 'secured-data'
This commit is contained in:
@@ -1620,7 +1620,8 @@ irc_config_server_new_option (struct t_config_file *config_file,
|
||||
new_option = weechat_config_new_option (
|
||||
config_file, section,
|
||||
option_name, "string",
|
||||
N_("username for SASL authentication"),
|
||||
N_("username for SASL authentication "
|
||||
"(note: content is evaluated, see /help eval)"),
|
||||
NULL, 0, 0,
|
||||
default_value, value,
|
||||
null_value_allowed,
|
||||
@@ -1632,7 +1633,8 @@ irc_config_server_new_option (struct t_config_file *config_file,
|
||||
new_option = weechat_config_new_option (
|
||||
config_file, section,
|
||||
option_name, "string",
|
||||
N_("password for SASL authentication"),
|
||||
N_("password for SASL authentication "
|
||||
"(note: content is evaluated, see /help eval)"),
|
||||
NULL, 0, 0,
|
||||
default_value, value,
|
||||
null_value_allowed,
|
||||
@@ -1745,7 +1747,8 @@ irc_config_server_new_option (struct t_config_file *config_file,
|
||||
N_("command(s) to run when connected to server (many commands "
|
||||
"should be separated by \";\", use \"\\;\" for a semicolon, "
|
||||
"special variables $nick, $channel and $server are replaced "
|
||||
"by their value)"),
|
||||
"by their value) "
|
||||
"(note: content is evaluated, see /help eval)"),
|
||||
NULL, 0, 0,
|
||||
default_value, value,
|
||||
null_value_allowed,
|
||||
@@ -1771,7 +1774,8 @@ irc_config_server_new_option (struct t_config_file *config_file,
|
||||
config_file, section,
|
||||
option_name, "string",
|
||||
N_("comma separated list of channels to join when connected to server "
|
||||
"(example: \"#chan1,#chan2,#chan3 key1,key2\")"),
|
||||
"(example: \"#chan1,#chan2,#chan3 key1,key2\") "
|
||||
"(note: content is evaluated, see /help eval)"),
|
||||
NULL, 0, 0,
|
||||
default_value, value,
|
||||
null_value_allowed,
|
||||
|
||||
@@ -149,8 +149,7 @@ irc_protocol_tags (const char *command, const char *tags, const char *nick)
|
||||
IRC_PROTOCOL_CALLBACK(authenticate)
|
||||
{
|
||||
int sasl_mechanism;
|
||||
const char *sasl_username, *sasl_password;
|
||||
char *answer;
|
||||
char *sasl_username, *sasl_password, *answer;
|
||||
|
||||
IRC_PROTOCOL_MIN_ARGS(2);
|
||||
|
||||
@@ -158,10 +157,12 @@ IRC_PROTOCOL_CALLBACK(authenticate)
|
||||
{
|
||||
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);
|
||||
answer = NULL;
|
||||
switch (sasl_mechanism)
|
||||
{
|
||||
@@ -198,6 +199,10 @@ IRC_PROTOCOL_CALLBACK(authenticate)
|
||||
irc_sasl_mechanism_string[IRC_SERVER_OPTION_INTEGER(server, IRC_SERVER_OPTION_SASL_MECHANISM)]);
|
||||
irc_server_sendf (server, 0, NULL, "CAP END");
|
||||
}
|
||||
if (sasl_username)
|
||||
free (sasl_username);
|
||||
if (sasl_password)
|
||||
free (sasl_password);
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
@@ -2076,9 +2081,7 @@ IRC_PROTOCOL_CALLBACK(wallops)
|
||||
|
||||
IRC_PROTOCOL_CALLBACK(001)
|
||||
{
|
||||
char **commands, **ptr_cmd, *vars_replaced;
|
||||
char *away_msg;
|
||||
const char *ptr_command;
|
||||
char *server_command, **commands, **ptr_command, *vars_replaced, *away_msg;
|
||||
|
||||
IRC_PROTOCOL_MIN_ARGS(3);
|
||||
|
||||
@@ -2117,19 +2120,21 @@ IRC_PROTOCOL_CALLBACK(001)
|
||||
WEECHAT_HOOK_SIGNAL_STRING, server->name);
|
||||
|
||||
/* execute command when connected */
|
||||
ptr_command = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_COMMAND);
|
||||
if (ptr_command && ptr_command[0])
|
||||
server_command = weechat_string_eval_expression (IRC_SERVER_OPTION_STRING(server,
|
||||
IRC_SERVER_OPTION_COMMAND),
|
||||
NULL, NULL);
|
||||
if (server_command && server_command[0])
|
||||
{
|
||||
/* splitting command on ';' which can be escaped with '\;' */
|
||||
commands = weechat_string_split_command (ptr_command, ';');
|
||||
/* split command on ';' which can be escaped with '\;' */
|
||||
commands = weechat_string_split_command (server_command, ';');
|
||||
if (commands)
|
||||
{
|
||||
for (ptr_cmd = commands; *ptr_cmd; ptr_cmd++)
|
||||
for (ptr_command = commands; *ptr_command; ptr_command++)
|
||||
{
|
||||
vars_replaced = irc_message_replace_vars (server, NULL,
|
||||
*ptr_cmd);
|
||||
*ptr_command);
|
||||
weechat_command (server->buffer,
|
||||
(vars_replaced) ? vars_replaced : *ptr_cmd);
|
||||
(vars_replaced) ? vars_replaced : *ptr_command);
|
||||
if (vars_replaced)
|
||||
free (vars_replaced);
|
||||
}
|
||||
@@ -2144,6 +2149,9 @@ IRC_PROTOCOL_CALLBACK(001)
|
||||
else
|
||||
irc_server_autojoin_channels (server);
|
||||
|
||||
if (server_command)
|
||||
free (server_command);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -54,6 +54,9 @@ char *rmodifier_config_default_list[][4] =
|
||||
{ "set_pass", "history_add",
|
||||
"^(/set +\\S*password\\S* +)(.*)", "1,2*"
|
||||
},
|
||||
{ "secure", "history_add,input_text_display",
|
||||
"^(/secure +(passphrase|decrypt|set \\S+) +)(.*)", "1,3*"
|
||||
},
|
||||
{ NULL, NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user