X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fcmd_neonserv_unregister.c;fp=src%2Fcmd_neonserv_unregister.c;h=8da366e9de0b22f9fb4067ea7d7cbcba74929ede;hb=0f1dc61921eef1db8e404a5a82372e2d1cd55daa;hp=0000000000000000000000000000000000000000;hpb=795115bf680185ae01043bd1222b78bfed8c1d87;p=NeonServV5.git diff --git a/src/cmd_neonserv_unregister.c b/src/cmd_neonserv_unregister.c new file mode 100644 index 0000000..8da366e --- /dev/null +++ b/src/cmd_neonserv_unregister.c @@ -0,0 +1,42 @@ + +#include "cmd_neonserv.h" + +/* +* argv[0] - channel +*/ +CMD_BIND(neonserv_cmd_unregister) { + MYSQL_RES *res; + MYSQL_ROW row; + char *channel = argv[0]; + if(!is_valid_chan(channel)) { + reply(getTextBot(), user, "NS_INVALID_CHANNEL_NAME", argv[0]); + return; + } + int chanid; + printf_mysql_query("SELECT `channel_id` FROM `channels` WHERE `channel_name` = '%s'", escape_string(channel)); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) != NULL) { + chanid = atoi(row[0]); + } else { + reply(getTextBot(), user, "NS_UNREGISTER_NOT_REGISTERED", argv[0], client->user->nick); + return; + } + printf_mysql_query("SELECT `botid`, `bot_channels`.`id`, `suspended` FROM `bot_channels` LEFT JOIN `bots` ON `bot_channels`.`botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botclass` = '%d'", chanid, client->botid); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) == NULL) { + reply(getTextBot(), user, "NS_UNREGISTER_NOT_REGISTERED", argv[0], client->user->nick); + return; + } + int botid = atoi(row[0]); + struct ClientSocket *bot; + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(bot->clientid == botid) + break; + } + if(bot && strcmp(row[2], "1")) { + putsock(bot, "PART %s :Channel unregistered.", channel); + } + printf_mysql_query("DELETE FROM `bot_channels` WHERE `id` = '%s'", row[1]); + reply(getTextBot(), user, "NS_UNREGISTER_DONE", channel); + logEvent(event); +}