Esempio n. 1
0
ICQEvent *ICQClient::searchByName(const char *first, const char *last, const char *nick, bool bOnline)
{
    if (!isLogged()) return 0;
    p->serverRequest(ICQ_SRVxREQ_MORE);
    p->sock->writeBuffer << ICQ_SRVxREQ_WP_SHORT;
    string sFirst = first ? first : "";
    string sLast = last ? last : "";
    string sNick = nick ? nick : "";
    log(L_DEBUG, "-- [%s] [%s] [%s]", first, last, nick);
    toServer(sFirst, owner);
    toServer(sLast, owner);
    toServer(sNick, owner);
    p->sock->writeBuffer
    << sNick
    << sFirst
    << sNick;
    if (bOnline){
        p->sock->writeBuffer
        << 0x30020100L
        << (char)0x01;
    }
    p->sendServerRequest();
    ICQEvent *e = new SearchEvent(p->m_nMsgSequence);
    p->varEvents.push_back(e);
    return e;
}
Esempio n. 2
0
bool ICQClient::setMailInfo(ICQUser *u)
{
    if (m_state != Logged) return false;

    bool bChange = false;
    NPARAM(EMails);

    serverRequest(ICQ_SRVxREQ_MORE);
    writeBuffer << ICQ_SRVxREQ_MODIFY_BACKGROUND;

    char c = u->EMails.size();
    c--;
    if (c < 0) c = 0;
    writeBuffer << c;

    bool bFirst = true;
    for (EMailList::iterator it = u->EMails.begin(); it != u->EMails.end(); ++it){
        EMailInfo *info = static_cast<EMailInfo*>(*it);
        if (bFirst){
            bFirst = false;
            continue;
        }
        string s;
        if (info->Email) s = info->Email;
        toServer(s);
        char hide = info->Hide ? 1 : 0;
        writeBuffer << hide << s;
    }

    sendServerRequest();
    SetMailInfo *e = new SetMailInfo(m_nMsgSequence, u);
    varEvents.push_back(e);
    return true;
}
Esempio n. 3
0
void ICQClient::packInfoList(const ExtInfoList &infoList)
{
    char n = infoList.size();
    writeBuffer << n;
    for (ConfigPtrList::const_iterator it = infoList.begin(); it != infoList.end(); ++it){
        ExtInfo *info = static_cast<ExtInfo*>(*it);
        string spec = info->Specific;
        toServer(spec);
        writeBuffer << htons(info->Category()) << spec;
    }
}
Esempio n. 4
0
void ICQClient::setPassword(const char *passwd)
{
    if (m_state != Logged) return;
    serverRequest(ICQ_SRVxREQ_MORE);
    writeBuffer << ICQ_SRVxREQ_CHANGE_PASSWD;
    string p = passwd;
    toServer(p);
    writeBuffer << p;
    sendServerRequest();
    SetPasswordEvent *e = new SetPasswordEvent(m_nMsgSequence, passwd);
    varEvents.push_back(e);
}
Esempio n. 5
0
ICQEvent *ICQClient::searchByName(const char *first, const char *last, const char *nick)
{
    if (m_state != Logged) return 0;
    serverRequest(ICQ_SRVxREQ_MORE);
    writeBuffer << ICQ_SRVxREQ_WP_SHORT;
    string sFirst = first ? first : "";
    string sLast = last ? last : "";
    string sNick = nick ? nick : "";
    log(L_DEBUG, "-- [%s] [%s] [%s]", first, last, nick);
    toServer(sFirst);
    toServer(sLast);
    toServer(sNick);
    writeBuffer
    << sNick
    << sFirst
    << sNick;
    sendServerRequest();
    ICQEvent *e = new SearchEvent(m_nMsgSequence);
    varEvents.push_back(e);
    return e;
}
Esempio n. 6
0
void ICQClient::setPassword(const char *passwd)
{
    if (!isLogged()) return;
    p->serverRequest(ICQ_SRVxREQ_MORE);
    p->sock->writeBuffer << ICQ_SRVxREQ_CHANGE_PASSWD;
    string pass = passwd;
    toServer(pass, owner);
    p->sock->writeBuffer << pass;
    p->sendServerRequest();
    SetPasswordEvent *e = new SetPasswordEvent(p->m_nMsgSequence, passwd);
    p->varEvents.push_back(e);
}
Esempio n. 7
0
ICQEvent *ICQClient::searchWP(const char *szFirst, const char *szLast, const char *szNick,
                              const char *szEmail, char age, char nGender,
                              char nLanguage, const char *szCity, const char *szState,
                              unsigned short nCountryCode,
                              const char *szCoName, const char *szCoDept, const char *szCoPos,
                              bool bOnlineOnly)
{
    if (m_state != Logged) return 0;
    serverRequest(ICQ_SRVxREQ_MORE);
    writeBuffer << ICQ_SRVxREQ_WP_FULL;
    string sFirst = szFirst ? szFirst : "";
    string sLast = szLast ? szLast : "";
    string sNick = szNick ? szNick : "";
    string sEmail = szEmail ? szEmail : "";
    string sCity = szCity ? szCity : "";
    string sState = szState ? szState : "";
    string sCoName = szCoName ? szCoName : "";
    string sCoDept = szCoDept ? szCoDept : "";
    string sCoPos = szCoPos ? szCoPos : "";

    toServer(sFirst);
    toServer(sLast);
    toServer(sNick);
    toServer(sEmail);
    toServer(sCity);
    toServer(sState);
    toServer(sCoName);
    toServer(sCoDept);
    toServer(sCoPos);

    unsigned short nMinAge = 0;
    unsigned short nMaxAge = 0;
    switch (age){
    case 1:
        nMinAge = 18;
        nMaxAge = 22;
        break;
    case 2:
        nMinAge = 23;
        nMaxAge = 29;
        break;
    case 3:
        nMinAge = 30;
        nMaxAge = 39;
        break;
    case 4:
        nMinAge = 40;
        nMaxAge = 49;
        break;
    case 5:
        nMinAge = 50;
        nMaxAge = 59;
        break;
    case 6:
        nMinAge = 60;
        nMaxAge = 120;
        break;
    }

    writeBuffer
    << sFirst
    << sLast
    << sNick
    << sEmail
    << (unsigned short)htons(nMinAge)
    << (unsigned short)htons(nMaxAge)
    << nGender
    << nLanguage
    << sCity
    << sState
    << (unsigned short)htons(nCountryCode)
    << sCoName
    << sCoDept
    << sCoPos

    << (char)0x00
    << (unsigned short)0x0000;

    for (unsigned short i = 0; i < 3; i++)
    {
        writeBuffer
        << (char)0x01
        << 0x00000000L;
    }

    writeBuffer
    << (char)0x01
    << (unsigned short)0x0000;

    char c = bOnlineOnly ? 1 : 0;
    writeBuffer << c;

    sendServerRequest();

    ICQEvent *e = new SearchEvent(m_nMsgSequence);
    varEvents.push_back(e);
    return e;
}
Esempio n. 8
0
ICQEvent *ICQClient::searchWP(const char *szFirst, const char *szLast, const char *szNick,
                              const char *szEmail, char age, char nGender,
                              char nLanguage, const char *szCity, const char *szState,
                              unsigned short nCountryCode,
                              const char *szCoName, const char *szCoDept, const char *szCoPos,
                              char nOccupation,
                              unsigned short nPast, const char *szPast,
                              unsigned short nInterests, const char *szInterests,
                              unsigned short nAffiliation, const char *szAffiliation,
                              unsigned short nHomePage, const char *szHomePage,
                              bool bOnlineOnly)
{
    if (!isLogged()) return 0;
    p->serverRequest(ICQ_SRVxREQ_MORE);
    p->sock->writeBuffer << ICQ_SRVxREQ_WP_FULL;
    string sFirst = szFirst ? szFirst : "";
    string sLast = szLast ? szLast : "";
    string sNick = szNick ? szNick : "";
    string sEmail = szEmail ? szEmail : "";
    string sCity = szCity ? szCity : "";
    string sState = szState ? szState : "";
    string sCoName = szCoName ? szCoName : "";
    string sCoDept = szCoDept ? szCoDept : "";
    string sCoPos = szCoPos ? szCoPos : "";
    string sPast = szPast ? szPast : "";
    string sInterests = szInterests ? szInterests : "";
    string sAffiliation = szAffiliation ? szAffiliation : "";
    string sHomePage = szHomePage ? szHomePage : "";

    toServer(sFirst, owner);
    toServer(sLast, owner);
    toServer(sNick, owner);
    toServer(sEmail, owner);
    toServer(sCity, owner);
    toServer(sState, owner);
    toServer(sCoName, owner);
    toServer(sCoDept, owner);
    toServer(sCoPos, owner);
    toServer(sPast, owner);
    toServer(sInterests, owner);
    toServer(sAffiliation, owner);
    toServer(sHomePage, owner);

    unsigned short nMinAge = 0;
    unsigned short nMaxAge = 0;
    switch (age){
    case 1:
        nMinAge = 18;
        nMaxAge = 22;
        break;
    case 2:
        nMinAge = 23;
        nMaxAge = 29;
        break;
    case 3:
        nMinAge = 30;
        nMaxAge = 39;
        break;
    case 4:
        nMinAge = 40;
        nMaxAge = 49;
        break;
    case 5:
        nMinAge = 50;
        nMaxAge = 59;
        break;
    case 6:
        nMinAge = 60;
        nMaxAge = 120;
        break;
    }

    p->sock->writeBuffer
    << sFirst
    << sLast
    << sNick
    << sEmail;
    p->sock->writeBuffer.pack(nMinAge);
    p->sock->writeBuffer.pack(nMaxAge);
    p->sock->writeBuffer
    << nGender
    << nLanguage
    << sCity
    << sState;
    p->sock->writeBuffer.pack(nCountryCode);
    p->sock->writeBuffer
    << sCoName
    << sCoDept
    << sCoPos

    << nOccupation
    << nPast
    << sPast
    << nInterests
    << sInterests
    << nAffiliation
    << sAffiliation
    << nHomePage
    << sHomePage;

    char c = bOnlineOnly ? 1 : 0;
    p->sock->writeBuffer << c;

    p->sendServerRequest();

    ICQEvent *e = new SearchEvent(p->m_nMsgSequence);
    p->varEvents.push_back(e);
    return e;
}
Esempio n. 9
0
void ICQClient::processMsgQueueAuth()
{
    list<ICQEvent*>::iterator it;
    for (it = msgQueue.begin(); it != msgQueue.end();){
        ICQEvent *e = *it;
        if (e->message() == NULL){
            msgQueue.remove(e);
            e->state = ICQEvent::Fail;
            process_event(e);
            it = msgQueue.begin();
            continue;
        }
        switch (e->message()->Type()){
        case ICQ_MSGxAUTHxREQUEST:{
                ICQAuthRequest *msg = static_cast<ICQAuthRequest*>(e->message());
                snac(ICQ_SNACxFAM_LISTS, ICQ_SNACxLISTS_REQUEST_AUTH);
                ICQUser *u = getUser(msg->getUin());
                writeBuffer.packUin(msg->getUin());
                string message = clearHTML(msg->Message.c_str());
                toServer(message, u);
                writeBuffer << (unsigned short)(message.length());
                writeBuffer << message.c_str();
                writeBuffer << (unsigned short)0;
                sendPacket();
                (*it)->state = ICQEvent::Success;
                break;
            }
        case ICQ_MSGxAUTHxGRANTED:{
                ICQAuthRequest *msg = static_cast<ICQAuthRequest*>(e->message());
                snac(ICQ_SNACxFAM_LISTS, ICQ_SNACxLISTS_AUTHxSEND);
                writeBuffer.packUin(msg->getUin());
                writeBuffer
                << (char)0x01
                << (unsigned long)0;
                sendPacket();
                (*it)->state = ICQEvent::Success;
                break;
            }
        case ICQ_MSGxAUTHxREFUSED:{
                ICQAuthRequest *msg = static_cast<ICQAuthRequest*>(e->message());
                snac(ICQ_SNACxFAM_LISTS, ICQ_SNACxLISTS_REQUEST_AUTH);
                ICQUser *u = getUser(msg->getUin());
                writeBuffer.packUin(msg->getUin());
                string message = clearHTML(msg->Message.c_str());
                string original = message;
                toServer(message, u);
                writeBuffer
                << (char) 0
                << message
                << (unsigned long)0x00010001;
                if (message == original){
                    writeBuffer << (unsigned char)0;
                }else{
                    string charset = "utf-8";
                    writeBuffer << charset;
                }
                writeBuffer << (unsigned short)0;
                sendPacket();
                (*it)->state = ICQEvent::Success;
                break;
            }
        }
        if (e->state != ICQEvent::Success){
            it++;
            continue;
        }
        msgQueue.remove(e);
        process_event(e);
        it = msgQueue.begin();
    }
}
Esempio n. 10
0
void ICQClient::toServer(string &str, ICQUser *u)
{
    toServer(str, localCharset(u));
}