# HG changeset patch # User Ma Yuan # Date 1157731320 0 # Node ID cb7433549a6f71916f4e20ad10133ae109cfa290 # Parent b821d5551c30a6cf8b724607e2a7d1ff8693939f [gaim-migrate @ 17192] trial of new Login.live.com passport login procedure Not stable. committed by MaYuan committer: Ethan Blanton diff -r b821d5551c30 -r cb7433549a6f src/protocols/msn/nexus.c --- a/src/protocols/msn/nexus.c Thu Sep 07 17:32:25 2006 +0000 +++ b/src/protocols/msn/nexus.c Fri Sep 08 16:02:00 2006 +0000 @@ -26,6 +26,8 @@ #include "nexus.h" #include "notification.h" +#define NEXUS_LOGIN_TWN 1 + /*Local Function Prototype*/ static void nexus_login_connect_cb(gpointer data, GaimSslConnection *gsc,GaimInputCondition cond); @@ -95,15 +97,21 @@ session = nexus->session; g_return_if_fail(session != NULL); -// gaim_debug_misc("msn", "TWN Server Reply: {%s}\n", soapconn->read_buf); + gaim_debug_misc("msn", "TWN Server Reply: {%s}\n", soapconn->read_buf); /*reply OK, we should process the SOAP body*/ gaim_debug_info("MaYuan","Windows Live ID Reply OK!\n"); //TODO: we should parse it using XML +#ifdef NEXUS_LOGIN_TWN base = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_START_TOKEN); base += strlen(TWN_START_TOKEN); c = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_END_TOKEN); +#else + base = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_START_TOKEN); + base += strlen(TWN_LIVE_START_TOKEN); + c = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_END_TOKEN); +#endif login_params = g_strndup(base, c - base); // gaim_debug_info("msn", "TWN Cert: {%s}\n", login_params); @@ -166,7 +174,12 @@ char *ru,*lc,*id,*tw,*ct,*kpp,*kv,*ver,*rn,*tpf; char *fs0,*fs; char *username, *password; - char *request_str, *head, *tail,*challenge_str; + char *request_str, *head, *tail; +#ifdef NEXUS_LOGIN_TWN + char *challenge_str; +#else + char *rst1_str,*rst2_str,*rst3_str; +#endif gaim_debug_info("MaYuan","starting Windows Live ID authentication\n"); @@ -222,14 +235,32 @@ }else{ fs = g_strdup("1"); } + +#ifdef NEXUS_LOGIN_TWN challenge_str = g_strdup_printf( "lc=%s&id=%s&tw=%s&fs=%s&ru=%s&ct=%s&kpp=%s&kv=%s&ver=%s&rn=%s&tpf=%s\r\n", lc,id,tw,fs,ru,ct,kpp,kv,ver,rn,tpf ); - g_free(fs); /*build the SOAP windows Live ID XML body */ tail = g_strdup_printf(TWN_ENVELOP_TEMPLATE,username,password,challenge_str ); + g_free(challenge_str); +#else + rst1_str = g_strdup_printf( + "id=%s&tw=%s&fs=%s&kpp=%s&kv=%s&ver=%s&rn=%s", + id,tw,fs,kpp,kv,ver,rn + ); + rst2_str = g_strdup_printf( + "fs=%s&id=%s&kv=%s&rn=%s&tw=%s&ver=%s", + fs,id,kv,rn,tw,ver + ); + rst3_str = g_strdup_printf("id=%s",id); + tail = g_strdup_printf(TWN_LIVE_ENVELOP_TEMPLATE,username,password,rst1_str,rst2_str,rst3_str); + g_free(rst1_str); + g_free(rst2_str); + g_free(rst3_str); +#endif + g_free(fs); soapconn->login_path = g_strdup(TWN_POST_URL); head = g_strdup_printf( @@ -243,7 +274,7 @@ soapconn->login_path,soapconn->login_host,(int)strlen(tail)); request_str = g_strdup_printf("%s%s", head,tail); -// gaim_debug_misc("msn", "TWN Sending: {%s}\n", request_str); + gaim_debug_misc("msn", "TWN Sending: {%s}\n", request_str); g_free(head); g_free(tail); diff -r b821d5551c30 -r cb7433549a6f src/protocols/msn/nexus.h --- a/src/protocols/msn/nexus.h Thu Sep 07 17:32:25 2006 +0000 +++ b/src/protocols/msn/nexus.h Fri Sep 08 16:02:00 2006 +0000 @@ -26,7 +26,8 @@ #include "soap.h" -#define MSN_TWN_SERVER "loginnet.passport.com" +/*#define MSN_TWN_SERVER "loginnet.passport.com"*/ +#define MSN_TWN_SERVER "login.live.com" #define TWN_START_TOKEN "" #define TWN_END_TOKEN "" @@ -48,7 +49,8 @@ "%s"\ ""\ ""\ - ""\ + ""\ + ""\ ""\ ""\ "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ @@ -72,6 +74,66 @@ ""\ "" +#define TWN_LIVE_START_TOKEN "" +#define TWN_LIVE_END_TOKEN "" +#define TWN_LIVE_ENVELOP_TEMPLATE ""\ +""\ + "
"\ + ""\ + "{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}"\ + "4"\ + "1"\ + ""\ + "AQAAAAIAAABsYwQAAAAyMDUy"\ + ""\ + ""\ + ""\ + "%s"\ + "%s"\ + ""\ + ""\ + "
"\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "http://Passport.NET/tb"\ + ""\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "messenger.msn.com"\ + ""\ + ""\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "contacts.msn.com"\ + ""\ + ""\ + ""\ + " "\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "voice.messenger.msn.com"\ + ""\ + " "\ + ""\ + ""\ + ""\ + ""\ +"
" + typedef struct _MsnNexus MsnNexus; struct _MsnNexus