bool Matches(User *u)
{
- if (InspIRCd::Match(u->GetFullHost(), matchtext) || InspIRCd::Match(u->GetFullRealHost(), matchtext))
+ // E: overrides shun
+ if (u->exempt)
+ return false;
+
+ if (InspIRCd::Match(u->GetFullHost(), matchtext) || InspIRCd::Match(u->GetFullRealHost(), matchtext) || InspIRCd::Match(u->nick+"!"+u->ident+"@"+u->GetIPString(), matchtext))
return true;
return false;
/* 'time' is a human-readable timestring, like 2d3h2s. */
std::string target = parameters[0];
+
+ User *find = ServerInstance->FindNick(target.c_str());
+ if (find)
+ target = std::string("*!*@") + find->GetIPString();
if (parameters.size() == 1)
{
}
else if (parameters.size() >= 2)
{
- User* find = ServerInstance->FindNick(target.c_str());
- if (find)
- target = std::string("*!*@") + find->GetIPString();
-
// Adding - XXX todo make this respect <insane> tag perhaps..
long duration;
std::string expr;
class ModuleShun : public Module
{
- CommandShun* mycommand;
- ShunFactory *f;
+ CommandShun cmd;
+ ShunFactory f;
std::set<std::string> ShunEnabledCommands;
bool NotifyOfShun;
bool affectopers;
public:
- ModuleShun(InspIRCd* Me) : Module(Me)
+ ModuleShun(InspIRCd* Me) : Module(Me), cmd(Me), f(Me)
{
- f = new ShunFactory(ServerInstance);
- ServerInstance->XLines->RegisterFactory(f);
-
- mycommand = new CommandShun(ServerInstance);
- ServerInstance->AddCommand(mycommand);
+ ServerInstance->XLines->RegisterFactory(&f);
+ ServerInstance->AddCommand(&cmd);
Implementation eventlist[] = { I_OnStats, I_OnPreCommand, I_OnUserConnect, I_OnRehash };
ServerInstance->Modules->Attach(eventlist, this, 4);
- OnRehash(NULL, "");
+ OnRehash(NULL);
}
virtual ~ModuleShun()
{
ServerInstance->XLines->DelAll("SHUN");
- ServerInstance->XLines->UnregisterFactory(f);
+ ServerInstance->XLines->UnregisterFactory(&f);
}
virtual int OnStats(char symbol, User* user, string_list& out)
return 1;
}
- virtual void OnRehash(User* user, const std::string ¶meter)
+ virtual void OnRehash(User* user)
{
ConfigReader MyConf(ServerInstance);
std::string cmds = MyConf.ReadValue("shun", "enabledcommands", 0);