/* * InspIRCd -- Internet Relay Chat Daemon * * Copyright (C) 2009 Daniel De Graaf * Copyright (C) 2008 John Brooks * Copyright (C) 2008 Pippijn van Steenhoven * Copyright (C) 2006-2008 Craig Edwards * Copyright (C) 2007-2008 Robin Burchell * Copyright (C) 2007 Dennis Friis * Copyright (C) 2006 Jamie ??? * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public * License as published by the Free Software Foundation, version 2. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "inspircd.h" enum { // From ircd-ratbox. RPL_HELPSTART = 704, RPL_HELPTXT = 705, RPL_ENDOFHELP = 706, // InspIRCd-specific? RPL_DCCALLOWSTART = 990, RPL_DCCALLOWLIST = 991, RPL_DCCALLOWEND = 992, RPL_DCCALLOWTIMED = 993, RPL_DCCALLOWPERMANENT = 994, RPL_DCCALLOWREMOVED = 995, ERR_DCCALLOWINVALID = 996, RPL_DCCALLOWEXPIRED = 997, ERR_UNKNOWNDCCALLOWCMD = 998 }; static const char* const helptext[] = { "You may allow DCCs from specific users by specifying a", "DCC allow for the user you want to receive DCCs from.", "For example, to allow the user Brain to send you inspircd.exe", "you would type:", "/DCCALLOW +Brain", "Brain would then be able to send you files. They would have to", "resend the file again if the server gave them an error message", "before you added them to your DCCALLOW list.", "DCCALLOW entries will be temporary by default, if you want to add", "them to your DCCALLOW list until you leave IRC, type:", "/DCCALLOW +Brain 0", "To remove the user from your DCCALLOW list, type:", "/DCCALLOW -Brain", "To see the users in your DCCALLOW list, type:", "/DCCALLOW LIST", "NOTE: If the user leaves IRC or changes their nickname", " they will be removed from your DCCALLOW list.", " your DCCALLOW list will be deleted when you leave IRC." }; class BannedFileList { public: std::string filemask; std::string action; }; class DCCAllow { public: std::string nickname; std::string hostmask; time_t set_on; unsigned long length; DCCAllow() { } DCCAllow(const std::string& nick, const std::string& hm, time_t so, unsigned long ln) : nickname(nick) , hostmask(hm) , set_on(so) , length(ln) { } }; typedef std::vector userlist; userlist ul; typedef std::vector dccallowlist; dccallowlist* dl; typedef std::vector bannedfilelist; bannedfilelist bfl; typedef SimpleExtItem DCCAllowExt; class CommandDccallow : public Command { DCCAllowExt& ext; public: unsigned int maxentries; unsigned long defaultlength; CommandDccallow(Module* parent, DCCAllowExt& Ext) : Command(parent, "DCCALLOW", 0) , ext(Ext) { syntax = "[(+|-) [