/*
* InspIRCd -- Internet Relay Chat Daemon
*
- * Copyright (C) 2004-2006, 2008 Craig Edwards <craigedwards@brainbox.cc>
- * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ * Copyright (C) 2017 B00mX0r <b00mx0r@aureus.pw>
+ * Copyright (C) 2013, 2018, 2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2012-2013, 2016, 2018 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ * Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2009 Uli Schlachter <psychon@inspircd.org>
* Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ * Copyright (C) 2004, 2006, 2008, 2010 Craig Edwards <brain@inspircd.org>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
ERR_CANNOTKNOCK = 480,
// From ircd-ratbox.
+ RPL_KNOCK = 710,
+ RPL_KNOCKDLVR = 711,
ERR_CHANOPEN = 713,
ERR_KNOCKONCHAN = 714
};
, noknockmode(Noknockmode)
, inviteonlymode(Creator, "inviteonly")
{
- syntax = "<channel> <reason>";
+ syntax = "<channel> :<reason>";
Penalty = 5;
}
}
if (sendnotice)
+ {
c->WriteNotice(InspIRCd::Format("User %s is KNOCKing on %s (%s)", user->nick.c_str(), c->name.c_str(), parameters[1].c_str()));
+ user->WriteNotice("KNOCKing on " + c->name);
+ }
if (sendnumeric)
- c->WriteChannelWithServ(ServerInstance->Config->ServerName, "710 %s %s %s :is KNOCKing: %s", c->name.c_str(), c->name.c_str(), user->GetFullHost().c_str(), parameters[1].c_str());
+ {
+ Numeric::Numeric numeric(RPL_KNOCK);
+ numeric.push(c->name).push(user->GetFullHost()).push("is KNOCKing: " + parameters[1]);
+
+ ClientProtocol::Messages::Numeric numericmsg(numeric, c->name);
+ c->Write(ServerInstance->GetRFCEvents().numeric, numericmsg);
+
+ user->WriteNumeric(RPL_KNOCKDLVR, c->name, "KNOCKing on channel");
+ }
- user->WriteNotice("KNOCKing on " + c->name);
return CMD_SUCCESS;
}
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Provides support for /KNOCK and channel mode +K", VF_OPTCOMMON | VF_VENDOR);
+ return Version("Adds the /KNOCK command which allows users to request access to an invite-only channel and channel mode K (noknock) which allows channels to disable usage of this command.", VF_OPTCOMMON | VF_VENDOR);
}
};