bool Client::saveFavorite() { FavoriteHubEntryPtr e = new FavoriteHubEntry(); e->setServer(getHubUrl()); e->setName(getHubName()); e->setDescription(getHubDescription()); e->setAutoConnect(true); if (!defpassword.empty()) { e->setPassword(defpassword); } return FavoriteManager::getInstance()->addFavoriteHub(e); }
// [+] IRainman fix. bool Client::allowPrivateMessagefromUser(const ChatMessage& message) { if (isMe(message.m_replyTo)) { if (UserManager::expectPasswordFromUser(message.m_to->getUser()) #ifdef IRAINMAN_ENABLE_AUTO_BAN || UploadManager::getInstance()->isBanReply(message.m_to->getUser()) // !SMT!-S #endif ) { return false; } else { return true; } } else if (message.thirdPerson && BOOLSETTING(NSL_IGNORE_ME)) { return false; } else if (UserManager::isInIgnoreList(message.m_replyTo->getIdentity().getNick())) // !SMT!-S { return false; } else if (BOOLSETTING(SUPPRESS_PMS)) { #ifdef IRAINMAN_ENABLE_AUTO_BAN if (UploadManager::getInstance()->isBanReply(message.m_replyTo->getUser())) // !SMT!-S { return false; } else #endif if (FavoriteManager::getInstance()->isNoFavUserOrUserIgnorePrivate(message.m_replyTo->getUser())) { if (BOOLSETTING(LOG_IF_SUPPRESS_PMS)) { LocalArray<char, 200> l_buf; snprintf(l_buf.data(), l_buf.size(), CSTRING(LOG_IF_SUPPRESS_PMS), message.m_replyTo->getIdentity().getNick().c_str(), getHubName().c_str(), getHubUrl().c_str()); LogManager::getInstance()->message(l_buf.data()); } return false; } else { return true; } } else if (message.m_replyTo->getIdentity().isHub()) { if (BOOLSETTING(IGNORE_HUB_PMS) && !isInOperatorList(message.m_replyTo->getIdentity().getNick())) { fire(ClientListener::StatusMessage(), this, STRING(IGNORED_HUB_BOT_PM) + ": " + message.m_text); return false; } else if (FavoriteManager::getInstance()->hasIgnorePM(message.m_replyTo->getUser())) { return false; } else { return true; } } else if (message.m_replyTo->getIdentity().isBot()) { if (BOOLSETTING(IGNORE_BOT_PMS) && !isInOperatorList(message.m_replyTo->getIdentity().getNick())) { fire(ClientListener::StatusMessage(), this, STRING(IGNORED_HUB_BOT_PM) + ": " + message.m_text); return false; } else if (FavoriteManager::getInstance()->hasIgnorePM(message.m_replyTo->getUser())) { return false; } else { return true; } } else if (BOOLSETTING(PROTECT_PRIVATE) && !FavoriteManager::getInstance()->hasFreePM(message.m_replyTo->getUser())) // !SMT!-PSW { switch (UserManager::checkPrivateMessagePassword(message)) { case UserManager::FREE: { return true; } case UserManager::WAITING: { return false; } case UserManager::FIRST: { StringMap params; params["pm_pass"] = SETTING(PM_PASSWORD); privateMessage(message.m_replyTo, Util::formatParams(SETTING(PM_PASSWORD_HINT), params, false), false); if (BOOLSETTING(PROTECT_PRIVATE_SAY)) { fire(ClientListener::StatusMessage(), this, STRING(REJECTED_PRIVATE_MESSAGE_FROM) + ": " + message.m_replyTo->getIdentity().getNick()); } return false; } case UserManager::CHECKED: { privateMessage(message.m_replyTo, SETTING(PM_PASSWORD_OK_HINT), true); // TODO needs? // const tstring passwordOKMessage = _T('<') + message.m_replyTo->getUser()->getLastNickT() + _T("> ") + TSTRING(PRIVATE_CHAT_PASSWORD_OK_STARTED); // PrivateFrame::gotMessage(from, to, replyTo, passwordOKMessage, getHubHint(), myPM, pm.thirdPerson); // !SMT!-S return true; } default: // Only for compiler. { dcassert(0); return false; } } } else { if (FavoriteManager::getInstance()->hasIgnorePM(message.m_replyTo->getUser()) #ifdef IRAINMAN_ENABLE_AUTO_BAN || UploadManager::getInstance()->isBanReply(message.m_replyTo->getUser()) // !SMT!-S #endif ) { return false; } else { return true; } } }