X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=cmd_neonserv_kickban.c;h=190770671ca620ef171db92f11e9af17c9dd28d0;hb=795115bf680185ae01043bd1222b78bfed8c1d87;hp=4ed5ce07ba66042bc1545411443815e86e2f089b;hpb=2ac843a40dfa151e8ccc12097e96b52ae1ae0826;p=NeonServV5.git diff --git a/cmd_neonserv_kickban.c b/cmd_neonserv_kickban.c index 4ed5ce0..1907706 100644 --- a/cmd_neonserv_kickban.c +++ b/cmd_neonserv_kickban.c @@ -1,19 +1,22 @@ +#include "cmd_neonserv.h" + /* * argv[0] nick[,*auth[,*!*@mask[...]]] * argv[1-*] reason */ static USERLIST_CALLBACK(neonserv_cmd_kickban_userlist_lookup); -static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nicks, char *reason); +static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, struct Event *event, char *nicks, char *reason); struct neonserv_cmd_kickban_cache { struct ClientSocket *client, *textclient; struct UserNode *user; + struct Event *event; char *nicks; char *reason; }; -static CMD_BIND(neonserv_cmd_kickban) { +CMD_BIND(neonserv_cmd_kickban) { struct neonserv_cmd_kickban_cache *cache = malloc(sizeof(*cache)); if (!cache) { perror("malloc() failed"); @@ -22,31 +25,31 @@ static CMD_BIND(neonserv_cmd_kickban) { cache->client = client; cache->textclient = getTextBot(); cache->user = user; + cache->event = event; cache->nicks = strdup(argv[0]); if(argc > 1) { cache->reason = strdup(merge_argv(argv, 1, argc)); } else cache->reason = NULL; - get_userlist(chan, neonserv_cmd_kickban_userlist_lookup, cache); + get_userlist_with_invisible(chan, neonserv_cmd_kickban_userlist_lookup, cache); } static USERLIST_CALLBACK(neonserv_cmd_kickban_userlist_lookup) { struct neonserv_cmd_kickban_cache *cache = data; - neonserv_cmd_kickban_async1(cache->client, cache->textclient, cache->user, chan, cache->nicks, (cache->reason ? cache->reason : "Bye.")); + neonserv_cmd_kickban_async1(cache->client, cache->textclient, cache->user, chan, cache->event, cache->nicks, (cache->reason ? cache->reason : "Bye.")); free(cache->nicks); if(cache->reason) free(cache->reason); free(cache); } -static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nicks, char *reason) { +static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, struct Event *event, char *nicks, char *reason) { int i, kicked_users = 0, provided_nicks = 0; char *nick, *nextnick; struct UserNode *cuser; struct ChanUser *chanuser; char usermask[NICKLEN+USERLEN+HOSTLEN+3]; nextnick = nicks; - check_mysql(); while((nick = nextnick)) { nextnick = strstr(nick, ","); if(nextnick) { @@ -58,7 +61,7 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie //KICK HOSTMASK struct ChanUser *kickban_chanuser[chan->usercount]; int kick_chanuser_pos = 0; - for(chanuser = getChannelUsers(chan, NULL); NULL; chanuser = getChannelUsers(chan, chanuser)) { + for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) { cuser = chanuser->user; sprintf(usermask, "%s!%s@%s", cuser->nick, cuser->ident, cuser->host); if(!match(nick, usermask)) { @@ -90,7 +93,7 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie //KICK AUTH nick++; cuser = NULL; - for(chanuser = getChannelUsers(chan, NULL); NULL; chanuser = getChannelUsers(chan, chanuser)) { + for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) { if((chanuser->user->flags & USERFLAG_ISAUTHED) && !stricmp(chanuser->user->auth, nick)) { provided_nicks++; if(isNetworkService(chanuser->user)) { @@ -133,4 +136,6 @@ static void neonserv_cmd_kickban_async1(struct ClientSocket *client, struct Clie reply(getTextBot(), user, "NS_KICKBAN_DONE", kicked_users, chan->name); else reply(getTextBot(), user, "NS_KICKBAN_FAIL", client->user->nick); + if(kicked_users) + logEvent(event); }