update configuration and fix analytics
This commit is contained in:
@@ -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
@@ -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
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -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
@@ -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
@@ -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}`));
|
||||
@@ -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) => {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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));
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user