]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_ircv3_chghost.cpp
aa53612cb60533113d3ed83e967a3bec95baedf3
[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                 ClientProtocol::Message msg("CHGHOST", user);
32                 msg.PushParamRef(ident);
33                 msg.PushParamRef(host);
34                 ClientProtocol::Event protoev(protoevprov, msg);
35                 IRCv3::WriteNeighborsWithCap(user, protoev, cap);
36         }
37
38  public:
39         ModuleIRCv3ChgHost()
40                 : cap(this, "chghost")
41                 , protoevprov(this, "CHGHOST")
42         {
43         }
44
45         void OnChangeIdent(User* user, const std::string& newident) CXX11_OVERRIDE
46         {
47                 DoChgHost(user, newident, user->GetDisplayedHost());
48         }
49
50         void OnChangeHost(User* user, const std::string& newhost) CXX11_OVERRIDE
51         {
52                 DoChgHost(user, user->ident, newhost);
53         }
54
55         Version GetVersion() CXX11_OVERRIDE
56         {
57                 return Version("Provides the chghost IRCv3.2 extension", VF_VENDOR);
58         }
59 };
60
61 MODULE_INIT(ModuleIRCv3ChgHost)