/*
* InspIRCd -- Internet Relay Chat Daemon
*
+ * Copyright (C) 2013, 2016-2018 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2012-2013 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ * Copyright (C) 2010 Craig Edwards <brain@inspircd.org>
+ * Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
* Copyright (C) 2006-2007 Dennis Friis <peavey@inspircd.org>
- * Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
*
* 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
* 988 <nick> <servername> :Closed for new connections
* 989 <nick> <servername> :Open for new connections
*/
+enum
+{
+ // InspIRCd-specific.
+ RPL_SERVLOCKON = 988,
+ RPL_SERVLOCKOFF = 989
+};
class CommandLockserv : public Command
{
flags_needed = 'o';
}
- CmdResult Handle (const std::vector<std::string> ¶meters, User *user)
+ CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE
{
if (!locked.empty())
{
}
locked = parameters.empty() ? "Server is temporarily closed. Please try again later." : parameters[0];
- user->WriteNumeric(988, user->server->GetName(), "Closed for new connections");
+ user->WriteNumeric(RPL_SERVLOCKON, user->server->GetName(), "Closed for new connections");
ServerInstance->SNO->WriteGlobalSno('a', "Oper %s used LOCKSERV to temporarily disallow new connections", user->nick.c_str());
return CMD_SUCCESS;
}
flags_needed = 'o';
}
- CmdResult Handle (const std::vector<std::string> ¶meters, User *user)
+ CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE
{
if (locked.empty())
{
}
locked.clear();
- user->WriteNumeric(989, user->server->GetName(), "Open for new connections");
+ user->WriteNumeric(RPL_SERVLOCKOFF, user->server->GetName(), "Open for new connections");
ServerInstance->SNO->WriteGlobalSno('a', "Oper %s used UNLOCKSERV to allow new connections", user->nick.c_str());
return CMD_SUCCESS;
}
locked.clear();
}
+ void OnModuleRehash(User* user, const std::string& param) CXX11_OVERRIDE
+ {
+ if (irc::equals(param, "lockserv") && !locked.empty())
+ locked.clear();
+ }
+
ModResult OnUserRegister(LocalUser* user) CXX11_OVERRIDE
{
if (!locked.empty())
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Allows locking of the server to stop all incoming connections until unlocked again", VF_VENDOR);
+ return Version("Adds the /LOCKSERV and /UNLOCKSERV commands which allows server operators to control whether users can connect to the local server.", VF_VENDOR);
}
};