mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
hopefully fixed the privilege problems
--HG-- extra : rebase_source : 9826d20176134a53ff232816a10407465d8c0f50
This commit is contained in:
parent
e8b8ed0280
commit
e81919c818
6 changed files with 72 additions and 22 deletions
|
@ -2083,7 +2083,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
if(datasize < 13)
|
||||
return;
|
||||
|
||||
if((player->privs & PRIV_BUILD) == 0)
|
||||
if((getPlayerPrivs(player) & PRIV_BUILD) == 0)
|
||||
return;
|
||||
|
||||
/*
|
||||
|
@ -2167,7 +2167,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
if(datasize < 7)
|
||||
return;
|
||||
|
||||
if((player->privs & PRIV_BUILD) == 0)
|
||||
if((getPlayerPrivs(player) & PRIV_BUILD) == 0)
|
||||
return;
|
||||
|
||||
/*
|
||||
|
@ -2368,8 +2368,13 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
}
|
||||
|
||||
// Make sure the player is allowed to do it
|
||||
if((player->privs & PRIV_BUILD) == 0)
|
||||
if((getPlayerPrivs(player) & PRIV_BUILD) == 0)
|
||||
{
|
||||
dstream<<"Player "<<player->getName()<<" cannot remove node"
|
||||
<<" because privileges are "<<getPlayerPrivs(player)
|
||||
<<std::endl;
|
||||
cannot_remove_node = true;
|
||||
}
|
||||
|
||||
/*
|
||||
If node can't be removed, set block to be re-sent to
|
||||
|
@ -2517,8 +2522,15 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
try{
|
||||
// Don't add a node if this is not a free space
|
||||
MapNode n2 = m_env.getMap().getNode(p_over);
|
||||
bool no_enough_privs =
|
||||
((getPlayerPrivs(player) & PRIV_BUILD)==0);
|
||||
if(no_enough_privs)
|
||||
dstream<<"Player "<<player->getName()<<" cannot add node"
|
||||
<<" because privileges are "<<getPlayerPrivs(player)
|
||||
<<std::endl;
|
||||
|
||||
if(content_buildable_to(n2.d) == false
|
||||
|| (player->privs & PRIV_BUILD) ==0)
|
||||
|| no_enough_privs)
|
||||
{
|
||||
// Client probably has wrong data.
|
||||
// Set block not sent, so that client will get
|
||||
|
@ -2715,7 +2727,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
#endif
|
||||
else if(command == TOSERVER_SIGNTEXT)
|
||||
{
|
||||
if((player->privs & PRIV_BUILD) == 0)
|
||||
if((getPlayerPrivs(player) & PRIV_BUILD) == 0)
|
||||
return;
|
||||
/*
|
||||
u16 command
|
||||
|
@ -2774,7 +2786,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
}
|
||||
else if(command == TOSERVER_SIGNNODETEXT)
|
||||
{
|
||||
if((player->privs & PRIV_BUILD) == 0)
|
||||
if((getPlayerPrivs(player) & PRIV_BUILD) == 0)
|
||||
return;
|
||||
/*
|
||||
u16 command
|
||||
|
@ -2952,9 +2964,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||
|
||||
// Local player gets all privileges regardless of
|
||||
// what's set on their account.
|
||||
u64 privs = player->privs;
|
||||
if(g_settings.get("name") == player->getName())
|
||||
privs = PRIV_ALL;
|
||||
u64 privs = getPlayerPrivs(player);
|
||||
|
||||
// Parse commands
|
||||
std::wstring commandprefix = L"/#";
|
||||
|
@ -4288,9 +4298,6 @@ Player *Server::emergePlayer(const char *name, const char *password, u16 peer_id
|
|||
m_authmanager.setPrivs(name,
|
||||
stringToPrivs(g_settings.get("default_privs")));
|
||||
|
||||
if(g_settings.exists("default_privs"))
|
||||
player->privs = g_settings.getU64("default_privs");
|
||||
|
||||
/*
|
||||
Set player position
|
||||
*/
|
||||
|
@ -4503,6 +4510,23 @@ void Server::handlePeerChanges()
|
|||
}
|
||||
}
|
||||
|
||||
u64 Server::getPlayerPrivs(Player *player)
|
||||
{
|
||||
if(player==NULL)
|
||||
return 0;
|
||||
std::string playername = player->getName();
|
||||
// Local player gets all privileges regardless of
|
||||
// what's set on their account.
|
||||
if(g_settings.get("name") == playername)
|
||||
{
|
||||
return PRIV_ALL;
|
||||
}
|
||||
else
|
||||
{
|
||||
return getPlayerAuthPrivs(playername);
|
||||
}
|
||||
}
|
||||
|
||||
void dedicated_server_loop(Server &server, bool &kill)
|
||||
{
|
||||
DSTACK(__FUNCTION_NAME);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue