forked from Mirrorlandia_minetest/minetest
Server user limit configuration option
This commit is contained in:
parent
0ccc0ac927
commit
b9e680d06c
@ -77,6 +77,7 @@ void set_default_settings()
|
|||||||
|
|
||||||
// Server stuff
|
// Server stuff
|
||||||
g_settings.setDefault("motd", "");
|
g_settings.setDefault("motd", "");
|
||||||
|
g_settings.setDefault("max_users", "20");
|
||||||
g_settings.setDefault("enable_experimental", "false");
|
g_settings.setDefault("enable_experimental", "false");
|
||||||
g_settings.setDefault("creative_mode", "false");
|
g_settings.setDefault("creative_mode", "false");
|
||||||
g_settings.setDefault("enable_damage", "true");
|
g_settings.setDefault("enable_damage", "true");
|
||||||
|
@ -2096,11 +2096,21 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||||||
stringToPrivs(g_settings.get("default_privs")));
|
stringToPrivs(g_settings.get("default_privs")));
|
||||||
m_authmanager.save();
|
m_authmanager.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enforce user limit.
|
||||||
|
// Don't enforce for users that have some admin right
|
||||||
|
if(m_clients.size() >= g_settings.getU16("max_users") &&
|
||||||
|
(m_authmanager.getPrivs(playername)
|
||||||
|
& (PRIV_SERVER|PRIV_BAN|PRIV_PRIVS)) == 0 &&
|
||||||
|
playername != g_settings.get("name"))
|
||||||
|
{
|
||||||
|
SendAccessDenied(m_con, peer_id, L"Too many users.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Get player
|
// Get player
|
||||||
Player *player = emergePlayer(playername, password, peer_id);
|
Player *player = emergePlayer(playername, password, peer_id);
|
||||||
|
|
||||||
|
|
||||||
/*{
|
/*{
|
||||||
// DEBUG: Test serialization
|
// DEBUG: Test serialization
|
||||||
std::ostringstream test_os;
|
std::ostringstream test_os;
|
||||||
@ -4426,16 +4436,16 @@ void Server::handlePeerChange(PeerChange &c)
|
|||||||
// Collect information about leaving in chat
|
// Collect information about leaving in chat
|
||||||
std::wstring message;
|
std::wstring message;
|
||||||
{
|
{
|
||||||
std::wstring name = L"unknown";
|
|
||||||
Player *player = m_env.getPlayer(c.peer_id);
|
Player *player = m_env.getPlayer(c.peer_id);
|
||||||
if(player != NULL)
|
if(player != NULL)
|
||||||
name = narrow_to_wide(player->getName());
|
{
|
||||||
|
std::wstring name = narrow_to_wide(player->getName());
|
||||||
message += L"*** ";
|
message += L"*** ";
|
||||||
message += name;
|
message += name;
|
||||||
message += L" left game";
|
message += L" left game";
|
||||||
if(c.timeout)
|
if(c.timeout)
|
||||||
message += L" (timed out)";
|
message += L" (timed out)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*// Delete player
|
/*// Delete player
|
||||||
|
Loading…
Reference in New Issue
Block a user