mirror of
https://github.com/weechat/weechat.git
synced 2026-07-07 21:05:42 +02:00
Beta version of IRC proxy feature in Relay plugin
Major changes in Relay plugin: - IRC proxy feature (beta), - raw buffer. Changes in IRC plugin: - add tags for messages sent to servers, - add signal "irc_input_send" to simulate text/command on an IRC buffer, - add prefix in infolist "irc_nick".
This commit is contained in:
@@ -420,8 +420,8 @@
|
||||
........................................
|
||||
Daten direkt an Server senden (siehe RFC 2812)
|
||||
|
||||
server: an diesen Server senden (interner Name)
|
||||
data: unbearbeitete Daten die gesendet werden sollen
|
||||
server: send to this server (internal name)
|
||||
data: raw data to send
|
||||
........................................
|
||||
|
||||
• *`/reconnect`* `[-all [-nojoin] | Servername [Servername ...] [-nojoin]]`::
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
** Werte: on, off (Standardwert: off)
|
||||
|
||||
* *irc.look.raw_messages*
|
||||
** Beschreibung: Anzahl der IRC-RAW-Nachrichten die im Speicher gehalten werden sollen falls der RAW-Daten-Buffer geschlossen ist (die Nachrichten werden umgehend angezeigt, wenn ein RAW-Daten-Buffer geöffnet wird)
|
||||
** Beschreibung: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** Typ: integer
|
||||
** Werte: 0 .. 65535 (Standardwert: 256)
|
||||
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
• *`/relay`* `[list | listfull | add protocol.name port | del protocol.name]`::
|
||||
• *`/relay`* `[list | listfull | add protocol.name port | del protocol.name | raw]`::
|
||||
|
||||
........................................
|
||||
Relay-Kontrolle
|
||||
|
||||
list: Auflistung der Relay-Clients (nur aktive Relays)
|
||||
listfull: detaillierte Auflistung der Relay-Clients (alle Relays)
|
||||
listrelay: Auflistung der Relays (Name und Port)
|
||||
add: füge ein Relay, für ein Protokoll + Name, hinzu
|
||||
del: entferne Relay für ein Protokoll + Name
|
||||
protocol.name: Protokoll und Name des Relays
|
||||
Beispiel: irc.freenode
|
||||
port: Port den der Relay nutzen soll
|
||||
list: list relay clients (only active relays)
|
||||
listfull: list relay clients (verbose, all relays)
|
||||
listrelay: list relays (name and port)
|
||||
add: add relay for a protocol + name
|
||||
del: remove relay for a protocol + name
|
||||
protocol.name: protocol and name to relay
|
||||
for example: irc.freenode
|
||||
port: port used for relay
|
||||
raw: open buffer with raw Relay data
|
||||
|
||||
Ohne Angabe von Argumenten werden alle Relay-Clients, in einem neuen Buffer, dargestellt.
|
||||
Without argument, this command opens buffer with list of relay clients.
|
||||
........................................
|
||||
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
** Typ: boolesch
|
||||
** Werte: on, off (Standardwert: on)
|
||||
|
||||
* *relay.look.raw_messages*
|
||||
** Beschreibung: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** Typ: integer
|
||||
** Werte: 0 .. 65535 (Standardwert: 256)
|
||||
|
||||
* *relay.network.max_clients*
|
||||
** Beschreibung: Maximale Anzahl an Clients die mit einem Port verbunden sein dürfen
|
||||
** Typ: integer
|
||||
|
||||
@@ -421,7 +421,7 @@
|
||||
send raw data to server without parsing
|
||||
|
||||
server: send to this server (internal name)
|
||||
data: raw data to send
|
||||
data: raw data to send
|
||||
........................................
|
||||
|
||||
• *`/reconnect`* `[-all [-nojoin] | servername [servername ...] [-nojoin]]`::
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
** values: on, off (default value: off)
|
||||
|
||||
* *irc.look.raw_messages*
|
||||
** description: number of IRC raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** description: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** type: integer
|
||||
** values: 0 .. 65535 (default value: 256)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
• *`/relay`* `[list | listfull | add protocol.name port | del protocol.name]`::
|
||||
• *`/relay`* `[list | listfull | add protocol.name port | del protocol.name | raw]`::
|
||||
|
||||
........................................
|
||||
relay control
|
||||
@@ -11,6 +11,7 @@
|
||||
protocol.name: protocol and name to relay
|
||||
for example: irc.freenode
|
||||
port: port used for relay
|
||||
raw: open buffer with raw Relay data
|
||||
|
||||
Without argument, this command opens buffer with list of relay clients.
|
||||
........................................
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
** type: boolean
|
||||
** values: on, off (default value: on)
|
||||
|
||||
* *relay.look.raw_messages*
|
||||
** description: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** type: integer
|
||||
** values: 0 .. 65535 (default value: 256)
|
||||
|
||||
* *relay.network.max_clients*
|
||||
** description: maximum number of clients connecting to a port
|
||||
** type: integer
|
||||
|
||||
@@ -6447,6 +6447,9 @@ Arguments:
|
||||
| irc | xxx,irc_out_yyy ^(1)^ | string: message |
|
||||
irc message sent to server
|
||||
|
||||
| irc | xxx,irc_outtags_yyy ^(1)^ | string: tags + ";" + message |
|
||||
tags + irc message sent to server
|
||||
|
||||
| irc | irc_ctcp | string: message |
|
||||
CTCP received
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
** valeurs: on, off (valeur par défaut: off)
|
||||
|
||||
* *irc.look.raw_messages*
|
||||
** description: nombre de messages IRC bruts à sauvegarder en mémoire lorsque le tampon des données brutes est fermé (ces messages seront affichés lors de l'ouverture du tampon des données brutes)
|
||||
** description: nombre de messages bruts à sauvegarder en mémoire lorsque le tampon des données brutes est fermé (ces messages seront affichés lors de l'ouverture du tampon des données brutes)
|
||||
** type: entier
|
||||
** valeurs: 0 .. 65535 (valeur par défaut: 256)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
• *`/relay`* `[list | listfull | add protocole.nom port | del protocole.nom]`::
|
||||
• *`/relay`* `[list | listfull | add protocole.nom port | del protocole.nom | raw]`::
|
||||
|
||||
........................................
|
||||
contrôle du relai
|
||||
@@ -11,6 +11,7 @@
|
||||
protocole.nom: protocole et nom à relayer
|
||||
par exemple: irc.freenode
|
||||
port: port utilisé pour le relai
|
||||
raw: ouvre le tampon avec les données brutes Relay
|
||||
|
||||
Sans paramètre, cette commande ouvre le tampon avec la liste des clients pour le relai.
|
||||
........................................
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
** type: booléen
|
||||
** valeurs: on, off (valeur par défaut: on)
|
||||
|
||||
* *relay.look.raw_messages*
|
||||
** description: nombre de messages bruts à sauvegarder en mémoire lorsque le tampon des données brutes est fermé (ces messages seront affichés lors de l'ouverture du tampon des données brutes)
|
||||
** type: entier
|
||||
** valeurs: 0 .. 65535 (valeur par défaut: 256)
|
||||
|
||||
* *relay.network.max_clients*
|
||||
** description: nombre maximum de clients qui se connectent sur un port
|
||||
** type: entier
|
||||
|
||||
@@ -6530,6 +6530,9 @@ Paramètres :
|
||||
| irc | xxx,irc_out_yyy ^(1)^ | chaîne : message |
|
||||
message irc envoyé au serveur
|
||||
|
||||
| irc | xxx,irc_outtags_yyy ^(1)^ | chaîne : étiquettes + ";" + message |
|
||||
étiquettes + message irc envoyé au serveur
|
||||
|
||||
| irc | irc_ctcp | chaîne : message |
|
||||
CTCP reçu
|
||||
|
||||
|
||||
@@ -420,8 +420,8 @@
|
||||
........................................
|
||||
invia dati grezzi al server senza analisi
|
||||
|
||||
server: invia a questo server (nome interno)
|
||||
dati: dati grezzi da inviare
|
||||
server: send to this server (internal name)
|
||||
data: raw data to send
|
||||
........................................
|
||||
|
||||
• *`/reconnect`* `[-all [-nojoin] | nome_server [nome_server ...] [-nojoin]]`::
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
** valori: on, off (valore predefinito: off)
|
||||
|
||||
* *irc.look.raw_messages*
|
||||
** descrizione: numero di messaggi grezzi IRC da salvare quando il buffer dei dati grezzi chiuso (i messaggi verranno visualizzati all'apertura del buffer dei dati grezzi)
|
||||
** descrizione: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** tipo: intero
|
||||
** valori: 0 .. 65535 (valore predefinito: 256)
|
||||
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
• *`/relay`* `[list | listfull | add protocollo.nome porta | del protocollo.nome]`::
|
||||
• *`/relay`* `[list | listfull | add protocol.name port | del protocol.name | raw]`::
|
||||
|
||||
........................................
|
||||
controllo relay
|
||||
|
||||
list: elenca i client relay (solo quelli attivi)
|
||||
listfull: elenca i client relay (dettagliato, tutti i relay)
|
||||
listrelay: elenca i relay (nome e porta)
|
||||
add: aggiungi relay per un protocollo + nome
|
||||
del: rimuovi relay per un protocollo + nome
|
||||
protocollo.nome: protocollo e nome con cui effettuare il relay
|
||||
per esempio: irc.freenode
|
||||
port: porta utilizzata per il relay
|
||||
list: list relay clients (only active relays)
|
||||
listfull: list relay clients (verbose, all relays)
|
||||
listrelay: list relays (name and port)
|
||||
add: add relay for a protocol + name
|
||||
del: remove relay for a protocol + name
|
||||
protocol.name: protocol and name to relay
|
||||
for example: irc.freenode
|
||||
port: port used for relay
|
||||
raw: open buffer with raw Relay data
|
||||
|
||||
Senza argomento, il comando apre i buffer con l'elenco dei client relay.
|
||||
Without argument, this command opens buffer with list of relay clients.
|
||||
........................................
|
||||
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
** tipo: bool
|
||||
** valori: on, off (valore predefinito: on)
|
||||
|
||||
* *relay.look.raw_messages*
|
||||
** descrizione: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)
|
||||
** tipo: intero
|
||||
** valori: 0 .. 65535 (valore predefinito: 256)
|
||||
|
||||
* *relay.network.max_clients*
|
||||
** descrizione: numero massimo di client connessi ad una porta
|
||||
** tipo: intero
|
||||
|
||||
@@ -6564,6 +6564,10 @@ Argomenti:
|
||||
| irc | xxx,irc_out_yyy ^1^ | string: messaggio |
|
||||
messaggio irc inviato al server
|
||||
|
||||
// TRANSLATION MISSING
|
||||
| irc | xxx,irc_outtags_yyy ^(1)^ | string: tags + ";" + message |
|
||||
tags + irc message sent to server
|
||||
|
||||
| irc | irc_ctcp | string: messaggio |
|
||||
CTCP ricevuto
|
||||
|
||||
|
||||
+6
-4
@@ -166,6 +166,10 @@
|
||||
./src/plugins/relay/relay.c
|
||||
./src/plugins/relay/relay-client.c
|
||||
./src/plugins/relay/relay-client.h
|
||||
./src/plugins/relay/relay-client-irc.c
|
||||
./src/plugins/relay/relay-client-irc.h
|
||||
./src/plugins/relay/relay-client-weechat.c
|
||||
./src/plugins/relay/relay-client-weechat.h
|
||||
./src/plugins/relay/relay-command.c
|
||||
./src/plugins/relay/relay-command.h
|
||||
./src/plugins/relay/relay-completion.c
|
||||
@@ -175,10 +179,8 @@
|
||||
./src/plugins/relay/relay.h
|
||||
./src/plugins/relay/relay-info.c
|
||||
./src/plugins/relay/relay-info.h
|
||||
./src/plugins/relay/relay-protocol-irc.c
|
||||
./src/plugins/relay/relay-protocol-irc.h
|
||||
./src/plugins/relay/relay-protocol-weechat.c
|
||||
./src/plugins/relay/relay-protocol-weechat.h
|
||||
./src/plugins/relay/relay-raw.c
|
||||
./src/plugins/relay/relay-raw.h
|
||||
./src/plugins/relay/relay-server.c
|
||||
./src/plugins/relay/relay-server.h
|
||||
./src/plugins/relay/relay-upgrade.c
|
||||
|
||||
+6
-4
@@ -167,6 +167,10 @@ SET(WEECHAT_SOURCES
|
||||
./src/plugins/relay/relay.c
|
||||
./src/plugins/relay/relay-client.c
|
||||
./src/plugins/relay/relay-client.h
|
||||
./src/plugins/relay/relay-client-irc.c
|
||||
./src/plugins/relay/relay-client-irc.h
|
||||
./src/plugins/relay/relay-client-weechat.c
|
||||
./src/plugins/relay/relay-client-weechat.h
|
||||
./src/plugins/relay/relay-command.c
|
||||
./src/plugins/relay/relay-command.h
|
||||
./src/plugins/relay/relay-completion.c
|
||||
@@ -176,10 +180,8 @@ SET(WEECHAT_SOURCES
|
||||
./src/plugins/relay/relay.h
|
||||
./src/plugins/relay/relay-info.c
|
||||
./src/plugins/relay/relay-info.h
|
||||
./src/plugins/relay/relay-protocol-irc.c
|
||||
./src/plugins/relay/relay-protocol-irc.h
|
||||
./src/plugins/relay/relay-protocol-weechat.c
|
||||
./src/plugins/relay/relay-protocol-weechat.h
|
||||
./src/plugins/relay/relay-raw.c
|
||||
./src/plugins/relay/relay-raw.h
|
||||
./src/plugins/relay/relay-server.c
|
||||
./src/plugins/relay/relay-server.h
|
||||
./src/plugins/relay/relay-upgrade.c
|
||||
|
||||
+28
-16
File diff suppressed because it is too large
Load Diff
@@ -373,7 +373,7 @@ irc_channel_check_away (struct t_irc_server *server,
|
||||
|| (channel->nicks_count <= weechat_config_integer (irc_config_network_away_check_max_nicks))))
|
||||
{
|
||||
channel->checking_away++;
|
||||
irc_server_sendf (server, IRC_SERVER_OUTQUEUE_PRIO_LOW,
|
||||
irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_LOW, NULL,
|
||||
"WHO %s", channel->name);
|
||||
}
|
||||
else
|
||||
|
||||
+154
-105
File diff suppressed because it is too large
Load Diff
@@ -1705,8 +1705,8 @@ irc_config_init ()
|
||||
irc_config_look_raw_messages = weechat_config_new_option (
|
||||
irc_config_file, ptr_section,
|
||||
"raw_messages", "integer",
|
||||
N_("number of IRC raw messages to save in memory when raw data buffer "
|
||||
"is closed (messages will be displayed when opening raw data buffer)"),
|
||||
N_("number of raw messages to save in memory when raw data buffer is "
|
||||
"closed (messages will be displayed when opening raw data buffer)"),
|
||||
NULL, 0, 65535, "256", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
irc_config_look_smart_filter = weechat_config_new_option (
|
||||
irc_config_file, ptr_section,
|
||||
|
||||
@@ -249,7 +249,7 @@ irc_ctcp_reply_to_nick (struct t_irc_server *server,
|
||||
const char *nick, const char *ctcp,
|
||||
const char *arguments)
|
||||
{
|
||||
irc_server_sendf (server, IRC_SERVER_OUTQUEUE_PRIO_LOW,
|
||||
irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_LOW, NULL,
|
||||
"NOTICE %s :\01%s%s%s\01",
|
||||
nick, ctcp,
|
||||
(arguments) ? " " : "",
|
||||
|
||||
@@ -407,7 +407,9 @@ irc_info_get_infolist_cb (void *data, const char *infolist_name,
|
||||
if (pointer)
|
||||
{
|
||||
/* build list with only one nick */
|
||||
if (!irc_nick_add_to_infolist (ptr_infolist, pointer))
|
||||
if (!irc_nick_add_to_infolist (ptr_infolist,
|
||||
ptr_server,
|
||||
pointer))
|
||||
{
|
||||
weechat_infolist_free (ptr_infolist);
|
||||
return NULL;
|
||||
@@ -421,6 +423,7 @@ irc_info_get_infolist_cb (void *data, const char *infolist_name,
|
||||
ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
if (!irc_nick_add_to_infolist (ptr_infolist,
|
||||
ptr_server,
|
||||
ptr_nick))
|
||||
{
|
||||
weechat_infolist_free (ptr_infolist);
|
||||
|
||||
+158
-15
File diff suppressed because it is too large
Load Diff
@@ -26,5 +26,7 @@ extern void irc_input_user_message_display (struct t_gui_buffer *buffer,
|
||||
const char *text);
|
||||
extern int irc_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
const char *input_data);
|
||||
extern int irc_input_send_cb (void *data, const char *signal,
|
||||
const char *type_data, void *signal_data);
|
||||
|
||||
#endif /* __WEECHAT_IRC_INPUT_H */
|
||||
|
||||
@@ -741,9 +741,11 @@ irc_nick_color_for_pv (struct t_irc_channel *channel, const char *nickname)
|
||||
|
||||
int
|
||||
irc_nick_add_to_infolist (struct t_infolist *infolist,
|
||||
struct t_irc_server *server,
|
||||
struct t_irc_nick *nick)
|
||||
{
|
||||
struct t_infolist_item *ptr_item;
|
||||
char prefix[2];
|
||||
|
||||
if (!infolist || !nick)
|
||||
return 0;
|
||||
@@ -760,6 +762,11 @@ irc_nick_add_to_infolist (struct t_infolist *infolist,
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "color", nick->color))
|
||||
return 0;
|
||||
prefix[0] = ' ';
|
||||
prefix[1] = '\0';
|
||||
irc_nick_get_gui_infos (server, nick, prefix, NULL, NULL, NULL);
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "prefix", prefix))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -114,6 +114,7 @@ extern char *irc_nick_as_prefix (struct t_irc_server *server,
|
||||
extern const char * irc_nick_color_for_pv (struct t_irc_channel *channel,
|
||||
const char *nickname);
|
||||
extern int irc_nick_add_to_infolist (struct t_infolist *infolist,
|
||||
struct t_irc_server *server,
|
||||
struct t_irc_nick *nick);
|
||||
extern void irc_nick_print_log (struct t_irc_nick *nick);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+19
-30
@@ -67,9 +67,6 @@ void
|
||||
irc_raw_open (int switch_to_buffer)
|
||||
{
|
||||
struct t_irc_raw_message *ptr_raw_message;
|
||||
int buffer_created;
|
||||
|
||||
buffer_created = 0;
|
||||
|
||||
if (!irc_raw_buffer)
|
||||
{
|
||||
@@ -80,30 +77,23 @@ irc_raw_open (int switch_to_buffer)
|
||||
irc_raw_buffer = weechat_buffer_new (IRC_RAW_BUFFER_NAME,
|
||||
&irc_input_data_cb, NULL,
|
||||
&irc_buffer_close_cb, NULL);
|
||||
buffer_created = 1;
|
||||
|
||||
/* failed to create buffer ? then return */
|
||||
if (!irc_raw_buffer)
|
||||
return;
|
||||
|
||||
weechat_buffer_set (irc_raw_buffer,
|
||||
"title", _("IRC raw messages"));
|
||||
|
||||
weechat_buffer_set (irc_raw_buffer, "short_name", IRC_RAW_BUFFER_NAME);
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_type", "debug");
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_server", IRC_RAW_BUFFER_NAME);
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_channel", IRC_RAW_BUFFER_NAME);
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_no_log", "1");
|
||||
|
||||
/* disable all highlights on this buffer */
|
||||
weechat_buffer_set (irc_raw_buffer, "highlight_words", "-");
|
||||
|
||||
if (buffer_created)
|
||||
{
|
||||
weechat_buffer_set (irc_raw_buffer,
|
||||
"title", _("IRC raw messages"));
|
||||
|
||||
weechat_buffer_set (irc_raw_buffer, "short_name", IRC_RAW_BUFFER_NAME);
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_type", "debug");
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_server", IRC_RAW_BUFFER_NAME);
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_channel", IRC_RAW_BUFFER_NAME);
|
||||
weechat_buffer_set (irc_raw_buffer, "localvar_set_no_log", "1");
|
||||
|
||||
/* disable all highlights on this debug buffer */
|
||||
weechat_buffer_set (irc_raw_buffer, "highlight_words", "-");
|
||||
}
|
||||
|
||||
if (switch_to_buffer)
|
||||
weechat_buffer_set (irc_raw_buffer, "display", "1");
|
||||
|
||||
/* print messages in list */
|
||||
for (ptr_raw_message = irc_raw_messages; ptr_raw_message;
|
||||
ptr_raw_message = ptr_raw_message->next_message)
|
||||
@@ -112,11 +102,9 @@ irc_raw_open (int switch_to_buffer)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (switch_to_buffer)
|
||||
weechat_buffer_set (irc_raw_buffer, "display", "1");
|
||||
}
|
||||
|
||||
if (irc_raw_buffer && switch_to_buffer)
|
||||
weechat_buffer_set (irc_raw_buffer, "display", "1");
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -283,7 +271,7 @@ irc_raw_message_add (struct t_irc_server *server, int send, int modified,
|
||||
}
|
||||
|
||||
/*
|
||||
* irc_raw_print: print a message on IRC debug buffer
|
||||
* irc_raw_print: print a message on IRC raw buffer
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -294,7 +282,8 @@ irc_raw_print (struct t_irc_server *server, int send, int modified,
|
||||
|
||||
if (!message)
|
||||
return;
|
||||
|
||||
|
||||
/* auto-open IRC raw buffer if debug for irc plugin is >= 1 */
|
||||
if (!irc_raw_buffer && (weechat_irc_plugin->debug >= 1))
|
||||
irc_raw_open (0);
|
||||
|
||||
@@ -309,7 +298,7 @@ irc_raw_print (struct t_irc_server *server, int send, int modified,
|
||||
}
|
||||
|
||||
/*
|
||||
* irc_raw_add_to_infolist: add a raw messagt in an infolist
|
||||
* irc_raw_add_to_infolist: add a raw message in an infolist
|
||||
* return 1 if ok, 0 if error
|
||||
*/
|
||||
|
||||
|
||||
+128
-36
File diff suppressed because it is too large
Load Diff
@@ -85,10 +85,13 @@ enum t_irc_server_option
|
||||
#define IRC_SERVER_DEFAULT_PORT 6667
|
||||
#define IRC_SERVER_DEFAULT_NICKS "weechat1,weechat2,weechat3,weechat4,weechat5"
|
||||
|
||||
#define IRC_SERVER_OUTQUEUE_PRIO_HIGH 1
|
||||
#define IRC_SERVER_OUTQUEUE_PRIO_LOW 2
|
||||
/* number of queues for sending messages */
|
||||
#define IRC_SERVER_NUM_OUTQUEUES_PRIO 2
|
||||
|
||||
/* flags for irc_server_sendf() */
|
||||
#define IRC_SERVER_SEND_OUTQ_PRIO_HIGH 1
|
||||
#define IRC_SERVER_SEND_OUTQ_PRIO_LOW 2
|
||||
|
||||
/* output queue of messages to server (for sending slowly to server) */
|
||||
|
||||
struct t_irc_outqueue
|
||||
@@ -97,6 +100,7 @@ struct t_irc_outqueue
|
||||
char *message_before_mod; /* msg before any modifier */
|
||||
char *message_after_mod; /* msg after modifier(s) */
|
||||
int modified; /* msg was modified by modifier(s) */
|
||||
char *tags; /* tags (used by Relay plugin) */
|
||||
struct t_irc_outqueue *next_outqueue; /* link to next msg in queue */
|
||||
struct t_irc_outqueue *prev_outqueue; /* link to prev msg in queue */
|
||||
};
|
||||
@@ -202,10 +206,12 @@ extern struct t_irc_server *irc_server_copy (struct t_irc_server *server,
|
||||
extern int irc_server_rename (struct t_irc_server *server, const char *new_name);
|
||||
extern void irc_server_send_signal (struct t_irc_server *server,
|
||||
const char *signal, const char *command,
|
||||
const char *full_message);
|
||||
const char *full_message,
|
||||
const char *tags);
|
||||
extern struct t_hashtable *irc_server_parse_message_to_hashtable (const char *message);
|
||||
extern void irc_server_sendf (struct t_irc_server *server, int queue_msg,
|
||||
const char *format, ...);
|
||||
extern void irc_server_set_send_default_tags (const char *tags);
|
||||
extern void irc_server_sendf (struct t_irc_server *server, int flags,
|
||||
const char *tags, const char *format, ...);
|
||||
extern struct t_irc_server *irc_server_search (const char *server_name);
|
||||
extern void irc_server_set_buffer_title (struct t_irc_server *server);
|
||||
extern struct t_gui_buffer *irc_server_create_buffer (struct t_irc_server *server);
|
||||
|
||||
@@ -99,7 +99,7 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file)
|
||||
infolist = weechat_infolist_new ();
|
||||
if (!infolist)
|
||||
return 0;
|
||||
if (!irc_nick_add_to_infolist (infolist, ptr_nick))
|
||||
if (!irc_nick_add_to_infolist (infolist, ptr_server, ptr_nick))
|
||||
{
|
||||
weechat_infolist_free (infolist);
|
||||
return 0;
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "irc-config.h"
|
||||
#include "irc-debug.h"
|
||||
#include "irc-info.h"
|
||||
#include "irc-input.h"
|
||||
#include "irc-server.h"
|
||||
#include "irc-channel.h"
|
||||
#include "irc-nick.h"
|
||||
@@ -171,6 +172,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
weechat_hook_signal ("xfer_send_ready", &irc_server_xfer_send_ready_cb, NULL);
|
||||
weechat_hook_signal ("xfer_resume_ready", &irc_server_xfer_resume_ready_cb, NULL);
|
||||
weechat_hook_signal ("xfer_send_accept_resume", &irc_server_xfer_send_accept_resume_cb, NULL);
|
||||
weechat_hook_signal ("irc_input_send", &irc_input_send_cb, NULL);
|
||||
|
||||
/* modifiers */
|
||||
weechat_hook_modifier ("irc_color_decode", &irc_color_modifier_cb, NULL);
|
||||
|
||||
@@ -21,12 +21,13 @@ ADD_LIBRARY(relay MODULE
|
||||
relay.c relay.h
|
||||
relay-buffer.c relay-buffer.h
|
||||
relay-client.c relay-client.h
|
||||
relay-client-irc.c relay-client-irc.h
|
||||
relay-client-weechat.c relay-client-weechat.h
|
||||
relay-command.c relay-command.h
|
||||
relay-completion.c relay-completion.h
|
||||
relay-config.c relay-config.h
|
||||
relay-info.c relay-info.h
|
||||
relay-protocol-irc.c relay-protocol-irc.h
|
||||
relay-protocol-weechat.c relay-protocol-weechat.h
|
||||
relay-raw.c relay-raw.h
|
||||
relay-server.c relay-server.h
|
||||
relay-upgrade.c relay-upgrade.h)
|
||||
SET_TARGET_PROPERTIES(relay PROPERTIES PREFIX "")
|
||||
|
||||
@@ -29,6 +29,10 @@ relay_la_SOURCES = relay.c \
|
||||
relay-buffer.h \
|
||||
relay-client.c \
|
||||
relay-client.h \
|
||||
relay-client-irc.c \
|
||||
relay-client-irc.h \
|
||||
relay-client-weechat.c \
|
||||
relay-client-weechat.h \
|
||||
relay-command.c \
|
||||
relay-command.h \
|
||||
relay-completion.c \
|
||||
@@ -37,10 +41,8 @@ relay_la_SOURCES = relay.c \
|
||||
relay-config.h \
|
||||
relay-info.c \
|
||||
relay-info.h \
|
||||
relay-protocol-irc.c \
|
||||
relay-protocol-irc.h \
|
||||
relay-protocol-weechat.c \
|
||||
relay-protocol-weechat.h \
|
||||
relay-raw.c \
|
||||
relay-raw.h \
|
||||
relay-server.c \
|
||||
relay-server.h \
|
||||
relay-upgrade.c \
|
||||
|
||||
@@ -125,9 +125,10 @@ relay_buffer_refresh (const char *hotlist)
|
||||
str_recv = weechat_string_format_size (ptr_client->bytes_recv);
|
||||
str_sent = weechat_string_format_size (ptr_client->bytes_sent);
|
||||
weechat_printf_y (relay_buffer, (line * 2) + 3,
|
||||
_("%s%-26s protocol: %s, received: %s, sent: %s"),
|
||||
_("%s%-26s id: %d, protocol: %s, received: %s, sent: %s"),
|
||||
weechat_color(str_color),
|
||||
" ",
|
||||
ptr_client->id,
|
||||
relay_protocol_string[ptr_client->protocol],
|
||||
(str_recv) ? str_recv : "?",
|
||||
(str_sent) ? str_sent : "?");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,15 +17,15 @@
|
||||
* along with WeeChat. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __WEECHAT_RELAY_PROTOCOL_IRC_H
|
||||
#define __WEECHAT_RELAY_PROTOCOL_IRC_H 1
|
||||
#ifndef __WEECHAT_RELAY_CLIENT_IRC_H
|
||||
#define __WEECHAT_RELAY_CLIENT_IRC_H 1
|
||||
|
||||
struct t_relay_client;
|
||||
|
||||
#define RELAY_IRC_DATA(client, var) \
|
||||
(((struct t_relay_protocol_irc_data *)client->protocol_data)->var)
|
||||
(((struct t_relay_client_irc_data *)client->protocol_data)->var)
|
||||
|
||||
struct t_relay_protocol_irc_data
|
||||
struct t_relay_client_irc_data
|
||||
{
|
||||
char *address; /* client address (used when sending */
|
||||
/* data to client) */
|
||||
@@ -33,14 +33,16 @@ struct t_relay_protocol_irc_data
|
||||
int user_received; /* command "USER" received */
|
||||
int connected; /* 1 if client is connected as IRC */
|
||||
/* client */
|
||||
struct t_hook *hook_signal_irc_in2;/* hook signal "irc_in2" */
|
||||
struct t_hook *hook_signal_irc_out;/* hook signal "irc_out" */
|
||||
struct t_hook *hook_signal_irc_in2; /* signal "irc_in2" */
|
||||
struct t_hook *hook_signal_irc_outtags; /* signal "irc_outtags" */
|
||||
struct t_hook *hook_signal_irc_disc; /* signal "irc_disconnected" */
|
||||
};
|
||||
|
||||
extern void relay_protocol_irc_recv (struct t_relay_client *client,
|
||||
const char *data);
|
||||
extern void relay_protocol_irc_alloc (struct t_relay_client *client);
|
||||
extern void relay_protocol_irc_free (struct t_relay_client *client);
|
||||
extern void relay_protocol_irc_print_log (struct t_relay_client *client);
|
||||
extern void relay_client_irc_recv (struct t_relay_client *client,
|
||||
const char *data);
|
||||
extern void relay_client_irc_close_connection (struct t_relay_client *client);
|
||||
extern void relay_client_irc_alloc (struct t_relay_client *client);
|
||||
extern void relay_client_irc_free (struct t_relay_client *client);
|
||||
extern void relay_client_irc_print_log (struct t_relay_client *client);
|
||||
|
||||
#endif /* __WEECHAT_RELAY_PROTOCOL_IRC_H */
|
||||
#endif /* __WEECHAT_RELAY_CLIENT_IRC_H */
|
||||
+43
-43
File diff suppressed because it is too large
Load Diff
+10
-10
@@ -17,15 +17,15 @@
|
||||
* along with WeeChat. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __WEECHAT_RELAY_PROTOCOL_WEECHAT_H
|
||||
#define __WEECHAT_RELAY_PROTOCOL_WEECHAT_H 1
|
||||
#ifndef __WEECHAT_RELAY_CLIENT_WEECHAT_H
|
||||
#define __WEECHAT_RELAY_CLIENT_WEECHAT_H 1
|
||||
|
||||
struct t_relay_client;
|
||||
|
||||
#define RELAY_WEECHAT_DATA(client, var) \
|
||||
(((struct t_relay_protocol_weechat_data *)client->protocol_data)->var)
|
||||
(((struct t_relay_client_weechat_data *)client->protocol_data)->var)
|
||||
|
||||
struct t_relay_protocol_weechat_data
|
||||
struct t_relay_client_weechat_data
|
||||
{
|
||||
char *address; /* client address (used when sending */
|
||||
/* data to client) */
|
||||
@@ -35,10 +35,10 @@ struct t_relay_protocol_weechat_data
|
||||
/* client */
|
||||
};
|
||||
|
||||
extern void relay_protocol_weechat_recv (struct t_relay_client *client,
|
||||
const char *data);
|
||||
extern void relay_protocol_weechat_alloc (struct t_relay_client *client);
|
||||
extern void relay_protocol_weechat_free (struct t_relay_client *client);
|
||||
extern void relay_protocol_weechat_print_log (struct t_relay_client *client);
|
||||
extern void relay_client_weechat_recv (struct t_relay_client *client,
|
||||
const char *data);
|
||||
extern void relay_client_weechat_alloc (struct t_relay_client *client);
|
||||
extern void relay_client_weechat_free (struct t_relay_client *client);
|
||||
extern void relay_client_weechat_print_log (struct t_relay_client *client);
|
||||
|
||||
#endif /* __WEECHAT_RELAY_PROTOCOL_WEECHAT_H */
|
||||
#endif /* __WEECHAT_RELAY_CLIENT_WEECHAT_H */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -44,6 +44,7 @@ enum t_relay_status
|
||||
|
||||
struct t_relay_client
|
||||
{
|
||||
int id; /* unique id (diff. for each client) */
|
||||
int sock; /* socket for connection */
|
||||
char *address; /* string with IP address */
|
||||
enum t_relay_status status; /* status (connecting, active,..) */
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "relay-buffer.h"
|
||||
#include "relay-client.h"
|
||||
#include "relay-config.h"
|
||||
#include "relay-raw.h"
|
||||
#include "relay-server.h"
|
||||
|
||||
|
||||
@@ -64,9 +65,10 @@ relay_command_client_list (int full)
|
||||
if (full)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
_("%3d. %s%s%s (%s%s%s), started on: %s, last "
|
||||
"activity: %s, bytes: %lu recv, %lu sent"),
|
||||
i,
|
||||
_(" id: %d, %s%s%s (%s%s%s), "
|
||||
"started on: %s, last activity: %s, "
|
||||
"bytes: %lu recv, %lu sent"),
|
||||
ptr_client->id,
|
||||
RELAY_COLOR_CHAT_HOST,
|
||||
ptr_client->address,
|
||||
RELAY_COLOR_CHAT,
|
||||
@@ -83,8 +85,8 @@ relay_command_client_list (int full)
|
||||
if (!RELAY_CLIENT_HAS_ENDED(ptr_client->status))
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
_("%3d. %s%s%s, started on: %s"),
|
||||
i,
|
||||
_(" id: %d, %s%s%s, started on: %s"),
|
||||
ptr_client->id,
|
||||
RELAY_COLOR_CHAT_HOST,
|
||||
ptr_client->address,
|
||||
RELAY_COLOR_CHAT,
|
||||
@@ -124,8 +126,7 @@ relay_command_server_list ()
|
||||
"%a, %d %b %Y %H:%M:%S", date_tmp);
|
||||
|
||||
weechat_printf (NULL,
|
||||
_("%3d. port %s%d%s, relay: %s%s.%s%s, started on: %s"),
|
||||
i,
|
||||
_(" port %s%d%s, relay: %s%s.%s%s, started on: %s"),
|
||||
RELAY_COLOR_CHAT_BUFFER,
|
||||
ptr_server->port,
|
||||
RELAY_COLOR_CHAT,
|
||||
@@ -223,6 +224,11 @@ relay_command_relay (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
}
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
if (weechat_strcasecmp (argv[1], "raw") == 0)
|
||||
{
|
||||
relay_raw_open (1);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
}
|
||||
|
||||
if (!relay_buffer)
|
||||
@@ -262,7 +268,7 @@ relay_command_init ()
|
||||
weechat_hook_command ("relay",
|
||||
N_("relay control"),
|
||||
N_("[list | listfull | add protocol.name port | "
|
||||
"del protocol.name]"),
|
||||
"del protocol.name | raw]"),
|
||||
N_(" list: list relay clients (only active "
|
||||
"relays)\n"
|
||||
" listfull: list relay clients (verbose, all "
|
||||
@@ -272,13 +278,15 @@ relay_command_init ()
|
||||
" del: remove relay for a protocol + name\n"
|
||||
"protocol.name: protocol and name to relay\n"
|
||||
" for example: irc.freenode\n"
|
||||
" port: port used for relay\n\n"
|
||||
" port: port used for relay\n"
|
||||
" raw: open buffer with raw Relay data\n\n"
|
||||
"Without argument, this command opens buffer "
|
||||
"with list of relay clients."),
|
||||
"list %(relay_relays)"
|
||||
" || listfull %(relay_relays)"
|
||||
" || listrelay"
|
||||
" || add %(relay_protocol_name) %(relay_free_port)"
|
||||
" || del %(relay_relays)",
|
||||
" || del %(relay_relays)"
|
||||
" || raw",
|
||||
&relay_command_relay, NULL);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ struct t_config_section *relay_config_section_port = NULL;
|
||||
/* relay config, look section */
|
||||
|
||||
struct t_config_option *relay_config_look_auto_open_buffer;
|
||||
struct t_config_option *relay_config_look_raw_messages;
|
||||
|
||||
/* relay config, color section */
|
||||
|
||||
@@ -257,6 +258,12 @@ relay_config_init ()
|
||||
"auto_open_buffer", "boolean",
|
||||
N_("auto open relay buffer when a new client is connecting"),
|
||||
NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
relay_config_look_raw_messages = weechat_config_new_option (
|
||||
relay_config_file, ptr_section,
|
||||
"raw_messages", "integer",
|
||||
N_("number of raw messages to save in memory when raw data buffer is "
|
||||
"closed (messages will be displayed when opening raw data buffer)"),
|
||||
NULL, 0, 65535, "256", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
ptr_section = weechat_config_new_section (relay_config_file, "color",
|
||||
0, 0,
|
||||
|
||||
@@ -26,6 +26,7 @@ extern struct t_config_file *relay_config_file;
|
||||
extern struct t_config_section *relay_config_section_port;
|
||||
|
||||
extern struct t_config_option *relay_config_look_auto_open_buffer;
|
||||
extern struct t_config_option *relay_config_look_raw_messages;
|
||||
|
||||
extern struct t_config_option *relay_config_color_text;
|
||||
extern struct t_config_option *relay_config_color_text_bg;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (C) 2003-2010 Sebastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __WEECHAT_RELAY_RAW_H
|
||||
#define __WEECHAT_RELAY_RAW_H 1
|
||||
|
||||
#define RELAY_RAW_BUFFER_NAME "relay_raw"
|
||||
#define RELAY_RAW_PREFIX_RECV "-->"
|
||||
#define RELAY_RAW_PREFIX_SEND "<--"
|
||||
|
||||
struct t_relay_raw_message
|
||||
{
|
||||
time_t date; /* date/time of message */
|
||||
char *prefix; /* prefix */
|
||||
char *message; /* message */
|
||||
struct t_relay_raw_message *prev_message; /* pointer to prev. message */
|
||||
struct t_relay_raw_message *next_message; /* pointer to next message */
|
||||
};
|
||||
|
||||
struct t_relay_client;
|
||||
|
||||
extern struct t_gui_buffer *relay_raw_buffer;
|
||||
extern int irc_relay_messages_count;
|
||||
extern struct t_relay_raw_message *relay_raw_messages, *last_relay_raw_message;
|
||||
|
||||
extern void relay_raw_open (int switch_to_buffer);
|
||||
extern struct t_relay_raw_message *relay_raw_message_add_to_list (time_t date,
|
||||
const char *prefix,
|
||||
const char *message);
|
||||
extern void relay_raw_print (struct t_relay_client *client, int send,
|
||||
const char *message);
|
||||
extern void relay_raw_message_free_all ();
|
||||
extern int relay_raw_add_to_infolist (struct t_infolist *infolist,
|
||||
struct t_relay_raw_message *raw_message);
|
||||
|
||||
#endif /* __WEECHAT_RELAY_RAW_H */
|
||||
Reference in New Issue
Block a user