[prev in list] [next in list] [prev in thread] [next in thread]
List: licq-cvs
Subject: [Licq-cvs] msn/src
From: Jon Keating <emostar () users ! sourceforge ! net>
Date: 2004-05-27 7:32:36
Message-ID: E1BTFNU-0008AT-9v () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]
Update of /cvsroot/licq/msn/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31154
Modified Files:
msn.cpp msn.h msnpacket.cpp msnpacket.h
Log Message:
* Start using a basic config file (internal use only at the moment)
* Support authorizing users to add you to their buddy list. Fixes the problem of \
always being offline to them.
* Add users
Index: msn.cpp
===================================================================
RCS file: /cvsroot/licq/msn/src/msn.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- msn.cpp 19 May 2004 14:30:58 -0000 1.21
+++ msn.cpp 27 May 2004 07:32:16 -0000 1.22
@@ -43,6 +43,24 @@
m_pPacketBuf = 0;
m_szUserName = 0;
m_szPassword = 0;
+
+ // Config file
+ char szFileName[MAX_FILENAME_LEN];
+ sprintf(szFileName, "%s/licq_msn.conf", BASE_DIR);
+ CIniFile msnConf;
+ if (!msnConf.LoadFile(szFileName))
+ {
+ FILE *f = fopen(szFileName, "w");
+ fprintf(f, "[network]");
+ fclose(f);
+ msnConf.LoadFile(szFileName);
+ }
+
+ msnConf.SetSection("network");
+
+ msnConf.ReadNum("ListVersion", m_nListVersion, 0);
+
+ msnConf.CloseFile();
}
CMSN::~CMSN()
@@ -53,6 +71,19 @@
free(m_szUserName);
if (m_szPassword)
free(m_szPassword);
+
+ // Config file
+ char szFileName[MAX_FILENAME_LEN];
+ sprintf(szFileName, "%s/licq_msn.conf", BASE_DIR);
+ CIniFile msnConf;
+ if (msnConf.LoadFile(szFileName))
+ {
+ msnConf.SetSection("network");
+
+ msnConf.WriteNum("ListVersion", m_nListVersion);
+ msnConf.FlushFile();
+ msnConf.CloseFile();
+ }
}
void CMSN::StorePacket(SBuffer *_pBuf, int _nSock)
@@ -295,8 +326,21 @@
}
case PROTOxLOGOFF:
+ {
+ break;
+ }
+
case PROTOxADD_USER:
+ {
+ CAddUserSignal *sig = static_cast<CAddUserSignal *>(s);
+ MSNAddUser(sig->Id());
+ break;
+ }
+
case PROTOxREM_USER:
+ {
+ break;
+ }
case PROTOxSENDxTYPING_NOTIFICATION:
{
@@ -313,6 +357,13 @@
MSNSendMessage(sig->Id(), sig->Message(), sig->Thread());
break;
}
+
+ case PROTOxSENDxGRANTxAUTH:
+ {
+ CGrantAuthSignal *sig = static_cast<CGrantAuthSignal *>(s);
+ MSNGrantAuth(sig->Id());
+ break;
+ }
}
}
@@ -386,7 +437,7 @@
{
packet->SkipParameter(); // Seq
packet->SkipParameter(); // current user to add
- packet->SkipParameter(); // total usrers in conversation
+ packet->SkipParameter(); // total users in conversation
string strUser = packet->GetParameter();
gLog.Info("%s%s joined the conversation.\n", L_MSNxSTR, strUser.c_str());
@@ -598,7 +649,7 @@
string strNick = m_pPacketBuf->GetParameter();
gLog.Info("%s%s logged in.\n", L_MSNxSTR, strNick.c_str());
- pReply = new CPS_MSNSync();
+ pReply = new CPS_MSNSync(m_nListVersion);
}
else
{
@@ -620,17 +671,18 @@
{
m_pPacketBuf->SkipParameter();
string strVersion = m_pPacketBuf->GetParameter();
+ m_nListVersion = atol(strVersion.c_str());
pReply = new CPS_MSNChangeStatus(ICQ_STATUS_ONLINE);
SendPacket(pReply);
// Send our local list now
- FOR_EACH_PROTO_USER_START(MSN_PPID, LOCK_R)
- {
- pReply = new CPS_MSNAddUser(pUser->IdString());
- SendPacket(pReply);
- }
- FOR_EACH_PROTO_USER_END
+ //FOR_EACH_PROTO_USER_START(MSN_PPID, LOCK_R)
+ //{
+ // pReply = new CPS_MSNAddUser(pUser->IdString());
+ // SendPacket(pReply);
+ //}
+ //FOR_EACH_PROTO_USER_END
pReply = 0;
}
@@ -638,12 +690,37 @@
{
// Add user
string strUser = m_pPacketBuf->GetParameter();
- m_pDaemon->AddUserToList(strUser.c_str(), MSN_PPID);
+ if (!gUserManager.IsOnList(strUser.c_str(), MSN_PPID))
+ m_pDaemon->AddUserToList(strUser.c_str(), MSN_PPID);
}
else if (strCmd == "LSG")
{
// Add group
}
+ else if (strCmd == "ADD")
+ {
+ m_pPacketBuf->SkipParameter(); // What's this?
+ string strList = m_pPacketBuf->GetParameter();
+ m_pPacketBuf->SkipParameter(); // What's this?
+ string strUser = m_pPacketBuf->GetParameter();
+ string strNick = m_pPacketBuf->GetParameter();
+
+ if (strList == "RL")
+ {
+ CUserEvent *e = new CEventAuthRequest(strUser.c_str(), MSN_PPID,
+ strNick.c_str(), "", "", "", "", ICQ_CMDxRCV_SYSxMSGxONLINE, time(0), 0);
+
+ ICQOwner *o = gUserManager.FetchOwner(MSN_PPID, LOCK_W);
+ if (m_pDaemon->AddUserEvent(o, e))
+ {
+ gUserManager.DropOwner(MSN_PPID);
+ e->AddToHistory(NULL, D_RECEIVER);
+ m_pDaemon->m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL);
+ }
+ else
+ gUserManager.DropOwner(MSN_PPID);
+ }
+ }
else if (strCmd == "CHG")
{
string strStatus = m_pPacketBuf->GetParameter();
@@ -966,6 +1043,18 @@
SendPacket(pSend);
}
+void CMSN::MSNAddUser(char *szUser)
+{
+ CMSNPacket *pSend = new CPS_MSNAddUser(szUser, CONTACT_LIST);
+ SendPacket(pSend);
+}
+
+void CMSN::MSNGrantAuth(char *szUser)
+{
+ CMSNPacket *pSend = new CPS_MSNAddUser(szUser, ALLOW_LIST);
+ SendPacket(pSend);
+}
+
void CMSN::MSNPing()
{
CMSNPacket *pSend = new CPS_MSNPing();
Index: msn.h
===================================================================
RCS file: /cvsroot/licq/msn/src/msn.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- msn.h 9 May 2004 14:48:32 -0000 1.10
+++ msn.h 27 May 2004 07:32:16 -0000 1.11
@@ -28,6 +28,10 @@
#define MSN_PPID 0x4D534E5F
#define L_MSNxSTR "[MSN] "
+const char CONTACT_LIST[] = "FL";
+const char ALLOW_LIST[] = "AL";
+const char BLOCK_LIST[] = "BL";
+
#include <string>
#include <list>
#include <vector>
@@ -86,7 +90,8 @@
void MSNSendMessage(char *, char *, pthread_t);
void MSNSendTypingNotification(char *);
void MSNChangeStatus(unsigned long);
-
+ void MSNAddUser(char *);
+ void MSNGrantAuth(char *);
// Internal functions
int HashValue(int n) { return n % 211; }
@@ -94,7 +99,10 @@
void RemovePacket(string, int);
SBuffer *RetrievePacket(string, int);
ICQEvent *RetrieveEvent(unsigned long);
-
+
+ // Config
+ unsigned long m_nListVersion;
+
// Variables
CICQDaemon *m_pDaemon;
bool m_bExit;
Index: msnpacket.cpp
===================================================================
RCS file: /cvsroot/licq/msn/src/msnpacket.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- msnpacket.cpp 9 May 2004 14:48:32 -0000 1.12
+++ msnpacket.cpp 27 May 2004 07:32:16 -0000 1.13
@@ -199,14 +199,15 @@
m_pBuffer->Pack("\r\n", 2);
}
-CPS_MSNSync::CPS_MSNSync() : CMSNPacket()
+CPS_MSNSync::CPS_MSNSync(unsigned long nVersion) : CMSNPacket()
{
m_szCommand = strdup("SYN");
- char szParams[] = "0";
- m_nSize += 1;
+ char szParams[15];
+ int nSize = sprintf(szParams, "%lu", nVersion);
+ m_nSize += nSize;
InitBuffer();
- m_pBuffer->Pack(szParams, 1);
+ m_pBuffer->Pack(szParams, nSize);
m_pBuffer->Pack("\r\n", 2);
}
@@ -245,16 +246,18 @@
m_pBuffer->Pack("\r\n", 2);
}
-CPS_MSNAddUser::CPS_MSNAddUser(const char *szUser) : CMSNPacket()
+CPS_MSNAddUser::CPS_MSNAddUser(const char *szUser, const char *szList)
+ : CMSNPacket()
{
m_szCommand = strdup("ADD");
- char szParams[] = "FL ";
- m_nSize += strlen(szParams) + (strlen(szUser) * 2) + 1;
+ m_nSize += strlen(szList) + (strlen(szUser) * 2) + 2;
InitBuffer();
m_szUser = strdup(szUser);
+ m_szList = strdup(szList);
- m_pBuffer->Pack(szParams, strlen(szParams));
+ m_pBuffer->Pack(m_szList, strlen(m_szList));
+ m_pBuffer->Pack(" ", 1);
m_pBuffer->Pack(m_szUser, strlen(m_szUser));
m_pBuffer->Pack(" ", 1);
m_pBuffer->Pack(m_szUser, strlen(m_szUser));
Index: msnpacket.h
===================================================================
RCS file: /cvsroot/licq/msn/src/msnpacket.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- msnpacket.h 9 May 2004 14:48:32 -0000 1.10
+++ msnpacket.h 27 May 2004 07:32:16 -0000 1.11
@@ -123,7 +123,7 @@
class CPS_MSNSync : public CMSNPacket
{
public:
- CPS_MSNSync();
+ CPS_MSNSync(unsigned long);
};
class CPS_MSNChallenge : public CMSNPacket
@@ -141,11 +141,12 @@
class CPS_MSNAddUser : public CMSNPacket
{
public:
- CPS_MSNAddUser(const char *);
- virtual ~CPS_MSNAddUser() { if (m_szUser) free(m_szUser); }
+ CPS_MSNAddUser(const char *, const char *szList);
+ virtual ~CPS_MSNAddUser() { if (m_szUser) free(m_szUser); if (m_szList) \
free(m_szList); }
protected:
char *m_szUser;
+ char *m_szList;
};
class CPS_MSN_SBStart : public CMSNPacket
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
Licq-cvs mailing list
Licq-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/licq-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic