diff --git a/Dockerfile b/Dockerfile index d90a6e952..ced0eef1d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,4 +9,4 @@ RUN npm install COPY . . -CMD [ "node", "index.js" ] +CMD [ "node", "index.js" ] \ No newline at end of file diff --git a/index.js b/index.js index 41de1b134..4f006c353 100644 --- a/index.js +++ b/index.js @@ -1,89 +1,85 @@ -import express from 'express' -import basicAuth from 'express-basic-auth' -import http from 'node:http' -import { createBareServer } from '@tomphttp/bare-server-node' -import path from 'node:path' -import cors from 'cors' -import config from './config.js' - -const __dirname = process.cwd() -const server = http.createServer() -const app = express(server) -const bareServer = createBareServer('/o/') -const PORT = process.env.PORT || 8080 +import express from "express"; +import basicAuth from "express-basic-auth"; +import http from "node:http"; +import { createBareServer } from "@tomphttp/bare-server-node"; +import path from "node:path"; +import cors from "cors"; +import config from "./config.js"; + +const __dirname = process.cwd(); +const server = http.createServer(); +const app = express(server); +const bareServer = createBareServer("/o/"); +const PORT = process.env.PORT || 8080; if (config.challenge) { - console.log('Password protection is enabled. Usernames are: ' + Object.keys(config.users)) - console.log('Passwords are: ' + Object.values(config.users)) + console.log("Password protection is enabled. Usernames are: " + Object.keys(config.users)); + console.log("Passwords are: " + Object.values(config.users)); app.use( basicAuth({ users: config.users, challenge: true, }) - ) + ); } -app.use(express.json()) -app.use(express.urlencoded({ extended: true })) -app.use(cors()) -app.use(express.static(path.join(__dirname, 'static'))) +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); +app.use(cors()); +app.use(express.static(path.join(__dirname, "static"))); if (config.routes !== false) { const routes = [ - { path: '/ap', file: 'apps.html' }, - { path: '/g', file: 'games.html' }, - { path: '/s', file: 'settings.html' }, - { path: '/t', file: 'tabs.html' }, - { path: '/p', file: 'go.html' }, - { path: '/', file: 'index.html' }, - { path: '/tos', file: 'tos.html' }, - ] + { path: "/ap", file: "apps.html" }, + { path: "/g", file: "games.html" }, + { path: "/s", file: "settings.html" }, + { path: "/t", file: "tabs.html" }, + { path: "/p", file: "go.html" }, + { path: "/", file: "index.html" }, + { path: "/tos", file: "tos.html" }, + ]; routes.forEach((route) => { app.get(route.path, (req, res) => { - res.sendFile(path.join(__dirname, 'static', route.file)) - }) - }) + res.sendFile(path.join(__dirname, "static", route.file)); + }); + }); } if (config.local !== false) { - app.get('/e/*', (req, res, next) => { - const baseUrls = [ - 'https://raw.githubusercontent.com/v-5x/x/fixy', - 'https://raw.githubusercontent.com/ypxa/y/main', - 'https://raw.githubusercontent.com/ypxa/w/master', - ] - fetchData(req, res, next, baseUrls) - }) + app.get("/e/*", (req, res, next) => { + const baseUrls = ["https://raw.githubusercontent.com/v-5x/x/fixy", "https://raw.githubusercontent.com/ypxa/y/main", "https://raw.githubusercontent.com/ypxa/w/master"]; + fetchData(req, res, next, baseUrls); + }); } const fetchData = async (req, res, next, baseUrls) => { try { - const reqTarget = baseUrls.map((baseUrl) => `${baseUrl}/${req.params[0]}`) - let data - let asset + const reqTarget = baseUrls.map((baseUrl) => `${baseUrl}/${req.params[0]}`); + let data; + let asset; for (const target of reqTarget) { - asset = await fetch(target) + asset = await fetch(target); if (asset.ok) { - data = await asset.arrayBuffer() - break + data = await asset.arrayBuffer(); + break; } } if (data) { - res.end(Buffer.from(data)) + res.end(Buffer.from(data)); } else { - res.status(404).send() + res.status(404).send(); } } catch (error) { - console.error(`Error fetching ${req.url}:`, error) - res.status(500).send() + console.error(`Error fetching ${req.url}:`, error); + res.status(500).send(); } -} +}; -app.get('*', (req, res) => { +app.get("*", (req, res) => { res.status(404).send(); }); @@ -92,26 +88,26 @@ app.use((err, req, res, next) => { res.status(500).send(); }); -server.on('request', (req, res) => { +server.on("request", (req, res) => { if (bareServer.shouldRoute(req)) { - bareServer.routeRequest(req, res) + bareServer.routeRequest(req, res); } else { - app(req, res) + app(req, res); } -}) +}); -server.on('upgrade', (req, socket, head) => { +server.on("upgrade", (req, socket, head) => { if (bareServer.shouldRoute(req)) { - bareServer.routeUpgrade(req, socket, head) + bareServer.routeUpgrade(req, socket, head); } else { - socket.end() + socket.end(); } -}) +}); -server.on('listening', () => { - console.log(`Running at http://localhost:${PORT}`) -}) +server.on("listening", () => { + console.log(`Running at http://localhost:${PORT}`); +}); server.listen({ port: PORT, -}) +}); \ No newline at end of file diff --git a/package.json b/package.json index 22ef66209..c8ab737af 100644 --- a/package.json +++ b/package.json @@ -22,4 +22,4 @@ "devDependencies": { "prettier": "3.2.5" } -} +} \ No newline at end of file diff --git a/static/apps.html b/static/apps.html index ed599a4a4..8ede5e4c8 100644 --- a/static/apps.html +++ b/static/apps.html @@ -1,4 +1,4 @@ - + @@ -42,15 +42,15 @@
- + \ No newline at end of file diff --git a/static/assets/json/a.json b/static/assets/json/a.json index d62688b93..9eecadb8c 100644 --- a/static/assets/json/a.json +++ b/static/assets/json/a.json @@ -349,4 +349,4 @@ "categories": ["all"], "error": "true" } -] +] \ No newline at end of file diff --git a/static/assets/media/background/full2.png b/static/assets/media/background/full2.png index 122f5ab64..925285318 100644 Binary files a/static/assets/media/background/full2.png and b/static/assets/media/background/full2.png differ diff --git a/static/assets/media/background/wallpaper.jpg b/static/assets/media/background/wallpaper.jpg index 9f13888a6..c58e08420 100644 Binary files a/static/assets/media/background/wallpaper.jpg and b/static/assets/media/background/wallpaper.jpg differ diff --git a/static/assets/media/favicon/britannica.png b/static/assets/media/favicon/britannica.png index e052cdd05..741423570 100644 Binary files a/static/assets/media/favicon/britannica.png and b/static/assets/media/favicon/britannica.png differ diff --git a/static/assets/media/favicon/campus.png b/static/assets/media/favicon/campus.png index 256f46f28..3e7e98629 100644 Binary files a/static/assets/media/favicon/campus.png and b/static/assets/media/favicon/campus.png differ diff --git a/static/assets/media/favicon/canvas.png b/static/assets/media/favicon/canvas.png index 07bc16d0d..cfc21335b 100644 Binary files a/static/assets/media/favicon/canvas.png and b/static/assets/media/favicon/canvas.png differ diff --git a/static/assets/media/favicon/classlink-login.png b/static/assets/media/favicon/classlink-login.png index 6a1d468a0..d8ab1b402 100644 Binary files a/static/assets/media/favicon/classlink-login.png and b/static/assets/media/favicon/classlink-login.png differ diff --git a/static/assets/media/favicon/classroom.png b/static/assets/media/favicon/classroom.png index 655314727..12fdf45f4 100644 Binary files a/static/assets/media/favicon/classroom.png and b/static/assets/media/favicon/classroom.png differ diff --git a/static/assets/media/favicon/clever.png b/static/assets/media/favicon/clever.png index 7147a1867..8f35b79b4 100644 Binary files a/static/assets/media/favicon/clever.png and b/static/assets/media/favicon/clever.png differ diff --git a/static/assets/media/favicon/deltamath.png b/static/assets/media/favicon/deltamath.png index 37f456bcf..c4d715a5c 100644 Binary files a/static/assets/media/favicon/deltamath.png and b/static/assets/media/favicon/deltamath.png differ diff --git a/static/assets/media/favicon/drive.png b/static/assets/media/favicon/drive.png index ff8e082fb..6ca65c778 100644 Binary files a/static/assets/media/favicon/drive.png and b/static/assets/media/favicon/drive.png differ diff --git a/static/assets/media/favicon/ducksters.png b/static/assets/media/favicon/ducksters.png index 4295f6f4e..e14a4d978 100644 Binary files a/static/assets/media/favicon/ducksters.png and b/static/assets/media/favicon/ducksters.png differ diff --git a/static/assets/media/favicon/edpuzzle.png b/static/assets/media/favicon/edpuzzle.png index e1855d8ab..45c54b4f1 100644 Binary files a/static/assets/media/favicon/edpuzzle.png and b/static/assets/media/favicon/edpuzzle.png differ diff --git a/static/assets/media/favicon/favicon.png b/static/assets/media/favicon/favicon.png index f53ce9357..7df3d8a28 100644 Binary files a/static/assets/media/favicon/favicon.png and b/static/assets/media/favicon/favicon.png differ diff --git a/static/assets/media/favicon/gmail.png b/static/assets/media/favicon/gmail.png index 8cdffec4a..765cb6bfa 100644 Binary files a/static/assets/media/favicon/gmail.png and b/static/assets/media/favicon/gmail.png differ diff --git a/static/assets/media/favicon/goguardian-lock.png b/static/assets/media/favicon/goguardian-lock.png index d218e27da..b7ff217d6 100644 Binary files a/static/assets/media/favicon/goguardian-lock.png and b/static/assets/media/favicon/goguardian-lock.png differ diff --git a/static/assets/media/favicon/goguardian.png b/static/assets/media/favicon/goguardian.png index 8dcf71d80..45e9d9723 100644 Binary files a/static/assets/media/favicon/goguardian.png and b/static/assets/media/favicon/goguardian.png differ diff --git a/static/assets/media/favicon/google-meet.png b/static/assets/media/favicon/google-meet.png index 3494c1245..440eceb42 100644 Binary files a/static/assets/media/favicon/google-meet.png and b/static/assets/media/favicon/google-meet.png differ diff --git a/static/assets/media/favicon/google.png b/static/assets/media/favicon/google.png index 773e0a12e..e4933e295 100644 Binary files a/static/assets/media/favicon/google.png and b/static/assets/media/favicon/google.png differ diff --git a/static/assets/media/favicon/googleforms.png b/static/assets/media/favicon/googleforms.png index 83bb5e7d0..127f2888c 100644 Binary files a/static/assets/media/favicon/googleforms.png and b/static/assets/media/favicon/googleforms.png differ diff --git a/static/assets/media/favicon/ixl.png b/static/assets/media/favicon/ixl.png index eed534272..630a4987f 100644 Binary files a/static/assets/media/favicon/ixl.png and b/static/assets/media/favicon/ixl.png differ diff --git a/static/assets/media/favicon/kami.png b/static/assets/media/favicon/kami.png index 833fce231..1167ccb8b 100644 Binary files a/static/assets/media/favicon/kami.png and b/static/assets/media/favicon/kami.png differ diff --git a/static/assets/media/favicon/khan.png b/static/assets/media/favicon/khan.png index 36013515c..47bdbd8ed 100644 Binary files a/static/assets/media/favicon/khan.png and b/static/assets/media/favicon/khan.png differ diff --git a/static/assets/media/favicon/main.png b/static/assets/media/favicon/main.png index 77c72dbe8..4361b309d 100644 Binary files a/static/assets/media/favicon/main.png and b/static/assets/media/favicon/main.png differ diff --git a/static/assets/media/favicon/main_inverted.png b/static/assets/media/favicon/main_inverted.png index 1b67c981c..b9f2daf1e 100644 Binary files a/static/assets/media/favicon/main_inverted.png and b/static/assets/media/favicon/main_inverted.png differ diff --git a/static/assets/media/favicon/minga.png b/static/assets/media/favicon/minga.png index af6e2ab5f..9d86aec1d 100644 Binary files a/static/assets/media/favicon/minga.png and b/static/assets/media/favicon/minga.png differ diff --git a/static/assets/media/favicon/nearpod.png b/static/assets/media/favicon/nearpod.png index 2c1bc3272..011d3acbd 100644 Binary files a/static/assets/media/favicon/nearpod.png and b/static/assets/media/favicon/nearpod.png differ diff --git a/static/assets/media/favicon/newsela.png b/static/assets/media/favicon/newsela.png index 1660476d1..67d0b547e 100644 Binary files a/static/assets/media/favicon/newsela.png and b/static/assets/media/favicon/newsela.png differ diff --git a/static/assets/media/favicon/noredink.webp b/static/assets/media/favicon/noredink.webp index f427fc4a5..74b9ee1a7 100644 Binary files a/static/assets/media/favicon/noredink.webp and b/static/assets/media/favicon/noredink.webp differ diff --git a/static/assets/media/favicon/powerschool.png b/static/assets/media/favicon/powerschool.png index f80166fbc..2b2681cb1 100644 Binary files a/static/assets/media/favicon/powerschool.png and b/static/assets/media/favicon/powerschool.png differ diff --git a/static/assets/media/favicon/schoology.png b/static/assets/media/favicon/schoology.png index 9027a9083..1c6ea48b2 100644 Binary files a/static/assets/media/favicon/schoology.png and b/static/assets/media/favicon/schoology.png differ diff --git a/static/assets/media/favicon/worldhistoryencyclopedia.png b/static/assets/media/favicon/worldhistoryencyclopedia.png index 8782d5253..500985784 100644 Binary files a/static/assets/media/favicon/worldhistoryencyclopedia.png and b/static/assets/media/favicon/worldhistoryencyclopedia.png differ diff --git a/static/assets/scripts/a.js b/static/assets/scripts/a.js index cb9ee6aad..c548932b4 100644 --- a/static/assets/scripts/a.js +++ b/static/assets/scripts/a.js @@ -1,295 +1,293 @@ -let appInd +let appInd; function saveToLocal(path) { - sessionStorage.setItem('GoUrl', path) + sessionStorage.setItem("GoUrl", path); } function handleClick(app) { - if (typeof app.say !== 'undefined') { - alert(app.say) + if (typeof app.say !== "undefined") { + alert(app.say); } if (app.local) { - saveToLocal(app.link) - window.location.href = 'p' + saveToLocal(app.link); + window.location.href = "p"; } else if (app.local2) { - saveToLocal(app.link) - window.location.href = app.link + saveToLocal(app.link); + window.location.href = app.link; } else if (app.blank) { - blank(app.link) + blank(app.link); } else if (app.now) { - now(app.link) + now(app.link); } else if (app.custom) { - Custom(app) + Custom(app); } else if (app.dy) { - dy(app.link) + dy(app.link); } else { - go(app.link) + go(app.link); } - return false + return false; } function CustomApp(customApp) { - let apps = localStorage.getItem('Acustom') + let apps = localStorage.getItem("Acustom"); if (apps === null) { - apps = {} + apps = {}; } else { - apps = JSON.parse(apps) + apps = JSON.parse(apps); } - const key = 'custom' + (Object.keys(apps).length + 1) + const key = "custom" + (Object.keys(apps).length + 1); - apps[key] = customApp + apps[key] = customApp; - localStorage.setItem('Acustom', JSON.stringify(apps)) + localStorage.setItem("Acustom", JSON.stringify(apps)); } function setPin(index) { - let pins = localStorage.getItem('Apinned') + let pins = localStorage.getItem("Apinned"); if (pins == null) { - pins = [] + pins = []; } - if (pins == '') { - pins = [] + if (pins == "") { + pins = []; } else { - pins = pins.split(',').map(Number) + pins = pins.split(",").map(Number); } if (pinContains(index, pins)) { - let remove = pins.indexOf(index) - pins.splice(remove, 1) + let remove = pins.indexOf(index); + pins.splice(remove, 1); } else { - pins.push(index) + pins.push(index); } - localStorage.setItem('Apinned', pins) - location.reload() + localStorage.setItem("Apinned", pins); + location.reload(); } function pinContains(i, p) { - if (p == '') { - return false + if (p == "") { + return false; } for (var x = 0; x < p.length; x++) { if (p[x] === i) { - return true + return true; } } - return false + return false; } function Custom(app) { - const title = prompt('Enter title for the app:') - const link = prompt('Enter link for the app:') + const title = prompt("Enter title for the app:"); + const link = prompt("Enter link for the app:"); if (title && link) { const customApp = { - name: '[Custom] ' + title, + name: "[Custom] " + title, link: link, - image: '/assets/media/icons/custom.webp', + image: "/assets/media/icons/custom.webp", custom: false, - } + }; - CustomApp(customApp) - initializeCustomApp(customApp) + CustomApp(customApp); + initializeCustomApp(customApp); } } function initializeCustomApp(customApp) { - const columnDiv = document.createElement('div') - columnDiv.classList.add('column') - columnDiv.setAttribute('data-category', 'all') - - const pinIcon = document.createElement('i') - pinIcon.classList.add('fa', 'fa-map-pin') - pinIcon.ariaHidden = true - - const btn = document.createElement('button') - btn.appendChild(pinIcon) - btn.style.float = 'right' - btn.style.backgroundColor = 'rgb(45,45,45)' - btn.style.borderRadius = '50%' - btn.style.borderColor = 'transparent' - btn.style.color = 'white' - btn.style.top = '-200px' - btn.style.position = 'relative' + const columnDiv = document.createElement("div"); + columnDiv.classList.add("column"); + columnDiv.setAttribute("data-category", "all"); + + const pinIcon = document.createElement("i"); + pinIcon.classList.add("fa", "fa-map-pin"); + pinIcon.ariaHidden = true; + + const btn = document.createElement("button"); + btn.appendChild(pinIcon); + btn.style.float = "right"; + btn.style.backgroundColor = "rgb(45,45,45)"; + btn.style.borderRadius = "50%"; + btn.style.borderColor = "transparent"; + btn.style.color = "white"; + btn.style.top = "-200px"; + btn.style.position = "relative"; btn.onclick = function () { - setPin(appInd) - } - btn.title = 'Pin' + setPin(appInd); + }; + btn.title = "Pin"; - const linkElem = document.createElement('a') + const linkElem = document.createElement("a"); linkElem.onclick = function () { - handleClick(customApp) - } + handleClick(customApp); + }; - const image = document.createElement('img') - image.width = 145 - image.height = 145 - image.src = customApp.image - image.loading = 'lazy' + const image = document.createElement("img"); + image.width = 145; + image.height = 145; + image.src = customApp.image; + image.loading = "lazy"; - const paragraph = document.createElement('p') - paragraph.textContent = customApp.name + const paragraph = document.createElement("p"); + paragraph.textContent = customApp.name; - linkElem.appendChild(image) - linkElem.appendChild(paragraph) - columnDiv.appendChild(linkElem) - columnDiv.appendChild(btn) + linkElem.appendChild(image); + linkElem.appendChild(paragraph); + columnDiv.appendChild(linkElem); + columnDiv.appendChild(btn); - const nonPinnedApps = document.querySelector('.container-apps') - nonPinnedApps.insertBefore(columnDiv, nonPinnedApps.firstChild) + const nonPinnedApps = document.querySelector(".container-apps"); + nonPinnedApps.insertBefore(columnDiv, nonPinnedApps.firstChild); } -document.addEventListener('DOMContentLoaded', () => { - const storedApps = JSON.parse(localStorage.getItem('Acustom')) +document.addEventListener("DOMContentLoaded", () => { + const storedApps = JSON.parse(localStorage.getItem("Acustom")); if (storedApps) { Object.values(storedApps).forEach((app) => { - initializeCustomApp(app) - }) + initializeCustomApp(app); + }); } - fetch('/assets/json/a.min.json') + fetch("/assets/json/a.min.json") .then((response) => { - return response.json() + return response.json(); }) .then((appsList) => { appsList.sort((a, b) => { - if (a.name.startsWith('[Custom]')) return -1 - if (b.name.startsWith('[Custom]')) return 1 - return a.name.localeCompare(b.name) - }) - const nonPinnedApps = document.querySelector('.container-apps') - const pinnedApps = document.querySelector('.pinned-apps') - var pinList = localStorage.getItem('Apinned') || '' - pinList = pinList ? pinList.split(',').map(Number) : [] - appInd = 0 + if (a.name.startsWith("[Custom]")) return -1; + if (b.name.startsWith("[Custom]")) return 1; + return a.name.localeCompare(b.name); + }); + const nonPinnedApps = document.querySelector(".container-apps"); + const pinnedApps = document.querySelector(".pinned-apps"); + var pinList = localStorage.getItem("Apinned") || ""; + pinList = pinList ? pinList.split(",").map(Number) : []; + appInd = 0; appsList.forEach((app) => { - if (app.categories && app.categories.includes('local')) { - app.local = true - } else if (app.link && (app.link.includes('now.gg') || app.link.includes('nowgg.me'))) { + if (app.categories && app.categories.includes("local")) { + app.local = true; + } else if (app.link && (app.link.includes("now.gg") || app.link.includes("nowgg.me"))) { if (app.partial === null || app.partial === undefined) { - app.partial = true - app.say = 'Now.gg is currently not working for some users.' + app.partial = true; + app.say = "Now.gg is currently not working for some users."; } - } else if (app.link && app.link.includes('nowgg.nl')) { + } else if (app.link && app.link.includes("nowgg.nl")) { if (app.error === null || app.error === undefined) { - app.error = true - app.say = 'NowGG.nl is currently down.' + app.error = true; + app.say = "NowGG.nl is currently down."; } } - let pinNum = appInd - - const columnDiv = document.createElement('div') - columnDiv.classList.add('column') - columnDiv.setAttribute('data-category', app.categories.join(' ')) - - const pinIcon = document.createElement('i') - pinIcon.classList.add('fa', 'fa-map-pin') - pinIcon.ariaHidden = true - - const btn = document.createElement('button') - btn.appendChild(pinIcon) - btn.style.float = 'right' - btn.style.backgroundColor = 'rgb(45,45,45)' - btn.style.borderRadius = '50%' - btn.style.borderColor = 'transparent' - btn.style.color = 'white' - btn.style.top = '-200px' - btn.style.position = 'relative' + let pinNum = appInd; + + const columnDiv = document.createElement("div"); + columnDiv.classList.add("column"); + columnDiv.setAttribute("data-category", app.categories.join(" ")); + + const pinIcon = document.createElement("i"); + pinIcon.classList.add("fa", "fa-map-pin"); + pinIcon.ariaHidden = true; + + const btn = document.createElement("button"); + btn.appendChild(pinIcon); + btn.style.float = "right"; + btn.style.backgroundColor = "rgb(45,45,45)"; + btn.style.borderRadius = "50%"; + btn.style.borderColor = "transparent"; + btn.style.color = "white"; + btn.style.top = "-200px"; + btn.style.position = "relative"; btn.onclick = function () { - setPin(pinNum) - } - btn.title = 'Pin' + setPin(pinNum); + }; + btn.title = "Pin"; - const link = document.createElement('a') + const link = document.createElement("a"); link.onclick = function () { - handleClick(app) - } + handleClick(app); + }; - const image = document.createElement('img') - image.width = 145 - image.height = 145 - image.src = app.image - image.loading = 'lazy' + const image = document.createElement("img"); + image.width = 145; + image.height = 145; + image.src = app.image; + image.loading = "lazy"; - const paragraph = document.createElement('p') - paragraph.textContent = app.name + const paragraph = document.createElement("p"); + paragraph.textContent = app.name; if (app.error) { - paragraph.style.color = 'red' + paragraph.style.color = "red"; if (!app.say) { - app.say = 'This app is currently not working.' + app.say = "This app is currently not working."; } } else if (app.partial) { - paragraph.style.color = 'yellow' + paragraph.style.color = "yellow"; if (!app.say) { - app.say = 'This app is currently experiencing some issues, it may not work for you.' + app.say = "This app is currently experiencing some issues, it may not work for you."; } } - link.appendChild(image) - link.appendChild(paragraph) - columnDiv.appendChild(link) + link.appendChild(image); + link.appendChild(paragraph); + columnDiv.appendChild(link); if (appInd != 0) { - columnDiv.appendChild(btn) + columnDiv.appendChild(btn); } if (pinList != null && appInd != 0) { if (pinContains(appInd, pinList)) { - pinnedApps.appendChild(columnDiv) + pinnedApps.appendChild(columnDiv); } else { - nonPinnedApps.appendChild(columnDiv) + nonPinnedApps.appendChild(columnDiv); } } else { - nonPinnedApps.appendChild(columnDiv) + nonPinnedApps.appendChild(columnDiv); } - appInd++ - }) + appInd++; + }); - const appsContainer = document.getElementById('apps-container') - appsContainer.appendChild(pinnedApps) - appsContainer.appendChild(nonPinnedApps) + const appsContainer = document.getElementById("apps-container"); + appsContainer.appendChild(pinnedApps); + appsContainer.appendChild(nonPinnedApps); }) .catch((error) => { - console.error('Error fetching JSON data:', error) - }) -}) + console.error("Error fetching JSON data:", error); + }); +}); function show_category() { - var selectedCategories = Array.from(document.querySelectorAll('#category option:checked')).map( - (option) => option.value - ) - var games = document.getElementsByClassName('column') + var selectedCategories = Array.from(document.querySelectorAll("#category option:checked")).map((option) => option.value); + var games = document.getElementsByClassName("column"); for (var i = 0; i < games.length; i++) { - var game = games[i] - var categories = game.getAttribute('data-category').split(' ') + var game = games[i]; + var categories = game.getAttribute("data-category").split(" "); if (selectedCategories.length === 0 || selectedCategories.some((category) => categories.includes(category))) { - game.style.display = 'block' + game.style.display = "block"; } else { - game.style.display = 'none' + game.style.display = "none"; } } } function search_bar() { - var input = document.getElementById('searchbarbottom') - var filter = input.value.toLowerCase() - var games = document.getElementsByClassName('column') + var input = document.getElementById("searchbarbottom"); + var filter = input.value.toLowerCase(); + var games = document.getElementsByClassName("column"); for (var i = 0; i < games.length; i++) { - var game = games[i] - var name = game.getElementsByTagName('p')[0].textContent.toLowerCase() + var game = games[i]; + var name = game.getElementsByTagName("p")[0].textContent.toLowerCase(); if (name.includes(filter)) { - game.style.display = 'block' + game.style.display = "block"; } else { - game.style.display = 'none' + game.style.display = "none"; } } -} +} \ No newline at end of file diff --git a/static/assets/scripts/frame.js b/static/assets/scripts/frame.js index ab93d3a68..4d8938b5a 100644 --- a/static/assets/scripts/frame.js +++ b/static/assets/scripts/frame.js @@ -1,54 +1,54 @@ -const iframe = document.getElementById('ifra') +const iframe = document.getElementById("ifra"); -if (navigator.userAgent.includes('Chrome')) { - window.addEventListener('resize', function () { - navigator.keyboard.lock(['Escape']) - }) +if (navigator.userAgent.includes("Chrome")) { + window.addEventListener("resize", function () { + navigator.keyboard.lock(["Escape"]); + }); } // Iframe window.onload = function () { - let GoUrl = sessionStorage.getItem('GoUrl') - let dyValue = localStorage.getItem('dy') + let GoUrl = sessionStorage.getItem("GoUrl"); + let dyValue = localStorage.getItem("dy"); - if (!GoUrl.startsWith('/e/')) { - if (dyValue === 'true' || dyValue === 'auto') { - GoUrl = '/a/q/' + GoUrl + if (!GoUrl.startsWith("/e/")) { + if (dyValue === "true" || dyValue === "auto") { + GoUrl = "/a/q/" + GoUrl; } else { - GoUrl = '/a/' + GoUrl + GoUrl = "/a/" + GoUrl; } } - console.log(GoUrl) + console.log(GoUrl); if (iframe) { - iframe.src = GoUrl + iframe.src = GoUrl; } -} +}; // Decode URL function decodeXor(input) { - if (!input) return input - let [str, ...search] = input.split('?') + if (!input) return input; + let [str, ...search] = input.split("?"); return ( decodeURIComponent(str) - .split('') + .split("") .map((char, ind) => (ind % 2 ? String.fromCharCode(char.charCodeAt(NaN) ^ 2) : char)) - .join('') + (search.length ? '?' + search.join('?') : '') - ) + .join("") + (search.length ? "?" + search.join("?") : "") + ); } function iframeLoad() { - if (document.readyState === 'complete') { - const website = iframe.contentWindow?.location.href.replace(window.location.origin, '') - - if (website.includes('/a/')) { - const website = iframe.contentWindow?.location.href.replace(window.location.origin, '').replace('/a/', '') - document.getElementById('is').value = decodeXor(website) - localStorage.setItem('decoded', decodeXor(website)) - } else if (website.includes('/a/q/')) { - const website = iframe.contentWindow?.location.href.replace(window.location.origin, '').replace('/a/q/', '') - document.getElementById('is').value = decodeXor(website) - localStorage.setItem('decoded', decodeXor(website)) + if (document.readyState === "complete") { + const website = iframe.contentWindow?.location.href.replace(window.location.origin, ""); + + if (website.includes("/a/")) { + const website = iframe.contentWindow?.location.href.replace(window.location.origin, "").replace("/a/", ""); + document.getElementById("is").value = decodeXor(website); + localStorage.setItem("decoded", decodeXor(website)); + } else if (website.includes("/a/q/")) { + const website = iframe.contentWindow?.location.href.replace(window.location.origin, "").replace("/a/q/", ""); + document.getElementById("is").value = decodeXor(website); + localStorage.setItem("decoded", decodeXor(website)); } } } @@ -56,94 +56,94 @@ function iframeLoad() { // Reload function reload() { if (iframe) { - iframe.src = iframe.src + iframe.src = iframe.src; } } // Popout function popout() { - const newWindow = window.open('about:blank', '_blank') + const newWindow = window.open("about:blank", "_blank"); if (newWindow) { - const name = localStorage.getItem('name') || 'My Drive - Google Drive' - const icon = localStorage.getItem('icon') || 'https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png' + const name = localStorage.getItem("name") || "My Drive - Google Drive"; + const icon = localStorage.getItem("icon") || "https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png"; - newWindow.document.title = name + newWindow.document.title = name; - const link = newWindow.document.createElement('link') - link.rel = 'icon' - link.href = encodeURI(icon) - newWindow.document.head.appendChild(link) + const link = newWindow.document.createElement("link"); + link.rel = "icon"; + link.href = encodeURI(icon); + newWindow.document.head.appendChild(link); - const newIframe = newWindow.document.createElement('iframe') - const style = newIframe.style - style.position = 'fixed' - style.top = style.bottom = style.left = style.right = 0 - style.border = style.outline = 'none' - style.width = style.height = '100%' + const newIframe = newWindow.document.createElement("iframe"); + const style = newIframe.style; + style.position = "fixed"; + style.top = style.bottom = style.left = style.right = 0; + style.border = style.outline = "none"; + style.width = style.height = "100%"; - newIframe.src = iframe.src + newIframe.src = iframe.src; - newWindow.document.body.appendChild(newIframe) + newWindow.document.body.appendChild(newIframe); } } // Eruda function erudaToggle() { - if (!iframe) return + if (!iframe) return; - const erudaWindow = iframe.contentWindow - const erudaDocument = iframe.contentDocument + const erudaWindow = iframe.contentWindow; + const erudaDocument = iframe.contentDocument; - if (!erudaWindow || !erudaDocument) return + if (!erudaWindow || !erudaDocument) return; if (erudaWindow.eruda?._isInit) { - erudaWindow.eruda.destroy() + erudaWindow.eruda.destroy(); } else { - let script = erudaDocument.createElement('script') - script.src = 'https://cdn.jsdelivr.net/npm/eruda' + let script = erudaDocument.createElement("script"); + script.src = "https://cdn.jsdelivr.net/npm/eruda"; script.onload = function () { - if (!erudaWindow) return - erudaWindow.eruda.init() - erudaWindow.eruda.show() - } - erudaDocument.head.appendChild(script) + if (!erudaWindow) return; + erudaWindow.eruda.init(); + erudaWindow.eruda.show(); + }; + erudaDocument.head.appendChild(script); } } // Fullscreen -const fullscreenButton = document.getElementById('fullscreen-button') -fullscreenButton.addEventListener('click', function () { +const fullscreenButton = document.getElementById("fullscreen-button"); +fullscreenButton.addEventListener("click", function () { if (!document.fullscreenElement) { - document.documentElement.requestFullscreen() + document.documentElement.requestFullscreen(); } else { - document.exitFullscreen() + document.exitFullscreen(); } -}) +}); // Home -const homeButton = document.getElementById('home-page') -homeButton.addEventListener('click', function () { - window.location.href = './' -}) +const homeButton = document.getElementById("home-page"); +homeButton.addEventListener("click", function () { + window.location.href = "./"; +}); // Back function goBack() { if (iframe) { - iframe.contentWindow.history.back() + iframe.contentWindow.history.back(); } else { - console.error('No iframe found') + console.error("No iframe found"); } } // Forward function goForward() { if (iframe) { - iframe.contentWindow.history.forward() + iframe.contentWindow.history.forward(); } else { - console.error('No iframe found') + console.error("No iframe found"); } } // Remove Nav -document.addEventListener('fullscreenchange', function () { - const isFullscreen = Boolean(document.fullscreenElement) - document.body.classList.toggle('fullscreen', isFullscreen) -}) +document.addEventListener("fullscreenchange", function () { + const isFullscreen = Boolean(document.fullscreenElement); + document.body.classList.toggle("fullscreen", isFullscreen); +}); /* // Now @@ -204,4 +204,4 @@ function now() { } else { console.log('Decoded not found in localStorage.') } -} */ +} */ \ No newline at end of file diff --git a/static/assets/scripts/g.js b/static/assets/scripts/g.js index 27507d4e6..c0a477773 100644 --- a/static/assets/scripts/g.js +++ b/static/assets/scripts/g.js @@ -1,294 +1,292 @@ -let appInd +let appInd; function saveToLocal(path) { - sessionStorage.setItem('GoUrl', path) + sessionStorage.setItem("GoUrl", path); } function handleClick(app) { - if (typeof app.say !== 'undefined') { - alert(app.say) + if (typeof app.say !== "undefined") { + alert(app.say); } if (app.local) { - saveToLocal(app.link) - window.location.href = 'p' + saveToLocal(app.link); + window.location.href = "p"; } else if (app.local2) { - saveToLocal(app.link) - window.location.href = app.link + saveToLocal(app.link); + window.location.href = app.link; } else if (app.blank) { - blank(app.link) + blank(app.link); } else if (app.now) { - now(app.link) + now(app.link); } else if (app.custom) { - Custom(app) + Custom(app); } else if (app.dy) { - dy(app.link) + dy(app.link); } else { - go(app.link) + go(app.link); } - return false + return false; } function CustomApp(customApp) { - let apps = localStorage.getItem('Gcustom') + let apps = localStorage.getItem("Gcustom"); if (apps === null) { - apps = {} + apps = {}; } else { - apps = JSON.parse(apps) + apps = JSON.parse(apps); } - const key = 'custom' + (Object.keys(apps).length + 1) + const key = "custom" + (Object.keys(apps).length + 1); - apps[key] = customApp + apps[key] = customApp; - localStorage.setItem('Gcustom', JSON.stringify(apps)) + localStorage.setItem("Gcustom", JSON.stringify(apps)); } function setPin(index) { - let pins = localStorage.getItem('Gpinned') + let pins = localStorage.getItem("Gpinned"); if (pins == null) { - pins = [] + pins = []; } - if (pins == '') { - pins = [] + if (pins == "") { + pins = []; } else { - pins = pins.split(',').map(Number) + pins = pins.split(",").map(Number); } if (pinContains(index, pins)) { - let remove = pins.indexOf(index) - pins.splice(remove, 1) + let remove = pins.indexOf(index); + pins.splice(remove, 1); } else { - pins.push(index) + pins.push(index); } - localStorage.setItem('Gpinned', pins) - location.reload() + localStorage.setItem("Gpinned", pins); + location.reload(); } function pinContains(i, p) { - if (p == '') { - return false + if (p == "") { + return false; } for (var x = 0; x < p.length; x++) { if (p[x] === i) { - return true + return true; } } - return false + return false; } function Custom(app) { - const title = prompt('Enter title for the app:') - const link = prompt('Enter link for the app:') + const title = prompt("Enter title for the app:"); + const link = prompt("Enter link for the app:"); if (title && link) { const customApp = { - name: '[Custom] ' + title, + name: "[Custom] " + title, link: link, - image: '/assets/media/icons/custom.webp', + image: "/assets/media/icons/custom.webp", custom: false, - } + }; - CustomApp(customApp) - initializeCustomApp(customApp) + CustomApp(customApp); + initializeCustomApp(customApp); } } function initializeCustomApp(customApp) { - const columnDiv = document.createElement('div') - columnDiv.classList.add('column') - columnDiv.setAttribute('data-category', 'all') - - const pinIcon = document.createElement('i') - pinIcon.classList.add('fa', 'fa-map-pin') - pinIcon.ariaHidden = true - - const btn = document.createElement('button') - btn.appendChild(pinIcon) - btn.style.float = 'right' - btn.style.backgroundColor = 'rgb(45,45,45)' - btn.style.borderRadius = '50%' - btn.style.borderColor = 'transparent' - btn.style.color = 'white' - btn.style.top = '-200px' - btn.style.position = 'relative' + const columnDiv = document.createElement("div"); + columnDiv.classList.add("column"); + columnDiv.setAttribute("data-category", "all"); + + const pinIcon = document.createElement("i"); + pinIcon.classList.add("fa", "fa-map-pin"); + pinIcon.ariaHidden = true; + + const btn = document.createElement("button"); + btn.appendChild(pinIcon); + btn.style.float = "right"; + btn.style.backgroundColor = "rgb(45,45,45)"; + btn.style.borderRadius = "50%"; + btn.style.borderColor = "transparent"; + btn.style.color = "white"; + btn.style.top = "-200px"; + btn.style.position = "relative"; btn.onclick = function () { - setPin(appInd) - } - btn.title = 'Pin' + setPin(appInd); + }; + btn.title = "Pin"; - const linkElem = document.createElement('a') + const linkElem = document.createElement("a"); linkElem.onclick = function () { - handleClick(customApp) - } + handleClick(customApp); + }; - const image = document.createElement('img') - image.width = 145 - image.height = 145 - image.src = customApp.image - image.loading = 'lazy' + const image = document.createElement("img"); + image.width = 145; + image.height = 145; + image.src = customApp.image; + image.loading = "lazy"; - const paragraph = document.createElement('p') - paragraph.textContent = customApp.name + const paragraph = document.createElement("p"); + paragraph.textContent = customApp.name; - linkElem.appendChild(image) - linkElem.appendChild(paragraph) - columnDiv.appendChild(linkElem) - columnDiv.appendChild(btn) + linkElem.appendChild(image); + linkElem.appendChild(paragraph); + columnDiv.appendChild(linkElem); + columnDiv.appendChild(btn); - const nonPinnedApps = document.querySelector('.container-apps') - nonPinnedApps.insertBefore(columnDiv, nonPinnedApps.firstChild) + const nonPinnedApps = document.querySelector(".container-apps"); + nonPinnedApps.insertBefore(columnDiv, nonPinnedApps.firstChild); } -document.addEventListener('DOMContentLoaded', () => { - const storedApps = JSON.parse(localStorage.getItem('Gcustom')) +document.addEventListener("DOMContentLoaded", () => { + const storedApps = JSON.parse(localStorage.getItem("Gcustom")); if (storedApps) { Object.values(storedApps).forEach((app) => { - initializeCustomApp(app) - }) + initializeCustomApp(app); + }); } - fetch('/assets/json/g.min.json') + fetch("/assets/json/g.min.json") .then((response) => { - return response.json() + return response.json(); }) .then((appsList) => { appsList.sort((a, b) => { - if (a.name.startsWith('[Custom]')) return -1 - if (b.name.startsWith('[Custom]')) return 1 - return a.name.localeCompare(b.name) - }) - const nonPinnedApps = document.querySelector('.container-apps') - const pinnedApps = document.querySelector('.pinned-apps') - var pinList = localStorage.getItem('Gpinned') || '' - pinList = pinList ? pinList.split(',').map(Number) : [] - appInd = 0 + if (a.name.startsWith("[Custom]")) return -1; + if (b.name.startsWith("[Custom]")) return 1; + return a.name.localeCompare(b.name); + }); + const nonPinnedApps = document.querySelector(".container-apps"); + const pinnedApps = document.querySelector(".pinned-apps"); + var pinList = localStorage.getItem("Gpinned") || ""; + pinList = pinList ? pinList.split(",").map(Number) : []; + appInd = 0; appsList.forEach((app) => { - if (app.categories && app.categories.includes('local')) { - app.local = true - } else if (app.link && (app.link.includes('now.gg') || app.link.includes('nowgg.me'))) { + if (app.categories && app.categories.includes("local")) { + app.local = true; + } else if (app.link && (app.link.includes("now.gg") || app.link.includes("nowgg.me"))) { if (app.partial === null || app.partial === undefined) { - app.partial = true - app.say = 'Now.gg is currently not working for some users.' + app.partial = true; + app.say = "Now.gg is currently not working for some users."; } - } else if (app.link && app.link.includes('nowgg.nl')) { + } else if (app.link && app.link.includes("nowgg.nl")) { if (app.error === null || app.error === undefined) { - app.error = true - app.say = 'NowGG.nl is currently down.' + app.error = true; + app.say = "NowGG.nl is currently down."; } } - let pinNum = appInd - - const columnDiv = document.createElement('div') - columnDiv.classList.add('column') - columnDiv.setAttribute('data-category', app.categories.join(' ')) - - const pinIcon = document.createElement('i') - pinIcon.classList.add('fa', 'fa-map-pin') - pinIcon.ariaHidden = true - - const btn = document.createElement('button') - btn.appendChild(pinIcon) - btn.style.float = 'right' - btn.style.backgroundColor = 'rgb(45,45,45)' - btn.style.borderRadius = '50%' - btn.style.borderColor = 'transparent' - btn.style.color = 'white' - btn.style.top = '-200px' - btn.style.position = 'relative' + let pinNum = appInd; + + const columnDiv = document.createElement("div"); + columnDiv.classList.add("column"); + columnDiv.setAttribute("data-category", app.categories.join(" ")); + + const pinIcon = document.createElement("i"); + pinIcon.classList.add("fa", "fa-map-pin"); + pinIcon.ariaHidden = true; + + const btn = document.createElement("button"); + btn.appendChild(pinIcon); + btn.style.float = "right"; + btn.style.backgroundColor = "rgb(45,45,45)"; + btn.style.borderRadius = "50%"; + btn.style.borderColor = "transparent"; + btn.style.color = "white"; + btn.style.top = "-200px"; + btn.style.position = "relative"; btn.onclick = function () { - setPin(pinNum) - } - btn.title = 'Pin' + setPin(pinNum); + }; + btn.title = "Pin"; - const link = document.createElement('a') + const link = document.createElement("a"); link.onclick = function () { - handleClick(app) - } + handleClick(app); + }; - const image = document.createElement('img') - image.width = 145 - image.height = 145 - image.src = app.image - image.loading = 'lazy' + const image = document.createElement("img"); + image.width = 145; + image.height = 145; + image.src = app.image; + image.loading = "lazy"; - const paragraph = document.createElement('p') - paragraph.textContent = app.name + const paragraph = document.createElement("p"); + paragraph.textContent = app.name; if (app.error) { - paragraph.style.color = 'red' + paragraph.style.color = "red"; if (!app.say) { - app.say = 'This app is currently not working.' + app.say = "This app is currently not working."; } } else if (app.partial) { - paragraph.style.color = 'yellow' + paragraph.style.color = "yellow"; if (!app.say) { - app.say = 'This app is currently experiencing some issues, it may not work for you.' + app.say = "This app is currently experiencing some issues, it may not work for you."; } } - link.appendChild(image) - link.appendChild(paragraph) - columnDiv.appendChild(link) + link.appendChild(image); + link.appendChild(paragraph); + columnDiv.appendChild(link); if (appInd != 0) { - columnDiv.appendChild(btn) + columnDiv.appendChild(btn); } if (pinList != null && appInd != 0) { if (pinContains(appInd, pinList)) { - pinnedApps.appendChild(columnDiv) + pinnedApps.appendChild(columnDiv); } else { - nonPinnedApps.appendChild(columnDiv) + nonPinnedApps.appendChild(columnDiv); } } else { - nonPinnedApps.appendChild(columnDiv) + nonPinnedApps.appendChild(columnDiv); } - appInd++ - }) + appInd++; + }); - const appsContainer = document.getElementById('apps-container') - appsContainer.appendChild(pinnedApps) - appsContainer.appendChild(nonPinnedApps) + const appsContainer = document.getElementById("apps-container"); + appsContainer.appendChild(pinnedApps); + appsContainer.appendChild(nonPinnedApps); }) .catch((error) => { - console.error('Error fetching JSON data:', error) - }) -}) + console.error("Error fetching JSON data:", error); + }); +}); function show_category() { - var selectedCategories = Array.from(document.querySelectorAll('#category option:checked')).map( - (option) => option.value - ) - var games = document.getElementsByClassName('column') + var selectedCategories = Array.from(document.querySelectorAll("#category option:checked")).map((option) => option.value); + var games = document.getElementsByClassName("column"); for (var i = 0; i < games.length; i++) { - var game = games[i] - var categories = game.getAttribute('data-category').split(' ') + var game = games[i]; + var categories = game.getAttribute("data-category").split(" "); if (selectedCategories.length === 0 || selectedCategories.some((category) => categories.includes(category))) { - game.style.display = 'block' + game.style.display = "block"; } else { - game.style.display = 'none' + game.style.display = "none"; } } } function search_bar() { - var input = document.getElementById('searchbarbottom') - var filter = input.value.toLowerCase() - var games = document.getElementsByClassName('column') + var input = document.getElementById("searchbarbottom"); + var filter = input.value.toLowerCase(); + var games = document.getElementsByClassName("column"); for (var i = 0; i < games.length; i++) { - var game = games[i] - var name = game.getElementsByTagName('p')[0].textContent.toLowerCase() + var game = games[i]; + var name = game.getElementsByTagName("p")[0].textContent.toLowerCase(); if (name.includes(filter)) { - game.style.display = 'block' + game.style.display = "block"; } else { - game.style.display = 'none' + game.style.display = "none"; } } -} +} \ No newline at end of file diff --git a/static/assets/scripts/h.js b/static/assets/scripts/h.js index f2feb7938..f2ac9b6d1 100644 --- a/static/assets/scripts/h.js +++ b/static/assets/scripts/h.js @@ -1,54 +1,54 @@ -let inFrame +let inFrame; try { - inFrame = window !== top + inFrame = window !== top; } catch (e) { - inFrame = true + inFrame = true; } -if (!inFrame && !navigator.userAgent.includes('Firefox')) { - const popup = open('about:blank', '_blank') +if (!inFrame && !navigator.userAgent.includes("Firefox")) { + const popup = open("about:blank", "_blank"); if (!popup || popup.closed) { - alert('Please allow popups and redirects.') + alert("Please allow popups and redirects."); } else { - const doc = popup.document - const iframe = doc.createElement('iframe') - const style = iframe.style - const link = doc.createElement('link') + const doc = popup.document; + const iframe = doc.createElement("iframe"); + const style = iframe.style; + const link = doc.createElement("link"); - const name = localStorage.getItem('name') || 'My Drive - Google Drive' - const icon = localStorage.getItem('icon') || 'https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png' + const name = localStorage.getItem("name") || "My Drive - Google Drive"; + const icon = localStorage.getItem("icon") || "https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png"; - doc.title = name - link.rel = 'icon' - link.href = icon + doc.title = name; + link.rel = "icon"; + link.href = icon; - iframe.src = location.href - style.position = 'fixed' - style.top = style.bottom = style.left = style.right = 0 - style.border = style.outline = 'none' - style.width = style.height = '100%' + iframe.src = location.href; + style.position = "fixed"; + style.top = style.bottom = style.left = style.right = 0; + style.border = style.outline = "none"; + style.width = style.height = "100%"; - doc.head.appendChild(link) - doc.body.appendChild(iframe) + doc.head.appendChild(link); + doc.body.appendChild(iframe); - const pLink = localStorage.getItem(encodeURI('pLink')) || 'https://www.nasa.gov/' - location.replace(pLink) + const pLink = localStorage.getItem(encodeURI("pLink")) || "https://www.nasa.gov/"; + location.replace(pLink); - const script = doc.createElement('script') + const script = doc.createElement("script"); script.textContent = ` window.onbeforeunload = function (event) { const confirmationMessage = 'Leave Site?'; (event || window.event).returnValue = confirmationMessage; return confirmationMessage; }; - ` - doc.head.appendChild(script) + `; + doc.head.appendChild(script); } } -document.addEventListener('DOMContentLoaded', function (event) { - if (window.localStorage.getItem('v4Particles') === 'true') { +document.addEventListener("DOMContentLoaded", function (event) { + if (window.localStorage.getItem("v4Particles") === "true") { var particlesConfig = { particles: { number: { @@ -59,19 +59,19 @@ document.addEventListener('DOMContentLoaded', function (event) { }, }, color: { - value: '#ffffff', + value: "#ffffff", }, shape: { - type: 'circle', + type: "circle", stroke: { width: 0, - color: '#000000', + color: "#000000", }, polygon: { nb_sides: 5, }, image: { - src: 'img/github.svg', + src: "img/github.svg", width: 100, height: 100, }, @@ -99,17 +99,17 @@ document.addEventListener('DOMContentLoaded', function (event) { line_linked: { enable: false, distance: 150, - color: '#ffffff', + color: "#ffffff", opacity: 0.4, width: 1, }, move: { enable: true, speed: 2, - direction: 'bottom', + direction: "bottom", random: true, straight: false, - out_mode: 'out', + out_mode: "out", bounce: false, attract: { enable: false, @@ -119,15 +119,15 @@ document.addEventListener('DOMContentLoaded', function (event) { }, }, interactivity: { - detect_on: 'canvas', + detect_on: "canvas", events: { onhover: { enable: true, - mode: 'repulse', + mode: "repulse", }, onclick: { enable: false, - mode: 'push', + mode: "push", }, resize: true, }, @@ -158,22 +158,22 @@ document.addEventListener('DOMContentLoaded', function (event) { }, }, retina_detect: true, - } - particlesJS('particles-js', particlesConfig) + }; + particlesJS("particles-js", particlesConfig); } -}) +}); let splashtext = [ - 'Over 8 Million Users since 2023', - 'Fastest growing proxy server', - 'Made by xBubbo', - 'Check out discord.gg/interstellar :)', - 'Thanks for using the site', - 'Follow us on Tiktok (@useinterstellar)', - 'Subscribe to us on YouTube (@unblocking)', - 'Subscribe to my Youtube (@xbubbo)', - 'Check out the settings page', - 'Check out our Patreon (https://www.patreon.com/gointerstellar)', -] + "Over 8 Million Users since 2023", + "Fastest growing proxy server", + "Made by xBubbo", + "Check out discord.gg/interstellar :)", + "Thanks for using the site", + "Follow us on Tiktok (@useinterstellar)", + "Subscribe to us on YouTube (@unblocking)", + "Subscribe to my Youtube (@xbubbo)", + "Check out the settings page", + "Check out our Patreon (https://www.patreon.com/gointerstellar)", +]; -document.getElementById('splash').innerText = splashtext[Math.floor(Math.random() * splashtext.length)] +document.getElementById("splash").innerText = splashtext[Math.floor(Math.random() * splashtext.length)]; \ No newline at end of file diff --git a/static/assets/scripts/index.js b/static/assets/scripts/index.js index 2e042a05e..f60e9b7ae 100644 --- a/static/assets/scripts/index.js +++ b/static/assets/scripts/index.js @@ -1,55 +1,55 @@ -window.addEventListener('load', () => { - navigator.serviceWorker.register('../sw.js?v=4', { - scope: '/a/', - }) -}) +window.addEventListener("load", () => { + navigator.serviceWorker.register("../sw.js?v=4", { + scope: "/a/", + }); +}); -const form = document.getElementById('fs') -const input = document.getElementById('is') +const form = document.getElementById("fs"); +const input = document.getElementById("is"); if (form && input) { - form.addEventListener('submit', async (event) => { - event.preventDefault() - processUrl(input.value, '/p') - }) + form.addEventListener("submit", async (event) => { + event.preventDefault(); + processUrl(input.value, "/p"); + }); } function processUrl(value, path) { - let url = value.trim() - const engine = localStorage.getItem('engine') - const searchUrl = engine ? engine : 'https://www.google.com/search?q=' + let url = value.trim(); + const engine = localStorage.getItem("engine"); + const searchUrl = engine ? engine : "https://www.google.com/search?q="; if (!isUrl(url)) { - url = searchUrl + url - } else if (!(url.startsWith('https://') || url.startsWith('http://'))) { - url = 'https://' + url + url = searchUrl + url; + } else if (!(url.startsWith("https://") || url.startsWith("http://"))) { + url = "https://" + url; } - sessionStorage.setItem('GoUrl', __uv$config.encodeUrl(url)) - const dy = localStorage.getItem('dy') + sessionStorage.setItem("GoUrl", __uv$config.encodeUrl(url)); + const dy = localStorage.getItem("dy"); if (path) { - location.href = path - } else if (dy === 'true') { - window.location.href = '/a/q/' + __uv$config.encodeUrl(url) + location.href = path; + } else if (dy === "true") { + window.location.href = "/a/q/" + __uv$config.encodeUrl(url); } else { - window.location.href = '/a/' + __uv$config.encodeUrl(url) + window.location.href = "/a/" + __uv$config.encodeUrl(url); } } function go(value) { - processUrl(value, '/p') + processUrl(value, "/p"); } function blank(value) { - processUrl(value) + processUrl(value); } function dy(value) { - processUrl(value, '/a/q/' + __uv$config.encodeUrl(value)) + processUrl(value, "/a/q/" + __uv$config.encodeUrl(value)); } -function isUrl(val = '') { - if (/^http(s?):\/\//.test(val) || (val.includes('.') && val.substr(0, 1) !== ' ')) return true - return false -} +function isUrl(val = "") { + if (/^http(s?):\/\//.test(val) || (val.includes(".") && val.substr(0, 1) !== " ")) return true; + return false; +} \ No newline at end of file diff --git a/static/assets/scripts/main.js b/static/assets/scripts/main.js index 2f476feb0..c40a801c6 100644 --- a/static/assets/scripts/main.js +++ b/static/assets/scripts/main.js @@ -1,24 +1,24 @@ -document.addEventListener('DOMContentLoaded', function () { +document.addEventListener("DOMContentLoaded", function () { // Ads - if (localStorage.getItem('ad') === null || localStorage.getItem('ad') === 'default') { - localStorage.setItem('ad', 'on') + if (localStorage.getItem("ad") === null || localStorage.getItem("ad") === "default") { + localStorage.setItem("ad", "on"); } - var advDiv = document.getElementById('adv') - if (advDiv && localStorage.getItem('ad') === 'on') { - var script = document.createElement('script') - script.type = 'text/javascript' - script.src = '//oysterscoldtiny.com/1c/c3/8a/1cc38a6899fdf8ba4dfe779bcc54627b.js' - advDiv.appendChild(script) - console.log('Script inserted inside the adv div.') - } else if (advDiv && localStorage.getItem('ad') === 'off') { - advDiv.remove() - console.log('The adv div has been removed.') + var advDiv = document.getElementById("adv"); + if (advDiv && localStorage.getItem("ad") === "on") { + var script = document.createElement("script"); + script.type = "text/javascript"; + script.src = "//oysterscoldtiny.com/1c/c3/8a/1cc38a6899fdf8ba4dfe779bcc54627b.js"; + advDiv.appendChild(script); + console.log("Script inserted inside the adv div."); + } else if (advDiv && localStorage.getItem("ad") === "off") { + advDiv.remove(); + console.log("The adv div has been removed."); } -}) +}); // Nav -var nav = document.querySelector('.fixed-nav-bar') +var nav = document.querySelector(".fixed-nav-bar"); if (nav) { var html = ` @@ -30,136 +30,136 @@ if (nav) { Apps Tabs Settings - ` - nav.innerHTML = html + `; + nav.innerHTML = html; } // Themes -var themeid = localStorage.getItem('theme') -themeEle = document.createElement('link') -themeEle.rel = 'stylesheet' -if (themeid == 'catppuccinMocha') { - themeEle.href = '/assets/styles/themes/catppuccin/mocha.css?v=1' +var themeid = localStorage.getItem("theme"); +themeEle = document.createElement("link"); +themeEle.rel = "stylesheet"; +if (themeid == "catppuccinMocha") { + themeEle.href = "/assets/styles/themes/catppuccin/mocha.css?v=1"; } -if (themeid == 'catppuccinMacchiato') { - themeEle.href = '/assets/styles/themes/catppuccin/macchiato.css?v=1' +if (themeid == "catppuccinMacchiato") { + themeEle.href = "/assets/styles/themes/catppuccin/macchiato.css?v=1"; } -if (themeid == 'catppuccinFrappe') { - themeEle.href = '/assets/styles/themes/catppuccin/frappe.css?v=1' +if (themeid == "catppuccinFrappe") { + themeEle.href = "/assets/styles/themes/catppuccin/frappe.css?v=1"; } -if (themeid == 'catppuccinLatte') { - themeEle.href = '/assets/styles/themes/catppuccin/latte.css?v=1' +if (themeid == "catppuccinLatte") { + themeEle.href = "/assets/styles/themes/catppuccin/latte.css?v=1"; } -document.body.appendChild(themeEle) +document.body.appendChild(themeEle); // Tab Cloaker -document.addEventListener('DOMContentLoaded', function (event) { - const icon = document.getElementById('tab-favicon') - const name = document.getElementById('tab-title') - const selectedValue = localStorage.getItem('selectedOption') +document.addEventListener("DOMContentLoaded", function (event) { + const icon = document.getElementById("tab-favicon"); + const name = document.getElementById("tab-title"); + const selectedValue = localStorage.getItem("selectedOption"); function setCloak(nameValue, iconUrl) { // Check for custom values in local storage - const customName = localStorage.getItem('CustomName') - const customIcon = localStorage.getItem('CustomIcon') + const customName = localStorage.getItem("CustomName"); + const customIcon = localStorage.getItem("CustomIcon"); // If custom values exist, use them. Otherwise, use the provided values. if (customName) { - nameValue = customName + nameValue = customName; } if (customIcon) { - iconUrl = customIcon + iconUrl = customIcon; } if (iconUrl) { - icon.setAttribute('href', iconUrl) - localStorage.setItem('icon', iconUrl) + icon.setAttribute("href", iconUrl); + localStorage.setItem("icon", iconUrl); } if (nameValue) { - name.textContent = nameValue - localStorage.setItem('name', nameValue) + name.textContent = nameValue; + localStorage.setItem("name", nameValue); } } const options = { - Google: { name: 'Google', icon: '/assets/media/favicon/google.png' }, - Drive: { name: 'My Drive - Google Drive', icon: '/assets/media/favicon/drive.png' }, - Classroom: { name: 'Home', icon: '/assets/media/favicon/classroom.png' }, - Schoology: { name: 'Home | Schoology', icon: '/assets/media/favicon/schoology.png' }, - Gmail: { name: 'Gmail', icon: '/assets/media/favicon/gmail.png' }, - Clever: { name: 'Clever | Portal', icon: '/assets/media/favicon/clever.png' }, - Khan: { name: 'Dashboard | Khan Academy', icon: '/assets/media/favicon/khan.png' }, - Campus: { name: 'Infinite Campus', icon: '/assets/media/favicon/campus.png' }, - IXL: { name: 'IXL | Dashboard', icon: '/assets/media/favicon/ixl.png' }, - Canvas: { name: 'Dashboard', icon: '/assets/media/favicon/canvas.png' }, - LinkIt: { name: 'Test Taker', icon: '/assets/media/favicon/linkit.ico' }, - Edpuzzle: { name: 'Edpuzzle', icon: '/assets/media/favicon/edpuzzle.png' }, - 'i-Ready Math': { name: 'Math To Do, i-Ready', icon: '/assets/media/favicon/i-ready.ico' }, - 'i-Ready Reading': { name: 'Reading To Do, i-Ready', icon: '/assets/media/favicon/i-ready.ico' }, - 'ClassLink Login': { name: 'Login', icon: '/assets/media/favicon/classlink-login.png' }, - 'Google Meet': { name: 'Google Meet', icon: '/assets/media/favicon/google-meet.png' }, - 'Google Docs': { name: 'Google Docs', icon: '/assets/media/favicon/google-docs.ico' }, - 'Google Slides': { name: 'Google Slides', icon: '/assets/media/favicon/google-slides.ico' }, - Wikipedia: { name: 'Wikipedia', icon: '/assets/media/favicon/wikipedia.png' }, - Britannica: { name: 'Encyclopedia Britannica | Britannica', icon: '/assets/media/favicon/britannica.png' }, - Ducksters: { name: 'Ducksters', icon: '/assets/media/favicon/ducksters.png' }, - Minga: { name: 'Minga – Creating Amazing Schools', icon: '/assets/media/favicon/minga.png' }, - 'i-Ready Learning Games': { name: 'Learning Games, i-Ready', icon: '/assets/media/favicon/i-ready.ico' }, - 'NoRedInk Home': { name: 'Student Home | NoRedInk', icon: '/assets/media/favicon/noredink.webp' }, - 'Newsela Binder': { name: 'Newsela | Binder', icon: '/assets/media/favicon/newsela.png' }, - 'Newsela Assignments': { name: 'Newsela | Assignments', icon: '/assets/media/favicon/newsela.png' }, - 'Newsela Home': { name: 'Newsela | Instructional Content Platform', icon: '/assets/media/favicon/newsela.png' }, - 'PowerSchool Sign In': { name: 'Student and Parent Sign In', icon: '/assets/media/favicon/powerschool.png' }, - 'PowerSchool Grades and Attendance': { - name: 'Grades and Attendance', - icon: '/assets/media/favicon/powerschool.png', + Google: { name: "Google", icon: "/assets/media/favicon/google.png" }, + Drive: { name: "My Drive - Google Drive", icon: "/assets/media/favicon/drive.png" }, + Classroom: { name: "Home", icon: "/assets/media/favicon/classroom.png" }, + Schoology: { name: "Home | Schoology", icon: "/assets/media/favicon/schoology.png" }, + Gmail: { name: "Gmail", icon: "/assets/media/favicon/gmail.png" }, + Clever: { name: "Clever | Portal", icon: "/assets/media/favicon/clever.png" }, + Khan: { name: "Dashboard | Khan Academy", icon: "/assets/media/favicon/khan.png" }, + Campus: { name: "Infinite Campus", icon: "/assets/media/favicon/campus.png" }, + IXL: { name: "IXL | Dashboard", icon: "/assets/media/favicon/ixl.png" }, + Canvas: { name: "Dashboard", icon: "/assets/media/favicon/canvas.png" }, + LinkIt: { name: "Test Taker", icon: "/assets/media/favicon/linkit.ico" }, + Edpuzzle: { name: "Edpuzzle", icon: "/assets/media/favicon/edpuzzle.png" }, + "i-Ready Math": { name: "Math To Do, i-Ready", icon: "/assets/media/favicon/i-ready.ico" }, + "i-Ready Reading": { name: "Reading To Do, i-Ready", icon: "/assets/media/favicon/i-ready.ico" }, + "ClassLink Login": { name: "Login", icon: "/assets/media/favicon/classlink-login.png" }, + "Google Meet": { name: "Google Meet", icon: "/assets/media/favicon/google-meet.png" }, + "Google Docs": { name: "Google Docs", icon: "/assets/media/favicon/google-docs.ico" }, + "Google Slides": { name: "Google Slides", icon: "/assets/media/favicon/google-slides.ico" }, + Wikipedia: { name: "Wikipedia", icon: "/assets/media/favicon/wikipedia.png" }, + Britannica: { name: "Encyclopedia Britannica | Britannica", icon: "/assets/media/favicon/britannica.png" }, + Ducksters: { name: "Ducksters", icon: "/assets/media/favicon/ducksters.png" }, + Minga: { name: "Minga – Creating Amazing Schools", icon: "/assets/media/favicon/minga.png" }, + "i-Ready Learning Games": { name: "Learning Games, i-Ready", icon: "/assets/media/favicon/i-ready.ico" }, + "NoRedInk Home": { name: "Student Home | NoRedInk", icon: "/assets/media/favicon/noredink.webp" }, + "Newsela Binder": { name: "Newsela | Binder", icon: "/assets/media/favicon/newsela.png" }, + "Newsela Assignments": { name: "Newsela | Assignments", icon: "/assets/media/favicon/newsela.png" }, + "Newsela Home": { name: "Newsela | Instructional Content Platform", icon: "/assets/media/favicon/newsela.png" }, + "PowerSchool Sign In": { name: "Student and Parent Sign In", icon: "/assets/media/favicon/powerschool.png" }, + "PowerSchool Grades and Attendance": { + name: "Grades and Attendance", + icon: "/assets/media/favicon/powerschool.png", }, - 'PowerSchool Teacher Comments': { name: 'Teacher Comments', icon: '/assets/media/favicon/powerschool.png' }, - 'PowerSchool Standards Grades': { name: 'Standards Grades', icon: '/assets/media/favicon/powerschool.png' }, - 'PowerSchool Attendance': { name: 'Attendance', icon: '/assets/media/favicon/powerschool.png' }, - Nearpod: { name: 'Nearpod', icon: '/assets/media/favicon/nearpod.png' }, - StudentVUE: { name: 'StudentVUE', icon: '/assets/media/favicon/studentvue.ico' }, - 'Quizlet Home': { - name: 'Flashcards, learning tools and textbook solutions | Quizlet', - icon: '/assets/media/favicon/quizlet.webp', + "PowerSchool Teacher Comments": { name: "Teacher Comments", icon: "/assets/media/favicon/powerschool.png" }, + "PowerSchool Standards Grades": { name: "Standards Grades", icon: "/assets/media/favicon/powerschool.png" }, + "PowerSchool Attendance": { name: "Attendance", icon: "/assets/media/favicon/powerschool.png" }, + Nearpod: { name: "Nearpod", icon: "/assets/media/favicon/nearpod.png" }, + StudentVUE: { name: "StudentVUE", icon: "/assets/media/favicon/studentvue.ico" }, + "Quizlet Home": { + name: "Flashcards, learning tools and textbook solutions | Quizlet", + icon: "/assets/media/favicon/quizlet.webp", }, - 'Google Forms Locked Mode': { name: 'Start your quiz', icon: '/assets/media/favicon/googleforms.png' }, - DeltaMath: { name: 'DeltaMath', icon: '/assets/media/favicon/deltamath.png' }, - Kami: { name: 'Kami', icon: '/assets/media/favicon/kami.png' }, - 'GoGuardian Admin Restricted': { name: 'Restricted', icon: '/assets/media/favicon/goguardian-lock.png' }, - 'GoGuardian Teacher Block': { name: 'Uh oh!', icon: '/assets/media/favicon/goguardian.png' }, - 'World History Encyclopedia': { - name: 'World History Encyclopedia', - icon: '/assets/media/favicon/worldhistoryencyclopedia.png', + "Google Forms Locked Mode": { name: "Start your quiz", icon: "/assets/media/favicon/googleforms.png" }, + DeltaMath: { name: "DeltaMath", icon: "/assets/media/favicon/deltamath.png" }, + Kami: { name: "Kami", icon: "/assets/media/favicon/kami.png" }, + "GoGuardian Admin Restricted": { name: "Restricted", icon: "/assets/media/favicon/goguardian-lock.png" }, + "GoGuardian Teacher Block": { name: "Uh oh!", icon: "/assets/media/favicon/goguardian.png" }, + "World History Encyclopedia": { + name: "World History Encyclopedia", + icon: "/assets/media/favicon/worldhistoryencyclopedia.png", }, - 'Big Ideas Math Assignment Player': { name: 'Assignment Player', icon: '/assets/media/favicon/bim.ico' }, - 'Big Ideas Math': { name: 'Big Ideas Math', icon: '/assets/media/favicon/bim.ico' }, - } + "Big Ideas Math Assignment Player": { name: "Assignment Player", icon: "/assets/media/favicon/bim.ico" }, + "Big Ideas Math": { name: "Big Ideas Math", icon: "/assets/media/favicon/bim.ico" }, + }; if (options[selectedValue]) { - setCloak(options[selectedValue].name, options[selectedValue].icon) + setCloak(options[selectedValue].name, options[selectedValue].icon); } -}) +}); // Key -document.addEventListener('DOMContentLoaded', function () { - const eventKey = JSON.parse(localStorage.getItem('eventKey')) || ['Ctrl', 'E'] - const pLink = localStorage.getItem('pLink') || 'https://classroom.google.com/' - let pressedKeys = [] +document.addEventListener("DOMContentLoaded", function () { + const eventKey = JSON.parse(localStorage.getItem("eventKey")) || ["Ctrl", "E"]; + const pLink = localStorage.getItem("pLink") || "https://classroom.google.com/"; + let pressedKeys = []; - document.addEventListener('keydown', function (event) { - pressedKeys.push(event.key) + document.addEventListener("keydown", function (event) { + pressedKeys.push(event.key); if (pressedKeys.length > eventKey.length) { - pressedKeys.shift() + pressedKeys.shift(); } if (eventKey.every((key, index) => key === pressedKeys[index])) { - window.location.href = pLink - pressedKeys = [] + window.location.href = pLink; + pressedKeys = []; } - }) -}) + }); +}); // Background Image -document.addEventListener('DOMContentLoaded', function () { - var savedBackgroundImage = localStorage.getItem('backgroundImage') +document.addEventListener("DOMContentLoaded", function () { + var savedBackgroundImage = localStorage.getItem("backgroundImage"); if (savedBackgroundImage) { - document.body.style.backgroundImage = "url('" + savedBackgroundImage + "')" + document.body.style.backgroundImage = "url('" + savedBackgroundImage + "')"; } -}) +}); \ No newline at end of file diff --git a/static/assets/scripts/settings.js b/static/assets/scripts/settings.js index cf771e68d..166234b01 100644 --- a/static/assets/scripts/settings.js +++ b/static/assets/scripts/settings.js @@ -1,354 +1,354 @@ // Ads -document.addEventListener('DOMContentLoaded', function () { +document.addEventListener("DOMContentLoaded", function () { function adChange(selectedValue) { - if (selectedValue === 'default') { - localStorage.setItem('ad', 'on') - } else if (selectedValue === 'off') { - localStorage.setItem('ad', 'off') + if (selectedValue === "default") { + localStorage.setItem("ad", "on"); + } else if (selectedValue === "off") { + localStorage.setItem("ad", "off"); } } - var adTypeElement = document.getElementById('adType') + var adTypeElement = document.getElementById("adType"); if (adTypeElement) { - adTypeElement.addEventListener('change', function () { - var selectedOption = this.value - adChange(selectedOption) - }) - - var storedAd = localStorage.getItem('ad') - if (storedAd === 'on') { - adTypeElement.value = 'default' - } else if (storedAd === 'off') { - adTypeElement.value = 'off' + adTypeElement.addEventListener("change", function () { + var selectedOption = this.value; + adChange(selectedOption); + }); + + var storedAd = localStorage.getItem("ad"); + if (storedAd === "on") { + adTypeElement.value = "default"; + } else if (storedAd === "off") { + adTypeElement.value = "off"; } else { - adTypeElement.value = 'default' + adTypeElement.value = "default"; } } // Makes the custom icon and name persistent - const iconElement = document.getElementById('icon') - const nameElement = document.getElementById('name') - const customIcon = localStorage.getItem('CustomIcon') - const customName = localStorage.getItem('CustomName') - iconElement.value = customIcon - nameElement.value = customName + const iconElement = document.getElementById("icon"); + const nameElement = document.getElementById("name"); + const customIcon = localStorage.getItem("CustomIcon"); + const customName = localStorage.getItem("CustomName"); + iconElement.value = customIcon; + nameElement.value = customName; - localStorage.setItem('ab', true) - document.getElementById('ab-settings-switch').checked = true -}) + localStorage.setItem("ab", true); + document.getElementById("ab-settings-switch").checked = true; +}); // Dyn -document.addEventListener('DOMContentLoaded', function () { +document.addEventListener("DOMContentLoaded", function () { function pChange(selectedValue) { - if (selectedValue === 'uv') { - localStorage.setItem('uv', 'true') - localStorage.setItem('dy', 'false') - } else if (selectedValue === 'dy') { - localStorage.setItem('uv', 'false') - localStorage.setItem('dy', 'true') + if (selectedValue === "uv") { + localStorage.setItem("uv", "true"); + localStorage.setItem("dy", "false"); + } else if (selectedValue === "dy") { + localStorage.setItem("uv", "false"); + localStorage.setItem("dy", "true"); } } - var pChangeElement = document.getElementById('pChange') + var pChangeElement = document.getElementById("pChange"); if (pChangeElement) { - pChangeElement.addEventListener('change', function () { - var selectedOption = this.value - pChange(selectedOption) - }) - - var storedP = localStorage.getItem('uv') - if (storedP === 'true') { - pChangeElement.value = 'uv' - } else if (localStorage.getItem('dy') === 'true' || localStorage.getItem('dy') === 'auto') { - pChangeElement.value = 'dy' + pChangeElement.addEventListener("change", function () { + var selectedOption = this.value; + pChange(selectedOption); + }); + + var storedP = localStorage.getItem("uv"); + if (storedP === "true") { + pChangeElement.value = "uv"; + } else if (localStorage.getItem("dy") === "true" || localStorage.getItem("dy") === "auto") { + pChangeElement.value = "dy"; } else { - pChangeElement.value = 'uv' + pChangeElement.value = "uv"; } } -}) +}); // Key -let eventKey = localStorage.getItem('eventKey') || '`' -let eventKeyRaw = localStorage.getItem('eventKeyRaw') || '`' -let pLink = localStorage.getItem('pLink') || 'https://classroom.google.com/' +let eventKey = localStorage.getItem("eventKey") || "`"; +let eventKeyRaw = localStorage.getItem("eventKeyRaw") || "`"; +let pLink = localStorage.getItem("pLink") || "https://classroom.google.com/"; -document.addEventListener('DOMContentLoaded', function () { - document.getElementById('eventKeyInput').value = eventKeyRaw - document.getElementById('linkInput').value = pLink +document.addEventListener("DOMContentLoaded", function () { + document.getElementById("eventKeyInput").value = eventKeyRaw; + document.getElementById("linkInput").value = pLink; - const selectedOption = localStorage.getItem('selectedOption') + const selectedOption = localStorage.getItem("selectedOption"); if (selectedOption) { - updateHeadSection(selectedOption) + updateHeadSection(selectedOption); } -}) +}); -const eventKeyInput = document.getElementById('eventKeyInput') -eventKeyInput.addEventListener('input', function () { - eventKey = eventKeyInput.value.split(',') -}) +const eventKeyInput = document.getElementById("eventKeyInput"); +eventKeyInput.addEventListener("input", function () { + eventKey = eventKeyInput.value.split(","); +}); -var linkInput = document.getElementById('linkInput') -linkInput.addEventListener('input', function () { - pLink = linkInput.value -}) +var linkInput = document.getElementById("linkInput"); +linkInput.addEventListener("input", function () { + pLink = linkInput.value; +}); function saveEventKey() { - eventKey = eventKeyInput.value.split(',') - eventKeyRaw = eventKeyInput.value - localStorage.setItem('eventKey', JSON.stringify(eventKey)) - localStorage.setItem('pLink', pLink) - localStorage.setItem('eventKeyRaw', eventKeyRaw) - window.location = window.location + eventKey = eventKeyInput.value.split(","); + eventKeyRaw = eventKeyInput.value; + localStorage.setItem("eventKey", JSON.stringify(eventKey)); + localStorage.setItem("pLink", pLink); + localStorage.setItem("eventKeyRaw", eventKeyRaw); + window.location = window.location; } // Tab Cloaker -var dropdown = document.getElementById('dropdown') -var options = dropdown.getElementsByTagName('option') +var dropdown = document.getElementById("dropdown"); +var options = dropdown.getElementsByTagName("option"); var sortedOptions = Array.from(options).sort(function (a, b) { - return a.textContent.localeCompare(b.textContent) -}) + return a.textContent.localeCompare(b.textContent); +}); while (dropdown.firstChild) { - dropdown.removeChild(dropdown.firstChild) + dropdown.removeChild(dropdown.firstChild); } sortedOptions.forEach(function (option) { - dropdown.appendChild(option) -}) + dropdown.appendChild(option); +}); function saveIcon() { - const iconElement = document.getElementById('icon') - const iconValue = iconElement.value - console.log('saveIcon function called with icon value:', iconValue) - localStorage.setItem('icon', iconValue) + const iconElement = document.getElementById("icon"); + const iconValue = iconElement.value; + console.log("saveIcon function called with icon value:", iconValue); + localStorage.setItem("icon", iconValue); } function saveName() { - const nameElement = document.getElementById('name') - const nameValue = nameElement.value - console.log('saveName function called with name value:', nameValue) - localStorage.setItem('name', nameValue) + const nameElement = document.getElementById("name"); + const nameValue = nameElement.value; + console.log("saveName function called with name value:", nameValue); + localStorage.setItem("name", nameValue); } function CustomIcon() { - const iconElement = document.getElementById('icon') - const iconValue = iconElement.value - console.log('saveIcon function called with icon value:', iconValue) - localStorage.setItem('CustomIcon', iconValue) + const iconElement = document.getElementById("icon"); + const iconValue = iconElement.value; + console.log("saveIcon function called with icon value:", iconValue); + localStorage.setItem("CustomIcon", iconValue); } function CustomName() { - const nameElement = document.getElementById('name') - const nameValue = nameElement.value - console.log('saveName function called with name value:', nameValue) - localStorage.setItem('CustomName', nameValue) + const nameElement = document.getElementById("name"); + const nameValue = nameElement.value; + console.log("saveName function called with name value:", nameValue); + localStorage.setItem("CustomName", nameValue); } function ResetCustomCloak() { - localStorage.removeItem('CustomName') - localStorage.removeItem('CustomIcon') - document.getElementById('icon').value = '' - document.getElementById('name').value = '' + localStorage.removeItem("CustomName"); + localStorage.removeItem("CustomIcon"); + document.getElementById("icon").value = ""; + document.getElementById("name").value = ""; } function redirectToMainDomain() { - var currentUrl = window.location.href - var mainDomainUrl = currentUrl.replace(/\/[^\/]*$/, '') + var currentUrl = window.location.href; + var mainDomainUrl = currentUrl.replace(/\/[^\/]*$/, ""); if (window != top) { - top.location.href = mainDomainUrl + window.location.pathname + top.location.href = mainDomainUrl + window.location.pathname; } else { - window.location.href = mainDomainUrl + window.location.pathname + window.location.href = mainDomainUrl + window.location.pathname; } } -document.addEventListener('DOMContentLoaded', function (event) { - const icon = document.getElementById('tab-favicon') - const name = document.getElementById('tab-title') - var selectedValue = localStorage.getItem('selectedOption') || 'Default' - document.getElementById('dropdown').value = selectedValue - updateHeadSection(selectedValue) -}) +document.addEventListener("DOMContentLoaded", function (event) { + const icon = document.getElementById("tab-favicon"); + const name = document.getElementById("tab-title"); + var selectedValue = localStorage.getItem("selectedOption") || "Default"; + document.getElementById("dropdown").value = selectedValue; + updateHeadSection(selectedValue); +}); function handleDropdownChange(selectElement) { - var selectedValue = selectElement.value - localStorage.removeItem('CustomName') - localStorage.removeItem('CustomIcon') - localStorage.setItem('selectedOption', selectedValue) - updateHeadSection(selectedValue) - redirectToMainDomain(selectedValue) + var selectedValue = selectElement.value; + localStorage.removeItem("CustomName"); + localStorage.removeItem("CustomIcon"); + localStorage.setItem("selectedOption", selectedValue); + updateHeadSection(selectedValue); + redirectToMainDomain(selectedValue); } function updateHeadSection(selectedValue) { - const icon = document.getElementById('tab-favicon') - const name = document.getElementById('tab-title') - const customName = localStorage.getItem('CustomName') - const customIcon = localStorage.getItem('CustomIcon') + const icon = document.getElementById("tab-favicon"); + const name = document.getElementById("tab-title"); + const customName = localStorage.getItem("CustomName"); + const customIcon = localStorage.getItem("CustomIcon"); if (customName && customIcon) { - name.textContent = customName - icon.setAttribute('href', customIcon) - localStorage.setItem('name', customName) - localStorage.setItem('icon', customIcon) + name.textContent = customName; + icon.setAttribute("href", customIcon); + localStorage.setItem("name", customName); + localStorage.setItem("icon", customIcon); } } // Background Image -document.addEventListener('DOMContentLoaded', function () { - var saveButton = document.getElementById('save-button') - saveButton.addEventListener('click', function () { - var backgroundInput = document.getElementById('background-input') - var imageURL = backgroundInput.value - - if (imageURL !== '') { - localStorage.setItem('backgroundImage', imageURL) - document.body.style.backgroundImage = "url('" + imageURL + "')" - backgroundInput.value = '' +document.addEventListener("DOMContentLoaded", function () { + var saveButton = document.getElementById("save-button"); + saveButton.addEventListener("click", function () { + var backgroundInput = document.getElementById("background-input"); + var imageURL = backgroundInput.value; + + if (imageURL !== "") { + localStorage.setItem("backgroundImage", imageURL); + document.body.style.backgroundImage = "url('" + imageURL + "')"; + backgroundInput.value = ""; } else { } - }) + }); - var resetButton = document.getElementById('reset-button') - resetButton.addEventListener('click', function () { - localStorage.removeItem('backgroundImage') - document.body.style.backgroundImage = "url('default-background.jpg')" - }) + var resetButton = document.getElementById("reset-button"); + resetButton.addEventListener("click", function () { + localStorage.removeItem("backgroundImage"); + document.body.style.backgroundImage = "url('default-background.jpg')"; + }); - var savedBackgroundImage = localStorage.getItem('backgroundImage') + var savedBackgroundImage = localStorage.getItem("backgroundImage"); if (savedBackgroundImage) { - document.body.style.backgroundImage = "url('" + savedBackgroundImage + "')" + document.body.style.backgroundImage = "url('" + savedBackgroundImage + "')"; } -}) +}); // Particles -const switches = document.getElementById('2') +const switches = document.getElementById("2"); -if (window.localStorage.getItem('v4Particles') != '') { - if (window.localStorage.getItem('v4Particles') == 'true') { - switches.checked = true +if (window.localStorage.getItem("v4Particles") != "") { + if (window.localStorage.getItem("v4Particles") == "true") { + switches.checked = true; } else { - switches.checked = false + switches.checked = false; } } -switches.addEventListener('change', (event) => { +switches.addEventListener("change", (event) => { if (event.currentTarget.checked) { - window.localStorage.setItem('v4Particles', 'true') + window.localStorage.setItem("v4Particles", "true"); } else { - window.localStorage.setItem('v4Particles', 'false') + window.localStorage.setItem("v4Particles", "false"); } -}) +}); // Themes -var themeId = localStorage.getItem('theme') -if (themeId == '') { - themeId = 'd' +var themeId = localStorage.getItem("theme"); +if (themeId == "") { + themeId = "d"; } -document.getElementsByClassName('td')[0].value = themeId +document.getElementsByClassName("td")[0].value = themeId; -const themeDropdown = document.getElementsByClassName('td') -dropdown.addEventListener('change', function () { - const selectedValue = dropdown.value +const themeDropdown = document.getElementsByClassName("td"); +dropdown.addEventListener("change", function () { + const selectedValue = dropdown.value; - localStorage.setItem('theme', selectedValue) + localStorage.setItem("theme", selectedValue); - window.location = window.location -}) + window.location = window.location; +}); function themeChange(ele) { - const selTheme = ele.value + const selTheme = ele.value; - localStorage.setItem('theme', selTheme) + localStorage.setItem("theme", selTheme); - window.location = window.location + window.location = window.location; } // AB Cloak function AB() { - let inFrame + let inFrame; try { - inFrame = window !== top + inFrame = window !== top; } catch (e) { - inFrame = true + inFrame = true; } - if (!inFrame && !navigator.userAgent.includes('Firefox')) { - const popup = open('about:blank', '_blank') + if (!inFrame && !navigator.userAgent.includes("Firefox")) { + const popup = open("about:blank", "_blank"); if (!popup || popup.closed) { - alert('Please allow popups and redirects.') + alert("Please allow popups and redirects."); } else { - const doc = popup.document - const iframe = doc.createElement('iframe') - const style = iframe.style - const link = doc.createElement('link') + const doc = popup.document; + const iframe = doc.createElement("iframe"); + const style = iframe.style; + const link = doc.createElement("link"); - const name = localStorage.getItem('name') || 'My Drive - Google Drive' - const icon = localStorage.getItem('icon') || 'https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png' + const name = localStorage.getItem("name") || "My Drive - Google Drive"; + const icon = localStorage.getItem("icon") || "https://ssl.gstatic.com/docs/doclist/images/drive_2022q3_32dp.png"; - doc.title = name - link.rel = 'icon' - link.href = icon + doc.title = name; + link.rel = "icon"; + link.href = icon; - iframe.src = location.href - style.position = 'fixed' - style.top = style.bottom = style.left = style.right = 0 - style.border = style.outline = 'none' - style.width = style.height = '100%' + iframe.src = location.href; + style.position = "fixed"; + style.top = style.bottom = style.left = style.right = 0; + style.border = style.outline = "none"; + style.width = style.height = "100%"; - doc.head.appendChild(link) - doc.body.appendChild(iframe) + doc.head.appendChild(link); + doc.body.appendChild(iframe); - const pLink = localStorage.getItem(encodeURI('pLink')) || 'https://www.nasa.gov/' - location.replace(pLink) + const pLink = localStorage.getItem(encodeURI("pLink")) || "https://www.nasa.gov/"; + location.replace(pLink); - const script = doc.createElement('script') + const script = doc.createElement("script"); script.textContent = ` window.onbeforeunload = function (event) { const confirmationMessage = 'Leave Site?'; (event || window.event).returnValue = confirmationMessage; return confirmationMessage; }; - ` - doc.head.appendChild(script) + `; + doc.head.appendChild(script); } } } function toggleAB() { - ab = localStorage.getItem('ab') + ab = localStorage.getItem("ab"); if (ab == null) { - localStorage.setItem('ab', 'false') - } else if (ab == 'true') { - localStorage.setItem('ab', 'false') + localStorage.setItem("ab", "false"); + } else if (ab == "true") { + localStorage.setItem("ab", "false"); } else { - localStorage.setItem('ab', 'true') + localStorage.setItem("ab", "true"); } } // Search Engine function EngineChange(dropdown) { - var selectedEngine = dropdown.value + var selectedEngine = dropdown.value; var engineUrls = { - Google: 'https://www.google.com/search?q=', - Bing: 'https://www.bing.com/search?q=', - DuckDuckGo: 'https://duckduckgo.com/?q=', - Qwant: 'https://www.qwant.com/?q=', - Startpage: 'https://www.startpage.com/search?q=', - SearchEncrypt: 'https://www.searchencrypt.com/search/?q=', - Ecosia: 'https://www.ecosia.org/search?q=', - } - - localStorage.setItem('engine', engineUrls[selectedEngine]) - localStorage.setItem('enginename', selectedEngine) - - dropdown.value = selectedEngine + Google: "https://www.google.com/search?q=", + Bing: "https://www.bing.com/search?q=", + DuckDuckGo: "https://duckduckgo.com/?q=", + Qwant: "https://www.qwant.com/?q=", + Startpage: "https://www.startpage.com/search?q=", + SearchEncrypt: "https://www.searchencrypt.com/search/?q=", + Ecosia: "https://www.ecosia.org/search?q=", + }; + + localStorage.setItem("engine", engineUrls[selectedEngine]); + localStorage.setItem("enginename", selectedEngine); + + dropdown.value = selectedEngine; } function SaveEngine() { - var customEngine = document.getElementById('engine-form').value - if (customEngine.trim() !== '') { - localStorage.setItem('engine', customEngine) - localStorage.setItem('enginename', 'Custom') + var customEngine = document.getElementById("engine-form").value; + if (customEngine.trim() !== "") { + localStorage.setItem("engine", customEngine); + localStorage.setItem("enginename", "Custom"); } else { - alert('Please enter a custom search engine value.') + alert("Please enter a custom search engine value."); } -} +} \ No newline at end of file diff --git a/static/assets/scripts/tabs.js b/static/assets/scripts/tabs.js index cd2d612f7..d660a9cee 100644 --- a/static/assets/scripts/tabs.js +++ b/static/assets/scripts/tabs.js @@ -1,216 +1,214 @@ -document.addEventListener('DOMContentLoaded', function (event) { - const addTabButton = document.getElementById('add-tab') - const tabList = document.getElementById('tab-list') - const iframeContainer = document.getElementById('iframe-container') +document.addEventListener("DOMContentLoaded", function (event) { + const addTabButton = document.getElementById("add-tab"); + const tabList = document.getElementById("tab-list"); + const iframeContainer = document.getElementById("iframe-container"); - let tabCounter = 1 + let tabCounter = 1; - addTabButton.addEventListener('click', () => { - const newTab = document.createElement('li') - const tabTitle = document.createElement('span') - const newIframe = document.createElement('iframe') + addTabButton.addEventListener("click", () => { + const newTab = document.createElement("li"); + const tabTitle = document.createElement("span"); + const newIframe = document.createElement("iframe"); - tabTitle.textContent = `New Tab` - tabTitle.className = 'tab-title' - newTab.dataset.tabId = tabCounter - newTab.addEventListener('click', switchTab) - newTab.setAttribute('draggable', true) + tabTitle.textContent = `New Tab`; + tabTitle.className = "tab-title"; + newTab.dataset.tabId = tabCounter; + newTab.addEventListener("click", switchTab); + newTab.setAttribute("draggable", true); - const closeButton = document.createElement('button') - closeButton.classList.add('close-tab') - closeButton.innerHTML = '✕' + const closeButton = document.createElement("button"); + closeButton.classList.add("close-tab"); + closeButton.innerHTML = "✕"; - closeButton.addEventListener('click', (event) => { - event.stopPropagation() + closeButton.addEventListener("click", (event) => { + event.stopPropagation(); - const tabToRemove = tabList.querySelector(`[data-tab-id='${newTab.dataset.tabId}']`) - const iframeToRemove = iframeContainer.querySelector(`[data-tab-id='${newTab.dataset.tabId}']`) + const tabToRemove = tabList.querySelector(`[data-tab-id='${newTab.dataset.tabId}']`); + const iframeToRemove = iframeContainer.querySelector(`[data-tab-id='${newTab.dataset.tabId}']`); if (tabToRemove && iframeToRemove) { - const removedTabId = parseInt(tabToRemove.dataset.tabId) - tabToRemove.remove() - iframeToRemove.remove() + const removedTabId = parseInt(tabToRemove.dataset.tabId); + tabToRemove.remove(); + iframeToRemove.remove(); - const remainingTabs = Array.from(tabList.querySelectorAll('li')) + const remainingTabs = Array.from(tabList.querySelectorAll("li")); if (remainingTabs.length > 0) { - let indexToActivate = remainingTabs.findIndex((tab) => parseInt(tab.dataset.tabId) > removedTabId) + let indexToActivate = remainingTabs.findIndex((tab) => parseInt(tab.dataset.tabId) > removedTabId); if (indexToActivate === -1) { - indexToActivate = remainingTabs.length - 1 + indexToActivate = remainingTabs.length - 1; } - const nextTabToActivate = remainingTabs[indexToActivate] - const nextIframeToActivate = iframeContainer.querySelector( - `[data-tab-id='${nextTabToActivate.dataset.tabId}']` - ) + const nextTabToActivate = remainingTabs[indexToActivate]; + const nextIframeToActivate = iframeContainer.querySelector(`[data-tab-id='${nextTabToActivate.dataset.tabId}']`); if (nextTabToActivate && nextIframeToActivate) { - nextTabToActivate.classList.add('active') - nextIframeToActivate.classList.add('active') + nextTabToActivate.classList.add("active"); + nextIframeToActivate.classList.add("active"); } } } - }) + }); - newTab.appendChild(tabTitle) - newTab.appendChild(closeButton) - tabList.appendChild(newTab) + newTab.appendChild(tabTitle); + newTab.appendChild(closeButton); + tabList.appendChild(newTab); - const allTabs = Array.from(tabList.querySelectorAll('li')) - allTabs.forEach((tab) => tab.classList.remove('active')) - const allIframes = Array.from(iframeContainer.querySelectorAll('iframe')) - allIframes.forEach((iframe) => iframe.classList.remove('active')) + const allTabs = Array.from(tabList.querySelectorAll("li")); + allTabs.forEach((tab) => tab.classList.remove("active")); + const allIframes = Array.from(iframeContainer.querySelectorAll("iframe")); + allIframes.forEach((iframe) => iframe.classList.remove("active")); - newTab.classList.add('active') + newTab.classList.add("active"); - newIframe.src = '/' - newIframe.dataset.tabId = tabCounter - newIframe.classList.add('active') - iframeContainer.appendChild(newIframe) + newIframe.src = "/"; + newIframe.dataset.tabId = tabCounter; + newIframe.classList.add("active"); + iframeContainer.appendChild(newIframe); // svery epic - newIframe.addEventListener('load', () => { - const title = newIframe.contentDocument.title - tabTitle.textContent = title - }) + newIframe.addEventListener("load", () => { + const title = newIframe.contentDocument.title; + tabTitle.textContent = title; + }); - tabCounter++ - }) + tabCounter++; + }); - window.addEventListener('message', function (event) { + window.addEventListener("message", function (event) { if (event.origin !== window.location.origin) { - console.warn('Received message from unexpected origin:', event.origin) - return + console.warn("Received message from unexpected origin:", event.origin); + return; } - console.log('Received message:', event.data) + console.log("Received message:", event.data); if (event.data && event.data.url) { - const iframes = Array.from(iframeContainer.querySelectorAll('iframe')) + const iframes = Array.from(iframeContainer.querySelectorAll("iframe")); } else { - console.log('No URL data in the message.') + console.log("No URL data in the message."); } - const activeIframe = iframes.find((iframe) => iframe.classList.contains('active')) + const activeIframe = iframes.find((iframe) => iframe.classList.contains("active")); if (activeIframe) { - console.log('Visible iframe:', activeIframe) + console.log("Visible iframe:", activeIframe); - const tabToUpdate = tabList.querySelector(`[data-tab-id='${activeIframe.dataset.tabId}']`) + const tabToUpdate = tabList.querySelector(`[data-tab-id='${activeIframe.dataset.tabId}']`); if (tabToUpdate) { - console.log('Tab to update:', tabToUpdate) + console.log("Tab to update:", tabToUpdate); - const tabTitle = tabToUpdate.querySelector('.tab-title') + const tabTitle = tabToUpdate.querySelector(".tab-title"); if (tabTitle) { - console.log('Tab title:', tabTitle) - tabTitle.textContent = event.data.url - console.log('Hostname:', event.data.url) + console.log("Tab title:", tabTitle); + tabTitle.textContent = event.data.url; + console.log("Hostname:", event.data.url); } else { - console.log('No tab title element found.') + console.log("No tab title element found."); } } else { - console.log('No tab to update found.') + console.log("No tab to update found."); } } else { - console.log('No visible iframe found.') + console.log("No visible iframe found."); } - }) + }); function switchTab(event) { - const tabId = event.target.closest('li').dataset.tabId + const tabId = event.target.closest("li").dataset.tabId; - const allTabs = Array.from(tabList.querySelectorAll('li')) - allTabs.forEach((tab) => tab.classList.remove('active')) - const allIframes = Array.from(iframeContainer.querySelectorAll('iframe')) - allIframes.forEach((iframe) => iframe.classList.remove('active')) + const allTabs = Array.from(tabList.querySelectorAll("li")); + allTabs.forEach((tab) => tab.classList.remove("active")); + const allIframes = Array.from(iframeContainer.querySelectorAll("iframe")); + allIframes.forEach((iframe) => iframe.classList.remove("active")); - const selectedTab = tabList.querySelector(`[data-tab-id='${tabId}']`) + const selectedTab = tabList.querySelector(`[data-tab-id='${tabId}']`); if (selectedTab) { - selectedTab.classList.add('active') + selectedTab.classList.add("active"); } else { - console.log('No selected tab found with ID:', tabId) + console.log("No selected tab found with ID:", tabId); } - const selectedIframe = iframeContainer.querySelector(`[data-tab-id='${tabId}']`) + const selectedIframe = iframeContainer.querySelector(`[data-tab-id='${tabId}']`); if (selectedIframe) { - selectedIframe.classList.add('active') + selectedIframe.classList.add("active"); } else { - console.log('No selected iframe found with ID:', tabId) + console.log("No selected iframe found with ID:", tabId); } } - let dragTab = null + let dragTab = null; - tabList.addEventListener('dragstart', (event) => { - dragTab = event.target - }) + tabList.addEventListener("dragstart", (event) => { + dragTab = event.target; + }); - tabList.addEventListener('dragover', (event) => { - event.preventDefault() - const targetTab = event.target - if (targetTab.tagName === 'LI' && targetTab !== dragTab) { - const targetIndex = Array.from(tabList.children).indexOf(targetTab) - const dragIndex = Array.from(tabList.children).indexOf(dragTab) + tabList.addEventListener("dragover", (event) => { + event.preventDefault(); + const targetTab = event.target; + if (targetTab.tagName === "LI" && targetTab !== dragTab) { + const targetIndex = Array.from(tabList.children).indexOf(targetTab); + const dragIndex = Array.from(tabList.children).indexOf(dragTab); if (targetIndex < dragIndex) { - tabList.insertBefore(dragTab, targetTab) + tabList.insertBefore(dragTab, targetTab); } else { - tabList.insertBefore(dragTab, targetTab.nextSibling) + tabList.insertBefore(dragTab, targetTab.nextSibling); } } - }) + }); - tabList.addEventListener('dragend', () => { - dragTab = null - }) -}) + tabList.addEventListener("dragend", () => { + dragTab = null; + }); +}); function reload() { - const iframeContainer = document.getElementById('iframe-container') - const iframes = Array.from(iframeContainer.querySelectorAll('iframe')) - const activeIframe = iframes.find((iframe) => iframe.classList.contains('active')) - activeIframe.src = activeIframe.src + const iframeContainer = document.getElementById("iframe-container"); + const iframes = Array.from(iframeContainer.querySelectorAll("iframe")); + const activeIframe = iframes.find((iframe) => iframe.classList.contains("active")); + activeIframe.src = activeIframe.src; } function expand() { - const iframeContainer = document.getElementById('iframe-container') - const iframes = Array.from(iframeContainer.querySelectorAll('iframe')) - const activeIframe = iframes.find((iframe) => iframe.classList.contains('active')) - activeIframe.requestFullscreen() + const iframeContainer = document.getElementById("iframe-container"); + const iframes = Array.from(iframeContainer.querySelectorAll("iframe")); + const activeIframe = iframes.find((iframe) => iframe.classList.contains("active")); + activeIframe.requestFullscreen(); } function goBack() { - const iframeContainer = document.getElementById('iframe-container') - const iframes = Array.from(iframeContainer.querySelectorAll('iframe')) - const activeIframe = iframes.find((iframe) => iframe.classList.contains('active')) - activeIframe.contentWindow.history.back() + const iframeContainer = document.getElementById("iframe-container"); + const iframes = Array.from(iframeContainer.querySelectorAll("iframe")); + const activeIframe = iframes.find((iframe) => iframe.classList.contains("active")); + activeIframe.contentWindow.history.back(); } function goForward() { - const iframeContainer = document.getElementById('iframe-container') - const iframes = Array.from(iframeContainer.querySelectorAll('iframe')) - const activeIframe = iframes.find((iframe) => iframe.classList.contains('active')) - activeIframe.contentWindow.history.forward() + const iframeContainer = document.getElementById("iframe-container"); + const iframes = Array.from(iframeContainer.querySelectorAll("iframe")); + const activeIframe = iframes.find((iframe) => iframe.classList.contains("active")); + activeIframe.contentWindow.history.forward(); } function erudaToggle() { - const iframeContainer = document.getElementById('iframe-container') - const iframes = Array.from(iframeContainer.querySelectorAll('iframe')) - const activeIframe = iframes.find((iframe) => iframe.classList.contains('active')) + const iframeContainer = document.getElementById("iframe-container"); + const iframes = Array.from(iframeContainer.querySelectorAll("iframe")); + const activeIframe = iframes.find((iframe) => iframe.classList.contains("active")); - const erudaWindow = activeIframe.contentWindow - const erudaDocument = activeIframe.contentDocument + const erudaWindow = activeIframe.contentWindow; + const erudaDocument = activeIframe.contentDocument; - if (!erudaWindow || !erudaDocument) return + if (!erudaWindow || !erudaDocument) return; if (erudaWindow.eruda?._isInit) { - erudaWindow.eruda.destroy() + erudaWindow.eruda.destroy(); } else { - let script = erudaDocument.createElement('script') - script.src = 'https://cdn.jsdelivr.net/npm/eruda' + let script = erudaDocument.createElement("script"); + script.src = "https://cdn.jsdelivr.net/npm/eruda"; script.onload = function () { - if (!erudaWindow) return - erudaWindow.eruda.init() - erudaWindow.eruda.show() - } - erudaWindow.document?.head?.appendChild(script) || erudaDocument.head.appendChild(script) + if (!erudaWindow) return; + erudaWindow.eruda.init(); + erudaWindow.eruda.show(); + }; + erudaWindow.document?.head?.appendChild(script) || erudaDocument.head.appendChild(script); } -} +} \ No newline at end of file diff --git a/static/assets/styles/frame.css b/static/assets/styles/frame.css index 000b36c08..8687f19f5 100644 --- a/static/assets/styles/frame.css +++ b/static/assets/styles/frame.css @@ -1,8 +1,8 @@ -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); +@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Poppins&display=swap"); body { - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; text-decoration: none; margin: 0; overflow-x: hidden; @@ -92,7 +92,7 @@ iframe { text-transform: uppercase; cursor: pointer; font-weight: 800; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; font-style: normal; font-size: 3vw; transform: translateX(-20%); @@ -102,7 +102,7 @@ iframe { text-transform: uppercase; cursor: pointer; font-weight: 800; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; font-style: normal; font-size: 3vh; transform: translateX(-20%); @@ -172,4 +172,4 @@ p { a { color: #6495ed; -} +} \ No newline at end of file diff --git a/static/assets/styles/main.css b/static/assets/styles/main.css index 9d2aee9ae..9690f304e 100644 --- a/static/assets/styles/main.css +++ b/static/assets/styles/main.css @@ -1,8 +1,8 @@ -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); +@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Poppins&display=swap"); body { - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; text-decoration: none; background: var(--page); height: 100%; @@ -23,7 +23,7 @@ body { } ::-webkit-scrollbar { - width: 6px; + width: 6px; background-color: black; } @@ -49,13 +49,13 @@ body { ::placeholder { color: var(--text-placeholder); - opacity: 1; + opacity: 1; } .main-search { width: 50vw; height: 5vh; - font-family: 'Poppins', sans-serif; + font-family: "Poppins", sans-serif; font-size: 16px; box-shadow: 0 0 15px 2px rgba(0, 0, 0, 0.2); background: var(--background-secondary); @@ -100,7 +100,7 @@ body { float: left; text-transform: uppercase; font-size: 30px; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; cursor: pointer; color: var(--text-primary); font-weight: 600; @@ -132,7 +132,7 @@ body { color: var(--text-primary); font-weight: 800; right: 2%; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; font-style: normal; text-decoration: none; transition: all 0.2s ease; @@ -147,7 +147,7 @@ body { color: var(--text-primary); font-weight: 800; right: 2%; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; font-style: normal; text-decoration: none; transition: all 0.2s ease; @@ -157,7 +157,7 @@ body { text-transform: uppercase; cursor: pointer; font-weight: 800; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; font-style: normal; font-size: 3vw; transform: translateX(-20%); @@ -168,7 +168,7 @@ body { text-transform: uppercase; cursor: pointer; font-weight: 800; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; font-style: normal; font-size: 3vh; transform: translateX(-20%); @@ -179,18 +179,13 @@ body { transition: all 0.2s ease; } - .navbar-link { margin-right: 5px; font-size: 3vh; } .material-symbols-outlined { - font-variation-settings: - 'FILL' 0, - 'wght' 400, - 'GRAD' 0, - 'opsz' 48; + font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 48; } .navbar-link:hover > .settings-icon { @@ -311,7 +306,7 @@ select { .title { font-size: 10vh; color: var(--title); - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; text-align: center; text-transform: uppercase; border-radius: 0px 0px 5px 5px; @@ -326,7 +321,7 @@ select { top: -10vw; font-size: 10vw; color: white; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; text-align: center; text-transform: uppercase; border-radius: 0px 0px 5px 5px; @@ -339,7 +334,7 @@ select { font-size: 35px; color: snow; font-weight: bold; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; text-align: center; border-radius: 0px 0px 5px 5px; transition: transform 0.2s; @@ -348,7 +343,7 @@ select { .main { letter-spacing: 0px; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; width: 100%; display: flex; flex-direction: column; @@ -386,7 +381,7 @@ select { margin-bottom: 1em; margin-top: -2em; padding: 0; - font-family: 'Poppins', sans-serif; + font-family: "Poppins", sans-serif; } .focus { @@ -423,7 +418,7 @@ select { box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; height: 100%; - display: flex; + display: flex; justify-content: center; align-items: center; } @@ -438,4 +433,4 @@ select { .fixed-nav-bar-right .navbar-link { font-size: 4.5vw; } -} +} \ No newline at end of file diff --git a/static/assets/styles/settings.css b/static/assets/styles/settings.css index db2d47577..67b9c51b7 100644 --- a/static/assets/styles/settings.css +++ b/static/assets/styles/settings.css @@ -75,7 +75,7 @@ body { .slider-round:before { position: absolute; - content: ''; + content: ""; height: 26px; width: 26px; left: 4px; @@ -206,4 +206,4 @@ select { #ab-settings-container { margin-top: 13px; margin-left: 20px; -} +} \ No newline at end of file diff --git a/static/assets/styles/tab.css b/static/assets/styles/tab.css index 3c6e6463d..17677f75f 100644 --- a/static/assets/styles/tab.css +++ b/static/assets/styles/tab.css @@ -8,7 +8,7 @@ body { margin: 0; - font-family: 'Roboto', Arial, sans-serif; + font-family: "Roboto", Arial, sans-serif; position: relative; background-color: var(--primary-color); color: var(--text-color); @@ -128,7 +128,7 @@ iframe { .hamburger, .hamburger::before, .hamburger::after { - content: ''; + content: ""; display: block; width: 100%; height: 4px; @@ -196,12 +196,10 @@ iframe { position: absolute; overflow: hidden; width: 400px; - transition: - opacity 0.5s, - width 0.5s; + transition: opacity 0.5s, width 0.5s; } .address-bar-search-form { display: flex; align-items: center; -} +} \ No newline at end of file diff --git a/static/assets/styles/tabinner.css b/static/assets/styles/tabinner.css index cb0636443..6cf9b2c2b 100644 --- a/static/assets/styles/tabinner.css +++ b/static/assets/styles/tabinner.css @@ -54,9 +54,7 @@ body { position: absolute; overflow: hidden; width: 0; - transition: - opacity 0.5s, - width 0.5s; + transition: opacity 0.5s, width 0.5s; } .search-container:hover .search-input, @@ -68,4 +66,4 @@ body { .search-form { display: flex; align-items: center; -} +} \ No newline at end of file diff --git a/static/assets/styles/themes/catppuccin/frappe.css b/static/assets/styles/themes/catppuccin/frappe.css index 71f0a972e..c117ee4b0 100644 --- a/static/assets/styles/themes/catppuccin/frappe.css +++ b/static/assets/styles/themes/catppuccin/frappe.css @@ -1,4 +1,4 @@ -@import url('https://unpkg.com/@catppuccin/palette/css/catppuccin.css'); +@import url("https://unpkg.com/@catppuccin/palette/css/catppuccin.css"); :root { --page: var(--ctp-frappe-base) /*base*/; --background: #1e1e2e; @@ -43,4 +43,4 @@ input:checked + .slider-round { .fixed-nav-bar-right:hover .navbar-link:hover { color: var(--ctp-frappe-blue) /*blue*/; -} +} \ No newline at end of file diff --git a/static/assets/styles/themes/catppuccin/latte.css b/static/assets/styles/themes/catppuccin/latte.css index 56dbc4986..fd83037f5 100644 --- a/static/assets/styles/themes/catppuccin/latte.css +++ b/static/assets/styles/themes/catppuccin/latte.css @@ -1,4 +1,4 @@ -@import url('https://unpkg.com/@catppuccin/palette/css/catppuccin.css'); +@import url("https://unpkg.com/@catppuccin/palette/css/catppuccin.css"); :root { --page: var(--ctp-latte-base) /*base*/; --background: #1e1e2e; @@ -42,4 +42,4 @@ input:checked + .slider-round { .fixed-nav-bar-right:hover .navbar-link:hover { color: var(--ctp-latte-blue) /*blue*/; -} +} \ No newline at end of file diff --git a/static/assets/styles/themes/catppuccin/macchiato.css b/static/assets/styles/themes/catppuccin/macchiato.css index 47245d27e..5486059ac 100644 --- a/static/assets/styles/themes/catppuccin/macchiato.css +++ b/static/assets/styles/themes/catppuccin/macchiato.css @@ -1,4 +1,4 @@ -@import url('https://unpkg.com/@catppuccin/palette/css/catppuccin.css'); +@import url("https://unpkg.com/@catppuccin/palette/css/catppuccin.css"); :root { --page: var(--ctp-macchiato-base) /*base*/; --background: #1e1e2e; @@ -43,4 +43,4 @@ input:checked + .slider-round { .fixed-nav-bar-right:hover .navbar-link:hover { color: var(--ctp-macchiato-blue) /*blue*/; -} +} \ No newline at end of file diff --git a/static/assets/styles/themes/catppuccin/mocha.css b/static/assets/styles/themes/catppuccin/mocha.css index b9ff39df6..ef4d7628e 100644 --- a/static/assets/styles/themes/catppuccin/mocha.css +++ b/static/assets/styles/themes/catppuccin/mocha.css @@ -1,4 +1,4 @@ -@import url('https://unpkg.com/@catppuccin/palette/css/catppuccin.css'); +@import url("https://unpkg.com/@catppuccin/palette/css/catppuccin.css"); :root { --page: var(--ctp-mocha-base) /*base*/; --background: #1e1e2e; @@ -43,4 +43,4 @@ input:checked + .slider-round { .fixed-nav-bar-right:hover .navbar-link:hover { color: var(--ctp-mocha-blue) /*blue*/; -} +} \ No newline at end of file diff --git a/static/assets/styles/themes/default.css b/static/assets/styles/themes/default.css index 9eb56d5d4..b57c30662 100644 --- a/static/assets/styles/themes/default.css +++ b/static/assets/styles/themes/default.css @@ -1,5 +1,5 @@ :root { - --page: url('/./assets/media/background/full2.png'); + --page: url("/./assets/media/background/full2.png"); --background: rgba(255, 255, 255, 0.02); --background-filter: blur(10px) brightness(80%); --background-secondary: #4545459e; @@ -20,4 +20,4 @@ --text-dark: #555; --transparent: rgb(0, 0, 0, 0); -} +} \ No newline at end of file diff --git a/static/dy/config.js b/static/dy/config.js index 57b47d47f..3f18d2c46 100644 --- a/static/dy/config.js +++ b/static/dy/config.js @@ -1,26 +1,26 @@ self.__dynamic$config = { - prefix: '/a/q/', - encoding: 'xor', - mode: 'production', + prefix: "/a/q/", + encoding: "xor", + mode: "production", logLevel: 0, bare: { version: 2, - path: '/o/', + path: "/o/", }, tab: { title: null, icon: null, - ua: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.3' + ua: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.3", }, assets: { - prefix: '/dy/', + prefix: "/dy/", files: { - handler: 'handler.js?v=4', - client: 'client.js?v=4', - worker: 'worker.js?v=4', - config: 'config.js?v=4', - inject: '' - } + handler: "handler.js?v=4", + client: "client.js?v=4", + worker: "worker.js?v=4", + config: "config.js?v=4", + inject: "", + }, }, - block: [] -}; + block: [], +}; \ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png index 655314727..12fdf45f4 100644 Binary files a/static/favicon.png and b/static/favicon.png differ diff --git a/static/games.html b/static/games.html index f1d448b8d..9ecd26885 100644 --- a/static/games.html +++ b/static/games.html @@ -1,4 +1,4 @@ - + @@ -36,15 +36,15 @@
- + \ No newline at end of file diff --git a/static/go.html b/static/go.html index 77c2ebd2b..a53147380 100644 --- a/static/go.html +++ b/static/go.html @@ -50,37 +50,24 @@

Now.gg fix is being applied, please wait.

discord!

- + - + - + - + \ No newline at end of file diff --git a/static/index.html b/static/index.html index a4ecf3182..0827ad439 100644 --- a/static/index.html +++ b/static/index.html @@ -1,4 +1,4 @@ - + @@ -33,15 +33,15 @@

Interstellar

- + \ No newline at end of file diff --git a/static/m/config.js b/static/m/config.js index 192789b99..a92339cbc 100644 --- a/static/m/config.js +++ b/static/m/config.js @@ -1,10 +1,10 @@ self.__uv$config = { - prefix: '/a/', - bare: '/o/', - encodeUrl: Ultraviolet.codec.xor.encode, - decodeUrl: Ultraviolet.codec.xor.decode, - handler: '/m/handler.js?v=4', - bundle: '/m/bundle.js?v=4', - config: '/m/config.js?v=4', - sw: '/m/sw.js?v=4', + prefix: "/a/", + bare: "/o/", + encodeUrl: Ultraviolet.codec.xor.encode, + decodeUrl: Ultraviolet.codec.xor.decode, + handler: "/m/handler.js?v=4", + bundle: "/m/bundle.js?v=4", + config: "/m/config.js?v=4", + sw: "/m/sw.js?v=4", }; \ No newline at end of file diff --git a/static/privacy.html b/static/privacy.html index 5a33eaa21..f4b389793 100644 --- a/static/privacy.html +++ b/static/privacy.html @@ -1,4 +1,4 @@ - + @@ -18,20 +18,21 @@

Privacy Policy

Last Updated: April 19th, 2024.

+
- + \ No newline at end of file diff --git a/static/settings.html b/static/settings.html index b81c7eac8..35a2bbf60 100644 --- a/static/settings.html +++ b/static/settings.html @@ -1,4 +1,4 @@ - + @@ -115,10 +115,7 @@

Search Engine

Choose your Proxy

-

- Ultraviolet is the main proxy, but Dynamic is faster and supports more sites! (Dynamic is - still in beta, so it has some bugs.) -

+

Ultraviolet is the main proxy, but Dynamic is faster and supports more sites! (Dynamic is still in beta, so it has some bugs.)

@@ -172,7 +168,7 @@

Information

Cookie Policy

--->

Questions? Join our - Community! Or email us hello@gointerstellar.app + Community! Or email us hello@gointerstellar.app

@@ -182,15 +178,15 @@

Information

- + \ No newline at end of file diff --git a/static/sw.js b/static/sw.js index 098bebb18..8eabb8fec 100644 --- a/static/sw.js +++ b/static/sw.js @@ -1,27 +1,27 @@ -importScripts('/dy/config.js?v=4') -importScripts('/dy/worker.js?v=4') -importScripts('/m/bundle.js?v=4') -importScripts('/m/config.js?v=4') -importScripts(__uv$config.sw || '/m/sw.js?v=4') +importScripts("/dy/config.js?v=4"); +importScripts("/dy/worker.js?v=4"); +importScripts("/m/bundle.js?v=4"); +importScripts("/m/config.js?v=4"); +importScripts(__uv$config.sw || "/m/sw.js?v=4"); -const uv = new UVServiceWorker() -const dynamic = new Dynamic() +const uv = new UVServiceWorker(); +const dynamic = new Dynamic(); -let userKey = new URL(location).searchParams.get('userkey') -self.dynamic = dynamic +let userKey = new URL(location).searchParams.get("userkey"); +self.dynamic = dynamic; -self.addEventListener('fetch', (event) => { +self.addEventListener("fetch", (event) => { event.respondWith( (async function () { if (await dynamic.route(event)) { - return await dynamic.fetch(event) + return await dynamic.fetch(event); } - if (event.request.url.startsWith(location.origin + '/a/')) { - return await uv.fetch(event) + if (event.request.url.startsWith(location.origin + "/a/")) { + return await uv.fetch(event); } - return await fetch(event.request) + return await fetch(event.request); })() - ) -}) + ); +}); \ No newline at end of file diff --git a/static/tabs.html b/static/tabs.html index 6586e7fe3..d7d5e5cea 100644 --- a/static/tabs.html +++ b/static/tabs.html @@ -1,4 +1,4 @@ - + @@ -13,7 +13,7 @@ @@ -48,47 +48,45 @@
@@ -96,14 +94,14 @@ - + \ No newline at end of file diff --git a/static/tos.html b/static/tos.html index 6efda0aae..4fa3cc69f 100644 --- a/static/tos.html +++ b/static/tos.html @@ -1,207 +1,175 @@ - - - - - - - - - Home - - - - - - -
-
-
-
-
-

- Interstellar privacy policy and terms of use -

-

Section 1: Definitions

-

- In this privacy policy, "We" refers to "Interstellar". "Personally-identifiable information" (PII) refers to - information that can be used to identify a person such as IP addresses. "Official Interstellar deployments" refer to - the Interstellar application running on the official server. "Interstellar deployment operator" refers to the - person(s) running the Interstellar application. "ToS" refers to Terms of Service. -

-

- Please redirect any general inquiries to our official community on - Discord. Redirect any questions regarding unofficial Interstellar - deployments to its operator. -

-

Section 2: Summary

-
  • By using Interstellar, you agree you understand and acknowledge this privacy policy and its clauses.
  • -
  • - Interstellar will not be held liable in any situation that may occur as a result of using or hosting the - Interstellar application on ANY Interstellar deployment. -
  • -
  • - The safest way to use Interstellar is by using its official deployments or by - hosting Interstellar on your own machine. -
  • -

    Section 2.1: Summary - Offical Interstellar Deployment

    -
  • - Official Interstellar deployments are run with privacy in mind. - We do not intentionally collect and retain any PII such as IP addresses used to access the official Interstellar - deployment. -
  • -

    Section 2.2: Summary - Unofficial Interstellar Deployments

    -
  • - Interstellar developers are commited to ensuring Interstellar remains as a secure application. However, we cannot - guarantee the same level of security or privacy of unofficial Interstellar deployments. -
  • -
  • - The type of information collected on community deployments is completely dependent on who and where the deployment - is being hosted. -
  • -
  • Generally, we recommend Interstellar deployment operators to collect as minimal information as possible.
  • -
  • We cannot control unofficial Interstellar deployments.
  • -
  • - We cannot verify the authenticity of the code in unofficial Interstellar deployments. This is an extremely rare - situation, but we will not be held responsible if your data such as an account becomes compromised as a result of - malicious code in an unofficial Interstellar deployment. -
  • -

    Section 3: Acceptable Use

    -
  • Do not use any Interstellar deployment to do illegal activity.
  • -
  • If you are under 18, do not use any Interstellar deployment to access any adult sites.
  • -

    Section 4: Third Parties

    -

    Section 4.1: Google Analytics Usage

    -
  • Google Analytics is active and embedded in Interstellar's code.
  • -
  • - You may read the Google Analytics ToS here. -
  • -
  • - You may read "HOW GOOGLE USES INFORMATION FROM SITES OR APPS THAT USE OUR SERVICES" here. -
  • -

    Section 4.2: Our community on Discord

    -
  • - Our official community on Discord is accessible at - https://discord.gg/interstellar. -
  • -
  • By joining, you agree and acknowledge our Discord server rules.
  • -
  • You can read the Discord ToS here.
  • -
  • You can read the Discord privacy policy here.
  • -
  • You can read the Discord community guidelines here.
  • -

    Section 4.3: Our commmunity and repository at GitHub

    -
  • - Interstellar is an open source project. - You can view its code by clicking here. -
  • -
  • - You can read the GitHub ToS here. -
  • -
  • - You can read the GitHub General Privacy Statement here. -
  • -

    Section 4.4: Supporting Interstellar using Patreon

    -
  • Interstellar uses Patreon as a way for people to donate and support Interstellar.
  • -
  • You can read the Patreon ToS here.
  • -
  • You can read the Patreon Privacy Policy here.
  • -
  • You can read the Patreon Cookie Policy here.
  • -

    Section 4.5: Supporting Interstellar using Cash App

    -
  • Interstellar accepts Cash App as a way for people to donate and support Interstellar.
  • -
  • You can read the Cash App privacy policy here.
  • -
  • You can read the Cash App ToS here.
  • -

    Section 5: The information we collect

    -

    Section 5.1: The official Interstellar deployment

    -
  • - Information that may be unintentionally collected as part of using Interstellar's official deployment may include - basic information such as your IP address, web traffic when using Interstellar, etc. This information is temporary - and is kept until the server is rebooted. -
  • -
  • - We do not purposefully collect anyone's information. We try to limit the data collected by the official Interstellar - deployment. -
  • -
  • - We do not, will not, and will never knowingly collect the information of minors under the age of 13 (or the minimum - age required by laws in your country). -
  • -

    Section 5.2: Unofficial Interstellar Deployments

    -
  • - We can't give a definitive answer on what information is collected when you use a unofficial Interstellar - deployment, only the operator of the Interstellar deployment you're using can. -
  • -
  • We urge operators to collect and store as minimal information as possible, but we can't control what they do.
  • -

    Section 6: Control

    -
  • - We do not have the power to control what unofficial Interstellar deployment operators do with their deployment. -
  • -
  • - We protect information stored on the official Interstellar deployment by limiting access. The only person that has - access to the server of which the official Interstellar deployment runs on is the server host and the owner of - Interstellar, xbubbo. -
  • -
  • - We cannot check every deployment for malicious code. If any data such as your account gets compromised after you - access it on a unofficial Interstellar deployment, we will not be held liable. -
  • -

    - Section 7: How we use basic information on the official Interstellar deployment that may be collected accidentally -

    -
  • - Your IP address is used to allow you to use the Interstellar service. This is how it works for every website you - visit, not just Interstellar. The difference is whether or not this data is intentionally collected and stored. -
  • -
  • - Info about your web traffic while using Interstellar is needed to allow you to access the service you wish to - access. -
  • -
  • - Interstellar will NEVER sell your info to third-parties, other than to some ad companies. We do this so we can make - enough money to pay for our server. -
  • -
  • - The official Interstellar server operator may respond to legal requests and assist law enforcement officials in - legal investigations if ever needed. We can't guarantee we'll always have information to hand out as the information - that may be collected is automatically destroyed on reboot, but if we do still have information relevent to the - investigation, we may provide law enforcement officials with it. Please redirect all requests regarding data with an - unofficial Interstellar deployment to its operator, as we don't have control over unofficial deployments and - couldn't comply with requests even if we wanted to. -
  • -

    Section 8: Supporters ❤

    -
  • - You may choose to support Interstellar by joining our - Discord community, then purchasing a payment plan on the - Patreon page or by sending - $akabubbo money on Cash App. -
  • -
  • - As a thank you for supporting Interstellar, you get access to supporter features. This includes a server with an - Interstellar deployment for supporters only. We cannot guarantee 100% uptime. -
  • -
  • This is NON-REFUNDABLE.
  • -

    Last Updated

    -

    April 12, 2024 - Privacy Policy & ToS created.

    - - - - - + + + +
    +
    +
    +
    +
    +

    Interstellar privacy policy and terms of use

    +

    Section 1: Definitions

    +

    + In this privacy policy, "We" refers to "Interstellar". "Personally-identifiable information" (PII) refers to information that can be used to identify a person such as IP addresses. "Official Interstellar deployments" refer to the + Interstellar application running on the official server. "Interstellar deployment operator" refers to the person(s) running the Interstellar application. "ToS" refers to Terms of Service. +

    +

    + Please redirect any general inquiries to our official community on + Discord. Redirect any questions regarding unofficial Interstellar deployments to its operator. +

    +

    Section 2: Summary

    +
  • By using Interstellar, you agree you understand and acknowledge this privacy policy and its clauses.
  • +
  • + Interstellar will not be held liable in any situation that may occur as a result of using or hosting the Interstellar application on ANY Interstellar deployment. +
  • +
  • + The safest way to use Interstellar is by using its official deployments or by + hosting Interstellar on your own machine. +
  • +

    Section 2.1: Summary - Offical Interstellar Deployment

    +
  • + Official Interstellar deployments are run with privacy in mind. + We do not intentionally collect and retain any PII such as IP addresses used to access the official Interstellar deployment. +
  • +

    Section 2.2: Summary - Unofficial Interstellar Deployments

    +
  • + Interstellar developers are commited to ensuring Interstellar remains as a secure application. However, we cannot guarantee the same level of security or privacy of unofficial Interstellar deployments. +
  • +
  • + The type of information collected on community deployments is completely dependent on who and where the deployment is being hosted. +
  • +
  • Generally, we recommend Interstellar deployment operators to collect as minimal information as possible.
  • +
  • We cannot control unofficial Interstellar deployments.
  • +
  • + We cannot verify the authenticity of the code in unofficial Interstellar deployments. This is an extremely rare situation, but we will not be held responsible if your data such as an account becomes compromised as a result of + malicious code in an unofficial Interstellar deployment. +
  • +

    Section 3: Acceptable Use

    +
  • Do not use any Interstellar deployment to do illegal activity.
  • +
  • If you are under 18, do not use any Interstellar deployment to access any adult sites.
  • +

    Section 4: Third Parties

    +

    Section 4.1: Google Analytics Usage

    +
  • Google Analytics is active and embedded in Interstellar's code.
  • +
  • + You may read the Google Analytics ToS here. +
  • +
  • + You may read "HOW GOOGLE USES INFORMATION FROM SITES OR APPS THAT USE OUR SERVICES" here. +
  • +

    Section 4.2: Our community on Discord

    +
  • + Our official community on Discord is accessible at + https://discord.gg/interstellar. +
  • +
  • By joining, you agree and acknowledge our Discord server rules.
  • +
  • You can read the Discord ToS here.
  • +
  • You can read the Discord privacy policy here.
  • +
  • You can read the Discord community guidelines here.
  • +

    Section 4.3: Our commmunity and repository at GitHub

    +
  • + Interstellar is an open source project. + You can view its code by clicking here. +
  • +
  • + You can read the GitHub ToS here. +
  • +
  • + You can read the GitHub General Privacy Statement here. +
  • +

    Section 4.4: Supporting Interstellar using Patreon

    +
  • Interstellar uses Patreon as a way for people to donate and support Interstellar.
  • +
  • You can read the Patreon ToS here.
  • +
  • You can read the Patreon Privacy Policy here.
  • +
  • You can read the Patreon Cookie Policy here.
  • +

    Section 4.5: Supporting Interstellar using Cash App

    +
  • Interstellar accepts Cash App as a way for people to donate and support Interstellar.
  • +
  • You can read the Cash App privacy policy here.
  • +
  • You can read the Cash App ToS here.
  • +

    Section 5: The information we collect

    +

    Section 5.1: The official Interstellar deployment

    +
  • + Information that may be unintentionally collected as part of using Interstellar's official deployment may include basic information such as your IP address, web traffic when using Interstellar, etc. This information is temporary and + is kept until the server is rebooted. +
  • +
  • + We do not purposefully collect anyone's information. We try to limit the data collected by the official Interstellar deployment. +
  • +
  • + We do not, will not, and will never knowingly collect the information of minors under the age of 13 (or the minimum age required by laws in your country). +
  • +

    Section 5.2: Unofficial Interstellar Deployments

    +
  • + We can't give a definitive answer on what information is collected when you use a unofficial Interstellar deployment, only the operator of the Interstellar deployment you're using can. +
  • +
  • We urge operators to collect and store as minimal information as possible, but we can't control what they do.
  • +

    Section 6: Control

    +
  • + We do not have the power to control what unofficial Interstellar deployment operators do with their deployment. +
  • +
  • + We protect information stored on the official Interstellar deployment by limiting access. The only person that has access to the server of which the official Interstellar deployment runs on is the server host and the owner of + Interstellar, xbubbo. +
  • +
  • + We cannot check every deployment for malicious code. If any data such as your account gets compromised after you access it on a unofficial Interstellar deployment, we will not be held liable. +
  • +

    + Section 7: How we use basic information on the official Interstellar deployment that may be collected accidentally +

    +
  • + Your IP address is used to allow you to use the Interstellar service. This is how it works for every website you visit, not just Interstellar. The difference is whether or not this data is intentionally collected and stored. +
  • +
  • + Info about your web traffic while using Interstellar is needed to allow you to access the service you wish to access. +
  • +
  • + Interstellar will NEVER sell your info to third-parties, other than to some ad companies. We do this so we can make enough money to pay for our server. +
  • +
  • + The official Interstellar server operator may respond to legal requests and assist law enforcement officials in legal investigations if ever needed. We can't guarantee we'll always have information to hand out as the information that + may be collected is automatically destroyed on reboot, but if we do still have information relevent to the investigation, we may provide law enforcement officials with it. Please redirect all requests regarding data with an unofficial + Interstellar deployment to its operator, as we don't have control over unofficial deployments and couldn't comply with requests even if we wanted to. +
  • +

    Section 8: Supporters ❤

    +
  • + You may choose to support Interstellar by joining our + Discord community, then purchasing a payment plan on the Patreon page or by sending + $akabubbo money on Cash App. +
  • +
  • + As a thank you for supporting Interstellar, you get access to supporter features. This includes a server with an Interstellar deployment for supporters only. We cannot guarantee 100% uptime. +
  • +
  • This is NON-REFUNDABLE.
  • +

    Last Updated

    +

    April 12, 2024 - Privacy Policy & ToS created.

    + + + + - + gtag("config", "G-WKJQ5QHQTJ"); + + + + \ No newline at end of file