*/
#include "inspircd.h"
-#include "mode.h"
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
#include "u_listmode.h"
/* $ModDesc: Allows an extended ban (+b) syntax redirecting banned users to another channel */
std::string::iterator start_pos = param.begin();
long maxbans = channel->GetMaxBans();
- if(channel->bans.size() > static_cast<unsigned>(maxbans))
+ if(adding && (channel->bans.size() > static_cast<unsigned>(maxbans)))
{
source->WriteServ("478 %s %s :Channel ban list for %s is full (maximum entries for this channel is %d)", source->nick, channel->name, channel->name, maxbans);
return false;
irc::modestacker modestack(false);
StringDeque stackresult;
const char* mode_junk[MAXMODES+2];
- userrec* myhorriblefakeuser = new userrec(ServerInstance);
- myhorriblefakeuser->SetFd(FD_MAGIC_NUMBER);
mode_junk[0] = chan->name;
mode_junk[i+1] = stackresult[i].c_str();
}
- ServerInstance->SendMode(mode_junk, stackresult.size() + 1, myhorriblefakeuser);
+ ServerInstance->SendMode(mode_junk, stackresult.size() + 1, ServerInstance->FakeClient);
}
- DELETE(myhorriblefakeuser);
DELETE(redirects);
chan->Shrink("banredirects");
}
}
else
{
- user->WriteServ("470 %s :You are banned from %s. You are being automatically redirected to %s", user->nick, chan->name, redir->targetchan.c_str());
+ user->WriteServ("474 %s %s :Cannot join channel (You are banned)", user->nick, chan->name);
+ user->WriteServ("470 %s :You are being automatically redirected to %s", user->nick, redir->targetchan.c_str());
nofollow = true;
chanrec::JoinUser(ServerInstance, user, redir->targetchan.c_str(), false, "", ServerInstance->Time(true));
nofollow = false;
};
-MODULE_INIT(ModuleBanRedirect);
+MODULE_INIT(ModuleBanRedirect)