Beispiel #1
0
MSNServerMessage::~MSNServerMessage()
{
    KEY_MAP values;
    QString msg = QString::fromUtf8(m_msg);
    for (;!msg.isEmpty();){
        QString line;
        int n = msg.indexOf("\r\n");
        if (n >= 0){
            line = msg.left(n);
            msg  = msg.mid(n + 2);
        }else{
            line = msg;
            msg  = QString::null;
        }
        n = line.indexOf(':');
        if (n < 0)
            continue;
        values.insert(KEY_MAP::value_type(line.left(n), line.mid(n + 1).trimmed()));
    }
    KEY_MAP::iterator it = values.find("ClientIP");
    if (it != values.end())
        set_ip(&m_client->data.owner.IP, QHostAddress(qPrintable(it->second)).toIPv4Address());
    it = values.find("Content-Type");
    if (it != values.end()){
        QString content_type = it->second;
        content_type = getToken(content_type, ';');
        if (content_type == "text/x-msmsgsinitialemailnotification"){
            m_client->m_init_mail = QString::null;
            it = values.find("Post-URL");
            if (it != values.end())
                m_client->m_init_mail = it->second;
            it = values.find("Inbox-URL");
            if (it != values.end())
                m_client->m_init_mail += it->second;
            it = values.find("Inbox-Unread");
            if (it == values.end())
                return;
            unsigned nUnread = it->second.toUInt();
            if (nUnread){
                EventNotification::ClientNotificationData data;
                data.client     = m_client;
                data.text    = "%1";
                data.options    = QString::null;
                data.args       = i18n("You have %n unread message.", "You have %n unread messages.", nUnread);
                data.code       = 0;
                data.flags      = EventNotification::ClientNotificationData::E_INFO;
                data.id         = static_cast<MSNPlugin*>(m_client->protocol()->plugin())->MSNInitMail;
                EventShowNotification e(data);
                e.process();
            }
        }
        if (content_type == "text/x-msmsgsemailnotification"){
            m_client->m_new_mail = QString::null;
            it = values.find("Post-URL");
            if (it != values.end())
                m_client->m_new_mail = it->second;
            it = values.find("Message-URL");
            if (it != values.end())
                m_client->m_new_mail += it->second;
            QString from;
            it = values.find("From-Addr");
            if (it != values.end())
                from = it->second;
            QString msg = i18n("You have new mail");
            if (!from.isEmpty())
                msg = i18n("%1 from %2") .arg(msg) .arg(from);
            EventNotification::ClientNotificationData data;
            data.client     = m_client;
            data.text    = "%1";
            data.options    = QString::null;
            data.args       = msg;
            data.code       = 0;
            data.flags      = EventNotification::ClientNotificationData::E_INFO;
            data.id         = static_cast<MSNPlugin*>(m_client->protocol()->plugin())->MSNNewMail;
            EventShowNotification e(data);
            e.process();
        }
    }
}
Beispiel #2
0
MSNServerMessage::~MSNServerMessage()
{
    KEY_MAP values;
    QString msg = QString::fromUtf8(m_msg.c_str());
    for (;!msg.isEmpty();){
        QString line;
        int n = msg.find("\r\n");
        if (n >= 0){
            line = msg.left(n);
            msg  = msg.mid(n + 2);
        }else{
            line = msg;
            msg  = "";
        }
        n = line.find(":");
        if (n < 0)
            continue;
        values.insert(KEY_MAP::value_type(line.left(n), trim(line.mid(n + 1))));
    }
    KEY_MAP::iterator it = values.find("ClientIP");
    if (it != values.end())
        set_ip(&m_client->data.owner.IP, inet_addr((*it).second.latin1()));
    it = values.find("Content-Type");
    if (it != values.end()){
        QString content_type = (*it).second;
        content_type = getToken(content_type, ';');
        if (content_type == "text/x-msmsgsinitialemailnotification"){
            m_client->m_init_mail = "";
            it = values.find("Post-URL");
            if (it != values.end())
                m_client->m_init_mail = (*it).second.latin1();
            it = values.find("Inbox-URL");
            if (it != values.end())
                m_client->m_init_mail += (*it).second.latin1();
            it = values.find("Inbox-Unread");
            if (it == values.end())
                return;
            unsigned nUnread = (*it).second.toUInt();
            if (nUnread){
                clientErrorData data;
                data.client		= m_client;
                data.err_str	= "%1";
                data.options	= NULL;
                data.args		= strdup(i18n("You have %n unread message", "You have %n unread messages", nUnread).utf8());
                data.code		= 0;
                data.flags		= ERR_INFO;
                data.id			= static_cast<MSNPlugin*>(m_client->protocol()->plugin())->MSNInitMail;
                Event e(EventShowError, &data);
                e.process();
            }
        }
        if (content_type == "text/x-msmsgsemailnotification"){
            m_client->m_new_mail = "";
            it = values.find("Post-URL");
            if (it != values.end())
                m_client->m_new_mail = (*it).second.latin1();
            it = values.find("Message-URL");
            if (it != values.end())
                m_client->m_new_mail += (*it).second.latin1();
            QString from;
            it = values.find("From-Addr");
            if (it != values.end())
                from = (*it).second;
            QString msg = i18n("You have new mail");
            if (!from.isEmpty())
                msg = i18n("%1 from %2") .arg(msg) .arg(from);
            clientErrorData data;
            data.client		= m_client;
            data.err_str	= "%1";
            data.options	= NULL;
            data.args		= strdup(msg.utf8());
            data.code		= 0;
            data.flags		= ERR_INFO;
            data.id			= static_cast<MSNPlugin*>(m_client->protocol()->plugin())->MSNNewMail;
            Event e(EventShowError, &data);
            e.process();
        }
    }
}