update configuration and fix analytics

This commit is contained in:
Russell2259
2024-01-24 20:28:13 +00:00
parent e326f7314e
commit 2f8ca38bca
8 changed files with 70 additions and 47 deletions
+38
View File
@@ -0,0 +1,38 @@
var config = {
port: 8080,
mode: 'prod',
options: {
api: {
domain: 'api.polarislearning.org',
secure: true
},
minify: false,
assetScrambling: false,
allowDangerousTemplateInsert: true
}
};
/**
* @param {config} userConfig
* @returns {config}
*/
export const useConfig = (userConfig) => {
config = {
...config,
...userConfig,
mode: (process.argv[2] === 'prod' || process.argv[2] === 'dev' ? process.argv[2] : (process.argv[3] === 'prod' || process.argv[3] === 'dev' ? process.argv[3] : (userConfig.mode === 'prod' || userConfig.mode === 'dev' ? userConfig.mode : 'prod'))),
port: (process.argv[2] !== 'prod' && process.argv[2] !== 'dev' && Boolean(Number(process.argv[2]))) ? process.argv[2] : (Boolean(Number(process.argv[3])) ? process.argv[3] : (Boolean(Number(userConfig.port)) ? userConfig.port : (mode === 'prod' ? 80 : 8080)))
};
Object.keys(userConfig).forEach(option => {
if (typeof config[option] === 'function') config[option] = config[option]();
});
return config;
}
/**
* @returns {config}
*/
export const getConfig = () => config;
export default useConfig;
+14 -11
View File
@@ -1,14 +1,17 @@
import configTemplate from './polaris.config.template.js';
import useConfig from './lib/config.js';
/**
* @type {configTemplate}
*/
export default {
export default useConfig({
port: 8080,
mode: 'prod',
//Messes up uv
minify: false,
//Beta
assetScrambling: false,
allowDangerousTemplateInsert: true
};
options: {
//Messes up uv
minify: false,
//Beta
assetScrambling: false,
allowDangerousTemplateInsert: true,
api: {
domain: 'api.polarislearning.org',
secure: true
}
}
});
-22
View File
@@ -1,22 +0,0 @@
export default {
/**
* @type {'auto' | number}
*/
port: 8080,
/**
* @type {'prod' | 'dev'}
*/
mode: 'prod',
/**
* @type {boolean}
*/
minify: true,
/**
* @type {boolean}
*/
assetScrambling: true,
/**
* @type {boolean}
*/
allowDangerousTemplateInsert: false
};
+4 -5
View File
@@ -8,7 +8,6 @@ import fs from 'node:fs';
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
const packageFile = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json')));
const commits = await (await fetch(`https://api.github.com/repos/Skoolgq/Polaris/commits`)).json();
const mode = (process.argv[2] === 'prod' || process.argv[2] === 'dev' ? process.argv[2] : (process.argv[3] === 'prod' || process.argv[3] === 'dev' ? process.argv[3] : (config.mode === 'prod' || config.mode === 'dev' ? config.mode : 'prod')));
var gitSupported = true;
/**
@@ -17,7 +16,7 @@ var gitSupported = true;
const routes = (app) => {
app.get('/api/analytics/site/:domain', async (req, res, next) => {
try {
const request = await fetch('https://api.polarislearning.org/analytics/site/' + req.params.domain);
const request = await fetch((config.options.api.secure ? 'https' : 'http') + '://' + config.options.api.domain + '/analytics/site/' + req.params.domain);
const buffer = Buffer.from(await request.arrayBuffer());
res.header('content-type', request.headers.get('content-type')).end(buffer);
@@ -26,7 +25,7 @@ const routes = (app) => {
app.get('/api/analytics/script.js', async (req, res, next) => {
try {
const request = await fetch('https://api.polarislearning.org/analytics/script.js');
const request = await fetch((config.options.api.secure ? 'https' : 'http') + '://' + config.options.api.domain + '/analytics/script.js');
const buffer = Buffer.from(await request.arrayBuffer());
res.header('content-type', request.headers.get('content-type')).end(buffer);
@@ -35,7 +34,7 @@ const routes = (app) => {
app.post('/api/analytics/api/send', async (req, res, next) => {
try {
const request = await fetch('https://api.polarislearning.org/analytics/api/send', {
const request = await fetch((config.options.api.secure ? 'https' : 'http') + '://' + config.options.api.domain + '/analytics/api/send', {
method: 'POST',
headers: req.headers,
body: JSON.stringify(req.body)
@@ -73,7 +72,7 @@ const routes = (app) => {
upToDate: false
};
changelog.mode = mode === 'dev' ? 'development' : 'production';
changelog.mode = config.mode === 'dev' ? 'development' : 'production';
res.json(changelog);
});
+1 -3
View File
@@ -18,8 +18,6 @@ const server = http.createServer();
const bareServer = createBareServer('/bare/');
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
const packageFile = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json')));
const mode = (process.argv[2] === 'prod' || process.argv[2] === 'dev' ? process.argv[2] : (process.argv[3] === 'prod' || process.argv[3] === 'dev' ? process.argv[3] : (config.mode === 'prod' || config.mode === 'dev' ? config.mode : 'prod')));
const port = (process.argv[2] !== 'prod' && process.argv[2] !== 'dev' && Boolean(Number(process.argv[2]))) ? process.argv[2] : (Boolean(Number(process.argv[3])) ? process.argv[3] : (Boolean(Number(config.port)) ? config.port : (mode === 'prod' ? 80 : 8080)));
const swPaths = [
'/uv/sw.js',
@@ -143,4 +141,4 @@ server.on('upgrade', (req, socket, head) => {
else socket.end();
});
server.listen(port, () => console.log(`Polaris running\n\nPort: ${server.address().port}\nVersion: ${packageFile.version + (Number(packageFile.version.split('.')[0]) <= 1 ? ' Beta' : '') || 'Unknown'} ${childProcess.execSync('git rev-parse HEAD').toString().trim().slice(0, 7) || 'Unknown'}\nMode: ${mode === 'dev' ? 'development' : 'production'}\nNode.js: ${process.version}`));
server.listen(config.port, () => console.log(`Polaris running\n\nPort: ${server.address().port}\nVersion: ${packageFile.version + (Number(packageFile.version.split('.')[0]) <= 1 ? ' Beta' : '') || 'Unknown'} ${childProcess.execSync('git rev-parse HEAD').toString().trim().slice(0, 7) || 'Unknown'}\nMode: ${config.mode === 'dev' ? 'development' : 'production'}\nAPI Server: ${config.options.api.domain}\nNode.js: ${process.version}`));
-1
View File
@@ -10,7 +10,6 @@ import path from 'node:path';
import url from 'node:url';
import fs from 'node:fs';
const mode = (process.argv[2] === 'prod' || process.argv[2] === 'dev' ? process.argv[2] : (process.argv[3] === 'prod' || process.argv[3] === 'dev' ? process.argv[3] : (config.mode === 'prod' || config.mode === 'dev' ? config.mode : 'prod')));
const __dirname = url.fileURLToPath(new URL('../', import.meta.url));
const templateParser = (data) => {
+12 -2
View File
@@ -1,5 +1,10 @@
import { storage } from './utils.js';
const umamiSpoof = {
track: () => {},
identify: () => {}
};
export default () => new Promise(async (resolve, reject) => {
const analyticsPreferences = storage('analytics');
@@ -10,7 +15,7 @@ export default () => new Promise(async (resolve, reject) => {
try {
analyticsData = await (await fetch('/api/analytics/site/' + location.hostname)).json();
analyticsPreferences.set('savedResponse', analyticsData);
} catch (e) { analyticsPreferences.set('enabled', false); resolve({}); }
} catch (e) { analyticsPreferences.set('enabled', false); resolve({}); window.umami = window.umami || umamiSpoof; }
} else analyticsData = analyticsPreferences.get('savedResponse');
if (analyticsData.success/* && analyticsData.data.domain === location.hostname*/) {
@@ -24,9 +29,14 @@ export default () => new Promise(async (resolve, reject) => {
document.head.appendChild(script);
script.onload = () => resolve(window.umami);
window.umami = window.umami || umamiSpoof;
} else {
analyticsPreferences.set('enabled', false);
resolve({});
window.umami = window.umami || umamiSpoof;
}
} else resolve({});
} else {
resolve({});
window.umami = window.umami || umamiSpoof;
}
});
+1 -3
View File
@@ -7,7 +7,7 @@ import Cheats from './cheats.js';
import Games from './games.js';
import Apps from './apps.js';
const umami = await loadAnalytics();
await loadAnalytics();
if (location.pathname !== '/view') loadSidebarInterface();
loadEasterEggs();
@@ -48,8 +48,6 @@ setInterval(() => {
scope: '/'
});*/
localStorage.clear();
window.addEventListener('DOMContentLoaded', () => setTimeout(() => document.body.style.opacity = 1, 1000));
/**