summary refs log tree commit diff
path: root/assets/preload-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'assets/preload-plugins')
-rw-r--r--assets/preload-plugins/autoRegister.js62
-rw-r--r--assets/preload-plugins/fosscord-login.js12
-rw-r--r--assets/preload-plugins/webrtc.js74
3 files changed, 148 insertions, 0 deletions
diff --git a/assets/preload-plugins/autoRegister.js b/assets/preload-plugins/autoRegister.js
new file mode 100644
index 00000000..bb0b903d
--- /dev/null
+++ b/assets/preload-plugins/autoRegister.js
@@ -0,0 +1,62 @@
+// Auto register guest account:
+const prefix = [
+	"mysterious",
+	"adventurous",
+	"courageous",
+	"precious",
+	"cynical",
+	"flamer ",
+	"despicable",
+	"suspicious",
+	"gorgeous",
+	"impeccable",
+	"lovely",
+	"stunning",
+	"keyed",
+	"phoned",
+	"glorious",
+	"amazing",
+	"strange",
+	"arcane"
+];
+const suffix = [
+	"Anonymous",
+	"Boy",
+	"Lurker",
+	"Keyhitter",
+	"User",
+	"Enjoyer",
+	"Hunk",
+	"Coolstar",
+	"Wrestling",
+	"TylerTheCreator",
+	"Ad",
+	"Gamer",
+	"Games",
+	"Programmer"
+];
+
+Array.prototype.random = function () {
+	return this[Math.floor(Math.random() * this.length)];
+};
+
+function _generateName() {
+	return `${prefix.random()}${suffix.random()}`;
+}
+
+var token = JSON.parse(localStorage.getItem("token"));
+if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
+	fetch(`${window.GLOBAL_ENV.API_ENDPOINT}/auth/register`, {
+		method: "POST",
+		headers: { "content-type": "application/json" },
+		body: JSON.stringify({ username: `${_generateName()}`, consent: true }) //${Date.now().toString().slice(-4)}
+	})
+		.then((x) => x.json())
+		.then((x) => {
+			localStorage.setItem("token", `"${x.token}"`);
+			if (!window.localStorage) {
+				// client already loaded -> need to reload to apply the newly registered user token
+				location.reload();
+			}
+		});
+}
diff --git a/assets/preload-plugins/fosscord-login.js b/assets/preload-plugins/fosscord-login.js
new file mode 100644
index 00000000..38f82200
--- /dev/null
+++ b/assets/preload-plugins/fosscord-login.js
@@ -0,0 +1,12 @@
+// Remove `<link id="logincss" rel="stylesheet" href="/assets/fosscord-login.css" />` from header when we're not accessing `/login` or `/register`
+// fosscord-login.css replaces discord's TOS tooltip with something more fitting for fosscord, which when included in the main app, causes other tooltips
+// to be affected, which is potentially unwanted.
+//
+// This script removes fosscord-login.css when a user reloads the page. From testing, it appears fosscord already properly removes
+// fosscord-login.css after login is successful, but not if you reload the page after logging in. This script is to remove fosscord-login.css in
+// that specific case.
+
+var token = JSON.parse(localStorage.getItem("token"));
+if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
+	document.getElementById("logincss").remove();
+}
diff --git a/assets/preload-plugins/webrtc.js b/assets/preload-plugins/webrtc.js
new file mode 100644
index 00000000..1acd443a
--- /dev/null
+++ b/assets/preload-plugins/webrtc.js
@@ -0,0 +1,74 @@
+(this.webpackChunkdiscord_app = this.webpackChunkdiscord_app || []).push([
+	[[228974]],
+	{
+		632540: (module, exports, req) => {
+			window.find = (filter, options = {}) => {
+				const { cacheOnly = false } = options;
+				for (let i in req.c) {
+					if (req.c.hasOwnProperty(i)) {
+						let m = req.c[i].exports;
+						if (m && m.__esModule && m.default && filter(m.default)) return m.default;
+						if (m && filter(m)) return m;
+					}
+				}
+				if (cacheOnly) {
+					console.warn("Cannot find loaded module in cache");
+					return null;
+				}
+				console.warn("Cannot find loaded module in cache. Loading all modules may have unexpected side effects");
+				for (let i = 0; i < req.m.length; ++i) {
+					let m = req(i);
+					if (m && m.__esModule && m.default && filter(m.default)) return m.default;
+					if (m && filter(m)) return m;
+				}
+				console.warn("Cannot find module");
+				return null;
+			};
+			window.findByUniqueProperties = (propNames, options) =>
+				find((module) => propNames.every((prop) => module[prop] !== undefined), options);
+			window.findByDisplayName = (displayName, options) => find((module) => module.displayName === displayName, options);
+			window.req = req;
+
+			init();
+		}
+	},
+	(t) => t(632540)
+]);
+
+function retry(callback) {
+	return new Promise((resolve) => {
+		const interval = setInterval(() => {
+			const mod = callback();
+			if (!mod) return;
+
+			clearInterval(interval);
+			resolve(mod);
+		}, 50);
+	});
+}
+
+async function init() {
+	const SDP = await retry(() => findByUniqueProperties(["truncateSDP"]));
+	const StringManipulator = findByUniqueProperties(["uniq"]);
+
+	const truncateSDP = SDP.truncateSDP;
+	SDP.truncateSDP = (e) => {
+		const result = truncateSDP(e);
+		const i = result.codecs.find((x) => x.name === "VP8");
+		const a = new RegExp("^a=ice|a=extmap|opus|VP8|fingerprint|" + i?.rtxPayloadType + " rtx", "i");
+		return {
+			sdp: StringManipulator(e)
+				.split(/\r\n/)
+				.filter(function (e) {
+					return a.test(e);
+				})
+				.uniq()
+				.join("\n"),
+			codecs: result.codecs
+		};
+	};
+	// SDP.generateUnifiedSessionDescription = (e) => {
+	// 	console.log(e);
+	// 	return new RTCSessionDescription({ sdp: e.baseSDP.replace(/sendonly/g, "recvonly"), type: "answer" });
+	// };
+}
\ No newline at end of file