Merge pull request #2 from Redume/beta
Some checks are pending
Create and publish a Docker image / build-and-push-server (push) Waiting to run
Create and publish a Docker image / build-and-push-chart (push) Waiting to run
Create and publish a Docker image / build-and-push-CR (push) Waiting to run
Deploy docs / deploy (push) Waiting to run

feat(server): Deleted root with instance config due to unnecessity
This commit is contained in:
Данил 2024-12-14 21:12:47 +03:00 committed by GitHub
commit 9750900d3e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 79 additions and 102 deletions

View file

@ -1,109 +1,101 @@
const logger = require('../shared/logger/src/main.js'); const logger = require("../shared/logger/src/main.js");
const config = require('../shared/config/src/main.js')(); const config = require("../shared/config/src/main.js")();
const fs = require('fs'); const fs = require("fs");
const axios = require('axios'); const axios = require("axios");
const UAParser = require('ua-parser-js'); const UAParser = require("ua-parser-js");
require('../shared/database/src/create_table.js')(); require("../shared/database/src/create_table.js")();
const fastify = require('fastify')({ const fastify = require("fastify")({
logger: config['server']['log']['print'] ? logger : false, logger: config["server"]["log"]["print"] ? logger : false,
...(config['server']['ssl']['work'] ...(config["server"]["ssl"]["work"]
? { ? {
https: { https: {
key: fs.readFileSync( key: fs.readFileSync(config["server"]["ssl"]["private_key"], "utf8"),
config['server']['ssl']['private_key'], cert: fs.readFileSync(config["server"]["ssl"]["cert"], "utf8"),
'utf8', },
), }
cert: fs.readFileSync( : false),
config['server']['ssl']['cert'],
'utf8',
),
},
}
: false),
}); });
const getRateRoute = require('./routes/getRate.js'); const getRateRoute = require("./routes/getRate.js");
const configurationRoutes = require('./routes/configuration.js'); const HomeRoute = require("./routes/home.js");
const HomeRoute = require('./routes/home.js');
fastify.register(getRateRoute); fastify.register(getRateRoute);
fastify.register(configurationRoutes);
fastify.register(HomeRoute); fastify.register(HomeRoute);
fastify.setNotFoundHandler(function (res, reply) { fastify.setNotFoundHandler(function (res, reply) {
return reply.status(404).send({ return reply.status(404).send({
status: 404, status: 404,
message: 'Page not found!', message: "Page not found!",
documentation: 'https://kekkai-docs.redume.su/', documentation: "https://kekkai-docs.redume.su/",
}); });
}); });
fastify.addHook('onResponse', async (request, reply) => { fastify.addHook("onResponse", async (request, reply) => {
const routePart = request.raw.url.split('/'); const routePart = request.raw.url.split("/");
const routePartFiltered = routePart const routePartFiltered = routePart
.filter((part) => part !== '') .filter((part) => part !== "")
.map((part) => `${part}/`); .map((part) => `${part}/`);
routePartFiltered.unshift('/'); routePartFiltered.unshift("/");
if (!config?.['analytics']['work'] ? config?.['analytics']['work'] : false) if (!config?.["analytics"]["work"] ? config?.["analytics"]["work"] : false)
return; return;
else if (!fastify.printRoutes().includes(routePartFiltered.at(-1))) return; else if (!fastify.printRoutes().includes(routePartFiltered.at(-1))) return;
const userAgent = request.headers['user-agent']; const userAgent = request.headers["user-agent"];
const parser = new UAParser(userAgent); const parser = new UAParser(userAgent);
const browser = parser.getBrowser(); const browser = parser.getBrowser();
const os = parser.getOS(); const os = parser.getOS();
const formattedOS = const formattedOS =
os.name && os.version ? `${os.name} ${os.version}` : 'N/A'; os.name && os.version ? `${os.name} ${os.version}` : "N/A";
const formattedBrowser = const formattedBrowser =
browser.name && browser.version browser.name && browser.version
? `${browser.name} ${browser.version}` ? `${browser.name} ${browser.version}`
: 'N/A'; : "N/A";
const event = { const event = {
domain: config['analytics']['plausible_domain'], domain: config["analytics"]["plausible_domain"],
name: request.routeOptions.url name: request.routeOptions.url
? request.routeOptions.url ? request.routeOptions.url
: '404 - Not Found', : "404 - Not Found",
url: request.raw.url, url: request.raw.url,
props: { props: {
method: request.method, method: request.method,
statusCode: reply.statusCode, statusCode: reply.statusCode,
browser: formattedBrowser, browser: formattedBrowser,
os: formattedOS, os: formattedOS,
source: request.headers['referer'] source: request.headers["referer"]
? request.headers['referer'] ? request.headers["referer"]
: 'direct', : "direct",
}, },
}; };
try { try {
await axios.post(config['analytics']['plausible_api'], event, { await axios.post(config["analytics"]["plausible_api"], event, {
headers: { headers: {
Authorization: `Bearer ${config['analytics']['plausible_token']}`, Authorization: `Bearer ${config["analytics"]["plausible_token"]}`,
'Content-Type': 'application/json', "Content-Type": "application/json",
'User-Agent': userAgent, "User-Agent": userAgent,
}, },
}); });
} catch (error) { } catch (error) {
fastify.log.error('Error sending event to Plausible:', error.message); fastify.log.error("Error sending event to Plausible:", error.message);
} }
}); });
fastify.listen( fastify.listen(
{ {
port: 3000, port: 3000,
host: config['server']['host'] ? config['server']['host'] : 'localhost', host: config["server"]["host"] ? config["server"]["host"] : "localhost",
}, },
(err) => { (err) => {
if (err) { if (err) {
fastify.log.error(err); fastify.log.error(err);
process.exit(1); process.exit(1);
} }
}, },
); );

View file

@ -1,15 +0,0 @@
const config = require('../../shared/config/src/main.js')();
module.exports = async function configurationRoutes(fastify) {
fastify.get('/api/configurations/json', async function (req, res) {
delete config['database'];
delete config['currency']['coinapiKeys'];
delete config['server']['ssl']['private_key'];
delete config['server']['ssl']['cert'];
delete config['analytics']['plausible_token'];
return res.status(200).send({
config,
});
});
};