Update slack
Use newest commit and newest version of patch.
This commit is contained in:
parent
1e5c2c7122
commit
8338341c4f
|
@ -1,9 +1,10 @@
|
||||||
https://github.com/kacf/slack-libpurple/commit/8a09a6d94c1020aeb7aef1ab3b08a088e4fbfac0.patch
|
https://github.com/kacf/slack-libpurple/commit/8a09a6d94c1020aeb7aef1ab3b08a088e4fbfac0.patch
|
||||||
|
|
||||||
From 8a09a6d94c1020aeb7aef1ab3b08a088e4fbfac0 Mon Sep 17 00:00:00 2001
|
From d276ba4a0854ea243cb995a6042acc1b936f7d45 Mon Sep 17 00:00:00 2001
|
||||||
From: Kristian Amlie <kristian.amlie@northern.tech>
|
From: Kristian Amlie <kristian.amlie@northern.tech>
|
||||||
Date: Wed, 20 Jul 2022 15:43:03 +0200
|
Date: Wed, 20 Jul 2022 15:43:03 +0200
|
||||||
Subject: [PATCH] Enable credentials using browser obtained token and cookie.
|
Subject: [PATCH 1/2] Enable credentials using browser obtained token and
|
||||||
|
cookie.
|
||||||
|
|
||||||
The way it works is that you need two tokens from the browser.
|
The way it works is that you need two tokens from the browser.
|
||||||
Currently, getting them is inconvenient, but let's start with the
|
Currently, getting them is inconvenient, but let's start with the
|
||||||
|
@ -161,28 +162,28 @@ index 6463da0..6415a46 100644
|
||||||
void slack_api_disconnect(SlackAccount *sa);
|
void slack_api_disconnect(SlackAccount *sa);
|
||||||
|
|
||||||
diff --git a/slack-auth.c b/slack-auth.c
|
diff --git a/slack-auth.c b/slack-auth.c
|
||||||
index 5a41f76..d157ee5 100644
|
index b1422ae..62ffcbb 100644
|
||||||
--- a/slack-auth.c
|
--- a/slack-auth.c
|
||||||
+++ b/slack-auth.c
|
+++ b/slack-auth.c
|
||||||
@@ -49,7 +49,7 @@ slack_auth_login_finduser_cb(SlackAccount *sa, gpointer user_data, json_value *j
|
@@ -37,7 +37,7 @@ slack_auth_login_signin_cb(SlackAccount *sa, gpointer user_data, json_value *jso
|
||||||
|
static void
|
||||||
/* now do the actual login */
|
slack_auth_login_user(SlackAccount *sa, const char *user_id) {
|
||||||
slack_login_step(sa);
|
slack_login_step(sa);
|
||||||
- slack_api_get(sa, slack_auth_login_signin_cb,
|
- slack_api_get(sa, slack_auth_login_signin_cb,
|
||||||
+ slack_api_post(sa, slack_auth_login_signin_cb,
|
+ slack_api_post(sa, slack_auth_login_signin_cb,
|
||||||
NULL, "auth.signin",
|
NULL, "auth.signin",
|
||||||
"user", user_id,
|
"user", user_id,
|
||||||
"password", purple_account_get_password(sa->account),
|
"password", purple_account_get_password(sa->account),
|
||||||
@@ -75,7 +75,7 @@ slack_auth_login_findteam_cb(SlackAccount *sa, gpointer user_data, json_value *j
|
@@ -81,7 +81,7 @@ slack_auth_login_findteam_cb(SlackAccount *sa, gpointer user_data, json_value *j
|
||||||
|
|
||||||
/* now validate that the user exists and get their ID. */
|
/* now validate that the user exists and get their ID. */
|
||||||
slack_login_step(sa);
|
slack_login_step(sa);
|
||||||
- slack_api_get(sa, slack_auth_login_finduser_cb,
|
if (strchr(sa->email, '@'))
|
||||||
+ slack_api_post(sa, slack_auth_login_finduser_cb,
|
- slack_api_get(sa, slack_auth_login_finduser_cb,
|
||||||
NULL, "auth.findUser",
|
+ slack_api_post(sa, slack_auth_login_finduser_cb,
|
||||||
"email", sa->email,
|
NULL, "auth.findUser",
|
||||||
"team", sa->team.id,
|
"email", sa->email,
|
||||||
@@ -86,7 +86,7 @@ slack_auth_login_findteam_cb(SlackAccount *sa, gpointer user_data, json_value *j
|
"team", sa->team.id,
|
||||||
|
@@ -94,7 +94,7 @@ slack_auth_login_findteam_cb(SlackAccount *sa, gpointer user_data, json_value *j
|
||||||
void
|
void
|
||||||
slack_auth_login(SlackAccount *sa) {
|
slack_auth_login(SlackAccount *sa) {
|
||||||
/* validate the team and get it's ID */
|
/* validate the team and get it's ID */
|
||||||
|
@ -192,10 +193,10 @@ index 5a41f76..d157ee5 100644
|
||||||
"domain", sa->host,
|
"domain", sa->host,
|
||||||
NULL);
|
NULL);
|
||||||
diff --git a/slack-blist.c b/slack-blist.c
|
diff --git a/slack-blist.c b/slack-blist.c
|
||||||
index be5c7ba..2756aef 100644
|
index 5f7612d..b039a48 100644
|
||||||
--- a/slack-blist.c
|
--- a/slack-blist.c
|
||||||
+++ b/slack-blist.c
|
+++ b/slack-blist.c
|
||||||
@@ -140,7 +140,7 @@ struct roomlist_expand {
|
@@ -145,7 +145,7 @@ struct roomlist_expand {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ROOMLIST_CALL(sa, expand, ARGS...) \
|
#define ROOMLIST_CALL(sa, expand, ARGS...) \
|
||||||
|
@ -297,10 +298,10 @@ index 1a84e1f..d4ee8f2 100644
|
||||||
+ slack_api_post(sa, rtm_connect_cb, NULL, "rtm.connect", "batch_presence_aware", "1", "presence_sub", "true", NULL);
|
+ slack_api_post(sa, rtm_connect_cb, NULL, "rtm.connect", "batch_presence_aware", "1", "presence_sub", "true", NULL);
|
||||||
}
|
}
|
||||||
diff --git a/slack-thread.c b/slack-thread.c
|
diff --git a/slack-thread.c b/slack-thread.c
|
||||||
index 75e2b9d..bf5ae00 100644
|
index ae86996..714781c 100644
|
||||||
--- a/slack-thread.c
|
--- a/slack-thread.c
|
||||||
+++ b/slack-thread.c
|
+++ b/slack-thread.c
|
||||||
@@ -225,7 +225,7 @@ static void slack_thread_lookup_ts(SlackAccount *sa, slack_thread_lookup_ts_cb *
|
@@ -251,7 +251,7 @@ static void slack_thread_lookup_ts(SlackAccount *sa, slack_thread_lookup_ts_cb *
|
||||||
lookup->rest = g_strdup(rest);
|
lookup->rest = g_strdup(rest);
|
||||||
|
|
||||||
const char *id = slack_conversation_id(conv);
|
const char *id = slack_conversation_id(conv);
|
||||||
|
@ -350,7 +351,7 @@ index 88292b4..3b3d151 100644
|
||||||
|
|
||||||
static void avatar_load_next(SlackAccount *sa);
|
static void avatar_load_next(SlackAccount *sa);
|
||||||
diff --git a/slack.c b/slack.c
|
diff --git a/slack.c b/slack.c
|
||||||
index 709baf6..5b8259a 100644
|
index 5b61b39..0cbcd38 100644
|
||||||
--- a/slack.c
|
--- a/slack.c
|
||||||
+++ b/slack.c
|
+++ b/slack.c
|
||||||
@@ -282,14 +282,35 @@ static void slack_login(PurpleAccount *account) {
|
@@ -282,14 +282,35 @@ static void slack_login(PurpleAccount *account) {
|
||||||
|
@ -411,3 +412,75 @@ index 2f6454e..490722a 100644
|
||||||
|
|
||||||
short login_step;
|
short login_step;
|
||||||
GQueue api_calls; /* SlackAPICall */
|
GQueue api_calls; /* SlackAPICall */
|
||||||
|
|
||||||
|
From 256c0ec77e27c0f7d333502eb2cbe82b1e4a1a91 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kristian Amlie <kristian.amlie@northern.tech>
|
||||||
|
Date: Tue, 19 Sep 2023 07:55:58 +0200
|
||||||
|
Subject: [PATCH 2/2] Start sending d-cookie in WebSocket requests.
|
||||||
|
|
||||||
|
Started being required by Slack around 2023-09-19.
|
||||||
|
|
||||||
|
Signed-off-by: Kristian Amlie <kristian.amlie@northern.tech>
|
||||||
|
---
|
||||||
|
purple-websocket.c | 5 +++--
|
||||||
|
purple-websocket.h | 2 +-
|
||||||
|
slack-rtm.c | 9 ++++++++-
|
||||||
|
3 files changed, 12 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/purple-websocket.c b/purple-websocket.c
|
||||||
|
index 55eb371..07821c4 100644
|
||||||
|
--- a/purple-websocket.c
|
||||||
|
+++ b/purple-websocket.c
|
||||||
|
@@ -463,7 +463,7 @@ static void ws_connect_cb(gpointer data, gint source, const gchar *error_message
|
||||||
|
}
|
||||||
|
|
||||||
|
PurpleWebsocket *purple_websocket_connect(PurpleAccount *account,
|
||||||
|
- const char *url, const char *protocol,
|
||||||
|
+ const char *url, const char *protocol, const char *cookies,
|
||||||
|
PurpleWebsocketCallback callback, void *user_data) {
|
||||||
|
gboolean ssl = FALSE;
|
||||||
|
|
||||||
|
@@ -510,9 +510,10 @@ PurpleWebsocket *purple_websocket_connect(PurpleAccount *account,
|
||||||
|
GET /%s HTTP/1.1\r\n\
|
||||||
|
Host: %s\r\n\
|
||||||
|
Connection: Upgrade\r\n\
|
||||||
|
+Cookie: %s\r\n\
|
||||||
|
Upgrade: websocket\r\n\
|
||||||
|
Sec-WebSocket-Key: %s\r\n\
|
||||||
|
-Sec-WebSocket-Version: 13\r\n", path, host, ws->key);
|
||||||
|
+Sec-WebSocket-Version: 13\r\n", path, host, cookies, ws->key);
|
||||||
|
if (protocol)
|
||||||
|
g_string_append_printf(request, "Sec-WebSocket-Protocol: %s\r\n", protocol);
|
||||||
|
g_string_append(request, "\r\n");
|
||||||
|
diff --git a/purple-websocket.h b/purple-websocket.h
|
||||||
|
index 0416750..0f3eae0 100644
|
||||||
|
--- a/purple-websocket.h
|
||||||
|
+++ b/purple-websocket.h
|
||||||
|
@@ -17,7 +17,7 @@ typedef enum _PurpleWebsocketOp {
|
||||||
|
|
||||||
|
typedef void (*PurpleWebsocketCallback)(PurpleWebsocket *ws, gpointer user_data, PurpleWebsocketOp op, const guchar *msg, size_t len);
|
||||||
|
|
||||||
|
-PurpleWebsocket *purple_websocket_connect(PurpleAccount *account, const char *url, const char *protocol, PurpleWebsocketCallback callback, void *user_data);
|
||||||
|
+PurpleWebsocket *purple_websocket_connect(PurpleAccount *account, const char *url, const char *protocol, const char *cookies, PurpleWebsocketCallback callback, void *user_data);
|
||||||
|
void purple_websocket_send(PurpleWebsocket *ws, PurpleWebsocketOp op, const guchar *msg, size_t len);
|
||||||
|
void purple_websocket_abort(PurpleWebsocket *ws);
|
||||||
|
|
||||||
|
diff --git a/slack-rtm.c b/slack-rtm.c
|
||||||
|
index d4ee8f2..f79b9e2 100644
|
||||||
|
--- a/slack-rtm.c
|
||||||
|
+++ b/slack-rtm.c
|
||||||
|
@@ -187,8 +187,13 @@ static gboolean rtm_connect_cb(SlackAccount *sa, gpointer data, json_value *json
|
||||||
|
slack_blist_init(sa);
|
||||||
|
|
||||||
|
slack_login_step(sa);
|
||||||
|
+
|
||||||
|
+ gchar *cookie = g_strdup_printf("d=%s", sa->d_cookie ? sa->d_cookie : "");
|
||||||
|
+
|
||||||
|
purple_debug_info("slack", "RTM URL: %s\n", url);
|
||||||
|
- sa->rtm = purple_websocket_connect(sa->account, url, NULL, rtm_cb, sa);
|
||||||
|
+ sa->rtm = purple_websocket_connect(sa->account, url, NULL, cookie, rtm_cb, sa);
|
||||||
|
+
|
||||||
|
+ free(cookie);
|
||||||
|
|
||||||
|
sa->ping_timer = purple_timeout_add_seconds(60, ping_timer, sa);
|
||||||
|
return FALSE;
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
self: super: {
|
self: super: {
|
||||||
purple-slack = super.purple-slack.overrideAttrs(old: {
|
purple-slack = super.purple-slack.overrideAttrs(old: {
|
||||||
version = "2023-01-19";
|
version = "2023-05-15";
|
||||||
|
|
||||||
src = super.fetchFromGitHub {
|
src = super.fetchFromGitHub {
|
||||||
owner = "dylex";
|
owner = "dylex";
|
||||||
repo = "slack-libpurple";
|
repo = "slack-libpurple";
|
||||||
rev = "6778b7c7ae28d9b62339262245c8ca7d11fb5a16";
|
rev = "1cfcf6694c0813d9362d31291e48b54fea1318b2";
|
||||||
sha256 = "sha256-smv2/bHLD5OJyUZhvgzqqzYO6NVWAY6d0dLamiXIEm4=";
|
sha256 = "ri6qFgWMVGQUse0A+q3VjvixoUC0zqCSMNw+vEIfgxI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Further ideas to add:
|
# Further ideas to add:
|
||||||
|
|
Loading…
Reference in a new issue