comparison libpurple/protocols/yahoo/yahoo.c @ 26824:644606f508e6

Support logging into Yahoo! Japan with protocol 16. It seems not to care what version bytes are sent once you use the right URL's to log in.
author John Bailey <rekkanoryo@rekkanoryo.org>
date Tue, 12 May 2009 00:50:45 +0000
parents 885320258863
children 53d4b3a1c80f
comparison
equal deleted inserted replaced
26823:60141cfedeb6 26824:644606f508e6
1774 g_free(auth_data->seed); 1774 g_free(auth_data->seed);
1775 g_free(auth_data); 1775 g_free(auth_data);
1776 } 1776 }
1777 else { 1777 else {
1778 /* OK to login, correct information provided */ 1778 /* OK to login, correct information provided */
1779 char *url = g_strdup_printf("https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%s",token); 1779 char *url = NULL;
1780 gboolean yahoojp = purple_account_get_bool(purple_connection_get_account(gc),
1781 "yahoojp", 0);
1782
1783 url = g_strdup_printf(yahoojp ?
1784 "https://login.yahoo.co.jp/config/pwtoken_login?src=ymsgr&ts=&token=%s" :
1785 "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%s",
1786 token);
1780 url_data2 = purple_util_fetch_url_request(url, TRUE, "Mozilla/4.0 (compatible; MSIE 5.5)", TRUE, NULL, FALSE, yahoo_auth16_stage2, auth_data); 1787 url_data2 = purple_util_fetch_url_request(url, TRUE, "Mozilla/4.0 (compatible; MSIE 5.5)", TRUE, NULL, FALSE, yahoo_auth16_stage2, auth_data);
1781 g_free(url); 1788 g_free(url);
1782 g_free(token); 1789 g_free(token);
1783 } 1790 }
1784 } 1791 }
1785 } 1792 }
1786 1793
1787 static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed) 1794 static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed)
1788 { 1795 {
1789 PurpleUtilFetchUrlData *url_data; 1796 PurpleUtilFetchUrlData *url_data = NULL;
1790 struct yahoo_auth_data *auth_data = NULL; 1797 struct yahoo_auth_data *auth_data = NULL;
1791 char *url = NULL; 1798 char *url = NULL;
1799 gboolean yahoojp;
1792 1800
1793 purple_debug_info("yahoo","Authentication: In yahoo_auth16_stage1\n"); 1801 purple_debug_info("yahoo","Authentication: In yahoo_auth16_stage1\n");
1794 1802
1795 if(!purple_ssl_is_supported()) { 1803 if(!purple_ssl_is_supported()) {
1796 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, _("Server requires TLS/SSL for login. No TLS/SSL support found.")); 1804 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, _("Server requires TLS/SSL for login. No TLS/SSL support found."));
1797 return; 1805 return;
1798 } 1806 }
1799 1807
1808 yahoojp = purple_account_get_bool(purple_connection_get_account(gc),
1809 "yahoojp", 0);
1800 auth_data = g_new0(struct yahoo_auth_data, 1); 1810 auth_data = g_new0(struct yahoo_auth_data, 1);
1801 auth_data->gc = gc; 1811 auth_data->gc = gc;
1802 auth_data->seed = g_strdup(seed); 1812 auth_data->seed = g_strdup(seed);
1803 1813
1804 url = g_strdup_printf("https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s",purple_account_get_username(purple_connection_get_account(gc)), purple_connection_get_password(gc), seed); 1814 url = g_strdup_printf(yahoojp ?
1815 "https://login.yahoo.co.jp/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s" :
1816 "https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s",
1817 purple_account_get_username(purple_connection_get_account(gc)),
1818 purple_connection_get_password(gc), seed);
1805 1819
1806 url_data = purple_util_fetch_url_request(url, TRUE, "Mozilla/4.0 (compatible; MSIE 5.5)", TRUE, NULL, FALSE, yahoo_auth16_stage1_cb, auth_data); 1820 url_data = purple_util_fetch_url_request(url, TRUE, "Mozilla/4.0 (compatible; MSIE 5.5)", TRUE, NULL, FALSE, yahoo_auth16_stage1_cb, auth_data);
1807 g_free(url); 1821 g_free(url);
1808 } 1822 }
1809 1823