X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/6cf5f880c90e527c5fae13804e6a973997d51850..0b401fb654b69fd9649954a9bdd5ff041971e62d:/src/mod-track.c?ds=inline diff --git a/src/mod-track.c b/src/mod-track.c index ff25ca9..a14d8ec 100644 --- a/src/mod-track.c +++ b/src/mod-track.c @@ -5,7 +5,7 @@ * * x3 is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -190,7 +190,7 @@ parse_track_conf(char *line) } static void -track_nick_change(struct userNode *user, const char *old_nick) { +track_nick_change(struct userNode *user, const char *old_nick, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if(check_track_user(old_nick)) { @@ -205,7 +205,7 @@ track_nick_change(struct userNode *user, const char *old_nick) { } static int -track_join(struct modeNode *mNode) { +track_join(struct modeNode *mNode, UNUSED_ARG(void *extra)) { struct userNode *user = mNode->user; struct chanNode *chan = mNode->channel; if (!track_cfg.enabled) return 0; @@ -223,7 +223,7 @@ track_join(struct modeNode *mNode) { } static void -track_part(struct modeNode *mn, const char *reason) { +track_part(struct modeNode *mn, const char *reason, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if (mn->user->dead) return; if (check_track_part(track_cfg) && check_track_user(mn->user->nick)) @@ -234,17 +234,24 @@ track_part(struct modeNode *mn, const char *reason) { } static void -track_kick(struct userNode *kicker, struct userNode *victim, struct chanNode *chan) { +track_kick(struct userNode *kicker, struct userNode *victim, struct chanNode *chan, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; - if (check_track_kick(track_cfg) && ((check_track_user(kicker->nick) || check_track_user(victim->nick)))) + if (check_track_kick(track_cfg) && check_track_user(victim->nick)) { + if (kicker) /* net rider kicks dont have a kicker set */ + { + if (!check_track_user(kicker->nick)) + return; + } + UPDATE_TIMESTAMP(); TRACK("$bKICK$b %s from %s by %s", victim->nick, chan->name, (kicker ? kicker->nick : "some server")); } } static int -track_new_user(struct userNode *user) { +track_new_user(struct userNode *user, UNUSED_ARG(void *extra)) { + if (!track_cfg.enabled) return 0; if (user->uplink->burst && !track_cfg.show_bursts) return 0; if (check_track_new(track_cfg) && check_track_user(user->nick)) @@ -256,7 +263,7 @@ track_new_user(struct userNode *user) { } static void -track_del_user(struct userNode *user, struct userNode *killer, const char *why) { +track_del_user(struct userNode *user, struct userNode *killer, const char *why, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if (check_track_del(track_cfg) && (check_track_user(user->nick) || (killer && check_track_user(killer->nick)))) { @@ -271,7 +278,7 @@ track_del_user(struct userNode *user, struct userNode *killer, const char *why) } static void -track_auth(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle)) { +track_auth(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle), UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if (user->uplink->burst && !track_cfg.show_bursts) return; if (user->handle_info && (check_track_auth(track_cfg) && check_track_user(user->nick))) { @@ -282,7 +289,7 @@ track_auth(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle)) { } static void -track_user_mode(struct userNode *user, const char *mode_change) { +track_user_mode(struct userNode *user, const char *mode_change, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if (user->uplink->burst && !track_cfg.show_bursts) return; if (!mode_change[1]) return; /* warning there has to be atleast one char in the buffer */ @@ -294,7 +301,7 @@ track_user_mode(struct userNode *user, const char *mode_change) { } static void -track_oper(struct userNode *user) { +track_oper(struct userNode *user, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if (user->uplink->burst && !track_cfg.show_bursts) return; UPDATE_TIMESTAMP(); @@ -302,7 +309,7 @@ track_oper(struct userNode *user) { } static void -track_channel_mode(struct userNode *who, struct chanNode *channel, char **modes, unsigned int argc) +track_channel_mode(struct userNode *who, struct chanNode *channel, char **modes, unsigned int argc, UNUSED_ARG(void *extra)) { if (!track_cfg.enabled) return; if(who) @@ -617,7 +624,7 @@ MODCMD_FUNC(cmd_listtrack) static void track_conf_read(void) { dict_t node; - char *str; + char *str, *modes; node = conf_get_data("modules/track", RECDB_OBJECT); if (!node) @@ -628,11 +635,12 @@ track_conf_read(void) { else parse_track_conf(str); str = database_get_data(node, "channel", RECDB_QSTRING); + modes = database_get_data(node, "channel_modes", RECDB_QSTRING); if (!str) return; // XXX - dont do addchannel if the channel is being shared with // another module: - track_cfg.channel = AddChannel(str, now, "+sntOm", NULL, NULL); + track_cfg.channel = AddChannel(str, now, (modes ? modes : "+sntOm"), NULL, NULL); if (!track_cfg.channel) return; str = database_get_data(node, "show_bursts", RECDB_QSTRING); @@ -643,9 +651,9 @@ track_conf_read(void) { } void -track_cleanup(void) { +track_cleanup(UNUSED_ARG(void *extra)) { track_cfg.enabled = 0; - unreg_del_user_func(track_del_user); + unreg_del_user_func(track_del_user, NULL); dict_delete(track_db); } @@ -654,18 +662,18 @@ track_init(void) { track_db = dict_new(); dict_set_free_keys(track_db, free); - reg_exit_func(track_cleanup); + reg_exit_func(track_cleanup, NULL); conf_register_reload(track_conf_read); - reg_nick_change_func(track_nick_change); - reg_join_func(track_join); - reg_part_func(track_part); - reg_kick_func(track_kick); - reg_new_user_func(track_new_user); - reg_del_user_func(track_del_user); - reg_auth_func(track_auth); - reg_channel_mode_func(track_channel_mode); - reg_user_mode_func(track_user_mode); - reg_oper_func(track_oper); + reg_nick_change_func(track_nick_change, NULL); + reg_join_func(track_join, NULL); + reg_part_func(track_part, NULL); + reg_kick_func(track_kick, NULL); + reg_new_user_func(track_new_user, NULL); + reg_del_user_func(track_del_user, NULL); + reg_auth_func(track_auth, NULL); + reg_channel_mode_func(track_channel_mode, NULL); + reg_user_mode_func(track_user_mode, NULL); + reg_oper_func(track_oper, NULL); opserv_define_func("TRACK", cmd_track, 800, 0, 0); opserv_define_func("DELTRACK", cmd_deltrack, 800, 0, 0); opserv_define_func("ADDTRACK", cmd_addtrack, 800, 0, 0);