diff options
author | Tim Groeneveld <tim@timg.ws> | 2019-05-20 04:20:18 +0300 |
---|---|---|
committer | Tim Groeneveld <tim@timg.ws> | 2019-05-20 04:20:18 +0300 |
commit | fa250c95a88e5a966b2455dd74a2c02a01d19d97 (patch) | |
tree | fe92cc15b031b9e2627145e5b9047c62516b70a0 | |
parent | a1f31838fd317a49eb1f23fd078d57f05a919da2 (diff) |
Give a detailed login failure message
-rw-r--r-- | skypeweb/skypeweb_login.c | 20 |
1 files changed, 20 insertions, 0 deletions
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);
// <input type="hidden" name="t" id="t" value="...">
+ 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;
}
|