bool MessageManager::isIgnoredOrFiltered(const ChatMessagePtr& msg, Client* aClient, bool PM){ const auto& identity = msg->getFrom()->getIdentity(); auto logIgnored = [&](bool filter) -> void { if (SETTING(LOG_IGNORED)) { string tmp; if (PM) { tmp = filter ? STRING(PM_MESSAGE_FILTERED) : STRING(PM_MESSAGE_IGNORED); } else { string hub = "[" + ((aClient && !aClient->getHubName().empty()) ? (aClient->getHubName().size() > 50 ? (aClient->getHubName().substr(0, 50) + "...") : aClient->getHubName()) : aClient->getHubUrl()) + "] "; tmp = (filter ? STRING(MC_MESSAGE_FILTERED) : STRING(MC_MESSAGE_IGNORED)) + hub; } tmp += "<" + identity.getNick() + "> " + msg->getText(); LogManager::getInstance()->message(tmp, LogMessage::SEV_INFO); } }; if (msg->getFrom()->getUser()->isIgnored() && ((aClient && aClient->isOp()) || !identity.isOp() || identity.isBot())) { logIgnored(false); return true; } if (isChatFiltered(identity.getNick(), msg->getText(), PM ? ChatFilterItem::PM : ChatFilterItem::MC)) { logIgnored(true); return true; } return false; }
bool MessageManager::isIgnoredOrFiltered(const ChatMessage& msg, Client* client, bool PM) { const auto& identity = msg.from->getIdentity(); auto logIgnored = [&](bool filter) -> void { if (SETTING(LOG_IGNORED)) { string tmp; if (PM) { tmp = filter ? STRING(PM_MESSAGE_FILTERED) : STRING(PM_MESSAGE_IGNORED); } else { string hub = "[" + ((client && !client->getHubName().empty()) ? (client->getHubName().size() > 50 ? (client->getHubName().substr(0, 50) + "...") : client->getHubName()) : client->getHubUrl()) + "] "; tmp = (filter ? STRING(MC_MESSAGE_FILTERED) : STRING(MC_MESSAGE_IGNORED)) + hub; } tmp += "<" + identity.getNick() + "> " + msg.text; LogManager::getInstance()->message(tmp, LogManager::LOG_INFO); } }; if (PM && client) { // don't be that restrictive with the fav hub option if (client->getFavNoPM() && (client->isOp() || !msg.replyTo->getIdentity().isOp()) && !msg.replyTo->getIdentity().isBot() && !msg.replyTo->getUser()->isFavorite()) { string tmp; client->privateMessage(msg.replyTo, "Private messages sent via this hub are ignored", tmp); return true; } } if (msg.from->getUser()->isIgnored() && ((client && client->isOp()) || !identity.isOp() || identity.isBot())) { logIgnored(false); return true; } if (isChatFiltered(identity.getNick(), msg.text, PM ? ChatFilterItem::PM : ChatFilterItem::MC)) { logIgnored(true); return true; } return false; }