104 lines
2.3 KiB
JavaScript
104 lines
2.3 KiB
JavaScript
"use strict";
|
|
|
|
const express = require("express");
|
|
//const bodyHand = require("body");
|
|
const config = require("./config-handler");
|
|
// const http = require("http");
|
|
const { Database } = require("./database");
|
|
const { Logger } = require('./logger');
|
|
|
|
const app = express();
|
|
|
|
// global.database = new Database(
|
|
// config().database.address,
|
|
// config().database.port,
|
|
// config().database.username,
|
|
// config().database.password,
|
|
// config().database.database
|
|
// );
|
|
|
|
/*http.ServerResponse.prototype.errorModeOn = function () {
|
|
this.isError = true;
|
|
};
|
|
|
|
http.ServerResponse.prototype.bindNext = function (next) {
|
|
this.next = next;
|
|
};
|
|
|
|
http.ServerResponse.prototype.sendModed = function (sendData) {
|
|
// Модифицируем res.send
|
|
if (sendData !== undefined && config().logger_mode) {
|
|
this.responseData = sendData;
|
|
require("./logger")(this.req, this, this.next);
|
|
}
|
|
this.send(sendData);
|
|
};
|
|
|
|
app.use((req, res, next) => {
|
|
res.bindNext(next);
|
|
next();
|
|
});
|
|
|
|
app.use((req, res, next) => {
|
|
// Для добавления оригинального тела запроса
|
|
const body = bodyHand(
|
|
req,
|
|
res,
|
|
{
|
|
limit: 9999999999,
|
|
cache: false,
|
|
encoding: "base64",
|
|
},
|
|
(err, body) => {
|
|
if (!err) {
|
|
req.byteBody = Buffer.from(body, "base64");
|
|
|
|
// Запись в req.json при json
|
|
if (!!req.headers && req.headers["content-type"]?.includes("json")) {
|
|
try {
|
|
req.json = JSON.parse(req.byteBody.toString("utf8"));
|
|
} catch (_e) {}
|
|
}
|
|
}
|
|
next();
|
|
},
|
|
);
|
|
});*/
|
|
|
|
app.use(async (req, res, next) => {
|
|
req.logger = new Logger();
|
|
req.logger.log(
|
|
new Date(),
|
|
req.ip,
|
|
`Пользователь обратился по пути: ${req.originalUrl} (HTTP ${req.httpVersion}; ${req.method})`
|
|
);
|
|
});
|
|
|
|
app.use("/", require("./page-view"));
|
|
app.use("/api", require("./api"));
|
|
|
|
// Подключение через HTTPS
|
|
let server;
|
|
if (!config().ssl.enabled) {
|
|
server = app;
|
|
} else {
|
|
const https = require("https");
|
|
server = https.createServer(
|
|
{
|
|
cert: fs.readFileSync(config().ssl["public"], "utf-8"),
|
|
key: fs.readFileSync(config().ssl["private"], "utf-8"),
|
|
},
|
|
app,
|
|
);
|
|
}
|
|
|
|
server.listen(config().port, config().address, async (err) => {
|
|
if (err) {
|
|
throw err;
|
|
} else {
|
|
console.log(
|
|
`Kodex Muzic catalog runned at ${config().address}:${config().port}`,
|
|
);
|
|
}
|
|
});
|