public:
CommandDccallow(Module* parent) : Command(parent, "DCCALLOW", 0)
{
- syntax = "{[+|-]<nick> <time>|HELP|LIST}";
+ syntax = "[(+|-)<nick> [<time>]]|[LIST|HELP]";
/* XXX we need to fix this so it can work with translation stuff (i.e. move +- into a seperate param */
}
length = ServerInstance->Duration(parameters[1]);
}
- if (!ServerInstance->IsValidMask(mask.c_str()))
+ if (!ServerInstance->IsValidMask(mask))
{
return CMD_FAILURE;
}
void DisplayHelp(User* user)
{
- user->WriteNumeric(998, "%s :DCCALLOW [<+|->nick [time]] [list] [help]", user->nick.c_str());
+ user->WriteNumeric(998, "%s :DCCALLOW [(+|-)<nick> [<time>]]|[LIST|HELP]", user->nick.c_str());
user->WriteNumeric(998, "%s :You may allow DCCs from specific users by specifying a", user->nick.c_str());
user->WriteNumeric(998, "%s :DCC allow for the user you want to receive DCCs from.", user->nick.c_str());
user->WriteNumeric(998, "%s :For example, to allow the user Brain to send you inspircd.exe", user->nick.c_str());
user->WriteNumeric(998, "%s : they will be removed from your DCCALLOW list.", user->nick.c_str());
user->WriteNumeric(998, "%s : your DCCALLOW list will be deleted when you leave IRC.", user->nick.c_str());
user->WriteNumeric(999, "%s :End of DCCALLOW HELP", user->nick.c_str());
+
+ LocalUser* localuser = IS_LOCAL(user);
+ if (localuser)
+ localuser->CommandFloodPenalty += 4000;
}
void DisplayDCCAllowList(User* user)
void init()
{
ext = new SimpleExtItem<dccallowlist>("dccallow", this);
- ServerInstance->Extensions.Register(ext);
- ServerInstance->AddCommand(&cmd);
+ ServerInstance->Modules->AddService(*ext);
+ ServerInstance->Modules->AddService(cmd);
ReadFileConf();
Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserQuit, I_OnUserPostNick, I_OnRehash };
- ServerInstance->Modules->Attach(eventlist, this, 5);
+ ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
}
virtual void OnRehash(User* user)
while (ss >> buf)
tokens.push_back(buf);
+ if (tokens.size() < 2)
+ return MOD_RES_PASSTHRU;
+
irc::string type = tokens[1].c_str();
ConfigTag* conftag = ServerInstance->Config->ConfValue("dccallow");
if (type == "SEND")
{
+ if (tokens.size() < 3)
+ return MOD_RES_PASSTHRU;
+
std::string defaultaction = conftag->getString("action");
std::string filename = tokens[2];