Only allow players with shout to chat
Fix regression of commit 5e507c9829942c434a6f1ae7a4f3a488c7e50bef "Add server side ncurses terminal" which allowed all players, even those without a shout priv, to chat. Fixes #3362.
This commit is contained in:
parent
36855522a5
commit
657a16d90c
@ -1063,7 +1063,8 @@ void Server::handleCommand_ChatMessage(NetworkPacket* pkt)
|
|||||||
std::string name = player->getName();
|
std::string name = player->getName();
|
||||||
std::wstring wname = narrow_to_wide(name);
|
std::wstring wname = narrow_to_wide(name);
|
||||||
|
|
||||||
std::wstring answer_to_sender = handleChat(name, wname, message, pkt->getPeerId());
|
std::wstring answer_to_sender = handleChat(name, wname, message,
|
||||||
|
true, pkt->getPeerId());
|
||||||
if (!answer_to_sender.empty()) {
|
if (!answer_to_sender.empty()) {
|
||||||
// Send the answer to sender
|
// Send the answer to sender
|
||||||
SendChatMessage(pkt->getPeerId(), answer_to_sender);
|
SendChatMessage(pkt->getPeerId(), answer_to_sender);
|
||||||
|
@ -2755,7 +2755,8 @@ void Server::handleChatInterfaceEvent(ChatEvent *evt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::wstring Server::handleChat(const std::string &name, const std::wstring &wname,
|
std::wstring Server::handleChat(const std::string &name, const std::wstring &wname,
|
||||||
const std::wstring &wmessage, u16 peer_id_to_avoid_sending)
|
const std::wstring &wmessage, bool check_shout_priv,
|
||||||
|
u16 peer_id_to_avoid_sending)
|
||||||
{
|
{
|
||||||
// If something goes wrong, this player is to blame
|
// If something goes wrong, this player is to blame
|
||||||
RollbackScopeActor rollback_scope(m_rollback,
|
RollbackScopeActor rollback_scope(m_rollback,
|
||||||
@ -2783,10 +2784,15 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna
|
|||||||
else
|
else
|
||||||
line += L"-!- Invalid command: " + str_split(wcmd, L' ')[0];
|
line += L"-!- Invalid command: " + str_split(wcmd, L' ')[0];
|
||||||
} else {
|
} else {
|
||||||
line += L"<";
|
if (check_shout_priv && !checkPriv(name, "shout")) {
|
||||||
line += wname;
|
line += L"-!- You don't have permission to shout.";
|
||||||
line += L"> ";
|
broadcast_line = false;
|
||||||
line += wmessage;
|
} else {
|
||||||
|
line += L"<";
|
||||||
|
line += wname;
|
||||||
|
line += L"> ";
|
||||||
|
line += wmessage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -481,6 +481,7 @@ private:
|
|||||||
// This returns the answer to the sender of wmessage, or "" if there is none
|
// This returns the answer to the sender of wmessage, or "" if there is none
|
||||||
std::wstring handleChat(const std::string &name, const std::wstring &wname,
|
std::wstring handleChat(const std::string &name, const std::wstring &wname,
|
||||||
const std::wstring &wmessage,
|
const std::wstring &wmessage,
|
||||||
|
bool check_shout_priv = false,
|
||||||
u16 peer_id_to_avoid_sending = PEER_ID_INEXISTENT);
|
u16 peer_id_to_avoid_sending = PEER_ID_INEXISTENT);
|
||||||
void handleAdminChat(const ChatEventChat *evt);
|
void handleAdminChat(const ChatEventChat *evt);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user