aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/user-guide/commands.xml4
-rw-r--r--protocols/account.c2
-rw-r--r--protocols/jabber/jabber.c14
-rw-r--r--protocols/jabber/jabber.h3
-rw-r--r--protocols/jabber/sasl.c40
5 files changed, 14 insertions, 49 deletions
diff --git a/doc/user-guide/commands.xml b/doc/user-guide/commands.xml
index b14744d8..298b7bc4 100644
--- a/doc/user-guide/commands.xml
+++ b/doc/user-guide/commands.xml
@@ -1173,7 +1173,7 @@
<description>
<para>
- By default, BitlBee generates a nickname for every contact by taking its handle and chopping off everything after the @. In some cases, this gives very inconvenient nicknames. The Facebook XMPP server is a good example, as all Facebook XMPP handles are numeric.
+ By default, BitlBee generates a nickname for every contact by taking its handle and chopping off everything after the @. In some cases, this gives very inconvenient nicknames. Some servers use internal identifiers, which are often just numbers.
</para>
<para>
@@ -1187,7 +1187,7 @@
<description>
<para>
- This enables OAuth authentication for an IM account; right now the Twitter (working for Twitter only) and Jabber (for Google Talk, Facebook and MSN Messenger) module support it.
+ This enables OAuth authentication for an IM account; right now the Twitter (working for Twitter only) and Jabber (for Google Talk only) module support it.
</para>
<para>
diff --git a/protocols/account.c b/protocols/account.c
index e1025a53..fcafe215 100644
--- a/protocols/account.c
+++ b/protocols/account.c
@@ -87,8 +87,6 @@ account_t *account_add(bee_t *bee, struct prpl *prpl, char *user, char *pass)
if (strstr(a->user, "@gmail.com") ||
strstr(a->user, "@googlemail.com")) {
strcpy(tag, "gtalk");
- } else if (strstr(a->user, "@chat.facebook.com")) {
- strcpy(tag, "fb");
}
}
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c
index ddf4f2d3..0da65c84 100644
--- a/protocols/jabber/jabber.c
+++ b/protocols/jabber/jabber.c
@@ -150,6 +150,12 @@ static void jabber_login(account_t *acc)
return;
}
+ if (strstr(jd->server, ".facebook.com")) {
+ imcb_error(ic, "Facebook's XMPP service is gone. Try this instead: https://wiki.bitlbee.org/HowtoFacebookMQTT");
+ imc_logout(ic, FALSE);
+ return;
+ }
+
if ((s = strchr(jd->server, '/'))) {
*s = 0;
set_setstr(&acc->set, "resource", s + 1);
@@ -169,11 +175,9 @@ static void jabber_login(account_t *acc)
jd->fd = jd->r_inpa = jd->w_inpa = -1;
- if (strstr(jd->server, ".facebook.com")) {
- jd->oauth2_service = &oauth2_service_facebook;
- } else {
- jd->oauth2_service = &oauth2_service_google;
- }
+ /* There are no other options atm, so assume google for everything
+ Facebook and MSN XMPP used to be here. RIP. */
+ jd->oauth2_service = &oauth2_service_google;
oauth_params_parse(&p_in, ic->acc->pass);
diff --git a/protocols/jabber/jabber.h b/protocols/jabber/jabber.h
index b50e0cb5..8796b8fc 100644
--- a/protocols/jabber/jabber.h
+++ b/protocols/jabber/jabber.h
@@ -49,8 +49,6 @@ typedef enum {
JFLAG_GTALK = 0x100000, /* Is Google Talk, as confirmed by iq discovery */
JFLAG_HIPCHAT = 0x200000, /* Is hipchat, because prpl->name says so */
-
- JFLAG_SASL_FB = 0x10000, /* Trying Facebook authentication. */
} jabber_flags_t;
typedef enum {
@@ -341,7 +339,6 @@ int sasl_oauth2_get_refresh_token(struct im_connection *ic, const char *msg);
int sasl_oauth2_refresh(struct im_connection *ic, const char *refresh_token);
extern const struct oauth2_service oauth2_service_google;
-extern const struct oauth2_service oauth2_service_facebook;
/* conference.c */
struct groupchat *jabber_chat_join(struct im_connection *ic, const char *room, const char *nick, const char *password);
diff --git a/protocols/jabber/sasl.c b/protocols/jabber/sasl.c
index 86f428c9..aa43def0 100644
--- a/protocols/jabber/sasl.c
+++ b/protocols/jabber/sasl.c
@@ -37,15 +37,6 @@ const struct oauth2_service oauth2_service_google =
"783993391592.apps.googleusercontent.com",
"6C-Zgf7Tr7gEQTPlBhMUgo7R",
};
-const struct oauth2_service oauth2_service_facebook =
-{
- "https://www.facebook.com/dialog/oauth",
- "https://graph.facebook.com/oauth/access_token",
- "https://www.bitlbee.org/main.php/Facebook/oauth2.html",
- "offline_access,xmpp_login",
- "126828914005625",
- "4b100f0f244d620bf3f15f8b217d4c32",
-};
xt_status sasl_pkt_mechanisms(struct xt_node *node, gpointer data)
{
@@ -53,7 +44,7 @@ xt_status sasl_pkt_mechanisms(struct xt_node *node, gpointer data)
struct jabber_data *jd = ic->proto_data;
struct xt_node *c, *reply;
char *s;
- int sup_plain = 0, sup_digest = 0, sup_gtalk = 0, sup_fb = 0, sup_anonymous = 0;
+ int sup_plain = 0, sup_digest = 0, sup_gtalk = 0, sup_anonymous = 0;
int want_oauth = FALSE, want_hipchat = FALSE, want_anonymous = FALSE;
GString *mechs;
@@ -88,8 +79,6 @@ xt_status sasl_pkt_mechanisms(struct xt_node *node, gpointer data)
sup_anonymous = 1;
} else if (c->text && g_strcasecmp(c->text, "X-OAUTH2") == 0) {
sup_gtalk = 1;
- } else if (c->text && g_strcasecmp(c->text, "X-FACEBOOK-PLATFORM") == 0) {
- sup_fb = 1;
}
if (c->text) {
@@ -100,7 +89,7 @@ xt_status sasl_pkt_mechanisms(struct xt_node *node, gpointer data)
}
if (!want_oauth && !sup_plain && !sup_digest) {
- if (!sup_gtalk && !sup_fb) {
+ if (!sup_gtalk) {
imcb_error(ic, "This server requires OAuth "
"(supported schemes:%s)", mechs->str);
} else {
@@ -136,9 +125,6 @@ xt_status sasl_pkt_mechanisms(struct xt_node *node, gpointer data)
reply->text = base64_encode((unsigned char *) s, len);
reply->text_len = strlen(reply->text);
g_free(s);
- } else if (sup_fb && want_oauth) {
- xt_add_attr(reply, "mechanism", "X-FACEBOOK-PLATFORM");
- jd->flags |= JFLAG_SASL_FB;
} else if (want_oauth) {
imcb_error(ic, "OAuth requested, but not supported by server");
imc_logout(ic, FALSE);
@@ -298,27 +284,7 @@ xt_status sasl_pkt_challenge(struct xt_node *node, gpointer data)
dec = frombase64(node->text);
- if (jd->flags & JFLAG_SASL_FB) {
- /* New-style Facebook OAauth2 support. Instead of sending a refresh
- token, they just send an access token that should never expire. */
- GSList *p_in = NULL, *p_out = NULL;
- char time[33];
-
- oauth_params_parse(&p_in, dec);
- oauth_params_add(&p_out, "nonce", oauth_params_get(&p_in, "nonce"));
- oauth_params_add(&p_out, "method", oauth_params_get(&p_in, "method"));
- oauth_params_free(&p_in);
-
- g_snprintf(time, sizeof(time), "%lld", (long long) (gettime() * 1000));
- oauth_params_add(&p_out, "call_id", time);
- oauth_params_add(&p_out, "api_key", oauth2_service_facebook.consumer_key);
- oauth_params_add(&p_out, "v", "1.0");
- oauth_params_add(&p_out, "format", "XML");
- oauth_params_add(&p_out, "access_token", jd->oauth2_access_token);
-
- reply = oauth_params_string(p_out);
- oauth_params_free(&p_out);
- } else if (!(s = sasl_get_part(dec, "rspauth"))) {
+ if (!(s = sasl_get_part(dec, "rspauth"))) {
/* See RFC 2831 for for information. */
md5_state_t A1, A2, H;
md5_byte_t A1r[16], A2r[16], Hr[16];