adding multi spammer support to chatcleaner
This commit is contained in:
@@ -17,7 +17,6 @@ CleanerServer::CleanerServer(): config(0), blockConnection(false), m_recvBufUsed
|
||||
|
||||
clientSecret = QString::fromUtf8(config->readConfigString("ClientAuthString").c_str());
|
||||
serverSecret = QString::fromUtf8(config->readConfigString("ServerAuthString").c_str());
|
||||
qDebug() << clientSecret << serverSecret;
|
||||
|
||||
myMessageFilter = new MessageFilter(config);
|
||||
tcpServer = new QTcpServer();
|
||||
|
||||
@@ -49,10 +49,11 @@ QString MessageFilter::check(unsigned playerId, QString nick, QString msg)
|
||||
QMap<unsigned, ClientWarnInfos>::const_iterator i = myClientWarnLevelList.find(playerId);
|
||||
|
||||
if(i == myClientWarnLevelList.end()) {
|
||||
myClientWarnInfos.warnLevel = 1;
|
||||
myClientWarnInfos.lastWarnType = offence;
|
||||
myClientWarnInfos.nick = nick;
|
||||
myClientWarnLevelList.insert(playerId, myClientWarnInfos);
|
||||
ClientWarnInfos tmpInfos;
|
||||
tmpInfos.warnLevel = 1;
|
||||
tmpInfos.lastWarnType = offence;
|
||||
tmpInfos.nick = nick;
|
||||
myClientWarnLevelList.insert(playerId, tmpInfos);
|
||||
action = WARN;
|
||||
}
|
||||
else {
|
||||
@@ -64,10 +65,11 @@ QString MessageFilter::check(unsigned playerId, QString nick, QString msg)
|
||||
myClientWarnLevelList.remove(i.key());
|
||||
}
|
||||
else {
|
||||
myClientWarnInfos.warnLevel++;
|
||||
myClientWarnInfos.lastWarnType = offence;
|
||||
myClientWarnInfos.nick = nick;
|
||||
myClientWarnLevelList.insert(playerId, myClientWarnInfos);
|
||||
ClientWarnInfos tmpInfos;
|
||||
tmpInfos.warnLevel = i.value().warnLevel+1;
|
||||
tmpInfos.lastWarnType = offence;
|
||||
tmpInfos.nick = nick;
|
||||
myClientWarnLevelList.insert(playerId, tmpInfos);
|
||||
action = WARN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ private:
|
||||
int lastWarnType;
|
||||
int warnLevel;
|
||||
};
|
||||
ClientWarnInfos myClientWarnInfos;
|
||||
|
||||
QMap<unsigned, ClientWarnInfos> myClientWarnLevelList;
|
||||
|
||||
int warnLevelToKick;
|
||||
|
||||
@@ -19,31 +19,41 @@ bool TextFloodCheck::run(unsigned playerId) {
|
||||
QMapIterator<unsigned, TextFloodInfos> it(msgTimesList);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
// qDebug() << msgTimesList.count() << it.key() << ": " << it.value().floodLevel << it.value().timeStamp << endl;
|
||||
// qDebug() << "counter: " << msgTimesList.count() << " playerid: " << it.key() << " floodlevel: " << it.value().floodLevel << " timestamp: " << it.value().timeStamp;
|
||||
}
|
||||
|
||||
QMap<unsigned, TextFloodInfos>::const_iterator i = msgTimesList.find(playerId);
|
||||
|
||||
if(i == msgTimesList.end()) {
|
||||
myTextFloodInfos.floodLevel = 0;
|
||||
myTextFloodInfos.timeStamp = timer.elapsed().total_seconds();
|
||||
msgTimesList.insert(playerId, myTextFloodInfos);
|
||||
TextFloodInfos tmpInfos1;
|
||||
tmpInfos1.floodLevel = 0;
|
||||
tmpInfos1.timeStamp = timer.elapsed().total_seconds();
|
||||
msgTimesList.insert(playerId, tmpInfos1);
|
||||
qDebug () << "Add Player: set player floodlevel to " << tmpInfos1.floodLevel;
|
||||
}
|
||||
else {
|
||||
TextFloodInfos tmpInfos2;
|
||||
if(timer.elapsed().total_seconds()-i.value().timeStamp <= 1) {
|
||||
if(i.value().floodLevel == textFloodLevelToTrigger) {
|
||||
myTextFloodInfos.floodLevel--;
|
||||
// qDebug () << "set player floodlevel to " << myTextFloodInfos.floodLevel << endl;
|
||||
myTextFloodInfos.timeStamp = timer.elapsed().total_seconds();
|
||||
msgTimesList.insert(playerId, myTextFloodInfos);
|
||||
TextFloodInfos tmpInfos3;
|
||||
tmpInfos3.floodLevel = i.value().floodLevel-1;
|
||||
tmpInfos3.timeStamp = timer.elapsed().total_seconds();
|
||||
qDebug () << "Trigger: set player floodlevel to " << tmpInfos3.floodLevel;
|
||||
msgTimesList.insert(playerId, tmpInfos3);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
myTextFloodInfos.floodLevel++;
|
||||
tmpInfos2.floodLevel = i.value().floodLevel+1;
|
||||
qDebug () << "Raise: set player floodlevel to " << tmpInfos2.floodLevel << " from " << i.value().floodLevel;
|
||||
}
|
||||
}
|
||||
myTextFloodInfos.timeStamp = timer.elapsed().total_seconds();
|
||||
msgTimesList.insert(playerId, myTextFloodInfos);
|
||||
else {
|
||||
tmpInfos2.floodLevel = i.value().floodLevel;
|
||||
qDebug () << "Keep: player floodlevel is " << tmpInfos2.floodLevel << " from " << i.value().floodLevel;
|
||||
}
|
||||
|
||||
tmpInfos2.timeStamp = timer.elapsed().total_seconds();
|
||||
msgTimesList.insert(playerId, tmpInfos2);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -55,13 +65,16 @@ void TextFloodCheck::cleanMsgTimesList() {
|
||||
it.next();
|
||||
if(timer.elapsed().total_seconds()-it.value().timeStamp > 3) {
|
||||
|
||||
if(it.value().floodLevel == 0)
|
||||
if(it.value().floodLevel == 0) {
|
||||
msgTimesList.remove(it.key());
|
||||
|
||||
qDebug () << "Refresh: player removed from List";
|
||||
}
|
||||
else {
|
||||
myTextFloodInfos.floodLevel--;
|
||||
myTextFloodInfos.timeStamp = it.value().timeStamp;
|
||||
msgTimesList.insert(it.key(), myTextFloodInfos);
|
||||
TextFloodInfos tmpInfos;
|
||||
tmpInfos.floodLevel = it.value().floodLevel-1;
|
||||
tmpInfos.timeStamp = it.value().timeStamp;
|
||||
qDebug () << "Refresh: player floodlevel to " << tmpInfos.floodLevel;
|
||||
msgTimesList.insert(it.key(), tmpInfos);
|
||||
}
|
||||
}
|
||||
// qDebug() << msgTimesList.count() << it.key() << ": " << it.value().floodLevel << it.value().timeStamp << endl;
|
||||
@@ -70,6 +83,6 @@ void TextFloodCheck::cleanMsgTimesList() {
|
||||
|
||||
void TextFloodCheck::removeNickFromList(unsigned playerId) {
|
||||
|
||||
// qDebug() << "id " << playerId << "removed from textfloodcheck list" << endl;
|
||||
qDebug() << "id " << playerId << "removed from textfloodcheck list" << endl;
|
||||
msgTimesList.remove(playerId);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ private:
|
||||
int floodLevel;
|
||||
size_t timeStamp;
|
||||
};
|
||||
TextFloodInfos myTextFloodInfos;
|
||||
QMap<unsigned, TextFloodInfos> msgTimesList;
|
||||
|
||||
int textFloodLevelToTrigger;
|
||||
|
||||
Reference in New Issue
Block a user