aboutsummaryrefslogtreecommitdiffstats
path: root/facebook/facebook-api.c
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2017-07-07 05:49:57 -0300
committerdequis <dx@dxzone.com.ar>2017-07-07 06:22:20 -0300
commit8bbf163cfb796524754d7872e148c9793cd4452f (patch)
tree7d1d8dbd182295564896de80c6d4edca66e6043b /facebook/facebook-api.c
parent5352f5822f0d12655b1120f76ec712713aa02079 (diff)
downloadbitlbee-facebook-8bbf163cfb796524754d7872e148c9793cd4452f.tar.gz
bitlbee-facebook-8bbf163cfb796524754d7872e148c9793cd4452f.tar.bz2
bitlbee-facebook-8bbf163cfb796524754d7872e148c9793cd4452f.tar.xz
Add tweak values 1-15, sets orca version in the user agent
Since there are some issues I can't reproduce, let's do this experiment properly and figure out if this really matters. Value 1 is slightly newer. Value 2 is newer with the current set of fields. Value 3 is what purple-facebook uses. Adding 4 makes it http only, adding 8 makes it mqtt only. Some values are redundant. I suggest trying 1, 2, 3, 7 and 11.
Diffstat (limited to 'facebook/facebook-api.c')
-rw-r--r--facebook/facebook-api.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c
index 0ff315f..a72f386 100644
--- a/facebook/facebook-api.c
+++ b/facebook/facebook-api.c
@@ -89,6 +89,27 @@ fb_api_contacts_delta(FbApi *api, const gchar *delta_cursor);
G_DEFINE_TYPE(FbApi, fb_api, G_TYPE_OBJECT);
+static const gchar *agents[] = {
+ FB_API_AGENT,
+ FB_API_AGENT_BASE " " "[FBAN/Orca-Android;FBAV/64.0.0.5.83;FBPN/com.facebook.orca;FBLC/en_US;FBBV/26040814]",
+ FB_API_AGENT_BASE " " "[FBAN/Orca-Android;FBAV/109.0.0.17.70;FBBV/52182662]",
+ FB_API_AGENT_BASE " " "[FBAN/Orca-Android;FBAV/109.0.0.17.70;FBPN/com.facebook.orca;FBLC/en_US;FBBV/52182662]",
+ NULL,
+};
+
+static const gchar *
+fb_api_get_agent_string(int tweak, gboolean mqtt)
+{
+ gboolean http_only = tweak & 4;
+ gboolean mqtt_only = tweak & 8;
+
+ if (tweak <= 0 || tweak > 15 || (http_only && mqtt) || (mqtt_only && !mqtt)) {
+ return agents[0];
+ }
+
+ return agents[tweak & 3];
+}
+
static void
fb_api_set_property(GObject *obj, guint prop, const GValue *val,
GParamSpec *pspec)
@@ -120,6 +141,7 @@ fb_api_set_property(GObject *obj, guint prop, const GValue *val,
break;
case PROP_TWEAK:
priv->tweak = g_value_get_int(val);
+ fb_http_set_agent(priv->http, fb_api_get_agent_string(priv->tweak, 0));
break;
default:
@@ -896,7 +918,9 @@ fb_api_cb_mqtt_open(FbMqtt *mqtt, gpointer data)
/* Write the information string */
fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRING, 2, 1);
- fb_thrift_write_str(thft, FB_API_MQTT_AGENT);
+ fb_thrift_write_str(thft, (priv->tweak != 0)
+ ? fb_api_get_agent_string(priv->tweak, 1)
+ : FB_API_MQTT_AGENT);
/* Write the UNKNOWN ("cp"?) */
fb_thrift_write_field(thft, FB_THRIFT_TYPE_I64, 3, 2);