From fa250c95a88e5a966b2455dd74a2c02a01d19d97 Mon Sep 17 00:00:00 2001 From: Tim Groeneveld Date: Mon, 20 May 2019 11:20:18 +1000 Subject: Give a detailed login failure message --- skypeweb/skypeweb_login.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/skypeweb/skypeweb_login.c b/skypeweb/skypeweb_login.c index 9a35916..d3f0748 100644 --- a/skypeweb/skypeweb_login.c +++ b/skypeweb/skypeweb_login.c @@ -156,6 +156,8 @@ skypeweb_login_got_t(PurpleHttpConnection *http_conn, PurpleHttpResponse *respon PurpleHttpRequest *request; GString *postdata; gchar *magic_t_value; // T is for tasty + gchar *error_code; + gchar *error_text; int tmplen; const gchar *data; gsize len; @@ -163,7 +165,10 @@ skypeweb_login_got_t(PurpleHttpConnection *http_conn, PurpleHttpResponse *respon data = purple_http_response_get_data(response, &len); // + error_test = skypeweb_string_get_chunk(data, len, ",sErrTxt:'", "',Am:'"); + error_code = skypeweb_string_get_chunk(data, len, ",sErrorCode:'", "',Ag:"); magic_t_value = skypeweb_string_get_chunk(data, len, "=\"t\" value=\"", "\""); + if (!magic_t_value) { //No Magic T???? Maybe it be the mighty 2fa-beast @@ -188,7 +193,22 @@ skypeweb_login_got_t(PurpleHttpConnection *http_conn, PurpleHttpResponse *respon return; } } + + if (error_test) { + GString *new_error; + new_error = g_string_new(""); + g_string_append_printf(new_error, "%s: ", error_code); + g_string_append_printf(new_error, "%s", error_test); + + gchar *error_msg = g_string_free(new_error, FALSE); + + purple_connection_error(sa->pc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED, error_msg); + g_free (error_msg); + return; + } + purple_connection_error(sa->pc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED, _("Failed getting Magic T value, please try logging in via browser first")); + return; } -- cgit v1.2.3