mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
bot & proxy plugins fixed for GIOChannel changes
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@965 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
d1eaeca255
commit
4316840890
@ -112,7 +112,7 @@ static void botuser_config_save(USER_REC *user)
|
|||||||
g_free_not_null(str);
|
g_free_not_null(str);
|
||||||
|
|
||||||
config_node_set_str(userconfig, node, "password", user->password);
|
config_node_set_str(userconfig, node, "password", user->password);
|
||||||
iconfig_node_set_int(node, "last_modify", (int) user->last_modify);
|
config_node_set_int(userconfig, node, "last_modify", (int) user->last_modify);
|
||||||
|
|
||||||
/* Save masks */
|
/* Save masks */
|
||||||
if (user->masks == NULL)
|
if (user->masks == NULL)
|
||||||
|
@ -56,7 +56,7 @@ static void sig_bot_read(BOT_REC *bot)
|
|||||||
|
|
||||||
botnet = bot->botnet;
|
botnet = bot->botnet;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
recvlen = bot->handle == -1 ? -1 :
|
recvlen = bot->handle == NULL ? -1 :
|
||||||
net_receive(bot->handle, tmpbuf, sizeof(tmpbuf));
|
net_receive(bot->handle, tmpbuf, sizeof(tmpbuf));
|
||||||
ret = line_split(tmpbuf, recvlen, &str, (LINEBUF_REC **) &bot->buffer);
|
ret = line_split(tmpbuf, recvlen, &str, (LINEBUF_REC **) &bot->buffer);
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ static void sig_bot_read(BOT_REC *bot)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void connect_downlink(BOTNET_REC *botnet, int handle,
|
static void connect_downlink(BOTNET_REC *botnet, GIOChannel *handle,
|
||||||
IPADDR *ip, const char *host)
|
IPADDR *ip, const char *host)
|
||||||
{
|
{
|
||||||
BOT_DOWNLINK_REC *downlink;
|
BOT_DOWNLINK_REC *downlink;
|
||||||
@ -110,7 +110,7 @@ static void connect_downlink(BOTNET_REC *botnet, int handle,
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
char *botnet;
|
char *botnet;
|
||||||
IPADDR ip;
|
IPADDR ip;
|
||||||
int handle;
|
GIOChannel *handle;
|
||||||
} BOT_CONNECT_REC;
|
} BOT_CONNECT_REC;
|
||||||
|
|
||||||
static void sig_host_got(RESOLVED_NAME_REC *name, BOT_CONNECT_REC *rec)
|
static void sig_host_got(RESOLVED_NAME_REC *name, BOT_CONNECT_REC *rec)
|
||||||
@ -133,13 +133,13 @@ static void sig_botnet_listen(BOTNET_REC *botnet)
|
|||||||
{
|
{
|
||||||
BOT_CONNECT_REC *rec;
|
BOT_CONNECT_REC *rec;
|
||||||
IPADDR ip;
|
IPADDR ip;
|
||||||
int handle;
|
GIOChannel *handle;
|
||||||
|
|
||||||
g_return_if_fail(botnet != NULL);
|
g_return_if_fail(botnet != NULL);
|
||||||
|
|
||||||
/* accept connection */
|
/* accept connection */
|
||||||
handle = net_accept(botnet->listen_handle, &ip, NULL);
|
handle = net_accept(botnet->listen_handle, &ip, NULL);
|
||||||
if (handle == -1)
|
if (handle == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rec = g_new0(BOT_CONNECT_REC, 1);
|
rec = g_new0(BOT_CONNECT_REC, 1);
|
||||||
@ -173,7 +173,7 @@ static int botnet_listen(BOTNET_REC *botnet)
|
|||||||
botnet->listen_handle = net_listen(&addr, &port);
|
botnet->listen_handle = net_listen(&addr, &port);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (botnet->listen_handle == -1) {
|
if (botnet->listen_handle == NULL) {
|
||||||
g_warning("Couldn't start listening botnet\n");
|
g_warning("Couldn't start listening botnet\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -184,7 +184,7 @@ static int botnet_listen(BOTNET_REC *botnet)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_botnet_connected(int handle, BOT_UPLINK_REC *uplink)
|
static void sig_botnet_connected(GIOChannel *handle, BOT_UPLINK_REC *uplink)
|
||||||
{
|
{
|
||||||
BOTNET_REC *botnet;
|
BOTNET_REC *botnet;
|
||||||
BOT_REC *bot;
|
BOT_REC *bot;
|
||||||
@ -193,7 +193,7 @@ static void sig_botnet_connected(int handle, BOT_UPLINK_REC *uplink)
|
|||||||
|
|
||||||
botnet = uplink->botnet;
|
botnet = uplink->botnet;
|
||||||
|
|
||||||
if (handle == -1) {
|
if (handle == NULL) {
|
||||||
/* error, try another bot */
|
/* error, try another bot */
|
||||||
botnet_connect(botnet);
|
botnet_connect(botnet);
|
||||||
return;
|
return;
|
||||||
@ -235,7 +235,6 @@ void botnet_connect(BOTNET_REC *botnet)
|
|||||||
bot->connected = TRUE;
|
bot->connected = TRUE;
|
||||||
bot->master = TRUE;
|
bot->master = TRUE;
|
||||||
|
|
||||||
bot->handle = -1;
|
|
||||||
bot->read_tag = -1;
|
bot->read_tag = -1;
|
||||||
|
|
||||||
botnet->connected = TRUE;
|
botnet->connected = TRUE;
|
||||||
@ -244,7 +243,7 @@ void botnet_connect(BOTNET_REC *botnet)
|
|||||||
botnet->bots = g_node_new(bot);
|
botnet->bots = g_node_new(bot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (botnet->listen_handle == -1) {
|
if (botnet->listen_handle == NULL) {
|
||||||
/* start listening */
|
/* start listening */
|
||||||
botnet_listen(botnet);
|
botnet_listen(botnet);
|
||||||
}
|
}
|
||||||
@ -470,7 +469,6 @@ static BOT_REC *bot_add(BOTNET_REC *botnet, const char *nick, const char *parent
|
|||||||
rec->botnet = botnet;
|
rec->botnet = botnet;
|
||||||
rec->nick = g_strdup(nick);
|
rec->nick = g_strdup(nick);
|
||||||
|
|
||||||
rec->handle = -1;
|
|
||||||
rec->read_tag = -1;
|
rec->read_tag = -1;
|
||||||
rec->connected = TRUE;
|
rec->connected = TRUE;
|
||||||
|
|
||||||
@ -527,7 +525,7 @@ static void sig_bot_disconnected(BOT_REC *bot)
|
|||||||
if (!bot->botnet->connected)
|
if (!bot->botnet->connected)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (bot->connected && bot->handle != -1) {
|
if (bot->connected && bot->handle != NULL) {
|
||||||
/* send notice to rest of the botnet about quit */
|
/* send notice to rest of the botnet about quit */
|
||||||
str = g_strdup_printf("BOTQUIT %s", bot->nick);
|
str = g_strdup_printf("BOTQUIT %s", bot->nick);
|
||||||
botnet_broadcast(bot->botnet, bot, NULL, str);
|
botnet_broadcast(bot->botnet, bot, NULL, str);
|
||||||
|
@ -74,7 +74,7 @@ static void botnet_broadcast_single(BOTNET_REC *botnet, BOT_REC *except_bot,
|
|||||||
for (node = botnet->bots->children; node != NULL; node = node->next) {
|
for (node = botnet->bots->children; node != NULL; node = node->next) {
|
||||||
BOT_REC *rec = node->data;
|
BOT_REC *rec = node->data;
|
||||||
|
|
||||||
if (rec != except_bot && rec->handle != -1)
|
if (rec != except_bot && rec->handle != NULL)
|
||||||
bot_send_cmd(rec, str);
|
bot_send_cmd(rec, str);
|
||||||
}
|
}
|
||||||
g_free(str);
|
g_free(str);
|
||||||
@ -402,9 +402,9 @@ void bot_disconnect(BOT_REC *bot)
|
|||||||
g_source_remove(bot->read_tag);
|
g_source_remove(bot->read_tag);
|
||||||
bot->read_tag = -1;
|
bot->read_tag = -1;
|
||||||
}
|
}
|
||||||
if (bot->handle != -1) {
|
if (bot->handle != NULL) {
|
||||||
net_disconnect(bot->handle);
|
net_disconnect(bot->handle);
|
||||||
bot->handle = -1;
|
bot->handle = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,9 +483,9 @@ void botnet_disconnect(BOTNET_REC *botnet)
|
|||||||
g_source_remove(botnet->listen_tag);
|
g_source_remove(botnet->listen_tag);
|
||||||
botnet->listen_tag = -1;
|
botnet->listen_tag = -1;
|
||||||
}
|
}
|
||||||
if (botnet->listen_handle != -1) {
|
if (botnet->listen_handle != NULL) {
|
||||||
net_disconnect(botnet->listen_handle);
|
net_disconnect(botnet->listen_handle);
|
||||||
botnet->listen_handle = -1;
|
botnet->listen_handle = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -730,7 +730,6 @@ static void botnet_config_read_botnet(CONFIG_NODE *node)
|
|||||||
botnet->addr = g_strdup(config_node_get_str(node, "listen_addr", NULL));
|
botnet->addr = g_strdup(config_node_get_str(node, "listen_addr", NULL));
|
||||||
botnet->port = config_node_get_int(node, "listen_port", DEFAULT_BOTNET_PORT);
|
botnet->port = config_node_get_int(node, "listen_port", DEFAULT_BOTNET_PORT);
|
||||||
|
|
||||||
botnet->listen_handle = -1;
|
|
||||||
botnet->listen_tag = -1;
|
botnet->listen_tag = -1;
|
||||||
|
|
||||||
/* read uplinks */
|
/* read uplinks */
|
||||||
|
@ -44,7 +44,7 @@ typedef struct {
|
|||||||
char *nick; /* bot's unique nick in botnet */
|
char *nick; /* bot's unique nick in botnet */
|
||||||
int priority;
|
int priority;
|
||||||
|
|
||||||
int handle;
|
GIOChannel *handle;
|
||||||
int read_tag;
|
int read_tag;
|
||||||
void *buffer;
|
void *buffer;
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ struct _botnet_rec {
|
|||||||
char *addr; /* in what address we should listen, NULL = all */
|
char *addr; /* in what address we should listen, NULL = all */
|
||||||
int port; /* what port we should listen, 0 = default, -1 = don't listen */
|
int port; /* what port we should listen, 0 = default, -1 = don't listen */
|
||||||
|
|
||||||
int listen_handle;
|
GIOChannel *listen_handle;
|
||||||
int listen_tag;
|
int listen_tag;
|
||||||
|
|
||||||
GSList *uplinks;
|
GSList *uplinks;
|
||||||
|
@ -65,7 +65,7 @@ static void proxy_redirect_event(CLIENT_REC *client,
|
|||||||
group = 0;
|
group = 0;
|
||||||
while ((event = va_arg(vargs, char *)) != NULL) {
|
while ((event = va_arg(vargs, char *)) != NULL) {
|
||||||
argpos = va_arg(vargs, int);
|
argpos = va_arg(vargs, int);
|
||||||
g_string_sprintf(str, "proxy %d", client->handle);
|
g_string_sprintf(str, "proxy %p", client->handle);
|
||||||
group = server_redirect_single_event(SERVER(client->server), args, last > 0,
|
group = server_redirect_single_event(SERVER(client->server), args, last > 0,
|
||||||
group, event, str->str, argpos);
|
group, event, str->str, argpos);
|
||||||
last--;
|
last--;
|
||||||
@ -132,7 +132,7 @@ static void handle_client_connect_cmd(CLIENT_REC *client,
|
|||||||
|
|
||||||
static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args)
|
static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args)
|
||||||
{
|
{
|
||||||
int server_handle;
|
GIOChannel *server_handle;
|
||||||
|
|
||||||
if (!client->connected) {
|
if (!client->connected) {
|
||||||
handle_client_connect_cmd(client, cmd, args);
|
handle_client_connect_cmd(client, cmd, args);
|
||||||
@ -289,14 +289,15 @@ static void sig_listen(LISTEN_REC *listen)
|
|||||||
{
|
{
|
||||||
CLIENT_REC *rec;
|
CLIENT_REC *rec;
|
||||||
IPADDR ip;
|
IPADDR ip;
|
||||||
|
GIOChannel *handle;
|
||||||
char host[MAX_IP_LEN];
|
char host[MAX_IP_LEN];
|
||||||
int port, handle;
|
int port;
|
||||||
|
|
||||||
g_return_if_fail(listen != NULL);
|
g_return_if_fail(listen != NULL);
|
||||||
|
|
||||||
/* accept connection */
|
/* accept connection */
|
||||||
handle = net_accept(listen->handle, &ip, &port);
|
handle = net_accept(listen->handle, &ip, &port);
|
||||||
if (handle == -1)
|
if (handle == NULL)
|
||||||
return;
|
return;
|
||||||
net_ip2host(&ip, host);
|
net_ip2host(&ip, host);
|
||||||
|
|
||||||
@ -342,7 +343,7 @@ static void sig_server_event(IRC_SERVER_REC *server, const char *line,
|
|||||||
if (list != NULL) {
|
if (list != NULL) {
|
||||||
/* we want to send this to one client (or proxy itself) only */
|
/* we want to send this to one client (or proxy itself) only */
|
||||||
REDIRECT_REC *rec;
|
REDIRECT_REC *rec;
|
||||||
int handle;
|
void *handle;
|
||||||
|
|
||||||
rec = list->data;
|
rec = list->data;
|
||||||
if (g_strncasecmp(rec->name, "proxy ", 6) != 0) {
|
if (g_strncasecmp(rec->name, "proxy ", 6) != 0) {
|
||||||
@ -351,7 +352,7 @@ static void sig_server_event(IRC_SERVER_REC *server, const char *line,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sscanf(rec->name+6, "%d", &handle) == 1) {
|
if (sscanf(rec->name+6, "%p", &handle) == 1) {
|
||||||
/* send it to specific client only */
|
/* send it to specific client only */
|
||||||
server_redirect_remove_next(SERVER(server), event, list);
|
server_redirect_remove_next(SERVER(server), event, list);
|
||||||
net_transmit(handle, next_line->str, next_line->len);
|
net_transmit(handle, next_line->str, next_line->len);
|
||||||
@ -478,7 +479,7 @@ static void add_listen(const char *ircnet, int port)
|
|||||||
|
|
||||||
/* start listening */
|
/* start listening */
|
||||||
rec->handle = net_listen(NULL, &rec->port);
|
rec->handle = net_listen(NULL, &rec->port);
|
||||||
if (rec->handle == -1) {
|
if (rec->handle == NULL) {
|
||||||
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR,
|
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR,
|
||||||
"Proxy: Listen in port %d failed: %s",
|
"Proxy: Listen in port %d failed: %s",
|
||||||
rec->port, g_strerror(errno));
|
rec->port, g_strerror(errno));
|
||||||
|
@ -11,14 +11,14 @@ typedef struct {
|
|||||||
char *ircnet;
|
char *ircnet;
|
||||||
|
|
||||||
int tag;
|
int tag;
|
||||||
int handle;
|
GIOChannel *handle;
|
||||||
} LISTEN_REC;
|
} LISTEN_REC;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
LINEBUF_REC *buffer;
|
LINEBUF_REC *buffer;
|
||||||
|
|
||||||
char *nick;
|
char *nick;
|
||||||
int handle;
|
GIOChannel *handle;
|
||||||
int tag;
|
int tag;
|
||||||
|
|
||||||
char *proxy_address;
|
char *proxy_address;
|
||||||
|
Loading…
Reference in New Issue
Block a user