From 306fdbcd56cfdb2fd97e37ef7cb4bc2d806669ca Mon Sep 17 00:00:00 2001 From: pk910 Date: Thu, 16 Feb 2012 17:21:56 +0100 Subject: [PATCH] moved cmd_move to global.mod and fixed crash in bot_SpamServ.c --- Makefile.am | 2 +- src/modules/NeonServ.mod/cmd_neonserv.c | 1 - src/modules/NeonServ.mod/cmd_neonserv.h | 1 - src/modules/NeonSpam.mod/bot_NeonSpam.c | 2 ++ src/modules/global.mod/cmd_global.c | 1 + src/modules/global.mod/cmd_global.h | 1 + .../cmd_global_move.c} | 28 +++++++++++-------- 7 files changed, 22 insertions(+), 14 deletions(-) rename src/modules/{NeonServ.mod/cmd_neonserv_move.c => global.mod/cmd_global_move.c} (85%) diff --git a/Makefile.am b/Makefile.am index fc146c7..03edbe3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -48,6 +48,7 @@ libglobalcmd_la_SOURCES = src/modules/global.mod/cmd_global.c \ src/modules/global.mod/cmd_global_modcmd.c \ src/modules/global.mod/cmd_global_meminfo.c \ src/modules/global.mod/cmd_global_extscript.c \ + src/modules/global.mod/cmd_global_move.c \ src/modules/global.mod/module.c libglobalcmd_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined libglobalcmd_la_LIBADD = $(MYSQL_LIBS) @@ -92,7 +93,6 @@ libNeonServ_la_SOURCES = src/modules/NeonServ.mod/bot_NeonServ.c \ src/modules/NeonServ.mod/cmd_neonserv_kickban.c \ src/modules/NeonServ.mod/cmd_neonserv_mdeluser.c \ src/modules/NeonServ.mod/cmd_neonserv_mode.c \ - src/modules/NeonServ.mod/cmd_neonserv_move.c \ src/modules/NeonServ.mod/cmd_neonserv_myaccess.c \ src/modules/NeonServ.mod/cmd_neonserv_op.c \ src/modules/NeonServ.mod/cmd_neonserv_opall.c \ diff --git a/src/modules/NeonServ.mod/cmd_neonserv.c b/src/modules/NeonServ.mod/cmd_neonserv.c index fedd4bd..7bb3539 100644 --- a/src/modules/NeonServ.mod/cmd_neonserv.c +++ b/src/modules/NeonServ.mod/cmd_neonserv.c @@ -87,7 +87,6 @@ void register_commands() { OPER_COMMAND("recover", neonserv_cmd_recover, 1, 200, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("csuspend", neonserv_cmd_csuspend, 1, 100, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("cunsuspend", neonserv_cmd_cunsuspend,1, 100, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); - OPER_COMMAND("move", neonserv_cmd_move, 2, 300, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("oplog", neonserv_cmd_oplog, 0, 1, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG); OPER_COMMAND("search", neonserv_cmd_search, 1, 400, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH); OPER_COMMAND("addrank", neonserv_cmd_addrank, 1, 1000, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG); diff --git a/src/modules/NeonServ.mod/cmd_neonserv.h b/src/modules/NeonServ.mod/cmd_neonserv.h index 96b340c..13fff4d 100644 --- a/src/modules/NeonServ.mod/cmd_neonserv.h +++ b/src/modules/NeonServ.mod/cmd_neonserv.h @@ -79,7 +79,6 @@ CMD_BIND(neonserv_cmd_kickban); CMD_BIND(neonserv_cmd_listrank); CMD_BIND(neonserv_cmd_mdeluser); CMD_BIND(neonserv_cmd_mode); -CMD_BIND(neonserv_cmd_move); CMD_BIND(neonserv_cmd_myaccess); CMD_BIND(neonserv_cmd_nicklist); CMD_BIND(neonserv_cmd_noregister); diff --git a/src/modules/NeonSpam.mod/bot_NeonSpam.c b/src/modules/NeonSpam.mod/bot_NeonSpam.c index 8d349ec..89aeb92 100644 --- a/src/modules/NeonSpam.mod/bot_NeonSpam.c +++ b/src/modules/NeonSpam.mod/bot_NeonSpam.c @@ -234,6 +234,8 @@ int loadNeonSpamSettings(struct ChanNode *chan) { MYSQL_RES *res; MYSQL_ROW row, defaults = NULL; loadChannelSettings(chan); + if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) + return 0; printf_mysql_query("SELECT `channel_scanner`, `channel_spam_limit`, `channel_spam_except`, `channel_flood_limit`, `channel_flood_time`, `channel_flood_except`, `channel_join_limit`, `channel_join_time`, `channel_join_except`, `channel_caps_percent`, `channel_caps_except`, `channel_digit_percent`, `channel_digit_except` FROM `channels` WHERE `channel_id` = '%d'", chan->channel_id); res = mysql_use(); row = mysql_fetch_row(res); diff --git a/src/modules/global.mod/cmd_global.c b/src/modules/global.mod/cmd_global.c index dff78d3..9668746 100644 --- a/src/modules/global.mod/cmd_global.c +++ b/src/modules/global.mod/cmd_global.c @@ -37,6 +37,7 @@ void register_commands() { // NAME FUNCTION PARAMS ACCS FLAGS OPER_COMMAND("register", global_cmd_register, 1, 200, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("unregister", global_cmd_unregister,0, 200, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); + OPER_COMMAND("move", global_cmd_move, 2, 300, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("say", global_cmd_say, 2, 600, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("emote", global_cmd_emote, 2, 600, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); OPER_COMMAND("notice", global_cmd_notice, 2, 600, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); diff --git a/src/modules/global.mod/cmd_global.h b/src/modules/global.mod/cmd_global.h index 5ac060d..6db037c 100644 --- a/src/modules/global.mod/cmd_global.h +++ b/src/modules/global.mod/cmd_global.h @@ -53,6 +53,7 @@ CMD_BIND(global_cmd_god); CMD_BIND(global_cmd_meminfo); CMD_BIND(global_cmd_modcmd); CMD_BIND(global_cmd_motd); +CMD_BIND(global_cmd_move); CMD_BIND(global_cmd_netinfo); CMD_BIND(global_cmd_notice); CMD_BIND(global_cmd_raw); diff --git a/src/modules/NeonServ.mod/cmd_neonserv_move.c b/src/modules/global.mod/cmd_global_move.c similarity index 85% rename from src/modules/NeonServ.mod/cmd_neonserv_move.c rename to src/modules/global.mod/cmd_global_move.c index fab9e80..3a1d50f 100644 --- a/src/modules/NeonServ.mod/cmd_neonserv_move.c +++ b/src/modules/global.mod/cmd_global_move.c @@ -1,4 +1,4 @@ -/* cmd_neonserv_move.c - NeonServ v5.4 +/* cmd_global_move.c - NeonServ v5.4 * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -15,13 +15,13 @@ * along with this program. If not, see . */ -#include "cmd_neonserv.h" +#include "cmd_global.h" /* * argv[0] - channel * argv[1] - new channel */ -CMD_BIND(neonserv_cmd_move) { +CMD_BIND(global_cmd_move) { MYSQL_RES *res; MYSQL_ROW row; char *channel = argv[0]; @@ -61,13 +61,19 @@ CMD_BIND(neonserv_cmd_move) { } 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) { - putsock(bot, "PART %s :Channel moved to %s.", channel, new_channel); - putsock(bot, "JOIN %s", new_channel); + struct ChanNode *channode = getChanByName(channel); + if(channode) { + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(isUserOnChan(bot->user, channode)) { + putsock(bot, "PART %s", channel); + putsock(bot, "JOIN %s", new_channel); + } + } + } else { + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(bot->clientid == botid) + putsock(bot, "JOIN %s", new_channel); + } } printf_mysql_query("SELECT `channel_id` FROM `channels` WHERE `channel_name` = '%s'", escape_string(new_channel)); res = mysql_use(); @@ -81,7 +87,7 @@ CMD_BIND(neonserv_cmd_move) { printf_mysql_query("DELETE FROM `channels` WHERE `channel_id` = '%d'", chanid); } printf_mysql_query("UPDATE `channels` SET `channel_name` = '%s' WHERE `channel_name` = '%s'", escape_string(new_channel), escape_string(channel)); - struct ChanNode *channode = getChanByName(channel); + if(channode && channode->flags & CHANFLAG_REQUESTED_CHANINFO) { channode->flags &= ~CHANFLAG_CHAN_REGISTERED; channode->channel_id = 0; -- 2.20.1