From: pk910 Date: Tue, 23 Aug 2011 23:56:37 +0000 (+0200) Subject: added cmd_mdeluser X-Git-Tag: v5.3~487 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=568bd308bf2d0650a2912c199e5a9e013936e28e added cmd_mdeluser --- diff --git a/bot_NeonServ.c b/bot_NeonServ.c index 94ca070..a9d4535 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -32,7 +32,9 @@ static const struct default_language_entry msgtab[] = { {"NS_ACCESS_OUTRANKED", "You cannot give users access greater than or equal to your own."}, {"NS_USER_OUTRANKED", "\002%s\002 outranks you (command has no effect)."}, {"NS_ACCESS_DENIED", "Access denied."}, + {"NS_NO_ACCESS", "You lack sufficient access to use this command."}, {"NS_TABLE_NONE", " None"}, + {"NS_INVALID_ACCESS_RANGE", "Invalid access range; minimum (%d) must be lower than maximum (%d)."}, {"NS_CLVL_DONE", "%s now has access \002%d\002 in %s."}, {"NS_A_LACKS_ACCESS_BUT_GOD_NICK", "%s lacks access to %s but has \002security override\002 enabled."}, {"NS_A_LACKS_ACCESS_BUT_GOD_AUTH", "%s (%s) lacks access to %s but has \002security override\002 enabled."}, @@ -73,6 +75,7 @@ static const struct default_language_entry msgtab[] = { {"NS_UP_ALREADY_OP", "You are already opped in \002%s\002."}, {"NS_UP_ALREADY_VOICE", "You are already voiced in \002%s\002."}, {"NS_DOWN_ALREADY", "You are not opped or voiced in \002%s\002."}, + {"NS_MDELUSER_DONE", "Deleted \002%d\002 account(s) matching \002%s\002 with access from \002%d\002 to \002%d\002 from the %s user list."}, {NULL, NULL} }; @@ -86,7 +89,7 @@ INCLUDE ALL CMD's HERE #include "cmd_neonserv_clvl.c" #include "cmd_neonserv_deluser.c" #include "cmd_neonserv_delme.c" -//#include "cmd_neonserv_mdeluser.c" +#include "cmd_neonserv_mdeluser.c" //#include "cmd_neonserv_trim.c" //#include "cmd_neonserv_giveownership.c" #include "cmd_neonserv_users.c" @@ -235,6 +238,7 @@ void init_NeonServ() { register_command(BOTID, "down", neonserv_cmd_down, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN); register_command(BOTID, "upall", neonserv_cmd_upall, 0, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH); register_command(BOTID, "downall", neonserv_cmd_downall, 0, 0); + register_command(BOTID, "mdeluser", neonserv_cmd_mdeluser, 2, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH); start_bots(); bind_bot_ready(neonserv_bot_ready); diff --git a/cmd_neonserv_mdeluser.c b/cmd_neonserv_mdeluser.c new file mode 100644 index 0000000..ed83079 --- /dev/null +++ b/cmd_neonserv_mdeluser.c @@ -0,0 +1,45 @@ + +/* +* argv[0] access (format: minaccess-maxaccess) +* argv[1] pattern +*/ + +static CMD_BIND(neonserv_cmd_mdeluser) { + check_mysql(); + if(!checkChannelAccess(user, chan, "channel_candel", 1, 0)) { + reply(getTextBot(), user, "NS_ACCESS_DENIED"); + return; + } + int min_access, max_access; + char *seperator = strstr(argv[0], "-"); + if(seperator) { + seperator = '\0'; + seperator++; + min_access = atoi(argv[0]); + max_access = atoi(seperator); + if(max_access > min_access) { + reply(getTextBot(), user, "NS_INVALID_ACCESS_RANGE", min_access, max_access); + return; + } + } else { + min_access = atoi(argv[0]); + max_access = min_access; + } + if(max_access >= getChannelAccess(user, chan, 1)) { + reply(getTextBot(), user, "NS_NO_ACCESS"); + return; + } + MYSQL_RES *res; + MYSQL_ROW row; + int del_count = 0; + printf_mysql_query("SELECT `user_user`, `chanuser_id` FROM `chanusers` LEFT JOIN `users` ON `chanuser_uid` = `user_id` WHERE `chanuser_cid` = '%d' AND `chanuser_access` >= '%d' AND `chanuser_access` <= '%d'", chan->channel_id, min_access, max_access); + res = mysql_use(); + while((row = mysql_fetch_row(res)) != NULL) { + if(!match(argv[1], row[0])) { + del_count++; + printf_mysql_query("DELETE FROM `chanusers` WHERE `chanuser_id` = '%s'", row[1]); + } + } + reply(getTextBot(), user, "NS_MDELUSER_DONE", del_count, argv[1], min_access, max_access, chan->name); +} +