]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_ircv3_chghost.cpp
Document <alias:stripcolor>
[user/henk/code/inspircd.git] / src / modules / m_ircv3_chghost.cpp
1 /*
2  * InspIRCd -- Internet Relay Chat Daemon
3  *
4  *   Copyright (C) 2015 Attila Molnar <attilamolnar@hush.com>
5  *
6  * This file is part of InspIRCd.  InspIRCd is free software: you can
7  * redistribute it and/or modify it under the terms of the GNU General Public
8  * License as published by the Free Software Foundation, version 2.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
13  * details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19
20 #include "inspircd.h"
21 #include "modules/cap.h"
22 #include "modules/ircv3.h"
23
24 class ModuleIRCv3ChgHost : public Module
25 {
26         Cap::Capability cap;
27         ClientProtocol::EventProvider protoevprov;
28
29         void DoChgHost(User* user, const std::string& ident, const std::string& host)
30         {
31                 if (!(user->registered & REG_NICKUSER))
32                         return;
33
34                 ClientProtocol::Message msg("CHGHOST", user);
35                 msg.PushParamRef(ident);
36                 msg.PushParamRef(host);
37                 ClientProtocol::Event protoev(protoevprov, msg);
38                 IRCv3::WriteNeighborsWithCap(user, protoev, cap, true);
39         }
40
41  public:
42         ModuleIRCv3ChgHost()
43                 : cap(this, "chghost")
44                 , protoevprov(this, "CHGHOST")
45         {
46         }
47
48         void OnChangeIdent(User* user, const std::string& newident) CXX11_OVERRIDE
49         {
50                 DoChgHost(user, newident, user->GetDisplayedHost());
51         }
52
53         void OnChangeHost(User* user, const std::string& newhost) CXX11_OVERRIDE
54         {
55                 DoChgHost(user, user->ident, newhost);
56         }
57
58         Version GetVersion() CXX11_OVERRIDE
59         {
60                 return Version("Provides the chghost IRCv3 extension", VF_VENDOR);
61         }
62 };
63
64 MODULE_INIT(ModuleIRCv3ChgHost)