Mercurial > pidgin
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 |