summaryrefslogtreecommitdiff
path: root/modules/protocol/hybrid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/protocol/hybrid.cpp')
-rw-r--r--modules/protocol/hybrid.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp
index f4254edf4..997513f7e 100644
--- a/modules/protocol/hybrid.cpp
+++ b/modules/protocol/hybrid.cpp
@@ -26,6 +26,7 @@ class HybridProto : public IRCDProto
CanSZLine = true;
CanSVSHold = true;
CanCertFP = true;
+ CanSetVHost = true;
RequiresID = true;
MaxModes = 4;
}
@@ -260,6 +261,16 @@ class HybridProto : public IRCDProto
this->SendSQLineDel(&x);
}
+ void SendVhost(User *u, const Anope::string &ident, const Anope::string &host) anope_override
+ {
+ u->SetMode(Config->GetClient("HostServ"), "CLOAK", host);
+ }
+
+ void SendVhostDel(User *u) anope_override
+ {
+ u->RemoveMode(Config->GetClient("HostServ"), "CLOAK", u->host);
+ }
+
bool IsIdentValid(const Anope::string &ident) anope_override
{
if (ident.empty() || ident.length() > Config->GetBlock("networkinfo")->Get<unsigned>("userlen"))
@@ -603,6 +614,7 @@ class ProtoHybrid : public Module
ModeManager::AddUserMode(new UserModeOperOnly("HIDEOPER", 'H'));
ModeManager::AddUserMode(new UserMode("REGPRIV", 'R'));
ModeManager::AddUserMode(new UserModeNoone("SSL", 'S'));
+ ModeManager::AddUserMode(new UserMode("CLOAK", 'x'));
/* b/e/I */
ModeManager::AddChannelMode(new ChannelModeList("BAN", 'b'));