2 * InspIRCd -- Internet Relay Chat Daemon
4 * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
5 * Copyright (C) 2008 Pippijn van Steenhoven <pip88nl@gmail.com>
6 * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
8 * This file is part of InspIRCd. InspIRCd is free software: you can
9 * redistribute it and/or modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation, version 2.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
26 class CommandTitle : public Command
30 CommandTitle(Module* Creator) : Command(Creator,"TITLE", 2),
31 ctitle("ctitle", ExtensionItem::EXT_USER, Creator)
33 syntax = "<user> <password>";
36 CmdResult Handle(const std::vector<std::string> ¶meters, User* user)
38 const std::string userHost = user->ident + "@" + user->host;
39 const std::string userIP = user->ident + "@" + user->GetIPString();
41 ConfigTagList tags = ServerInstance->Config->ConfTags("title");
42 for (ConfigIter i = tags.first; i != tags.second; ++i)
44 std::string Name = i->second->getString("name");
45 std::string pass = i->second->getString("password");
46 std::string hash = i->second->getString("hash");
47 std::string host = i->second->getString("host", "*@*");
48 std::string title = i->second->getString("title");
49 std::string vhost = i->second->getString("vhost");
51 if (Name == parameters[0] && ServerInstance->PassCompare(user, pass, parameters[1], hash) &&
52 InspIRCd::MatchMask(host, userHost, userIP) && !title.empty())
54 ctitle.set(user, title);
56 ServerInstance->PI->SendMetaData(user, "ctitle", title);
59 user->ChangeDisplayedHost(vhost);
61 user->WriteNotice("Custom title set to '" + title + "'");
67 user->WriteNotice("Invalid title credentials");
73 class ModuleCustomTitle : public Module
78 ModuleCustomTitle() : cmd(this)
82 // :kenny.chatspike.net 320 Brain Azhrarn :is getting paid to play games.
83 ModResult OnWhoisLine(User* user, User* dest, int &numeric, std::string &text) CXX11_OVERRIDE
85 /* We use this and not OnWhois because this triggers for remote, too */
88 /* Insert our numeric before 312 */
89 const std::string* ctitle = cmd.ctitle.get(dest);
92 ServerInstance->SendWhoisLine(user, dest, 320, "%s :%s", dest->nick.c_str(), ctitle->c_str());
95 /* Don't block anything */
96 return MOD_RES_PASSTHRU;
99 Version GetVersion() CXX11_OVERRIDE
101 return Version("Custom Title for users", VF_OPTCOMMON | VF_VENDOR);
105 MODULE_INIT(ModuleCustomTitle)