mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-13 17:44:48 -07:00
Added official warning messages moderators can use to inform users
This commit is contained in:
parent
1409b97490
commit
6ad2a59367
23 changed files with 429 additions and 7 deletions
|
|
@ -113,6 +113,7 @@ private:
|
|||
QString dbPrefix;
|
||||
QString requiredFeatures;
|
||||
QMap<QString, bool> serverRequiredFeatureList;
|
||||
QString officialWarnings;
|
||||
Servatrice_DatabaseInterface *servatriceDatabaseInterface;
|
||||
int serverId;
|
||||
int uptime;
|
||||
|
|
@ -139,6 +140,7 @@ public:
|
|||
~Servatrice();
|
||||
bool initServer();
|
||||
QMap<QString, bool> getServerRequiredFeatureList() const { return serverRequiredFeatureList; }
|
||||
QString getOfficialWarningsList() const { return officialWarnings; }
|
||||
QString getServerName() const { return serverName; }
|
||||
QString getLoginMessage() const { QMutexLocker locker(&loginMessageMutex); return loginMessage; }
|
||||
QString getRequiredFeatures() const { return requiredFeatures; }
|
||||
|
|
|
|||
|
|
@ -940,7 +940,7 @@ QList<ServerInfo_Ban> Servatrice_DatabaseInterface::getUserBanHistory(const QStr
|
|||
return results;
|
||||
}
|
||||
|
||||
QString adminID,adminName,banTime,banLength,banReason,visibleReason;
|
||||
//QString adminID,adminName,banTime,banLength,banReason,visibleReason;
|
||||
while (query->next()){
|
||||
banDetails.set_admin_id(QString(query->value(0).toString()).toStdString());
|
||||
banDetails.set_admin_name(QString(query->value(5).toString()).toStdString());
|
||||
|
|
@ -953,3 +953,51 @@ QList<ServerInfo_Ban> Servatrice_DatabaseInterface::getUserBanHistory(const QStr
|
|||
|
||||
return results;
|
||||
}
|
||||
|
||||
bool Servatrice_DatabaseInterface::addWarning(const QString userName, const QString adminName, const QString warningReason, const QString clientID)
|
||||
{
|
||||
if (!checkSql())
|
||||
return false;
|
||||
|
||||
int userID = getUserIdInDB(userName);
|
||||
QSqlQuery *query = prepareQuery("insert into {prefix}_warnings (id,user_name,mod_name,reason,time_of,clientid) values (:user_id,:user_name,:mod_name,:warn_reason,NOW(),:client_id)");
|
||||
query->bindValue(":user_id", userID);
|
||||
query->bindValue(":user_name", userName);
|
||||
query->bindValue(":mod_name", adminName);
|
||||
query->bindValue(":warn_reason", warningReason);
|
||||
query->bindValue(":client_id", clientID);
|
||||
if (!execSqlQuery(query)) {
|
||||
qDebug("Failed to collect create warning history information: SQL Error");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<ServerInfo_Warning> Servatrice_DatabaseInterface::getUserWarnHistory(const QString userName)
|
||||
{
|
||||
QList<ServerInfo_Warning> results;
|
||||
ServerInfo_Warning warnDetails;
|
||||
|
||||
if (!checkSql())
|
||||
return results;
|
||||
|
||||
int userID = getUserIdInDB(userName);
|
||||
QSqlQuery *query = prepareQuery("SELECT user_name, mod_name, reason, time_of FROM {prefix}_warnings WHERE id = :user_id");
|
||||
query->bindValue(":user_id", userID);
|
||||
|
||||
if (!execSqlQuery(query)) {
|
||||
qDebug("Failed to collect warning history information: SQL Error");
|
||||
return results;
|
||||
}
|
||||
|
||||
while (query->next()){
|
||||
warnDetails.set_user_name(QString(query->value(0).toString()).toStdString());
|
||||
warnDetails.set_admin_name(QString(query->value(1).toString()).toStdString());
|
||||
warnDetails.set_reason(QString(query->value(2).toString()).toStdString());
|
||||
warnDetails.set_time_of(QString(query->value(3).toString()).toStdString());
|
||||
results << warnDetails;
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
#include "server.h"
|
||||
#include "server_database_interface.h"
|
||||
|
||||
#define DATABASE_SCHEMA_VERSION 9
|
||||
#define DATABASE_SCHEMA_VERSION 10
|
||||
|
||||
class Servatrice;
|
||||
|
||||
|
|
@ -79,6 +79,8 @@ public:
|
|||
bool changeUserPassword(const QString &user, const QString &oldPassword, const QString &newPassword);
|
||||
QChar getGenderChar(ServerInfo_User_Gender const &gender);
|
||||
QList<ServerInfo_Ban> getUserBanHistory(const QString userName);
|
||||
bool addWarning(const QString userName, const QString adminName, const QString warningReason, const QString clientID);
|
||||
QList<ServerInfo_Warning> getUserWarnHistory(const QString userName);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -59,6 +59,8 @@
|
|||
#include "pb/response_register.pb.h"
|
||||
#include "pb/response_replay_list.pb.h"
|
||||
#include "pb/response_replay_download.pb.h"
|
||||
#include "pb/response_warn_history.pb.h"
|
||||
#include "pb/response_warn_list.pb.h"
|
||||
#include "pb/serverinfo_replay.pb.h"
|
||||
#include "pb/serverinfo_user.pb.h"
|
||||
#include "pb/serverinfo_deckstorage.pb.h"
|
||||
|
|
@ -305,6 +307,9 @@ Response::ResponseCode ServerSocketInterface::processExtendedModeratorCommand(in
|
|||
switch ((ModeratorCommand::ModeratorCommandType) cmdType) {
|
||||
case ModeratorCommand::BAN_FROM_SERVER: return cmdBanFromServer(cmd.GetExtension(Command_BanFromServer::ext), rc);
|
||||
case ModeratorCommand::BAN_HISTORY: return cmdGetBanHistory(cmd.GetExtension(Command_GetBanHistory::ext), rc);
|
||||
case ModeratorCommand::WARN_USER: return cmdWarnUser(cmd.GetExtension(Command_WarnUser::ext), rc);
|
||||
case ModeratorCommand::WARN_HISTORY: return cmdGetWarnHistory(cmd.GetExtension(Command_GetWarnHistory::ext), rc);
|
||||
case ModeratorCommand::WARN_LIST: return cmdGetWarnList(cmd.GetExtension(Command_GetWarnList::ext), rc);
|
||||
default: return Response::RespFunctionNotAllowed;
|
||||
}
|
||||
}
|
||||
|
|
@ -779,6 +784,70 @@ Response::ResponseCode ServerSocketInterface::cmdGetBanHistory(const Command_Get
|
|||
return Response::RespOk;
|
||||
}
|
||||
|
||||
Response::ResponseCode ServerSocketInterface::cmdGetWarnList(const Command_GetWarnList &cmd, ResponseContainer &rc)
|
||||
{
|
||||
Response_WarnList *re = new Response_WarnList;
|
||||
|
||||
QString officialWarnings = settingsCache->value("server/officialwarnings").toString();
|
||||
QStringList warningsList = officialWarnings.split(",", QString::SkipEmptyParts);
|
||||
foreach(QString warning, warningsList){
|
||||
re->add_warning(warning.toStdString());
|
||||
}
|
||||
re->set_user_name(cmd.user_name());
|
||||
re->set_user_clientid(cmd.user_clientid());
|
||||
rc.setResponseExtension(re);
|
||||
return Response::RespOk;
|
||||
}
|
||||
|
||||
Response::ResponseCode ServerSocketInterface::cmdGetWarnHistory(const Command_GetWarnHistory &cmd, ResponseContainer &rc)
|
||||
{
|
||||
QList<ServerInfo_Warning> warnList;
|
||||
QString userName = QString::fromStdString(cmd.user_name());
|
||||
|
||||
Response_WarnHistory *re = new Response_WarnHistory;
|
||||
QListIterator<ServerInfo_Warning> warnIterator(sqlInterface->getUserWarnHistory(userName));
|
||||
while (warnIterator.hasNext())
|
||||
re->add_warn_list()->CopyFrom(warnIterator.next());
|
||||
rc.setResponseExtension(re);
|
||||
return Response::RespOk;
|
||||
}
|
||||
|
||||
Response::ResponseCode ServerSocketInterface::cmdWarnUser(const Command_WarnUser &cmd, ResponseContainer & /*rc*/)
|
||||
{
|
||||
if (!sqlInterface->checkSql())
|
||||
return Response::RespInternalError;
|
||||
|
||||
QString userName = QString::fromStdString(cmd.user_name()).simplified();
|
||||
QString warningReason = QString::fromStdString(cmd.reason()).simplified();
|
||||
QString clientID = QString::fromStdString(cmd.clientid()).simplified();
|
||||
QString sendingModerator = QString::fromStdString(userInfo->name()).simplified();
|
||||
|
||||
if (sqlInterface->addWarning(userName, sendingModerator, warningReason, clientID)) {
|
||||
ServerSocketInterface *user = static_cast<ServerSocketInterface *>(server->getUsers().value(userName));
|
||||
if (user) {
|
||||
Event_NotifyUser event;
|
||||
event.set_type(Event_NotifyUser::WARNING);
|
||||
event.set_warning_reason(cmd.reason());
|
||||
SessionEvent *se = user->prepareSessionEvent(event);
|
||||
user->sendProtocolItem(*se);
|
||||
delete se;
|
||||
}
|
||||
|
||||
QList<QString> moderatorList = server->getOnlineModeratorList();
|
||||
QListIterator<QString> modIterator(moderatorList);
|
||||
foreach(QString moderator, moderatorList) {
|
||||
QString notificationMessage = sendingModerator + " has sent a warning with the following information";
|
||||
notificationMessage.append("\n Username: " + userName);
|
||||
notificationMessage.append("\n Reason: " + warningReason);
|
||||
sendServerMessage(moderator.simplified(), notificationMessage);
|
||||
}
|
||||
|
||||
return Response::RespOk;
|
||||
} else {
|
||||
return Response::RespInternalError;
|
||||
}
|
||||
}
|
||||
|
||||
Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer & /*rc*/)
|
||||
{
|
||||
if (!sqlInterface->checkSql())
|
||||
|
|
@ -850,7 +919,7 @@ Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_Ban
|
|||
QList<QString> moderatorList = server->getOnlineModeratorList();
|
||||
QListIterator<QString> modIterator(moderatorList);
|
||||
foreach(QString moderator, moderatorList) {
|
||||
QString notificationMessage = "A ban has been added:";
|
||||
QString notificationMessage = QString::fromStdString(userInfo->name()).simplified() + " has placed a ban with the following information";
|
||||
if (!userName.isEmpty())
|
||||
notificationMessage.append("\n Username: " + userName);
|
||||
if (!address.isEmpty())
|
||||
|
|
|
|||
|
|
@ -97,7 +97,10 @@ private:
|
|||
Response::ResponseCode cmdReplayModifyMatch(const Command_ReplayModifyMatch &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdReplayDeleteMatch(const Command_ReplayDeleteMatch &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdWarnUser(const Command_WarnUser &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdGetBanHistory(const Command_GetBanHistory &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdGetWarnList(const Command_GetWarnList &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdGetWarnHistory(const Command_GetWarnHistory &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdShutdownServer(const Command_ShutdownServer &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdUpdateServerMessage(const Command_UpdateServerMessage &cmd, ResponseContainer &rc);
|
||||
Response::ResponseCode cmdRegisterAccount(const Command_Register &cmd, ResponseContainer &rc);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue