From b9c2bd4cd21b9f13eb3323886e7cd8ea932aa958 Mon Sep 17 00:00:00 2001 From: Egor Date: Tue, 23 Jan 2024 13:14:19 +0200 Subject: [PATCH] add associated lua data for clients --- lua/init.lua | 16 ++++++++++++++++ src/irc.c | 7 +++++++ src/net.c | 3 +++ 3 files changed, 26 insertions(+) diff --git a/lua/init.lua b/lua/init.lua index 165e133..053f6b6 100644 --- a/lua/init.lua +++ b/lua/init.lua @@ -44,6 +44,22 @@ end hook_setfold("sendtochannel", fold_sendtox) hook_setfold("sendtoclient", fold_sendtox) hook_setfold("newuser", fold_sendtox) +hook_setfold("nickadd", fold_sendtox) +hook_setfold("nickdel", fold_sendtox) +hook_setfold("nickchange", fold_sendtox) +if not client_data then + client_data = {} +end +hook_add("nickadd", "irccloud_auth", function(hook, cl1, cl2, chan, txt) + client_data[txt] = {} +end) +hook_add("nickdel", "irccloud_auth", function(hook, cl1, cl2, chan, txt) + client_data[txt] = nil +end) +hook_add("nickchange", "irccloud_auth", function(hook, cl1, cl2, chan, txt) + client_data[txt] = client_data[cl1.key] + client_data[cl1.key] = nil +end) function commands.echo(client, source, command, args) client_notice(client, "client = "..tostring(client)) diff --git a/src/irc.c b/src/irc.c index 3b55bfd..a6d10f7 100644 --- a/src/irc.c +++ b/src/irc.c @@ -1329,6 +1329,9 @@ void setNick(struct client_data *client, char* nickname) { // Update nickname if(client->nick) { +#ifdef HAS_LUA + admin_hook("nickchange", client, 0, 0, key); +#endif msg_nick(client, nickname); sendbuf(client); sendbuf_visible(client); @@ -1351,6 +1354,10 @@ void setNick(struct client_data *client, char* nickname) { } free(client->nick); free(client->key); + } else { +#ifdef HAS_LUA + admin_hook("nickadd", client, 0, 0, key); +#endif } client->nick = mystrdup(nickname); diff --git a/src/net.c b/src/net.c index 834baa5..f8311ba 100644 --- a/src/net.c +++ b/src/net.c @@ -68,6 +68,9 @@ void killConnection(struct client_data *cl, int byChoice) channel_part(cl, chan, NULL, NULL); /* Remove from client_map and get rid of the pending invites */ if (cl->key) { +#ifdef HAS_LUA + admin_hook("nickdel", cl, 0, 0, cl->key); +#endif map_unset(&client_map, cl->key, NULL); rpl_monoffline(0, cl->key), sendbuf_monitor(cl->key, 0, 0, 0); struct channel *chan; -- 2.56.0