From a5a2935911aae732e11d584f8adca39543429155 Mon Sep 17 00:00:00 2001 From: sje Date: Fri, 6 Jul 2007 06:36:19 +0000 Subject: implemented list parsing (think i got rid of all encoded chars) git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@255 4f64403b-2f21-0410-a795-97e2b3489a10 --- MySpace/server_con.cpp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'MySpace/server_con.cpp') diff --git a/MySpace/server_con.cpp b/MySpace/server_con.cpp index e5f9ccd..e81db37 100644 --- a/MySpace/server_con.cpp +++ b/MySpace/server_con.cpp @@ -219,6 +219,8 @@ void try_login(NetMessage &msg, HANDLE connection) { strcpy(email, options.email); MultiByteToWideChar(code_page, 0, options.pw, -1, wpw, 10); #endif + // and make it lower case!?!? + _wcslwr(wpw); sha1.sha1_hash((mir_sha1_byte_t*)wpw, wcslen(wpw) * sizeof(wchar_t), pw_hash); @@ -254,16 +256,16 @@ void try_login(NetMessage &msg, HANDLE connection) { } } -void ParseStatusMessage(HANDLE hContact, char *smsg) { - int stat = stat_myspace_to_mir(smsg[3] - '0'); +void ParseStatusMessage(HANDLE hContact, PipedStringList &l) { + int stat = stat_myspace_to_mir(l.get_int(1)); if(stat == ID_STATUS_IDLE) { - DBWriteContactSettingWord(hContact, MODULE, "IdleTS", (DWORD)time(0)); + DBWriteContactSettingDword(hContact, MODULE, "IdleTS", (DWORD)time(0)); } else { DBWriteContactSettingWord(hContact, MODULE, "Status", stat); + DBWriteContactSettingDword(hContact, MODULE, "IdleTS", 0); } - smsg += 8; - char *end = strstr(smsg, "|"); - if(end) *end = 0; + char smsg[512]; + l.get_string(3, smsg, 512); DBWriteContactSettingStringUtf(hContact, MODULE, "StatusMsg", smsg); } @@ -347,7 +349,7 @@ void __cdecl ServerThreadFunc(void*) { } NetMessage msg; - msg.parse(pbuff, bytes); + msg.parse(pbuff, end - pbuff); if(msg.exists(NMString("error"))) { char errmsg[256]; if(msg.get_string("errmsg", errmsg, 256)) { @@ -429,13 +431,11 @@ void __cdecl ServerThreadFunc(void*) { if(uid) { HANDLE hContact = FindContact(uid); if(!hContact) { - hContact = CreateContact(uid, 0, 0, true); + hContact = CreateContact(uid, 0, 0, false); LookupUID(uid); } - char smsg[1024]; - if(msg.get_string("msg", smsg, 1024)) { - ParseStatusMessage(hContact, smsg); - } + PipedStringList l = msg.get_list("msg"); + ParseStatusMessage(hContact, l); } } else if(msg.get_int("bm") == 121) { // action message int uid = msg.get_int("f"); @@ -472,7 +472,7 @@ void __cdecl ServerThreadFunc(void*) { strip_tags(text); decode_smileys(text); - unentitize_msg(text); + unentitize_xml(text); PROTORECVEVENT pre = {0}; pre.flags = PREF_UTF; @@ -505,10 +505,8 @@ void __cdecl ServerThreadFunc(void*) { MYPROTOSEARCHRESULT mpsr = {sizeof(mpsr)}; if(body.get_string("UserName", nick, 256)) { - unentitize_nick(nick); mpsr.psr.nick = nick; } else if(body.get_string("DisplayName", nick, 256)) { - unentitize_nick(nick); mpsr.psr.nick = nick; } if(body.get_string("Email", email, 256)) @@ -533,10 +531,8 @@ void __cdecl ServerThreadFunc(void*) { MYPROTOSEARCHRESULT mpsr = {sizeof(mpsr)}; if(body.get_string("DisplayName", nick, 256)) { - unentitize_nick(nick); mpsr.psr.nick = nick; } else if(body.get_string("UserName", nick, 256)) { - unentitize_nick(nick); mpsr.psr.nick = nick; } @@ -633,7 +629,6 @@ void __cdecl ServerThreadFunc(void*) { int uid = body.get_int("ContactID"); if(uid != 0) { if(body.get_string("NickName", nick, 256)) { - unentitize_nick(nick); DBWriteContactSettingStringUtf(0, MODULE, "Nick", nick); } } @@ -721,10 +716,17 @@ void CALLBACK sttMainThreadStatusMessageCallback( ULONG dwParam ) { if(status != ID_STATUS_OFFLINE) { if(myspace_server_running && sesskey) { // set status + ClientNetMessage msg_status; msg_status.add_int("status", stat_mir_to_myspace(status)); msg_status.add_int("sesskey", sesskey); - msg_status.add_string("statstring", msg ? msg : ""); + if(msg && msg[0]) { + char buff[512]; + strncpy(buff, msg, 512); + msg_status.add_string("statstring", buff); + } else { + msg_status.add_string("statstring", ""); + } msg_status.add_string("locstring", ""); SendMessage(msg_status); } else { -- cgit v1.2.3