From 40dd03e328ff0ae36338615114cb38879752756e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Mon, 4 Sep 2017 22:08:59 +0200 Subject: Implement minetest.register_can_bypass_userlimit (#6369) * Implement minetest.register_on_userlimit_check This new callback permits to bypass the max_users parameter with new mods condition, based on player name or IP Only one mod needs to permit it. Move core part for builtin privileges checks to builtin --- src/network/serverpackethandler.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/network') diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 62da136ad..ecf4306c8 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -209,13 +209,10 @@ void Server::handleCommand_Init(NetworkPacket* pkt) << addr_s << " (peer_id=" << pkt->getPeerId() << ")" << std::endl; // Enforce user limit. - // Don't enforce for users that have some admin right + // Don't enforce for users that have some admin right or mod permits it. if (m_clients.isUserLimitReached() && - !checkPriv(playername, "server") && - !checkPriv(playername, "ban") && - !checkPriv(playername, "privs") && - !checkPriv(playername, "password") && - playername != g_settings->get("name")) { + playername != g_settings->get("name") && + !m_script->can_bypass_userlimit(playername, addr_s)) { actionstream << "Server: " << playername << " tried to join from " << addr_s << ", but there" << " are already max_users=" << g_settings->getU16("max_users") << " players." << std::endl; -- cgit v1.2.3