]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/spamserv.c
Added missing Nefarious 2 IRCop privs
[irc/evilnet/x3.git] / src / spamserv.c
index cebafd07b84b133e238fba49c0efa0cec9da5355..a452614284eefd2e492fb764d8a25b74e91bea86 100644 (file)
@@ -43,6 +43,7 @@
 #define KEY_ISSUED                  "issued"
 #define KEY_TRUSTED_ACCOUNTS        "trusted"
 #define KEY_DEBUG_CHANNEL            "debug_channel"
+#define KEY_DEBUG_CHANNEL_MODES      "debug_channel_modes"
 #define KEY_GLOBAL_EXCEPTIONS        "global_exceptions"
 #define KEY_GLOBAL_BADWORDS          "global_badwords"
 #define KEY_NETWORK_RULES            "network_rules"
@@ -596,7 +597,7 @@ spamserv_create_user(struct userNode *user)
 
        if(kNode)
        {
-               free(kNode);
+               /* free(kNode); dict_remove does this */
                dict_remove(killed_users_dict, irc_ntoa(&user->ip));
        }
 }
@@ -624,7 +625,7 @@ spamserv_delete_user(struct userInfo *uInfo)
 }
 
 static int
-spamserv_new_user_func(struct userNode *user)
+spamserv_new_user_func(struct userNode *user, UNUSED_ARG(void *extra))
 {
        if(!IsLocal(user))
                spamserv_create_user(user);
@@ -633,7 +634,7 @@ spamserv_new_user_func(struct userNode *user)
 }
 
 static void
-spamserv_del_user_func(struct userNode *user, struct userNode *killer, UNUSED_ARG(const char *why))
+spamserv_del_user_func(struct userNode *user, struct userNode *killer, UNUSED_ARG(const char *why), UNUSED_ARG(void *extra))
 {
        struct userInfo *uInfo = get_userInfo(user->nick);
        struct killNode *kNode;
@@ -663,7 +664,7 @@ spamserv_del_user_func(struct userNode *user, struct userNode *killer, UNUSED_AR
 }
 
 static void
-spamserv_nick_change_func(struct userNode *user, const char *old_nick)
+spamserv_nick_change_func(struct userNode *user, const char *old_nick, UNUSED_ARG(void *extra))
 {
        struct userInfo *uInfo = get_userInfo(old_nick);
 
@@ -674,7 +675,7 @@ spamserv_nick_change_func(struct userNode *user, const char *old_nick)
 }
 
 static int
-spamserv_user_join(struct modeNode *mNode)
+spamserv_user_join(struct modeNode *mNode, UNUSED_ARG(void *extra))
 {
        struct chanNode *channel = mNode->channel;
        struct userNode *user = mNode->user;    
@@ -719,7 +720,7 @@ spamserv_user_join(struct modeNode *mNode)
 }
 
 static void
-spamserv_user_part(struct modeNode *mn, UNUSED_ARG(const char *reason))
+spamserv_user_part(struct modeNode *mn, UNUSED_ARG(const char *reason), UNUSED_ARG(void *extra))
 {
        struct userNode *user = mn->user;
        struct chanNode *channel = mn->channel;
@@ -2083,7 +2084,7 @@ static SPAMSERV_FUNC(cmd_addtrust)
     struct handle_info *hi;
 
     if (!(channel = GetChannel(argv[2]))) {
-        ss_reply("SSMSG_NOT_REGISTERED", channel->name);
+        ss_reply("SSMSG_NOT_REGISTERED", argv[2]);
         return 0;
     }
 
@@ -2210,7 +2211,7 @@ static SPAMSERV_FUNC(cmd_deltrust)
     struct handle_info *hi;
 
     if (!(channel = GetChannel(argv[2]))) {
-        ss_reply("SSMSG_NOT_REGISTERED", channel->name);
+        ss_reply("SSMSG_NOT_REGISTERED", argv[2]);
         return 0;
     }
 
@@ -2896,7 +2897,7 @@ spamserv_channel_message(struct chanNode *channel, struct userNode *user, char *
                int size = strlen(user->hostname) + 3;
                char *mask = alloca(size);
                snprintf(mask, size, "*@%s", user->hostname);
-               gline_add(spamserv->nick, mask, spamserv_conf.gline_duration, reason, now, now, 1, 0);
+               gline_add(spamserv->nick, mask, spamserv_conf.gline_duration, reason, now, 1, 0);
                spamserv_debug(SSMSG_DEBUG_GLINE, user->nick, user->hostname, channel->name);
        }
        else if(CHECK_KILL(uInfo))
@@ -3116,7 +3117,7 @@ static void
 spamserv_conf_read(void)
 {
        dict_t conf_node;
-       const char *str
+       const char *str, *modes;
 
        if(!(conf_node = conf_get_data(SPAMSERV_CONF_NAME, RECDB_OBJECT)))
        {
@@ -3128,7 +3129,9 @@ spamserv_conf_read(void)
 
        if(str)
        {
-               spamserv_conf.debug_channel = AddChannel(str, now, "+tinms", NULL, NULL);
+               modes = database_get_data(conf_node, KEY_DEBUG_CHANNEL_MODES, RECDB_QSTRING);
+
+               spamserv_conf.debug_channel = AddChannel(str, now, (modes ? modes : "+tinms"), NULL, NULL);
 
                if(spamserv_conf.debug_channel)
                        spamserv_join_channel(spamserv_conf.debug_channel);
@@ -3186,7 +3189,7 @@ spamserv_conf_read(void)
 }
 
 static void
-spamserv_db_cleanup(void)
+spamserv_db_cleanup(UNUSED_ARG(void* extra))
 {
        dict_iterator_t it;
 
@@ -3218,7 +3221,7 @@ init_spamserv(const char *nick)
                return;
 
         const char *modes = conf_get_data("services/spamserv/modes", RECDB_QSTRING);
-       spamserv = AddLocalUser(nick, nick, NULL, "Anti Spam Services", modes ? modes : NULL);
+        spamserv = AddLocalUser(nick, nick, NULL, "Anti Spam Services", modes);
        spamserv_service = service_register(spamserv);
 
        conf_register_reload(spamserv_conf_read);
@@ -3241,11 +3244,11 @@ init_spamserv(const char *nick)
 
        saxdb_register("SpamServ", spamserv_saxdb_read, spamserv_saxdb_write);
 
-       reg_new_user_func(spamserv_new_user_func);
-       reg_del_user_func(spamserv_del_user_func);
-       reg_nick_change_func(spamserv_nick_change_func);
-       reg_join_func(spamserv_user_join);
-       reg_part_func(spamserv_user_part);
+       reg_new_user_func(spamserv_new_user_func, NULL);
+       reg_del_user_func(spamserv_del_user_func, NULL);
+       reg_nick_change_func(spamserv_nick_change_func, NULL);
+       reg_join_func(spamserv_user_join, NULL);
+       reg_part_func(spamserv_user_part, NULL);
 
        timeq_add(now + FLOOD_TIMEQ_FREQ, timeq_flood, NULL);
        timeq_add(now + JOINFLOOD_TIMEQ_FREQ, timeq_joinflood, NULL);
@@ -3300,7 +3303,7 @@ init_spamserv(const char *nick)
             }
         }
 
-       reg_exit_func(spamserv_db_cleanup);
+       reg_exit_func(spamserv_db_cleanup, NULL);
        message_register_table(msgtab);
        crc32_init();
 }