From d45cb5451eedd213862abeab5da9a30d96a494b2 Mon Sep 17 00:00:00 2001 From: MichaƂ Zegan Date: Thu, 11 Dec 2014 20:29:17 +0100 Subject: Fix issue 1627. It required that the FHost message was rewritten for the insp20 protocol module instead of relying on inspircd12's version. The insp20 version internally removes +x mode on host change. --- modules/protocol/inspircd20.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 98cfb40dc..eb711e099 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -782,6 +782,19 @@ struct IRCDMessageEncap : IRCDMessage } }; +struct IRCDMessageFHost : IRCDMessage +{ + IRCDMessageFHost(Module *creator) : IRCDMessage(creator, "FHOST", 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); } + + void Run(MessageSource &source, const std::vector ¶ms) anope_override + { + User *u = source.GetUser(); + u->SetDisplayedHost(params[0]); + if (u->HasMode("CLOAK")) + u->RemoveModeInternal(source, ModeManager::FindUserModeByName("CLOAK")); + } +}; + struct IRCDMessageFIdent : IRCDMessage { IRCDMessageFIdent(Module *creator) : IRCDMessage(creator, "FIDENT", 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); } @@ -857,7 +870,7 @@ class ProtoInspIRCd20 : public Module Message::Topic message_topic; /* InspIRCd 1.2 message handlers */ - ServiceAlias message_endburst, message_fhost, message_fjoin, message_fmode, + ServiceAlias message_endburst, message_fjoin, message_fmode, message_ftopic, message_idle, message_metadata, message_mode, message_nick, message_opertype, message_rsquit, message_server, message_squit, message_time, message_uid; @@ -865,6 +878,7 @@ class ProtoInspIRCd20 : public Module /* Our message handlers */ IRCDMessageCapab message_capab; IRCDMessageEncap message_encap; + IRCDMessageFHost message_fhost; IRCDMessageFIdent message_fident; IRCDMessageSave message_save; @@ -883,7 +897,6 @@ class ProtoInspIRCd20 : public Module message_privmsg(this), message_quit(this), message_stats(this), message_topic(this), message_endburst("IRCDMessage", "inspircd20/endburst", "inspircd12/endburst"), - message_fhost("IRCDMessage", "inspircd20/fhost", "inspircd12/fhost"), message_fjoin("IRCDMessage", "inspircd20/fjoin", "inspircd12/fjoin"), message_fmode("IRCDMessage", "inspircd20/fmode", "inspircd12/fmode"), message_ftopic("IRCDMessage", "inspircd20/ftopic", "inspircd12/ftopic"), @@ -898,7 +911,7 @@ class ProtoInspIRCd20 : public Module message_time("IRCDMessage", "inspircd20/time", "inspircd12/time"), message_uid("IRCDMessage", "inspircd20/uid", "inspircd12/uid"), - message_capab(this), message_encap(this), message_fident(this), message_save(this) + message_capab(this), message_encap(this), message_fhost(this), message_fident(this), message_save(this) { if (ModuleManager::LoadModule("inspircd12", User::Find(creator)) != MOD_ERR_OK) -- cgit From 845ca576b4c5a94f0a3ec12a4dd524a7d017155e Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 28 Jan 2015 22:57:15 -0500 Subject: More properly track topic change sources and allow users with access to change topics through topiclock --- modules/protocol/bahamut.cpp | 4 ++-- modules/protocol/hybrid.cpp | 2 +- modules/protocol/inspircd12.cpp | 2 +- modules/protocol/ngircd.cpp | 8 ++++---- modules/protocol/ratbox.cpp | 2 +- modules/protocol/unreal.cpp | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp index a399ecece..4e193da01 100644 --- a/modules/protocol/bahamut.cpp +++ b/modules/protocol/bahamut.cpp @@ -461,11 +461,11 @@ struct IRCDMessageTopic : IRCDMessage { IRCDMessageTopic(Module *creator) : IRCDMessage(creator, "TOPIC", 4) { } - void Run(MessageSource &, const std::vector ¶ms) anope_override + void Run(MessageSource &source, const std::vector ¶ms) anope_override { Channel *c = Channel::Find(params[0]); if (c) - c->ChangeTopicInternal(params[1], params[3], Anope::string(params[2]).is_pos_number_only() ? convertTo(params[2]) : Anope::CurTime); + c->ChangeTopicInternal(source.GetUser(), params[1], params[3], Anope::string(params[2]).is_pos_number_only() ? convertTo(params[2]) : Anope::CurTime); } }; diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 52c442dc3..b6ee17d45 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -512,7 +512,7 @@ struct IRCDMessageTBurst : IRCDMessage Channel *c = Channel::Find(params[1]); if (c) - c->ChangeTopicInternal(setter, params[4], topic_time); + c->ChangeTopicInternal(NULL, setter, params[4], topic_time); } }; diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index 5fb226d99..192a783fe 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -998,7 +998,7 @@ struct IRCDMessageFTopic : IRCDMessage Channel *c = Channel::Find(params[0]); if (c) - c->ChangeTopicInternal(params[2], params[3], Anope::string(params[1]).is_pos_number_only() ? convertTo(params[1]) : Anope::CurTime); + c->ChangeTopicInternal(NULL, params[2], params[3], Anope::string(params[1]).is_pos_number_only() ? convertTo(params[1]) : Anope::CurTime); } }; diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp index 61613423e..28f68007b 100644 --- a/modules/protocol/ngircd.cpp +++ b/modules/protocol/ngircd.cpp @@ -257,7 +257,7 @@ struct IRCDMessageChaninfo : IRCDMessage if (params.size() == 3) { - c->ChangeTopicInternal(source.GetName(), params[2], Anope::CurTime); + c->ChangeTopicInternal(NULL, source.GetName(), params[2], Anope::CurTime); } else if (params.size() == 5) { @@ -271,9 +271,9 @@ struct IRCDMessageChaninfo : IRCDMessage case 'l': modes += " " + params[3]; continue; + } } - } - c->ChangeTopicInternal(source.GetName(), params[4], Anope::CurTime); + c->ChangeTopicInternal(NULL, source.GetName(), params[4], Anope::CurTime); } c->SetModesInternal(source, modes); @@ -590,7 +590,7 @@ struct IRCDMessageTopic : IRCDMessage Log(LOG_DEBUG) << "TOPIC for nonexistant channel " << params[0]; return; } - c->ChangeTopicInternal(source.GetName(), params[1], Anope::CurTime); + c->ChangeTopicInternal(source.GetUser(), source.GetName(), params[1], Anope::CurTime); } }; diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index 8fd9a30cf..8ccabd604 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -185,7 +185,7 @@ struct IRCDMessageTBurst : IRCDMessage const Anope::string &setter = params.size() == 4 ? params[2] : "", topic = params.size() == 4 ? params[3] : params[2]; - c->ChangeTopicInternal(setter, topic, topic_time); + c->ChangeTopicInternal(NULL, setter, topic, topic_time); } }; diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index 40cb1fe70..1bb0db657 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -1146,7 +1146,7 @@ struct IRCDMessageTopic : IRCDMessage { Channel *c = Channel::Find(params[0]); if (c) - c->ChangeTopicInternal(params[1], params[3], Anope::string(params[2]).is_pos_number_only() ? convertTo(params[2]) : Anope::CurTime); + c->ChangeTopicInternal(source.GetUser(), params[1], params[3], Anope::string(params[2]).is_pos_number_only() ? convertTo(params[2]) : Anope::CurTime); } }; -- cgit From 8550e2216791ad6df1d789ae332d61fac8619433 Mon Sep 17 00:00:00 2001 From: miwob Date: Fri, 6 Feb 2015 19:39:31 +0100 Subject: - Update ircd-hybrid protocol module to support channel mode 'C' (no CTCPs) --- modules/protocol/hybrid.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index b6ee17d45..dc6d7a6c1 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -645,7 +645,7 @@ class ProtoHybrid : public Module ModeManager::AddChannelMode(new ChannelModeList("EXCEPT", 'e')); ModeManager::AddChannelMode(new ChannelModeList("INVITEOVERRIDE", 'I')); - /* v/h/o/a/q */ + /* v/h/o */ ModeManager::AddChannelMode(new ChannelModeStatus("VOICE", 'v', '+', 0)); ModeManager::AddChannelMode(new ChannelModeStatus("HALFOP", 'h', '%', 1)); ModeManager::AddChannelMode(new ChannelModeStatus("OP", 'o', '@', 2)); @@ -663,6 +663,7 @@ class ProtoHybrid : public Module ModeManager::AddChannelMode(new ChannelModeNoone("REGISTERED", 'r')); ModeManager::AddChannelMode(new ChannelMode("SECRET", 's')); ModeManager::AddChannelMode(new ChannelMode("TOPIC", 't')); + ModeManager::AddChannelMode(new ChannelMode("NOCTCP", 'C')); ModeManager::AddChannelMode(new ChannelModeOperOnly("OPERONLY", 'O')); ModeManager::AddChannelMode(new ChannelMode("REGMODERATED", 'M')); ModeManager::AddChannelMode(new ChannelMode("REGISTEREDONLY", 'R')); -- cgit From f484a68dee0c8e20256d755b0f2b24d62fceb4ed Mon Sep 17 00:00:00 2001 From: miwob Date: Fri, 6 Feb 2015 20:28:30 +0100 Subject: - Removed SendGlobopsInternal() override as it's basically a duplicate of SendGlobopsInternal() in protocol.c --- modules/protocol/hybrid.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index b6ee17d45..f0c359be4 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -66,11 +66,6 @@ class HybridProto : public IRCDProto UplinkSocket::Message(bi) << "PRIVMSG $$" << dest->GetName() << " :" << msg; } - void SendGlobopsInternal(const MessageSource &source, const Anope::string &buf) anope_override - { - UplinkSocket::Message(source) << "GLOBOPS :" << buf; - } - void SendSQLine(User *, const XLine *x) anope_override { UplinkSocket::Message(FindIntroduced()) << "ENCAP * RESV " << (x->expires ? x->expires - Anope::CurTime : 0) << " " << x->mask << " 0 :" << x->reason; -- cgit From 41ae2dbefbe632860c9cda16e73e6ca55c8032f6 Mon Sep 17 00:00:00 2001 From: miwob Date: Sat, 7 Feb 2015 19:08:55 +0100 Subject: - Added some missing user modes to the ircd-hybrid protocol module --- modules/protocol/hybrid.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index b6ee17d45..af29b6227 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -626,10 +626,13 @@ class ProtoHybrid : public Module { /* Add user modes */ ModeManager::AddUserMode(new UserModeOperOnly("ADMIN", 'a')); + ModeManager::AddUserMode(new UserMode("SOFTCALLERID", 'G')); ModeManager::AddUserMode(new UserModeOperOnly("CALLERID", 'g')); ModeManager::AddUserMode(new UserMode("INVIS", 'i')); ModeManager::AddUserMode(new UserModeOperOnly("LOCOPS", 'l')); ModeManager::AddUserMode(new UserModeOperOnly("OPER", 'o')); + ModeManager::AddUserMode(new UserMode("HIDECHANS", 'p')); + ModeManager::AddUserMode(new UserMode("HIDEIDLE", 'q')); ModeManager::AddUserMode(new UserModeNoone("REGISTERED", 'r')); ModeManager::AddUserMode(new UserModeOperOnly("SNOMASK", 's')); ModeManager::AddUserMode(new UserMode("WALLOPS", 'w')); @@ -638,6 +641,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 UserModeNoone("WEBIRC", 'W')); ModeManager::AddUserMode(new UserMode("CLOAK", 'x')); /* b/e/I */ -- cgit From 2f49065500e5e913eb6275a13f6d580131d9abf8 Mon Sep 17 00:00:00 2001 From: miwob Date: Sun, 8 Feb 2015 12:29:16 +0100 Subject: Misc changes to the ircd-hybrid protocol module: - Increase MaxModes to 6 - SendLogout(): send "+d *" instead of "+d 0" - Update copyright year - Removed user mode +z from supported modes --- modules/protocol/hybrid.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 438229780..9eff5a6a0 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -1,7 +1,7 @@ /* ircd-hybrid-8 protocol module * * (C) 2003-2014 Anope Team - * (C) 2012-2014 ircd-hybrid development team + * (C) 2012-2015 ircd-hybrid development team * * Please read COPYING and README for further details. * @@ -48,7 +48,7 @@ class HybridProto : public IRCDProto CanCertFP = true; CanSetVHost = true; RequiresID = true; - MaxModes = 4; + MaxModes = 6; } void SendInvite(const MessageSource &source, const Channel *c, User *u) anope_override @@ -232,7 +232,7 @@ class HybridProto : public IRCDProto void SendLogout(User *u) anope_override { - IRCD->SendMode(Config->GetClient("NickServ"), u, "+d 0"); + IRCD->SendMode(Config->GetClient("NickServ"), u, "+d *"); } void SendChannel(Channel *c) anope_override @@ -628,7 +628,6 @@ class ProtoHybrid : public Module ModeManager::AddUserMode(new UserModeNoone("REGISTERED", 'r')); ModeManager::AddUserMode(new UserModeOperOnly("SNOMASK", 's')); ModeManager::AddUserMode(new UserMode("WALLOPS", 'w')); - ModeManager::AddUserMode(new UserModeOperOnly("OPERWALLS", 'z')); ModeManager::AddUserMode(new UserMode("DEAF", 'D')); ModeManager::AddUserMode(new UserModeOperOnly("HIDEOPER", 'H')); ModeManager::AddUserMode(new UserMode("REGPRIV", 'R')); -- cgit From 6ada3ec87180df159a2d55634a1972611f7fe62a Mon Sep 17 00:00:00 2001 From: miwob Date: Sun, 15 Feb 2015 21:27:01 +0100 Subject: - Change SendForceNickChange() to use UIDs --- modules/protocol/hybrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 438229780..5e4ce490e 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -252,7 +252,7 @@ class HybridProto : public IRCDProto void SendForceNickChange(User *u, const Anope::string &newnick, time_t when) anope_override { - UplinkSocket::Message(Me) << "SVSNICK " << u->nick << " " << newnick << " " << when; + UplinkSocket::Message(Me) << "SVSNICK " << u->GetUID() << " " << newnick << " " << when; } void SendSVSJoin(const MessageSource &source, User *u, const Anope::string &chan, const Anope::string &) anope_override -- cgit From abe232601b05fc78ae1c419165e4075b5690052c Mon Sep 17 00:00:00 2001 From: miwob Date: Sun, 15 Feb 2015 21:33:22 +0100 Subject: - Update SendClientIntroduction() to use * for account names instead of 0 --- modules/protocol/hybrid.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 438229780..6debde0b9 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -212,7 +212,7 @@ class HybridProto : public IRCDProto Anope::string modes = "+" + u->GetModes(); UplinkSocket::Message(Me) << "UID " << u->nick << " 1 " << u->timestamp << " " << modes << " " - << u->GetIdent() << " " << u->host << " 0 " << u->GetUID() << " 0 :" << u->realname; + << u->GetIdent() << " " << u->host << " 0 " << u->GetUID() << " * :" << u->realname; } void SendEOB() anope_override @@ -541,7 +541,7 @@ struct IRCDMessageUID : IRCDMessage IRCDMessageUID(Module *creator) : IRCDMessage(creator, "UID", 10) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); } /* 0 1 2 3 4 5 6 7 8 9 */ - /* :0MC UID Steve 1 1350157102 +oi ~steve resolved.host 10.0.0.1 0MCAAAAAB 1350157108 :Mining all the time */ + /* :0MC UID Steve 1 1350157102 +oi ~steve resolved.host 10.0.0.1 0MCAAAAAB Steve :Mining all the time */ void Run(MessageSource &source, const std::vector ¶ms) anope_override { Anope::string ip = params[6]; -- cgit From 76337bc04ac0072019cd3025da55eecd6692490f Mon Sep 17 00:00:00 2001 From: miwob Date: Sun, 15 Feb 2015 21:47:55 +0100 Subject: - Misc updates to the hybrid protocol modules: - best supported version is 8.2.x - fixed UID message handler to cope with account names being '*' - minium required TS version is TS6 now --- modules/protocol/hybrid.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 438229780..4cc170574 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -36,7 +36,7 @@ class HybridProto : public IRCDProto } public: - HybridProto(Module *creator) : IRCDProto(creator, "Hybrid 8.1.x") + HybridProto(Module *creator) : IRCDProto(creator, "Hybrid 8.2.x") { DefaultPseudoclientModes = "+oi"; CanSVSNick = true; @@ -204,7 +204,7 @@ class HybridProto : public IRCDProto SendServer(Me); - UplinkSocket::Message() << "SVINFO 6 5 0 :" << Anope::CurTime; + UplinkSocket::Message() << "SVINFO 6 6 0 :" << Anope::CurTime; } void SendClientIntroduction(User *u) anope_override @@ -550,7 +550,7 @@ struct IRCDMessageUID : IRCDMessage ip.clear(); NickAlias *na = NULL; - if (params[8] != "0") + if (params[8] != "0" && params[8] != "*") na = NickAlias::Find(params[8]); /* Source is always the server */ -- cgit From dc58239c8a4222cfc97d06f91574417446fe8e55 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 11 Mar 2015 10:48:25 -0400 Subject: Remove cloak prior to applying vhost in insp20 fhost handler --- modules/protocol/inspircd20.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index eb711e099..3d5d2a25f 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -789,9 +789,9 @@ struct IRCDMessageFHost : IRCDMessage void Run(MessageSource &source, const std::vector ¶ms) anope_override { User *u = source.GetUser(); - u->SetDisplayedHost(params[0]); if (u->HasMode("CLOAK")) u->RemoveModeInternal(source, ModeManager::FindUserModeByName("CLOAK")); + u->SetDisplayedHost(params[0]); } }; -- cgit From a52af0d2600e06b5fad7e6b3e313698dd262423e Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Tue, 4 Nov 2014 23:56:27 +0100 Subject: InspIRCd 2.0: Add METADATA handler, pass everything to inspircd12/metadata --- modules/protocol/inspircd20.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index eb711e099..d9992250e 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -847,6 +847,20 @@ struct IRCDMessageSave : IRCDMessage } }; +class IRCDMessageMetadata : IRCDMessage +{ + ServiceReference insp12_metadata; + + public: + IRCDMessageMetadata(Module *creator) : IRCDMessage(creator, "METADATA", 3), insp12_metadata("IRCDMessage", "inspircd12/metadata") { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); } + + void Run(MessageSource &source, const std::vector ¶ms) anope_override + { + if (insp12_metadata) + insp12_metadata->Run(source, params); + } +}; + class ProtoInspIRCd20 : public Module { Module *m_insp12; @@ -871,7 +885,7 @@ class ProtoInspIRCd20 : public Module /* InspIRCd 1.2 message handlers */ ServiceAlias message_endburst, message_fjoin, message_fmode, - message_ftopic, message_idle, message_metadata, message_mode, + message_ftopic, message_idle, message_mode, message_nick, message_opertype, message_rsquit, message_server, message_squit, message_time, message_uid; @@ -880,6 +894,7 @@ class ProtoInspIRCd20 : public Module IRCDMessageEncap message_encap; IRCDMessageFHost message_fhost; IRCDMessageFIdent message_fident; + IRCDMessageMetadata message_metadata; IRCDMessageSave message_save; bool use_server_side_topiclock, use_server_side_mlock; @@ -901,7 +916,6 @@ class ProtoInspIRCd20 : public Module message_fmode("IRCDMessage", "inspircd20/fmode", "inspircd12/fmode"), message_ftopic("IRCDMessage", "inspircd20/ftopic", "inspircd12/ftopic"), message_idle("IRCDMessage", "inspircd20/idle", "inspircd12/idle"), - message_metadata("IRCDMessage", "inspircd20/metadata", "inspircd12/metadata"), message_mode("IRCDMessage", "inspircd20/mode", "inspircd12/mode"), message_nick("IRCDMessage", "inspircd20/nick", "inspircd12/nick"), message_opertype("IRCDMessage", "inspircd20/opertype", "inspircd12/opertype"), @@ -911,7 +925,8 @@ class ProtoInspIRCd20 : public Module message_time("IRCDMessage", "inspircd20/time", "inspircd12/time"), message_uid("IRCDMessage", "inspircd20/uid", "inspircd12/uid"), - message_capab(this), message_encap(this), message_fhost(this), message_fident(this), message_save(this) + message_capab(this), message_encap(this), message_fhost(this), message_fident(this), message_metadata(this), + message_save(this) { if (ModuleManager::LoadModule("inspircd12", User::Find(creator)) != MOD_ERR_OK) -- cgit From 72ade225a7ec3bc80250cb7ec0454e73c10a1f5a Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 5 Nov 2014 00:02:39 +0100 Subject: InspIRCd 2.0: Pass use_server_side_topiclock and use_server_side_mlock references to METADATA handler --- modules/protocol/inspircd20.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index d9992250e..6f52c6006 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -850,9 +850,11 @@ struct IRCDMessageSave : IRCDMessage class IRCDMessageMetadata : IRCDMessage { ServiceReference insp12_metadata; + const bool &do_topiclock; + const bool &do_mlock; public: - IRCDMessageMetadata(Module *creator) : IRCDMessage(creator, "METADATA", 3), insp12_metadata("IRCDMessage", "inspircd12/metadata") { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); } + IRCDMessageMetadata(Module *creator, const bool &handle_topiclock, const bool &handle_mlock) : IRCDMessage(creator, "METADATA", 3), insp12_metadata("IRCDMessage", "inspircd12/metadata"), do_topiclock(handle_topiclock), do_mlock(handle_mlock) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); } void Run(MessageSource &source, const std::vector ¶ms) anope_override { @@ -925,7 +927,7 @@ class ProtoInspIRCd20 : public Module message_time("IRCDMessage", "inspircd20/time", "inspircd12/time"), message_uid("IRCDMessage", "inspircd20/uid", "inspircd12/uid"), - message_capab(this), message_encap(this), message_fhost(this), message_fident(this), message_metadata(this), + message_capab(this), message_encap(this), message_fhost(this), message_fident(this), message_metadata(this, use_server_side_topiclock, use_server_side_mlock), message_save(this) { -- cgit From e47aacad0ec416069be66b23d5ae8935e708a1bb Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 5 Nov 2014 00:10:01 +0100 Subject: InspIRCd 2.0: Re-set server-side mlock when an incoming METADATA mlock from a bursting server changes it --- modules/protocol/inspircd20.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 6f52c6006..5b0c6e847 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -858,6 +858,26 @@ class IRCDMessageMetadata : IRCDMessage void Run(MessageSource &source, const std::vector ¶ms) anope_override { + // We deliberately ignore non-bursting servers to avoid pseudoserver fights + if ((params[0][0] == '#') && (!source.GetServer()->IsSynced())) + { + Channel *c = Channel::Find(params[0]); + if (c && c->ci) + { + if ((do_mlock) && (params[1] == "mlock")) + { + ModeLocks *modelocks = c->ci->GetExt("modelocks"); + Anope::string modes; + if (modelocks) + modes = modelocks->GetMLockAsString(false).replace_all_cs("+", "").replace_all_cs("-", ""); + + // Mode lock string is not what we say it is? + if (modes != params[2]) + UplinkSocket::Message(Me) << "METADATA " << c->name << " mlock :" << modes; + } + } + } + if (insp12_metadata) insp12_metadata->Run(source, params); } -- cgit From 89257d9bcef1c4dfa9f66d3d5cdca31eded74f47 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 5 Nov 2014 00:13:29 +0100 Subject: InspIRCd 2.0: Re-set server-side topiclock when an incoming METADATA topiclock from a bursting server changes it --- modules/protocol/inspircd20.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 5b0c6e847..9130c4354 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -875,6 +875,13 @@ class IRCDMessageMetadata : IRCDMessage if (modes != params[2]) UplinkSocket::Message(Me) << "METADATA " << c->name << " mlock :" << modes; } + else if ((do_topiclock) && (params[1] == "topiclock")) + { + bool mystate = c->ci->GetExt("TOPICLOCK"); + bool serverstate = (params[2] == "1"); + if (mystate != serverstate) + UplinkSocket::Message(Me) << "METADATA " << c->name << " topiclock :" << (mystate ? "1" : ""); + } } } -- cgit From 65bf84cfb59082f122ee3b05ff3b85aa8550f648 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 28 Apr 2015 15:23:09 -0400 Subject: When introducing opered clients on inspircd send a fake opertype --- modules/protocol/inspircd12.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index 192a783fe..7f080b1d0 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -228,6 +228,8 @@ class InspIRCd12Proto : public IRCDProto { Anope::string modes = "+" + u->GetModes(); UplinkSocket::Message(Me) << "UID " << u->GetUID() << " " << u->timestamp << " " << u->nick << " " << u->host << " " << u->host << " " << u->GetIdent() << " 0.0.0.0 " << u->timestamp << " " << modes << " :" << u->realname; + if (modes.find('o') != Anope::string::npos) + UplinkSocket::Message(u) << "OPERTYPE :services"; } /* SERVER services-dev.chatspike.net password 0 :Description here */ -- cgit From 074f1637508d76e2c21e9d698f265a0b4291f3b0 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 29 Jun 2015 13:57:10 -0400 Subject: #1643 Umode +I is oper only on Unreal --- modules/protocol/unreal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/protocol') diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index 1bb0db657..ef8393b74 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -1220,7 +1220,7 @@ class ProtoUnreal : public Module ModeManager::AddUserMode(new UserModeOperOnly("CO_ADMIN", 'C')); ModeManager::AddUserMode(new UserMode("CENSOR", 'G')); ModeManager::AddUserMode(new UserModeOperOnly("HIDEOPER", 'H')); - ModeManager::AddUserMode(new UserMode("HIDEIDLE", 'I')); + ModeManager::AddUserMode(new UserModeOperOnly("HIDEIDLE", 'I')); ModeManager::AddUserMode(new UserModeOperOnly("NETADMIN", 'N')); ModeManager::AddUserMode(new UserMode("REGPRIV", 'R')); ModeManager::AddUserMode(new UserModeOperOnly("PROTECTED", 'S')); -- cgit From 1666b1a8d8d629fd4ea89b083863dc217154eee9 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Wed, 8 Jul 2015 10:55:44 +0100 Subject: Fix a ton of typos. --- modules/protocol/bahamut.cpp | 4 ++-- modules/protocol/charybdis.cpp | 4 ++-- modules/protocol/hybrid.cpp | 2 +- modules/protocol/inspircd12.cpp | 6 +++--- modules/protocol/ngircd.cpp | 6 +++--- modules/protocol/ratbox.cpp | 2 +- modules/protocol/unreal.cpp | 8 ++++---- 7 files changed, 16 insertions(+), 16 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp index 4e193da01..9fa7e94e9 100644 --- a/modules/protocol/bahamut.cpp +++ b/modules/protocol/bahamut.cpp @@ -373,7 +373,7 @@ struct IRCDMessageNick : IRCDMessage Server *s = Server::Find(params[6]); if (s == NULL) { - Log(LOG_DEBUG) << "User " << params[0] << " introduced from nonexistant server " << params[6] << "?"; + Log(LOG_DEBUG) << "User " << params[0] << " introduced from non-existent server " << params[6] << "?"; return; } @@ -444,7 +444,7 @@ struct IRCDMessageSJoin : IRCDMessage sju.second = User::Find(buf); if (!sju.second) { - Log(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << params[1]; + Log(LOG_DEBUG) << "SJOIN for non-existent user " << buf << " on " << params[1]; continue; } diff --git a/modules/protocol/charybdis.cpp b/modules/protocol/charybdis.cpp index 0801b58f4..9409c320f 100644 --- a/modules/protocol/charybdis.cpp +++ b/modules/protocol/charybdis.cpp @@ -229,7 +229,7 @@ struct IRCDMessageEUID : IRCDMessage } }; -// we cant use this function from ratbox because we set a local variable here +// we can't use this function from ratbox because we set a local variable here struct IRCDMessageServer : IRCDMessage { IRCDMessageServer(Module *creator) : IRCDMessage(creator, "SERVER", 3) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); } @@ -245,7 +245,7 @@ struct IRCDMessageServer : IRCDMessage } }; -// we cant use this function from ratbox because we set a local variable here +// we can't use this function from ratbox because we set a local variable here struct IRCDMessagePass : IRCDMessage { IRCDMessagePass(Module *creator) : IRCDMessage(creator, "PASS", 4) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); } diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 150886232..ba46476d9 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -460,7 +460,7 @@ struct IRCDMessageSJoin : IRCDMessage sju.second = User::Find(buf); if (!sju.second) { - Log(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << params[1]; + Log(LOG_DEBUG) << "SJOIN for non-existent user " << buf << " on " << params[1]; continue; } diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index 7f080b1d0..e3c61a442 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -949,7 +949,7 @@ struct IRCDMessageFJoin : IRCDMessage sju.second = User::Find(buf); if (!sju.second) { - Log(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << params[0]; + Log(LOG_DEBUG) << "FJOIN for non-existent user " << buf << " on " << params[0]; continue; } @@ -1175,7 +1175,7 @@ struct IRCDMessageOperType : IRCDMessage void Run(MessageSource &source, const std::vector ¶ms) anope_override { /* opertype is equivalent to mode +o because servers - dont do this directly */ + don't do this directly */ User *u = source.GetUser(); if (!u->HasMode("OPER")) u->SetModesInternal(source, "+o"); @@ -1371,7 +1371,7 @@ class ProtoInspIRCd12 : public Module /* InspIRCd 1.2 doesn't set -r on nick change, remove -r here. Note that if we have to set +r later * this will cancel out this -r, resulting in no mode changes. * - * Do not set -r if we dont have a NickServ loaded - DP + * Do not set -r if we don't have a NickServ loaded - DP */ BotInfo *NickServ = Config->GetClient("NickServ"); if (NickServ) diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp index 28f68007b..4ea9a15ec 100644 --- a/modules/protocol/ngircd.cpp +++ b/modules/protocol/ngircd.cpp @@ -451,7 +451,7 @@ struct IRCDMessageNick : IRCDMessage Server *s = Server::Find(params[4]); if (s == NULL) { - Log(LOG_DEBUG) << "User " << params[0] << " introduced from nonexistant server " << params[4] << "?"; + Log(LOG_DEBUG) << "User " << params[0] << " introduced from non-existent server " << params[4] << "?"; return; } User::OnIntroduce(params[0], params[2], params[3], "", "", s, params[6], Anope::CurTime, params[5], "", NULL); @@ -500,7 +500,7 @@ struct IRCDMessageNJoin : IRCDMessage sju.second = User::Find(buf); if (!sju.second) { - Log(LOG_DEBUG) << "NJOIN for nonexistant user " << buf << " on " << params[0]; + Log(LOG_DEBUG) << "NJOIN for non-existent user " << buf << " on " << params[0]; continue; } users.push_back(sju); @@ -587,7 +587,7 @@ struct IRCDMessageTopic : IRCDMessage Channel *c = Channel::Find(params[0]); if (!c) { - Log(LOG_DEBUG) << "TOPIC for nonexistant channel " << params[0]; + Log(LOG_DEBUG) << "TOPIC for non-existent channel " << params[0]; return; } c->ChangeTopicInternal(source.GetUser(), source.GetName(), params[1], Anope::CurTime); diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index 8ccabd604..da033d3f5 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -172,7 +172,7 @@ struct IRCDMessageTBurst : IRCDMessage * params[0] = channel * params[1] = ts * params[2] = topic OR who set the topic - * params[3] = topic if params[2] isnt the topic + * params[3] = topic if params[2] isn't the topic */ void Run(MessageSource &source, const std::vector ¶ms) anope_override { diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index ef8393b74..dccfdc91b 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -576,7 +576,7 @@ class ChannelModeFlood : public ChannelModeParam while (p < arg.length() && isdigit(arg[p])) ++p; if (p == arg.length() || !(arg[p] == 'c' || arg[p] == 'j' || arg[p] == 'k' || arg[p] == 'm' || arg[p] == 'n' || arg[p] == 't')) - continue; /* continue instead of break for forward compatability. */ + continue; /* continue instead of break for forward compatibility. */ try { int v = arg.substr(0, p).is_number_only() ? convertTo(arg.substr(0, p)) : 0; @@ -908,7 +908,7 @@ struct IRCDMessageNick : IRCDMessage Server *s = Server::Find(params[5]); if (s == NULL) { - Log(LOG_DEBUG) << "User " << params[0] << " introduced from nonexistant server " << params[5] << "?"; + Log(LOG_DEBUG) << "User " << params[0] << " introduced from non-existent server " << params[5] << "?"; return; } @@ -992,7 +992,7 @@ struct IRCDMessageSetHost : IRCDMessage { User *u = source.GetUser(); - /* When a user sets +x we recieve the new host and then the mode change */ + /* When a user sets +x we receive the new host and then the mode change */ if (u->HasMode("CLOAK")) u->SetDisplayedHost(params[0]); else @@ -1096,7 +1096,7 @@ struct IRCDMessageSJoin : IRCDMessage sju.second = User::Find(buf); if (!sju.second) { - Log(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << params[1]; + Log(LOG_DEBUG) << "SJOIN for non-existent user " << buf << " on " << params[1]; continue; } -- cgit From c007b829f7767b5b836ea32ffe7d6bf8afe5d704 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 6 Sep 2015 16:00:32 -0400 Subject: Don't unset modes which have no privilege associated with them --- modules/protocol/inspircd20.cpp | 9 --------- 1 file changed, 9 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index d95f09591..be17818a4 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -1055,15 +1055,6 @@ class ProtoInspIRCd20 : public Module return EVENT_CONTINUE; } - - EventReturn OnChannelModeUnset(Channel *c, MessageSource &setter, ChannelMode *mode, const Anope::string ¶m) anope_override - { - if ((setter.GetUser() && setter.GetUser()->server == Me) || setter.GetServer() == Me || !setter.GetServer()) - if (mode->name == "OPERPREFIX") - c->SetMode(c->ci->WhoSends(), mode, param, false); - - return EVENT_CONTINUE; - } }; MODULE_INIT(ProtoInspIRCd20) -- cgit