mirror of
https://github.com/gnmyt/myspeed.git
synced 2025-12-30 17:49:33 -06:00
69 lines
2.1 KiB
JavaScript
Executable File
69 lines
2.1 KiB
JavaScript
Executable File
const express = require('express');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const timerTask = require('./tasks/timer');
|
|
|
|
const app = express();
|
|
const port = process.env.port || 5216;
|
|
|
|
if (!fs.existsSync("data")) {
|
|
try {
|
|
fs.mkdirSync("data", {recursive: true});
|
|
} catch (e) {
|
|
console.error("Could not create the data folder. Please check the permission");
|
|
process.exit(0);
|
|
}
|
|
}
|
|
|
|
let db;
|
|
try {
|
|
db = require('better-sqlite3')('data/storage.db');
|
|
console.log("Successfully connected to the database file");
|
|
} catch (e) {
|
|
console.error("Could not open the database file. Maybe it is damaged?");
|
|
process.exit();
|
|
}
|
|
|
|
module.exports.database = db;
|
|
|
|
// Create servers.json
|
|
require('./tasks/loadServers');
|
|
|
|
// Create all tables & insert the defaults
|
|
require("./controller/tables").create();
|
|
require("./controller/tables").insert();
|
|
|
|
// Start all timer
|
|
timerTask.startTimer(require('./controller/config').get("timeLevel").value);
|
|
let removeInterval = setInterval(async () => require('./tasks/speedtest').removeOld(), 60000);
|
|
|
|
// Register middlewares
|
|
app.use(express.json());
|
|
app.use("/api/*", require('./middlewares/password'));
|
|
|
|
// Register routes
|
|
app.use("/api/config", require('./routes/config'));
|
|
app.use("/api/speedtests", require('./routes/speedtests'));
|
|
app.use("/api/info", require('./routes/system'));
|
|
app.use("/api/export", require('./routes/export'));
|
|
app.use("/api/recommendations", require('./routes/recommendations'));
|
|
app.use("/api*", (req, res) => res.status(404).json({message: "Route not found"}));
|
|
|
|
// Enable production
|
|
if (process.env.NODE_ENV === 'production') {
|
|
app.use(express.static(path.join(__dirname, '../build')));
|
|
|
|
app.get('*', (req, res) => {
|
|
res.sendFile(path.join(__dirname, '../build', 'index.html'));
|
|
});
|
|
} else {
|
|
app.get("*", (req, res) => {
|
|
res.status(500).send("<h2>Diese MySpeed-Instanz befindet sich aktuell im Entwicklungsmodus.<br/><br/>"
|
|
+ "Wenn du der Betreiber bist, bitte ändere deine Umgebungsvariable ab.</h2>");
|
|
});
|
|
}
|
|
|
|
// Make a speedtest
|
|
timerTask.runTask();
|
|
|
|
app.listen(port, () => console.log(`Server listening on port ${port}`)); |