int OtrMessageService::maxMessageSize(const Account &account) const { Protocol *protocolHandler = account.protocolHandler(); if (!protocolHandler) return 0; ChatService *chatService = protocolHandler->chatService(); if (!chatService) return 0; return chatService->maxMessageLength(); }
void Firewall::accountUnregistered(Account account) { Protocol *protocol = account.protocolHandler(); if (!protocol) return; ChatService *chatService = protocol->chatService(); if (!chatService) return; disconnect(chatService, SIGNAL(filterIncomingMessage(Chat, Contact, QString &, time_t, bool &)), this, SLOT(filterIncomingMessage(Chat, Contact, QString &, time_t, bool &))); disconnect(chatService, SIGNAL(filterOutgoingMessage(Chat, QString &, bool &)), this, SLOT(filterOutgoingMessage(Chat, QString &, bool &))); disconnect(account, SIGNAL(connected()), this, SLOT(accountConnected())); }
bool Firewall::checkChat(const Chat &chat, const Contact &sender, const QString &message, bool &ignore) { kdebugf(); if (!CheckChats) return false; // konferencja if (chat.contacts().count() > 1) { kdebugf2(); return false; } if (!sender.ownerBuddy().isAnonymous() || Passed.contains(sender)) { kdebugf2(); return false; } if (chat.chatAccount().statusContainer()->status().type() == "Invisible" && DropAnonymousWhenInvisible) { writeLog(sender, tr("Chat with anonim silently dropped.\n") + "----------------------------------------------------\n"); kdebugf2(); return true; } if (IgnoreInvisible) { if (sender.currentStatus().isDisconnected()) { QDateTime *dateTime = chat.chatAccount().data()->moduleData<QDateTime>("firewall-account-connected"); if (dateTime && (*dateTime < QDateTime::currentDateTime())) { Protocol *protocol = chat.chatAccount().protocolHandler(); if (!protocol) { kdebugf2(); return false; } ChatService *chatService = protocol->chatService(); if (!chatService) { kdebugf2(); return false; } chatService->sendMessage(chat, tr("This message has been generated AUTOMATICALLY!\n\nI'm a busy person and I don't have time for stupid chats with the persons hiding itself. If you want to talk with me change the status to Online or Busy first."), true); } writeLog(sender, tr("Chat with invisible anonim ignored.\n") + "----------------------------------------------------\n"); kdebugf2(); return true; } } if (pattern.exactMatch(message.simplified())) { Passed.insert(sender); if (Confirmation) { Protocol *protocol = chat.chatAccount().protocolHandler(); if (!protocol) { kdebugf2(); return false; } ChatService *chatService = protocol->chatService(); if (!chatService) { kdebugf2(); return false; } chatService->sendMessage(chat, ConfirmationText, true); } writeLog(sender, tr("User wrote right answer!\n") + "----------------------------------------------------\n"); ignore = true; kdebugf2(); return false; } else { if (LastContact != sender && Search) { SearchWindow *sd = new SearchWindow(Core::instance()->kaduWindow(), sender.ownerBuddy()); sd->show(); sd->firstSearch(); LastContact = sender; } kdebugm(KDEBUG_INFO, "%s\n", qPrintable(message)); QDateTime *dateTime = chat.chatAccount().data()->moduleData<QDateTime>("firewall-account-connected"); if (dateTime && (*dateTime < QDateTime::currentDateTime())) { Protocol *protocol = chat.chatAccount().protocolHandler(); if (!protocol) { kdebugf2(); return false; } ChatService *chatService = protocol->chatService(); if (!chatService) { kdebugf2(); return false; } chatService->sendMessage(chat, ConfirmationQuestion, true); } kdebugf2(); return true; } }