From 231c3fe710c3975becfde36b7ecfd4de55ce0cd0 Mon Sep 17 00:00:00 2001 From: pk910 Date: Wed, 24 Aug 2011 01:02:03 +0200 Subject: [PATCH] added cmd_downall & cmd_upall --- bot_NeonServ.c | 6 ++++-- cmd_neonserv_downall.c | 20 ++++++++++++++++++++ cmd_neonserv_upall.c | 43 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 cmd_neonserv_downall.c create mode 100644 cmd_neonserv_upall.c diff --git a/bot_NeonServ.c b/bot_NeonServ.c index e640f0f..dc3f842 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -92,8 +92,8 @@ INCLUDE ALL CMD's HERE #include "cmd_neonserv_users.c" #include "cmd_neonserv_up.c" #include "cmd_neonserv_down.c" -//#include "cmd_neonserv_upall.c" -//#include "cmd_neonserv_downall.c" +#include "cmd_neonserv_upall.c" +#include "cmd_neonserv_downall.c" //#include "cmd_neonserv_op.c" //#include "cmd_neonserv_opall.c" //#include "cmd_neonserv_deop.c" @@ -233,6 +233,8 @@ void init_NeonServ() { register_command(BOTID, "myaccess", neonserv_cmd_myaccess, 0, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH); register_command(BOTID, "up", neonserv_cmd_up, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN); 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); start_bots(); bind_bot_ready(neonserv_bot_ready); diff --git a/cmd_neonserv_downall.c b/cmd_neonserv_downall.c new file mode 100644 index 0000000..28c02ba --- /dev/null +++ b/cmd_neonserv_downall.c @@ -0,0 +1,20 @@ + +/* +* no arguments +*/ + +static CMD_BIND(neonserv_cmd_downall) { + check_mysql(); + struct ChanUser *chanuser; + for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = getUserChannels(user, chanuser)) { + chan = chanuser->chan; + loadChannelSettings(chan); + if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) continue; + printf_mysql_query("SELECT `botid` FROM `bot_channels` LEFT JOIN `bots` ON `bot_channels`.`botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botclass` = '%d'", chan->channel_id, client->botid); + if (mysql_fetch_row(mysql_use()) == NULL) continue; + if((chanuser->flags & CHANUSERFLAG_OPPED)) + putsock(client, "MODE %s -o %s", chan->name, user->nick); + if((chanuser->flags & CHANUSERFLAG_VOICED)) + putsock(client, "MODE %s -v %s", chan->name, user->nick); + } +} diff --git a/cmd_neonserv_upall.c b/cmd_neonserv_upall.c new file mode 100644 index 0000000..4cb2060 --- /dev/null +++ b/cmd_neonserv_upall.c @@ -0,0 +1,43 @@ + +/* +* no arguments +*/ + +static CMD_BIND(neonserv_cmd_upall) { + check_mysql(); + MYSQL_RES *res, *default_res; + MYSQL_ROW row, default_row; + struct ChanUser *chanuser; + int userid, chan_getop, chan_getvoice, caccess; + printf_mysql_query("SELECT `user_id` FROM `users` WHERE `user_user` = '%s'", user->auth); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) == NULL) + return; + userid = atoi(row[0]); + printf_mysql_query("SELECT `chanuser_access`, `channel_getop`, `channel_getvoice`, `channel_name`, `channel_id` FROM `chanusers` LEFT JOIN `channels` ON `chanuser_cid` = `channel_id` WHERE `chanuser_cid` = '%s'", user->auth); + while ((row = mysql_fetch_row(res)) == NULL) { + chan = getChanByName(row[3]); + if(!chan) continue; + printf_mysql_query("SELECT `botid` FROM `bot_channels` LEFT JOIN `bots` ON `bot_channels`.`botid` = `bots`.`id` WHERE `chanid` = '%s' AND `botclass` = '%d'", row[4], client->botid); + if (mysql_fetch_row(mysql_use()) == NULL) continue; + if(!(chanuser = getChanUser(user, chan))) continue; + if(!row[1] || !row[2]) { + printf_mysql_query("SELECT `channel_getop`, `channel_getvoice` FROM `channels` WHERE `channel_name` = 'defaults'"); + default_res = mysql_use(); + if ((default_row = mysql_fetch_row(default_res)) == NULL) return; + chan_getop = (row[1] ? atoi(row[1]) : atoi(default_row[0])); + chan_getvoice = (row[2] ? atoi(row[2]) : atoi(default_row[1])); + } else { + chan_getop = atoi(row[1]); + chan_getvoice = atoi(row[2]); + } + caccess = atoi(row[0]); + if(caccess >= chan_getop) { + if(!(chanuser->flags & CHANUSERFLAG_OPPED)) + putsock(client, "MODE %s +o %s", chan->name, user->nick); + } else if(caccess >= chan_getvoice) { + if(!(chanuser->flags & CHANUSERFLAG_VOICED)) + putsock(client, "MODE %s +v %s", chan->name, user->nick); + } + } +} -- 2.20.1