CSM: add requested CSM_RF_READ_PLAYERINFO (#8007)
* CSM: add requested CSM_RF_READ_PLAYERINFO This new CSM limit permit to limit PLAYERINFO read from server. It affects get_player_names callmaster
parent
9080d7c990
commit
a5197eaebc
|
@ -40,8 +40,13 @@ end)
|
||||||
core.register_chatcommand("list_players", {
|
core.register_chatcommand("list_players", {
|
||||||
description = core.gettext("List online players"),
|
description = core.gettext("List online players"),
|
||||||
func = function(param)
|
func = function(param)
|
||||||
local players = table.concat(core.get_player_names(), ", ")
|
local player_names = core.get_player_names()
|
||||||
core.display_chat_message(core.gettext("Online players: ") .. players)
|
if not player_names then
|
||||||
|
return false, core.gettext("This command is disabled by server.")
|
||||||
|
end
|
||||||
|
|
||||||
|
local players = table.concat(player_names, ", ")
|
||||||
|
return true, core.gettext("Online players: ") .. players
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1198,7 +1198,7 @@ server_side_occlusion_culling (Server side occlusion culling) bool true
|
||||||
# READ_NODEDEFS: 8 (disable get_node_def call client-side)
|
# READ_NODEDEFS: 8 (disable get_node_def call client-side)
|
||||||
# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
|
# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
|
||||||
# csm_restriction_noderange)
|
# csm_restriction_noderange)
|
||||||
csm_restriction_flags (Client side modding restrictions) int 30
|
csm_restriction_flags (Client side modding restrictions) int 62
|
||||||
|
|
||||||
# If the CSM restriction for node range is enabled, get_node calls are limited
|
# If the CSM restriction for node range is enabled, get_node calls are limited
|
||||||
# to this distance from the player to the node.
|
# to this distance from the player to the node.
|
||||||
|
|
|
@ -763,7 +763,7 @@ Call these functions only at load time!
|
||||||
|
|
||||||
### Client Environment
|
### Client Environment
|
||||||
* `minetest.get_player_names()`
|
* `minetest.get_player_names()`
|
||||||
* Returns list of player names on server
|
* Returns list of player names on server (nil if CSM_RF_READ_PLAYERINFO is enabled by server)
|
||||||
* `minetest.disconnect()`
|
* `minetest.disconnect()`
|
||||||
* Disconnect from the server and exit to main menu.
|
* Disconnect from the server and exit to main menu.
|
||||||
* Returns `false` if the client is already disconnecting otherwise returns `true`.
|
* Returns `false` if the client is already disconnecting otherwise returns `true`.
|
||||||
|
|
|
@ -1468,8 +1468,9 @@
|
||||||
# READ_NODEDEFS: 8 (disable get_node_def call client-side)
|
# READ_NODEDEFS: 8 (disable get_node_def call client-side)
|
||||||
# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
|
# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
|
||||||
# csm_restriction_noderange)
|
# csm_restriction_noderange)
|
||||||
|
# READ_PLAYERINFO: 32 (disable get_player_names call client-side)
|
||||||
# type: int
|
# type: int
|
||||||
# csm_restriction_flags = 30
|
# csm_restriction_flags = 62
|
||||||
|
|
||||||
# If the CSM restriction for node range is enabled, get_node calls are limited
|
# If the CSM restriction for node range is enabled, get_node calls are limited
|
||||||
# to this distance from the player to the node.
|
# to this distance from the player to the node.
|
||||||
|
|
|
@ -346,7 +346,7 @@ void set_default_settings(Settings *settings)
|
||||||
settings->setDefault("max_block_send_distance", "9");
|
settings->setDefault("max_block_send_distance", "9");
|
||||||
settings->setDefault("block_send_optimize_distance", "4");
|
settings->setDefault("block_send_optimize_distance", "4");
|
||||||
settings->setDefault("server_side_occlusion_culling", "true");
|
settings->setDefault("server_side_occlusion_culling", "true");
|
||||||
settings->setDefault("csm_restriction_flags", "30");
|
settings->setDefault("csm_restriction_flags", "62");
|
||||||
settings->setDefault("csm_restriction_noderange", "0");
|
settings->setDefault("csm_restriction_noderange", "0");
|
||||||
settings->setDefault("max_clearobjects_extra_loaded_blocks", "4096");
|
settings->setDefault("max_clearobjects_extra_loaded_blocks", "4096");
|
||||||
settings->setDefault("time_speed", "72");
|
settings->setDefault("time_speed", "72");
|
||||||
|
|
|
@ -952,5 +952,6 @@ enum CSMRestrictionFlags : u64 {
|
||||||
CSM_RF_READ_ITEMDEFS = 0x00000004, // Disable itemdef lookups
|
CSM_RF_READ_ITEMDEFS = 0x00000004, // Disable itemdef lookups
|
||||||
CSM_RF_READ_NODEDEFS = 0x00000008, // Disable nodedef lookups
|
CSM_RF_READ_NODEDEFS = 0x00000008, // Disable nodedef lookups
|
||||||
CSM_RF_LOOKUP_NODES = 0x00000010, // Limit node lookups
|
CSM_RF_LOOKUP_NODES = 0x00000010, // Limit node lookups
|
||||||
|
CSM_RF_READ_PLAYERINFO = 0x00000020, // Disable player info lookups
|
||||||
CSM_RF_ALL = 0xFFFFFFFF,
|
CSM_RF_ALL = 0xFFFFFFFF,
|
||||||
};
|
};
|
||||||
|
|
|
@ -116,6 +116,13 @@ int ModApiClient::l_clear_out_chat_queue(lua_State *L)
|
||||||
// get_player_names()
|
// get_player_names()
|
||||||
int ModApiClient::l_get_player_names(lua_State *L)
|
int ModApiClient::l_get_player_names(lua_State *L)
|
||||||
{
|
{
|
||||||
|
// clang-format off
|
||||||
|
if (getClient(L)->checkCSMRestrictionFlag(
|
||||||
|
CSMRestrictionFlags::CSM_RF_READ_PLAYERINFO)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
const std::list<std::string> &plist = getClient(L)->getConnectedPlayerNames();
|
const std::list<std::string> &plist = getClient(L)->getConnectedPlayerNames();
|
||||||
lua_createtable(L, plist.size(), 0);
|
lua_createtable(L, plist.size(), 0);
|
||||||
int newTable = lua_gettop(L);
|
int newTable = lua_gettop(L);
|
||||||
|
|
Loading…
Reference in New Issue