From: pk910 Date: Thu, 21 Jul 2011 23:31:41 +0000 (+0200) Subject: added cmd_setbad X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=aaac9620161246308a8efb550577cc77b2d0fe76 added cmd_setbad --- diff --git a/src/mod-watchdog.c b/src/mod-watchdog.c index 3f48feb..9b9ea44 100644 --- a/src/mod-watchdog.c +++ b/src/mod-watchdog.c @@ -49,7 +49,12 @@ static const struct message_entry msgtab[] = { { "WDMSG_BADWORD_ADDED", "added '$b%s$b' to the badword list with ID %s." }, { "WDMSG_BADWORD_NOT_FOUND", "badword with ID %s does not exist." }, { "WDMSG_BADWORD_REMOVED", "badword ID $b%s$b has been removed (mask: '%s')" }, - { "ID_DEBUG", "%s: %s" }, + { "WDMSG_BADWORD_SET_DONE", "Done." }, + { "WDMSG_BADWORD_SET_INVALID", "Invalid Option for setting %s" }, + { "OSMSG_BADWORD_SETTING_INVALID", "unknown setting $b%s$b." }, + { "WDMSG_BADWORD_SET", "Settings for BadWord entry $b%s$b" }, + { "WDMSG_BADWORD_SET_MASK", "$bMASK$b: %s" }, + { "WDMSG_BADWORD_SET_ACTION", "$bACTION$b: %s" }, { NULL, NULL } }; @@ -66,7 +71,8 @@ struct watchdog_channel { }; /* badword.action fields */ -#define BADACTION_KICK 1 +#define BADACTION_KICK 0 +#define BADACTION_BAN 1 #define BADACTION_KILL 2 #define BADACTION_GLINE 3 @@ -128,9 +134,67 @@ static MODCMD_FUNC(cmd_delbad) return 1; } -static MODCMD_FUNC(cmd_editbad) +static MODCMD_FUNC(cmd_setbad) { - //to be continued... + struct badword *badword; + if ((badword = dict_find(shitlist, argv[1], NULL))) { + if (argc > 3) { + unsigned int ii; + char *setting = argv[2]; + char *value = argv[3]; + for( ii = 0; setting[ ii ]; ii++) + setting[ ii ] = toupper( setting[ ii ] ); + for( ii = 0; value[ ii ]; ii++) + value[ ii ] = toupper( value[ ii ] ); + if(!strcmp("MASK",setting)) { + free(badword->badword_mask); + badword->badword_mask = strdup(argv[3]); + reply("WDMSG_BADWORD_SET_DONE"); + } + else if(!strcmp("ACTION",setting)) { + if (!strcmp("1",value) || !strcmp("KICK",value)) { + badword->action = BADACTION_KICK; + reply("WDMSG_BADWORD_SET_DONE"); + } else if (!strcmp("2",value) || !strcmp("BAN",value)) { + badword->action = BADACTION_BAN; + reply("WDMSG_BADWORD_SET_DONE"); + } else if (!strcmp("3",value) || !strcmp("KILL",value)) { + badword->action = BADACTION_KILL; + reply("WDMSG_BADWORD_SET_DONE"); + } else if (!strcmp("4",value) || !strcmp("GLINE",value)) { + badword->action = BADACTION_GLINE; + reply("WDMSG_BADWORD_SET_DONE"); + } else { + reply("WDMSG_BADWORD_SET_INVALID", setting); + } + } else { + reply("WDMSG_BADWORD_SETTING_INVALID", setting); + } + + } else { + reply("WDMSG_BADWORD_SET", badword->id); + reply("WDMSG_BADWORD_SET_MASK", badword->badword_mask); + switch(badword->action) { + case BADACTION_KICK: + reply("WDMSG_BADWORD_SET_ACTION", "KICK"); + break; + case BADACTION_BAN: + reply("WDMSG_BADWORD_SET_ACTION", "BAN"); + break; + case BADACTION_KILL: + reply("WDMSG_BADWORD_SET_ACTION", "KILL"); + break; + case BADACTION_GLINE: + reply("WDMSG_BADWORD_SET_ACTION", "GLINE"); + break; + default: + reply("WDMSG_BADWORD_SET_ACTION", "*undef*"); + } + } + } else { + reply("WDMSG_BADWORD_NOT_FOUND", argv[1]); + return 0; + } return 1; } @@ -186,6 +250,9 @@ static MODCMD_FUNC(cmd_listbad) case BADACTION_KICK: tbl.contents[ii][2] = "KICK"; break; + case BADACTION_BAN: + tbl.contents[ii][2] = "BAN"; + break; case BADACTION_KILL: tbl.contents[ii][2] = "KILL"; break; @@ -476,7 +543,7 @@ watchdog_init(void) watchdog_module = module_register("Watchdog", MS_LOG, "mod-watchdog.help", NULL); modcmd_register(watchdog_module, "addbad", cmd_addbad, 2, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); modcmd_register(watchdog_module, "delbad", cmd_delbad, 2, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); - modcmd_register(watchdog_module, "editbad", cmd_editbad, 1, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); + modcmd_register(watchdog_module, "setbad", cmd_setbad, 2, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); modcmd_register(watchdog_module, "listbad", cmd_listbad, 1, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); modcmd_register(watchdog_module, "register", cmd_register, 2, MODCMD_REQUIRE_AUTHED, "flags", "+helping", NULL); modcmd_register(watchdog_module, "unregister", cmd_unregister, 1, MODCMD_REQUIRE_AUTHED | MODCMD_REQUIRE_CHANNEL, "flags", "+helping", NULL);