mirror of
https://github.com/irssi/irssi.git
synced 2026-08-10 12:23:37 +02:00
introduce the type Irssi::Irc::Client and signals to communicate with proxy
clients to allow for scripting parts of the irssi-proxy. git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4882 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
73b18f2672
commit
f8461d39bc
13 changed files with 94 additions and 23 deletions
|
|
@ -21,7 +21,8 @@ libirc_proxy_la_SOURCES = \
|
|||
listen.c
|
||||
|
||||
noinst_HEADERS = \
|
||||
module.h
|
||||
module.h \
|
||||
proxy.h
|
||||
|
||||
clean-generic:
|
||||
rm -f libirc_proxy.a
|
||||
|
|
|
|||
|
|
@ -186,6 +186,8 @@ static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args,
|
|||
client->want_ctcp = 0;
|
||||
proxy_outdata(client, ":%s NOTICE %s :Proxy is now handling itself CTCPs sent to %s\n",
|
||||
client->proxy_address, client->nick, client->listen->ircnet);
|
||||
} else {
|
||||
signal_emit("proxy client command", 3, client, args, data);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -663,6 +665,14 @@ static void read_settings(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void sig_dump(CLIENT_REC *client, const char *data)
|
||||
{
|
||||
g_return_if_fail(client != NULL);
|
||||
g_return_if_fail(data != NULL);
|
||||
|
||||
proxy_outdata(client, data);
|
||||
}
|
||||
|
||||
void proxy_listen_init(void)
|
||||
{
|
||||
next_line = g_string_new(NULL);
|
||||
|
|
@ -680,6 +690,8 @@ void proxy_listen_init(void)
|
|||
signal_add("message own_private", (SIGNAL_FUNC) sig_message_own_private);
|
||||
signal_add("message irc own_action", (SIGNAL_FUNC) sig_message_own_action);
|
||||
signal_add("setup changed", (SIGNAL_FUNC) read_settings);
|
||||
|
||||
signal_add("proxy client dump", (SIGNAL_FUNC) sig_dump);
|
||||
}
|
||||
|
||||
void proxy_listen_deinit(void)
|
||||
|
|
@ -697,4 +709,6 @@ void proxy_listen_deinit(void)
|
|||
signal_remove("message own_private", (SIGNAL_FUNC) sig_message_own_private);
|
||||
signal_remove("message irc own_action", (SIGNAL_FUNC) sig_message_own_action);
|
||||
signal_remove("setup changed", (SIGNAL_FUNC) read_settings);
|
||||
|
||||
signal_remove("proxy client dump", (SIGNAL_FUNC) sig_dump);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,28 +6,7 @@
|
|||
#include "irc.h"
|
||||
#include "irc-servers.h"
|
||||
|
||||
typedef struct {
|
||||
int port;
|
||||
char *ircnet;
|
||||
|
||||
int tag;
|
||||
GIOChannel *handle;
|
||||
|
||||
GSList *clients;
|
||||
} LISTEN_REC;
|
||||
|
||||
typedef struct {
|
||||
char *nick, *host;
|
||||
NET_SENDBUF_REC *handle;
|
||||
int recv_tag;
|
||||
char *proxy_address;
|
||||
LISTEN_REC *listen;
|
||||
IRC_SERVER_REC *server;
|
||||
unsigned int pass_sent:1;
|
||||
unsigned int user_sent:1;
|
||||
unsigned int connected:1;
|
||||
unsigned int want_ctcp:1;
|
||||
} CLIENT_REC;
|
||||
#include "proxy.h"
|
||||
|
||||
extern GSList *proxy_listens;
|
||||
extern GSList *proxy_clients;
|
||||
|
|
|
|||
33
src/irc/proxy/proxy.h
Normal file
33
src/irc/proxy/proxy.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#ifndef PROXY_H
|
||||
#define PROXY_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "network.h"
|
||||
#include "irc.h"
|
||||
#include "irc-servers.h"
|
||||
|
||||
typedef struct {
|
||||
int port;
|
||||
char *ircnet;
|
||||
|
||||
int tag;
|
||||
GIOChannel *handle;
|
||||
|
||||
GSList *clients;
|
||||
} LISTEN_REC;
|
||||
|
||||
typedef struct {
|
||||
char *nick, *host;
|
||||
NET_SENDBUF_REC *handle;
|
||||
int recv_tag;
|
||||
char *proxy_address;
|
||||
LISTEN_REC *listen;
|
||||
IRC_SERVER_REC *server;
|
||||
unsigned int pass_sent:1;
|
||||
unsigned int user_sent:1;
|
||||
unsigned int connected:1;
|
||||
unsigned int want_ctcp:1;
|
||||
} CLIENT_REC;
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue