diff --git a/src/chatcleaner/badwordcheck.cpp b/src/chatcleaner/badwordcheck.cpp index 790abb96..577751f3 100644 --- a/src/chatcleaner/badwordcheck.cpp +++ b/src/chatcleaner/badwordcheck.cpp @@ -9,11 +9,26 @@ BadWordCheck::BadWordCheck() bool BadWordCheck::run(QString msg) { msg = msg.toLower(); + bool badMessage(false); QStringListIterator it(badWords); while (it.hasNext()) { - if(msg.contains(it.next())) - return true; + QString bw=it.next(); + if(msg.contains(bw)) { + badMessage=true; + + //exception check + QStringListIterator it2(badWordsException); + while (it2.hasNext()) { + QString bwe=it2.hasNext(); + if(bwe.contains(bw) && msg.contains(bwe)) { + badMessage=false; + } + } + } } - return false; + + if(badMessage) return true; + else return false; + } diff --git a/src/chatcleaner/badwordcheck.h b/src/chatcleaner/badwordcheck.h index e9785b81..6bdf986c 100644 --- a/src/chatcleaner/badwordcheck.h +++ b/src/chatcleaner/badwordcheck.h @@ -13,11 +13,16 @@ public: badWords = bw; } + void setBadWordsException(QStringList bwe) { + badWordsException = bwe; + } + bool run(QString); private: QStringList badWords; + QStringList badWordsException; }; #endif // BADWORDCHECK_H diff --git a/src/chatcleaner/cleanerconfig.cpp b/src/chatcleaner/cleanerconfig.cpp index 629cf335..7d38559f 100644 --- a/src/chatcleaner/cleanerconfig.cpp +++ b/src/chatcleaner/cleanerconfig.cpp @@ -43,7 +43,7 @@ using namespace std; CleanerConfig::CleanerConfig() { // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 8; + configRev = 9; // Pfad und Dateinamen setzen #ifdef _WIN32 @@ -158,6 +158,11 @@ CleanerConfig::CleanerConfig() badWordsList.push_back("whore"); configList.push_back(ConfigInfo("BadWordsList", CONFIG_TYPE_STRING_LIST, "BadWords", badWordsList)); + list badWordsExceptionList; + badWordsExceptionList.push_back("idiots end"); + configList.push_back(ConfigInfo("BadWordsException", CONFIG_TYPE_STRING_LIST, "BadWordsException", badWordsExceptionList)); + + list urlStringsList; urlStringsList.push_back("http://"); urlStringsList.push_back(".com"); diff --git a/src/chatcleaner/messagefilter.cpp b/src/chatcleaner/messagefilter.cpp index 90028093..b177aa0c 100644 --- a/src/chatcleaner/messagefilter.cpp +++ b/src/chatcleaner/messagefilter.cpp @@ -185,6 +185,14 @@ void MessageFilter::refreshConfig() } myBadWordCheck->setBadWords(bwList); + std::list badWordsExceptionList = config->readConfigStringList("BadWordsList"); + std::list::iterator it1; + QStringList bweList; + for(it1= badWordsExceptionList.begin(); it1 != badWordsExceptionList.end(); ++it1) { + bweList << QString::fromUtf8(it1->c_str()); + } + myBadWordCheck->setBadWordsException(bweList); + std::list urlStringsList = config->readConfigStringList("UrlStringsList"); std::list::iterator it2; QStringList urlList;