示例#1
0
void UsrPacket::answer(const char *cmd, vector<string> &args)
{
    if (strcmp(cmd, "USR")){
        QTimer::singleShot(0, m_client, SLOT(authFailed()));
        return;
    }
    if (args[0] == "OK"){
        QTimer::singleShot(0, m_client, SLOT(authOk()));
        return;
    }
    if (args[1] == "S"){
        MD5_CTX c;
        unsigned char md[MD5_DIGEST_LENGTH];
        MD5_Init(&c);
        string user;
        user = m_client->getLogin().utf8();
        MD5_Update(&c, args[2].c_str(),(unsigned long)args[2].length());
        string pswd;
        pswd = m_client->getPassword().utf8();
        MD5_Update(&c, pswd.c_str(), pswd.length());
        MD5_Final(md, &c);
        string digest = "";
        for (unsigned i = 0; i < MD5_DIGEST_LENGTH; i++){
            char b[3];
            sprintf(b, "%02x",md[i]);
            digest += b;
        }
        MSNPacket *packet = new UsrPacket(m_client, digest.c_str());
        packet->send();
    }
}
示例#2
0
bool CvrPacket::answer(const char*, vector<string> &arg)
{
    m_client->setVersion(arg[0].c_str());
    MSNPacket *packet = new UsrPacket(m_client);
    packet->send();
    return false;
}
示例#3
0
void InfPacket::answer(const char*, vector<string>&)
{
    MSNPacket *packet = new UsrPacket(m_client);
    packet->send();
}
示例#4
0
bool VerPacket::answer(const char*, vector<string>&)
{
    MSNPacket *packet = new CvrPacket(m_client);
    packet->send();
    return false;
}
示例#5
0
void CvrPacket::answer(const QStringList &arg)
{
    m_client->setVersion(arg[0]);
    MSNPacket *packet = new UsrPacket(m_client);
    packet->send();
}
示例#6
0
void VerPacket::answer(const QStringList&)
{
    MSNPacket *packet = new CvrPacket(m_client);
    packet->send();
}
示例#7
0
void CvrPacket::answer(vector<string> &arg)
{
    m_client->setVersion(arg[0].c_str());
    MSNPacket *packet = new UsrPacket(m_client);
    packet->send();
}
示例#8
0
void VerPacket::answer(vector<string>&)
{
    MSNPacket *packet = new CvrPacket(m_client);
    packet->send();
}