forked from PsychoticNinja/ailin-nemui-irssi
[wip]
This commit is contained in:
parent
882ff0d976
commit
5c63ce1a2e
@ -206,8 +206,8 @@ SIGNAL_REGISTER(session_save_channel, 3, (CHANNEL_REC *channel, CONFIG_REC *conf
|
|||||||
channel, config, node)
|
channel, config, node)
|
||||||
SIGNAL_REGISTER(session_save_server, 3, (SERVER_REC *server, CONFIG_REC *config, CONFIG_NODE *node),
|
SIGNAL_REGISTER(session_save_server, 3, (SERVER_REC *server, CONFIG_REC *config, CONFIG_NODE *node),
|
||||||
server, config, node)
|
server, config, node)
|
||||||
SIGNAL_REGISTER(session_restore_nick, 2, (CHANNEL_REC *channel, NICK_REC *nick),
|
SIGNAL_REGISTER(session_restore_nick, 2, (CHANNEL_REC *channel, CONFIG_NODE *node),
|
||||||
channel, nick)
|
channel, node)
|
||||||
SIGNAL_REGISTER(session_restore_channel, 2, (CHANNEL_REC *channel, CONFIG_NODE *node),
|
SIGNAL_REGISTER(session_restore_channel, 2, (CHANNEL_REC *channel, CONFIG_NODE *node),
|
||||||
channel, node)
|
channel, node)
|
||||||
SIGNAL_REGISTER(session_restore_server, 2, (SERVER_REC *server, CONFIG_NODE *node),
|
SIGNAL_REGISTER(session_restore_server, 2, (SERVER_REC *server, CONFIG_NODE *node),
|
||||||
|
@ -122,7 +122,7 @@
|
|||||||
"session save nick", CHANNEL_REC, NICK_REC, CONFIG_REC, CONFIG_NODE
|
"session save nick", CHANNEL_REC, NICK_REC, CONFIG_REC, CONFIG_NODE
|
||||||
"session save channel", CHANNEL_REC, CONFIG_REC, CONFIG_NODE
|
"session save channel", CHANNEL_REC, CONFIG_REC, CONFIG_NODE
|
||||||
"session save server", SERVER_REC, CONFIG_REC, CONFIG_NODE
|
"session save server", SERVER_REC, CONFIG_REC, CONFIG_NODE
|
||||||
"session restore nick", CHANNEL_REC, NICK_REC
|
"session restore nick", CHANNEL_REC, CONFIG_NODE
|
||||||
"session restore channel", CHANNEL_REC, CONFIG_NODE
|
"session restore channel", CHANNEL_REC, CONFIG_NODE
|
||||||
"session restore server", SERVER_REC, CONFIG_NODE
|
"session restore server", SERVER_REC, CONFIG_NODE
|
||||||
"session restore", CONFIG_REC
|
"session restore", CONFIG_REC
|
||||||
|
@ -98,8 +98,9 @@ static gboolean parse_cap_name(char *name, char **key, char **val)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *address)
|
static void event_cap (SERVER_REC *gserver, const char *args, const char *nick, const char *address)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *server;
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
GString *cmd;
|
GString *cmd;
|
||||||
char *params, *evt, *list, *star, **caps;
|
char *params, *evt, *list, *star, **caps;
|
||||||
@ -109,6 +110,9 @@ static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *add
|
|||||||
if (params == NULL)
|
if (params == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ((server = IRC_SERVER(gserver)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Multiline responses have an additional parameter and we have to do
|
/* Multiline responses have an additional parameter and we have to do
|
||||||
* this stupid dance to parse them */
|
* this stupid dance to parse them */
|
||||||
if (!g_ascii_strcasecmp(evt, "LS") && !strcmp(star, "*")) {
|
if (!g_ascii_strcasecmp(evt, "LS") && !strcmp(star, "*")) {
|
||||||
@ -279,8 +283,12 @@ static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *add
|
|||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_invalid_cap (IRC_SERVER_REC *server, const char *data, const char *from)
|
static void event_invalid_cap (SERVER_REC *gserver, const char *data, const char *from, const char *u0)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *server;
|
||||||
|
if ((server = IRC_SERVER(gserver)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
/* The server didn't understand one (or more) requested caps, terminate the negotiation.
|
/* The server didn't understand one (or more) requested caps, terminate the negotiation.
|
||||||
* This could be handled in a graceful way but since it shouldn't really ever happen this seems a
|
* This could be handled in a graceful way but since it shouldn't really ever happen this seems a
|
||||||
* good way to deal with 410 errors. */
|
* good way to deal with 410 errors. */
|
||||||
@ -290,8 +298,8 @@ static void event_invalid_cap (IRC_SERVER_REC *server, const char *data, const c
|
|||||||
|
|
||||||
void cap_init (void)
|
void cap_init (void)
|
||||||
{
|
{
|
||||||
signal_add_first__event_cap(event_cap);
|
signal_add_first__event_("cap", event_cap);
|
||||||
signal_add_first__event_410(event_invalid_cap);
|
signal_add_first__event_("410", event_invalid_cap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cap_deinit (void)
|
void cap_deinit (void)
|
||||||
|
@ -32,11 +32,14 @@
|
|||||||
#include "sasl.h"
|
#include "sasl.h"
|
||||||
|
|
||||||
/* Fill information to connection from server setup record */
|
/* Fill information to connection from server setup record */
|
||||||
static void sig_server_setup_fill_reconn(IRC_SERVER_CONNECT_REC *conn,
|
static void sig_server_setup_fill_reconn(SERVER_CONNECT_REC *gconn,
|
||||||
IRC_SERVER_SETUP_REC *sserver)
|
SERVER_SETUP_REC *gsserver)
|
||||||
{
|
{
|
||||||
if (!IS_IRC_SERVER_CONNECT(conn) ||
|
IRC_SERVER_CONNECT_REC *conn;
|
||||||
!IS_IRC_SERVER_SETUP(sserver))
|
IRC_SERVER_SETUP_REC *sserver;
|
||||||
|
|
||||||
|
if ((conn = IRC_SERVER_CONNECT(gconn)) == NULL ||
|
||||||
|
(sserver = IRC_SERVER_SETUP(gsserver)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (sserver->cmd_queue_speed > 0)
|
if (sserver->cmd_queue_speed > 0)
|
||||||
@ -47,11 +50,12 @@ static void sig_server_setup_fill_reconn(IRC_SERVER_CONNECT_REC *conn,
|
|||||||
conn->max_query_chans = sserver->max_query_chans;
|
conn->max_query_chans = sserver->max_query_chans;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_server_setup_fill_connect(IRC_SERVER_CONNECT_REC *conn)
|
static void sig_server_setup_fill_connect(SERVER_CONNECT_REC *gconn)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_CONNECT_REC *conn;
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
if (!IS_IRC_SERVER_CONNECT(conn))
|
if ((conn = IRC_SERVER_CONNECT(gconn)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
value = settings_get_str("alternate_nick");
|
value = settings_get_str("alternate_nick");
|
||||||
@ -63,12 +67,16 @@ static void sig_server_setup_fill_connect(IRC_SERVER_CONNECT_REC *conn)
|
|||||||
g_strdup(value) : NULL;
|
g_strdup(value) : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_server_setup_fill_chatnet(IRC_SERVER_CONNECT_REC *conn,
|
static void sig_server_setup_fill_chatnet(SERVER_CONNECT_REC *gconn,
|
||||||
IRC_CHATNET_REC *ircnet)
|
CHATNET_REC *gircnet)
|
||||||
{
|
{
|
||||||
if (!IS_IRC_SERVER_CONNECT(conn))
|
IRC_SERVER_CONNECT_REC *conn;
|
||||||
|
IRC_CHATNET_REC *ircnet;
|
||||||
|
|
||||||
|
if ((conn = IRC_SERVER_CONNECT(gconn)) == NULL)
|
||||||
|
return;
|
||||||
|
if ((ircnet = IRCNET(gircnet)) == NULL)
|
||||||
return;
|
return;
|
||||||
g_return_if_fail(IS_IRCNET(ircnet));
|
|
||||||
|
|
||||||
if (ircnet->alternate_nick != NULL) {
|
if (ircnet->alternate_nick != NULL) {
|
||||||
g_free_and_null(conn->alternate_nick);
|
g_free_and_null(conn->alternate_nick);
|
||||||
@ -164,12 +172,13 @@ static void init_userinfo(void)
|
|||||||
SIGNAL_EMIT(irssi_init_userinfo_changed, GUINT_TO_POINTER(changed));
|
SIGNAL_EMIT(irssi_init_userinfo_changed, GUINT_TO_POINTER(changed));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_server_setup_read(IRC_SERVER_SETUP_REC *rec, CONFIG_NODE *node)
|
static void sig_server_setup_read(SERVER_SETUP_REC *grec, CONFIG_NODE *node)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_SETUP_REC *rec;
|
||||||
g_return_if_fail(rec != NULL);
|
g_return_if_fail(rec != NULL);
|
||||||
g_return_if_fail(node != NULL);
|
g_return_if_fail(node != NULL);
|
||||||
|
|
||||||
if (!IS_IRC_SERVER_SETUP(rec))
|
if ((rec = IRC_SERVER_SETUP(grec)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rec->max_cmds_at_once = config_node_get_int(node, "cmds_max_at_once", 0);
|
rec->max_cmds_at_once = config_node_get_int(node, "cmds_max_at_once", 0);
|
||||||
@ -177,10 +186,11 @@ static void sig_server_setup_read(IRC_SERVER_SETUP_REC *rec, CONFIG_NODE *node)
|
|||||||
rec->max_query_chans = config_node_get_int(node, "max_query_chans", 0);
|
rec->max_query_chans = config_node_get_int(node, "max_query_chans", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_server_setup_saved(IRC_SERVER_SETUP_REC *rec,
|
static void sig_server_setup_saved(SERVER_SETUP_REC *grec,
|
||||||
CONFIG_NODE *node)
|
CONFIG_NODE *node)
|
||||||
{
|
{
|
||||||
if (!IS_IRC_SERVER_SETUP(rec))
|
IRC_SERVER_SETUP_REC *rec;
|
||||||
|
if ((rec = IRC_SERVER_SETUP(grec)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (rec->max_cmds_at_once > 0)
|
if (rec->max_cmds_at_once > 0)
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "module.h"
|
#include "module.h"
|
||||||
#include "signals.h"
|
#include "signals.h"
|
||||||
#include "signal-registry.h"
|
#include "signal-registry.h"
|
||||||
|
#include "core/signal-registry.h"
|
||||||
#include "net-sendbuffer.h"
|
#include "net-sendbuffer.h"
|
||||||
#include "lib-config/iconfig.h"
|
#include "lib-config/iconfig.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
@ -38,14 +39,15 @@ static void session_isupport_foreach(char *key, char *value, struct _isupport_da
|
|||||||
config_node_set_str(data->config, data->node, key, value);
|
config_node_set_str(data->config, data->node, key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_session_save_server(IRC_SERVER_REC *server, CONFIG_REC *config,
|
static void sig_session_save_server(SERVER_REC *gserver, CONFIG_REC *config,
|
||||||
CONFIG_NODE *node)
|
CONFIG_NODE *node)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *server;
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
CONFIG_NODE *isupport;
|
CONFIG_NODE *isupport;
|
||||||
struct _isupport_data isupport_data;
|
struct _isupport_data isupport_data;
|
||||||
|
|
||||||
if (!IS_IRC_SERVER(server))
|
if ((server = IRC_SERVER(gserver)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* send all non-redirected commands to server immediately */
|
/* send all non-redirected commands to server immediately */
|
||||||
@ -80,12 +82,13 @@ static void sig_session_save_server(IRC_SERVER_REC *server, CONFIG_REC *config,
|
|||||||
g_hash_table_foreach(server->isupport, (GHFunc) session_isupport_foreach, &isupport_data);
|
g_hash_table_foreach(server->isupport, (GHFunc) session_isupport_foreach, &isupport_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_session_restore_server(IRC_SERVER_REC *server,
|
static void sig_session_restore_server(SERVER_REC *gserver,
|
||||||
CONFIG_NODE *node)
|
CONFIG_NODE *node)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *server;
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
|
|
||||||
if (!IS_IRC_SERVER(server))
|
if ((server = IRC_SERVER(gserver)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (server->real_address == NULL)
|
if (server->real_address == NULL)
|
||||||
@ -126,15 +129,16 @@ static void sig_session_restore_server(IRC_SERVER_REC *server,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_session_restore_nick(IRC_CHANNEL_REC *channel,
|
static void sig_session_restore_nick(CHANNEL_REC *gchannel,
|
||||||
CONFIG_NODE *node)
|
CONFIG_NODE *node)
|
||||||
{
|
{
|
||||||
|
IRC_CHANNEL_REC *channel;
|
||||||
const char *nick, *prefixes;
|
const char *nick, *prefixes;
|
||||||
int op, halfop, voice;
|
int op, halfop, voice;
|
||||||
char newprefixes[MAX_USER_PREFIXES + 1];
|
char newprefixes[MAX_USER_PREFIXES + 1];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!IS_IRC_CHANNEL(channel))
|
if ((channel = IRC_CHANNEL(gchannel)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nick = config_node_get_str(node, "nick", NULL);
|
nick = config_node_get_str(node, "nick", NULL);
|
||||||
@ -175,12 +179,13 @@ static void session_restore_channel(IRC_CHANNEL_REC *channel)
|
|||||||
g_free(data);
|
g_free(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_connected(IRC_SERVER_REC *server)
|
static void sig_connected(SERVER_REC *gserver)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *server;
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
char *str, *addr;
|
char *str, *addr;
|
||||||
|
|
||||||
if (!IS_IRC_SERVER(server) || !server->session_reconnect)
|
if ((server = IRC_SERVER(gserver)) == NULL || !server->session_reconnect)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
str = g_strdup_printf("%s :Restoring connection to %s",
|
str = g_strdup_printf("%s :Restoring connection to %s",
|
||||||
|
@ -302,9 +302,10 @@ static void sasl_disconnected(IRC_SERVER_REC *server)
|
|||||||
sasl_timeout_stop(server);
|
sasl_timeout_stop(server);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_sasl_over(IRC_SERVER_REC *server)
|
static void sig_sasl_over(SERVER_REC *gserver, const char *u0, const char *u1, const char *u2)
|
||||||
{
|
{
|
||||||
if (!IS_IRC_SERVER(server))
|
IRC_SERVER_REC *server;
|
||||||
|
if ((server = IRC_SERVER(gserver)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* The negotiation has now been terminated, if we didn't manage to
|
/* The negotiation has now been terminated, if we didn't manage to
|
||||||
@ -333,18 +334,18 @@ void sasl_init(void)
|
|||||||
{
|
{
|
||||||
settings_add_bool("server", "sasl_disconnect_on_failure", TRUE);
|
settings_add_bool("server", "sasl_disconnect_on_failure", TRUE);
|
||||||
|
|
||||||
signal_add_first__event_001(sig_sasl_over);
|
signal_add_first__event_("001", sig_sasl_over);
|
||||||
/* this event can get us connected on broken ircds, see irc-servers.c */
|
/* this event can get us connected on broken ircds, see irc-servers.c */
|
||||||
signal_add_first__event_375(sig_sasl_over);
|
signal_add_first__event_("375", sig_sasl_over);
|
||||||
signal_add_first__server_cap_ack_sasl(sasl_start);
|
signal_add_first__server_cap_ack_sasl(sasl_start);
|
||||||
signal_add_first__server_cap_end(sig_sasl_over);
|
signal_add_first__server_cap_end(sig_sasl_over);
|
||||||
signal_add_first__event_authenticate(sasl_step);
|
signal_add_first__event_authenticate(sasl_step);
|
||||||
signal_add_first__event_903(sasl_success);
|
signal_add_first__event_("903", sasl_success);
|
||||||
signal_add_first__event_902(sasl_fail);
|
signal_add_first__event_("902", sasl_fail);
|
||||||
signal_add_first__event_904(sasl_fail);
|
signal_add_first__event_("904", sasl_fail);
|
||||||
signal_add_first__event_905(sasl_fail);
|
signal_add_first__event_("905", sasl_fail);
|
||||||
signal_add_first__event_906(sasl_fail);
|
signal_add_first__event_("906", sasl_fail);
|
||||||
signal_add_first__event_907(sasl_already);
|
signal_add_first__event_("907", sasl_already);
|
||||||
signal_add_first__server_disconnected(sasl_disconnected);
|
signal_add_first__server_disconnected(sasl_disconnected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user