restricted kill and gline command from SpamServ
[srvx.git] / src / spamserv.c
index c6d73cd2ad21ed2a0c6409f084897300c87d423c..a6fcc606db3dcb45e6fc62e91645e689413739ae 100644 (file)
@@ -307,7 +307,8 @@ spamserv_cs_move_merge(struct userNode *user, struct chanNode *channel, struct c
                else
                        snprintf(reason, sizeof(reason), "$X (channel %s) merged into %s by %s.", channel->name, target->name, user->handle_info->handle);
 
-               global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, reason);
+               /*global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, reason);*/
+               spamserv_oper_message("%s", reason);
                return 1;
        }
 
@@ -343,7 +344,7 @@ spamserv_cs_unregister(struct userNode *user, struct chanNode *channel, enum cs_
                        spamserv_part_channel(channel, partmsg);
                
                spamserv_unregister_channel(cInfo);
-               global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, global);
+               spamserv_oper_message(SSMSG_CHANNEL_UNREGISTERED, spamserv->nick, channel->name, user->handle_info->handle);
        }
 }
 
@@ -593,7 +594,11 @@ spamserv_user_join(struct modeNode *mNode)
 
        if(user->uplink->burst || !(cInfo = get_chanInfo(channel->name)) || !CHECK_JOINFLOOD(cInfo) || !(uInfo = get_userInfo(user->nick)))
                return 0;
-        
+
+       if(IsOper(user))
+       {
+               return 0;
+       }
         
     if(!CHECK_CHANOPS(cInfo))
        {
@@ -1098,7 +1103,6 @@ static
 SPAMSERV_FUNC(cmd_register)
 {
        struct chanInfo *cInfo;
-       char reason[MAXLEN];
 
        if(!channel || !channel->channel_info)
        {
@@ -1597,21 +1601,29 @@ static SPAMSERV_FUNC(cmd_setbad)
                                   reply("SSMSG_BADWORD_SET_DONE");
                         }
                         else if(!strcmp("ACTION",setting)) {
-                                 if (!strcmp("1",value) || !strcmp("KICK",value)) {
-                                        badword->action = BADACTION_KICK;
-                                        reply("SSMSG_BADWORD_SET_DONE");
-                                 } else if (!strcmp("2",value) || !strcmp("BAN",value)) {
-                                        badword->action = BADACTION_BAN;
-                                        reply("SSMSG_BADWORD_SET_DONE");
-                                 } else if (!strcmp("3",value) || !strcmp("KILL",value)) {
-                                        badword->action = BADACTION_KILL;
-                                        reply("SSMSG_BADWORD_SET_DONE");
-                                 } else if (!strcmp("4",value) || !strcmp("GLINE",value)) {
-                                        badword->action = BADACTION_GLINE;
-                                        reply("SSMSG_BADWORD_SET_DONE");
-                                 } else {
-                                        reply("SSMSG_BADWORD_SET_INVALID", setting);
-                                 }
+                           if (!strcmp("1",value) || !strcmp("KICK",value)) {
+                                   badword->action = BADACTION_KICK;
+                                   reply("SSMSG_BADWORD_SET_DONE");
+                               } else if (!strcmp("2",value) || !strcmp("BAN",value)) {
+                                       badword->action = BADACTION_BAN;
+                                   reply("SSMSG_BADWORD_SET_DONE");
+                               } else if (!strcmp("3",value) || !strcmp("KILL",value)) {
+                    if(IsOper(user)) {
+                        badword->action = BADACTION_KILL;
+                        reply("SSMSG_BADWORD_SET_DONE");
+                    } else {
+                        reply("SSMSG_NO_ACCESS");
+                    }
+                               } else if (!strcmp("4",value) || !strcmp("GLINE",value)) {
+                    if(IsOper(user)) {
+                        badword->action = BADACTION_GLINE;
+                        reply("SSMSG_BADWORD_SET_DONE");
+                    } else {
+                        reply("SSMSG_NO_ACCESS");
+                    }
+                               } else {
+                                   reply("SSMSG_BADWORD_SET_INVALID", setting);
+                           }
                         } else {
                                  reply("SSMSG_BADWORD_SETTING_INVALID", setting);
                         }
@@ -1946,6 +1958,11 @@ spamserv_channel_message(struct chanNode *channel, struct userNode *user, char *
        if(!spamserv || quit_services || !GetUserMode(channel, spamserv) || !(cInfo = get_chanInfo(channel->name)) || !(uInfo = get_userInfo(user->nick)))
                return;
 
+       if(IsOper(user))
+       {
+               return;
+       }
+
        if(!CHECK_CHANOPS(cInfo))
        {
                struct modeNode *mn = GetUserMode(channel, user);