irc: add info "irc_is_message_ignored"

This commit is contained in:
Sébastien Helleu 2021-02-03 18:30:32 +01:00
parent 42a86f0a36
commit a34959a619
25 changed files with 248 additions and 15 deletions

View File

@ -25,6 +25,7 @@ New features::
* core: add buffer local variable "completion_default_template" (evaluated) to override the value of option "weechat.completion.default_template" (issue #1600)
* core: add option "recreate" in command /filter
* core: add evaluation of conditions in evaluation of expressions with "eval_cond:" (issue #1582)
* irc: add info "irc_is_message_ignored"
* irc: add server option "default_chantypes", used when the server does not send them in message 005 (issue #1610)
* trigger: add variable "${tg_trigger_name}" in command trigger evaluated strings (issue #1580)

View File

@ -20,6 +20,8 @@
| irc | irc_is_channel | 1, falls die Zeichenkette ein gültiger IRC-Channelname für den Server ist | Server,Channel (Server ist optional)
| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message)
| irc | irc_is_nick | 1, falls die Zeichenkette ein gültiger IRC Nickname ist | Server,Nickname (Server ist optional)
| irc | irc_nick | aktuellen Nicknamen für den Server erhalten | Servername

View File

@ -20,6 +20,8 @@
| irc | irc_is_channel | 1 if string is a valid IRC channel name for server | server,channel (server is optional)
| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message)
| irc | irc_is_nick | 1 if string is a valid IRC nick name | server,nickname (server is optional)
| irc | irc_nick | get current nick on a server | server name

View File

@ -20,6 +20,8 @@
| irc | irc_is_channel | 1 si la chaîne est un nom de canal IRC valide pour le serveur | serveur,canal (le serveur est optionnel)
| irc | irc_is_message_ignored | 1 si le pseudo est ignoré (le message n'est pas affiché) | serveur,message (message est le message brut IRC)
| irc | irc_is_nick | 1 si la chaîne est un pseudo IRC valide | serveur,pseudo (le serveur est optionnel)
| irc | irc_nick | retourne le pseudo utilisé actuellement sur un serveur | nom de serveur

View File

@ -20,6 +20,8 @@
| irc | irc_is_channel | 1 se la stringa è il nome di un canale IRC valido per il server | server,canale (server è opzionale)
| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message)
| irc | irc_is_nick | 1 se la stringa è un nick IRC valido | server,nickname (server is optional)
| irc | irc_nick | ottiene nick corrente su un server | nome server

View File

@ -20,6 +20,8 @@
| irc | irc_is_channel | 文字列がサーバの有効な IRC チャンネル名なら 1 | サーバ、チャンネル (サーバは任意)
| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message)
| irc | irc_is_nick | 文字列が有効な IRC ニックネームなら 1 | server,nickname (server is optional)
| irc | irc_nick | あるサーバの現在のニックネームを取得 | サーバ名

View File

@ -20,6 +20,8 @@
| irc | irc_is_channel | 1 jeśli ciąg jest poprawną nazwą kanału IRC dla serwera | serwer,kanał (serwer jest opcjonalny)
| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message)
| irc | irc_is_nick | 1 jeśli ciąg jest poprawną nazwą użytkownika IRC | serwer,nick (serwer jest opcjonalny)
| irc | irc_nick | pobiera aktualny nick z serwera | nazwa serwera

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8939,6 +8939,12 @@ msgstr "server,vlasnost"
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr "hodnota funkce, pokud je podporována serverem (z IRC zprávy 005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "rozdělit IRC zprávu"

View File

@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2021-01-31 10:32+0100\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@ -10802,6 +10802,12 @@ msgstr ""
"Wert der Funktion, sofern es vom Server unterstützt wird (durch IRC Message "
"005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "Parse eine IRC Nachricht"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -9240,6 +9240,12 @@ msgstr ""
"valor de la característica, si es soportada por el servidor (desde el "
"mensaje IRC 005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "analiza un mensaje IRC"

View File

@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"PO-Revision-Date: 2021-01-30 09:54+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2021-02-03 18:29+0100\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@ -10555,6 +10555,12 @@ msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
"valeur de la fonctionnalité, si supportée par le serveur (du message IRC 005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr "1 si le pseudo est ignoré (le message n'est pas affiché)"
msgid "server,message (message is the raw IRC message)"
msgstr "serveur,message (message est le message brut IRC)"
msgid "parse an IRC message"
msgstr "analyse un message IRC"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8328,6 +8328,12 @@ msgstr "cél: szerver neve"
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
#, fuzzy
msgid "parse an IRC message"
msgstr "üzenet: küldendő üzenet"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -9433,6 +9433,12 @@ msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
"valore della caratteristica, se supportata dal servre (dal messaggio IRC 005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "controlla un messaggio IRC"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
@ -10073,6 +10073,12 @@ msgstr "サーバ、機能"
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr "サーバがサポートする場合、機能の値 (IRC メッセージ 005 を使う)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "IRC メッセージを解析"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2021-01-15 21:34+0100\n"
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@ -10310,6 +10310,12 @@ msgstr "serwer,właściwość"
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr "wartość opcji, jeśli jest wpierana przez serwer (z wiadomości IRC 005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "przetwarza wiadomość IRC"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese <>\n"
@ -9889,6 +9889,12 @@ msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
"valor da funcionalidade, se suportada pelo servidor (da mensagem de IRC 005)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "analisar um mensagem de IRC"

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-18 11:34+0200\n"
"Last-Translator: Eduardo Elias <camponez@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8764,6 +8764,12 @@ msgstr ""
"valor da funcionalidade, se suportada pelo servidor (da \"message 005\" do "
"IRC)"
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr "interpretar uma mensagem IRC"

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2020-04-28 16:40+0200\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8362,6 +8362,12 @@ msgstr "цель: название сервера"
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
#, fuzzy
msgid "parse an IRC message"
msgstr "сообщение: отправляемое сообщение"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2019-11-03 08:38+0100\n"
"Last-Translator: Hasan Kiran <sunder67@hotmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -7563,6 +7563,12 @@ msgstr ""
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr ""

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-01-30 09:32+0100\n"
"POT-Creation-Date: 2021-02-03 18:29+0100\n"
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -7421,6 +7421,12 @@ msgstr ""
msgid "value of feature, if supported by server (from IRC message 005)"
msgstr ""
msgid "1 if the nick is ignored (message is not displayed)"
msgstr ""
msgid "server,message (message is the raw IRC message)"
msgstr ""
msgid "parse an IRC message"
msgstr ""

View File

@ -400,6 +400,47 @@ irc_info_info_irc_server_isupport_value_cb (const void *pointer, void *data,
return (isupport_value) ? strdup (isupport_value) : NULL;
}
/*
* Returns IRC info "irc_is_message_ignored".
*/
char *
irc_info_info_irc_is_message_ignored_cb (const void *pointer, void *data,
const char *info_name,
const char *arguments)
{
char *pos_comma, *server;
const char *pos_message;
struct t_irc_server *ptr_server;
/* make C compiler happy */
(void) pointer;
(void) data;
(void) info_name;
if (!arguments || !arguments[0])
return NULL;
ptr_server = NULL;
pos_message = arguments;
pos_comma = strchr (arguments, ',');
if (!pos_comma)
return NULL;
pos_message = pos_comma + 1;
server = weechat_strndup (arguments, pos_comma - arguments);
if (server)
{
ptr_server = irc_server_search (server);
free (server);
}
if (!ptr_server)
return NULL;
return (irc_message_ignored (ptr_server, pos_message)) ?
strdup ("1") : NULL;
}
/*
* Returns IRC info with hashtable "irc_message_parse".
*/
@ -1129,6 +1170,11 @@ irc_info_init ()
N_("value of feature, if supported by server (from IRC message 005)"),
N_("server,feature"),
&irc_info_info_irc_server_isupport_value_cb, NULL, NULL);
weechat_hook_info (
"irc_is_message_ignored",
N_("1 if the nick is ignored (message is not displayed)"),
N_("server,message (message is the raw IRC message)"),
&irc_info_info_irc_is_channel_cb, NULL, NULL);
/* info_hashtable hooks */
weechat_hook_info_hashtable (

View File

@ -27,7 +27,9 @@
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-channel.h"
#include "irc-color.h"
#include "irc-config.h"
#include "irc-ignore.h"
#include "irc-server.h"
@ -538,6 +540,56 @@ irc_message_get_address_from_host (const char *host)
return address;
}
/*
* Checks if a raw message is ignored (nick ignored on this server/channel).
*
* Returns:
* 0: message not ignored (displayed)
* 1: message ignored (not displayed)
*/
int
irc_message_ignored (struct t_irc_server *server, const char *message)
{
char *nick, *host, *host_no_color, *channel;
struct t_irc_channel *ptr_channel;
int ignored;
if (!server || !message)
return 0;
/* parse raw message */
irc_message_parse (server, message,
NULL, NULL, &nick, NULL, &host,
NULL, &channel, NULL,
NULL, NULL, NULL,
NULL, NULL);
/* remove colors from host */
host_no_color = (host) ? irc_color_decode (host, 0) : NULL;
/* search channel */
ptr_channel = (channel) ? irc_channel_search (server, channel) : NULL;
/* check if message is ignored or not */
ignored = irc_ignore_check (
server,
(ptr_channel) ? ptr_channel->name : channel,
nick,
host_no_color);
if (nick)
free (nick);
if (host)
free (host);
if (host_no_color)
free (host_no_color);
if (channel)
free (channel);
return ignored;
}
/*
* Replaces special IRC vars ($nick, $channel, $server) in a string.
*

View File

@ -38,6 +38,8 @@ extern char *irc_message_convert_charset (const char *message,
const char *modifier_data);
extern const char *irc_message_get_nick_from_host (const char *host);
extern const char *irc_message_get_address_from_host (const char *host);
extern int irc_message_ignored (struct t_irc_server *server,
const char *message);
extern char *irc_message_replace_vars (struct t_irc_server *server,
const char *channel_name,
const char *string);

View File

@ -6679,7 +6679,8 @@ irc_protocol_recv_command (struct t_irc_server *server,
message_ignored = irc_ignore_check (
server,
(ptr_channel) ? ptr_channel->name : msg_channel,
nick, host_no_color);
nick,
host_no_color);
/* send signal with received command, even if command is ignored */
irc_server_send_signal (server, "irc_raw_in", msg_command,

View File

@ -29,6 +29,7 @@ extern "C"
#include "src/core/wee-hashtable.h"
#include "src/core/wee-hook.h"
#include "src/plugins/irc/irc-config.h"
#include "src/plugins/irc/irc-ignore.h"
#include "src/plugins/irc/irc-message.h"
#include "src/plugins/irc/irc-server.h"
}
@ -647,6 +648,46 @@ TEST(IrcMessage, GetAddressFromHost)
irc_message_get_address_from_host (NICK_256_WITH_SPACE));
}
/*
* Tests functions:
* irc_message_ignored
*/
TEST(IrcMessage, Ignored)
{
struct t_irc_server *server;
struct t_irc_ignore *ignore1, *ignore2;
server = irc_server_alloc ("test_ignore");
CHECK(server);
ignore1 = irc_ignore_new ("^alice@host1$", "test_ignore", "#test1");
ignore2 = irc_ignore_new ("^bob@host2$", "test_ignore", "#test2");
LONGS_EQUAL(0, irc_message_ignored (NULL, NULL));
LONGS_EQUAL(0, irc_message_ignored (NULL, ""));
LONGS_EQUAL(0, irc_message_ignored (NULL,
":alice@host1 PRIVMSG #test1 :hi!"));
LONGS_EQUAL(1, irc_message_ignored (server,
":alice@host1 PRIVMSG #test1 :hi!"));
LONGS_EQUAL(0, irc_message_ignored (server,
":alice@host1 PRIVMSG #test :hi!"));
LONGS_EQUAL(0, irc_message_ignored (server,
":alice@host2 PRIVMSG #test1 :hi!"));
LONGS_EQUAL(1, irc_message_ignored (server,
":bob@host2 PRIVMSG #test2 :hi!"));
LONGS_EQUAL(0, irc_message_ignored (server,
":bob@host2 PRIVMSG #test :hi!"));
LONGS_EQUAL(0, irc_message_ignored (server,
":bob2@host2 PRIVMSG #test2 :hi!"));
irc_ignore_free (ignore1);
irc_ignore_free (ignore2);
irc_server_free (server);
}
/*
* Tests functions:
* irc_message_replace_vars