Skip to content

Commit

Permalink
Firefox Extension that enables Slack Huddles on Linux
Browse files Browse the repository at this point in the history
Slack blocks the use of huddles on Firefox for Linux. This extension
enables the use of huddles by spoofing a Windows user-agent.

This extension currently only works on Linux x86_64.
  • Loading branch information
nuxi committed May 8, 2023
0 parents commit 3e61993
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.xpi
13 changes: 13 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
release: clean prod
zip -r -FS slack.xpi *.json *.js

debug:
sed -i 's;\.slack\.com;.browserleaks.com;g' *.json *.js

prod production:
sed -i 's;\.browserleaks\.com;.slack.com;g' *.json *.js

clean:
rm -f slack.xpi

.PHONY: release debug prod production clean
23 changes: 23 additions & 0 deletions http.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"use strict";

/**
* Rewrite the User-Agent header to be Windows.
*/
function rewriteUserAgentHeader(e) {
for (let header of e.requestHeaders) {
if (header.name.toLowerCase() === "user-agent") {
header.value = header.value.replace("X11; Linux x86_64;", "Windows NT 10.0; Win64; x64;");
}
}
return {requestHeaders: e.requestHeaders};
}

/**
* Add rewriteUserAgentHeader as a listener to onBeforeSendHeaders,
* only for the target page.
*
* Make it "blocking" so we can modify the headers.
*/
browser.webRequest.onBeforeSendHeaders.addListener(rewriteUserAgentHeader,
{urls: ["*://*.slack.com/*"]},
["blocking", "requestHeaders"]);
17 changes: 17 additions & 0 deletions inject.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
function main() {
if (navigator.platform === "Linux x86_64") {
Object.defineProperties(navigator, {
'appVersion': {
value: "5.0 (Windows)"
},
'oscpu': {
value: "Windows NT 10.0; Win64; x64"
},
'platform': {
value: "Win32"
}
});
}
}

main();
34 changes: 34 additions & 0 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"manifest_version": 2,
"name": "Slack Huddles for Linux",
"version": "0.4",
"description": "Enables Slack Huddles on Linux via User-Agent spoofing.",

"browser_specific_settings": {
"gecko": {
"id": "slack@chaotic-neutral.org"
}
},

"permissions": [
"webRequest",
"webRequestBlocking",
"*://*.slack.com/*"
],

"web_accessible_resources": [
"inject.js"
],

"background": {
"scripts": ["http.js"]
},

"content_scripts": [
{
"matches": ["*://*.slack.com/*"],
"js": ["navigator.js"],
"run_at": "document_start"
}
]
}
7 changes: 7 additions & 0 deletions navigator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
function main() {
const script = document.createElement('script');
script.src = chrome.runtime.getURL('inject.js');
document.documentElement.appendChild(script);
}

main();

0 comments on commit 3e61993

Please sign in to comment.