Fixed some small stuff
This commit is contained in:
@@ -767,7 +767,9 @@ command_result ConnectedClient::handleCommandBanClient(Command &cmd) {
|
||||
CMD_RESET_IDLE;
|
||||
CMD_CHK_AND_INC_FLOOD_POINTS(25);
|
||||
|
||||
string uid;
|
||||
std::string target_unique_id{};
|
||||
ClientDbId target_database_id{0};
|
||||
|
||||
string reason = cmd[0].has("banreason") ? cmd["banreason"].string() : "";
|
||||
auto time = cmd[0].has("time") ? cmd["time"].as<uint64_t>() : 0UL;
|
||||
chrono::time_point<chrono::system_clock> until = time > 0 ? chrono::system_clock::now() + chrono::seconds(time) : chrono::time_point<chrono::system_clock>();
|
||||
@@ -776,43 +778,40 @@ command_result ConnectedClient::handleCommandBanClient(Command &cmd) {
|
||||
const auto no_hwid = cmd.hasParm("no-hardware-id");
|
||||
const auto no_ip = cmd.hasParm("no-ip");
|
||||
|
||||
deque<shared_ptr<ConnectedClient>> target_clients;
|
||||
std::deque<std::shared_ptr<ConnectedClient>> target_clients;
|
||||
if (cmd[0].has("uid")) {
|
||||
target_clients = this->server->findClientsByUid(uid = cmd["uid"].string());
|
||||
for(const auto& client : target_clients)
|
||||
if(client->getType() == ClientType::CLIENT_MUSIC)
|
||||
return command_result{error::client_invalid_id, "You cant ban a music bot!"};
|
||||
target_clients = this->server->findClientsByUid(target_unique_id = cmd["uid"].string());
|
||||
} else if(cmd[0].has("cldbid")) {
|
||||
target_clients = this->server->findClientsByCldbId(target_database_id = cmd["cldbid"].as<ClientDbId>());
|
||||
} else {
|
||||
target_clients = {this->server->find_client_by_id(cmd["clid"].as<ClientId>())};
|
||||
if(!target_clients[0]) {
|
||||
return command_result{error::client_invalid_id, "Could not find target client"};
|
||||
}
|
||||
if(target_clients[0]->getType() == ClientType::CLIENT_MUSIC) {
|
||||
}
|
||||
|
||||
for(const auto& client : target_clients)
|
||||
if(client->getType() == ClientType::CLIENT_MUSIC)
|
||||
return command_result{error::client_invalid_id, "You cant ban a music bot!"};
|
||||
}
|
||||
uid = target_clients[0]->getUid();
|
||||
}
|
||||
|
||||
ClientDbId target_dbid = 0;
|
||||
if (!target_clients.empty()) {
|
||||
target_dbid = target_clients[0]->getClientDatabaseId();
|
||||
} else {
|
||||
auto info = serverInstance->databaseHelper()->queryDatabaseInfoByUid(this->getServer(), {uid});
|
||||
if (!info.empty())
|
||||
target_dbid = info[0]->cldbid;
|
||||
else
|
||||
return command_result{error::client_unknown};
|
||||
}
|
||||
if(!target_clients.empty()) {
|
||||
if(target_unique_id.empty())
|
||||
target_unique_id = target_clients.back()->getUid();
|
||||
|
||||
if(!permission::v2::permission_granted(this->server->calculate_permission(permission::i_client_needed_ban_power, target_dbid, ClientType::CLIENT_TEAMSPEAK, 0), this->calculate_permission(permission::i_client_ban_power, 0)))
|
||||
if(!target_database_id)
|
||||
target_database_id = target_clients.back()->getClientDatabaseId();
|
||||
}
|
||||
if(!permission::v2::permission_granted(this->server->calculate_permission(permission::i_client_needed_ban_power, target_database_id, ClientType::CLIENT_TEAMSPEAK, 0), this->calculate_permission(permission::i_client_ban_power, 0)))
|
||||
return command_result{permission::i_client_ban_power};
|
||||
|
||||
if (permission::v2::permission_granted(1, this->server->calculate_permission(permission::b_client_ignore_bans, target_dbid, ClientType::CLIENT_TEAMSPEAK, 0)))
|
||||
if (permission::v2::permission_granted(1, this->server->calculate_permission(permission::b_client_ignore_bans, target_database_id, ClientType::CLIENT_TEAMSPEAK, 0)))
|
||||
return command_result{permission::b_client_ignore_bans};
|
||||
|
||||
deque<BanId> ban_ids;
|
||||
auto _id = serverInstance->banManager()->registerBan(this->getServer()->getServerId(), this->getClientDatabaseId(), reason, uid, "", "", "", until);
|
||||
ban_ids.push_back(_id);
|
||||
if(!target_unique_id.empty()) {
|
||||
auto _id = serverInstance->banManager()->registerBan(this->getServer()->getServerId(), this->getClientDatabaseId(), reason, target_unique_id, "", "", "", until);
|
||||
ban_ids.push_back(_id);
|
||||
}
|
||||
|
||||
auto b_ban_name = permission::v2::permission_granted(1, this->calculate_permission(permission::b_client_ban_name, 0), false);
|
||||
auto b_ban_ip = permission::v2::permission_granted(1, this->calculate_permission(permission::b_client_ban_ip, 0), false);
|
||||
|
||||
Reference in New Issue
Block a user