Пример #1
0
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;
}
Пример #2
0
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;
}