lbry.tech/server.js

87 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-11-30 21:46:22 +01:00
"use strict"; require("dotenv").config(); require("date-format-lite"); require("@babel/register"); require("@babel/polyfill");
2018-06-01 22:23:53 +02:00
2018-03-28 16:26:59 +02:00
2018-07-05 20:50:18 +02:00
// P A C K A G E S
2018-04-10 11:08:46 +02:00
2018-08-29 01:57:18 +02:00
const color = require("colorette");
2018-07-05 20:50:18 +02:00
const cors = require("cors");
2018-09-27 18:11:26 +02:00
const local = require("app-root-path").require;
2018-05-23 16:25:16 +02:00
2018-07-12 17:21:42 +02:00
const fastify = require("fastify")({
logger: {
level: "warn",
prettyPrint: process.env.NODE_ENV === "development" ? true : false
}
});
2018-05-23 16:25:16 +02:00
2018-10-10 19:56:35 +02:00
// U T I L S
2018-07-12 23:07:16 +02:00
2018-11-30 21:46:22 +01:00
const handleSocketMessages = local("app/sockets").default;
const messageSlack = local("app/helpers/slack").default;
2018-05-23 16:25:16 +02:00
2018-04-16 15:39:11 +02:00
2018-07-05 20:50:18 +02:00
// P R O G R A M
2018-05-23 16:25:16 +02:00
2018-10-10 19:56:35 +02:00
fastify
.use(cors())
.register(require("fastify-compress"))
2018-12-05 18:23:25 +01:00
.register(require("@inc/fastify-ws"))
2018-10-10 19:56:35 +02:00
.register(require("fastify-helmet"), {
hidePoweredBy: { setTo: "LBRY" }
})
.register(require("fastify-static"), {
prefix: "/assets/",
root: `${__dirname}/app/dist/`
})
.register(require("choo-ssr/fastify"), {
app: require("./app")
2019-01-08 19:46:29 +01:00
})
.addHook("preHandler", (request, reply, next) => {
if (process.env.NODE_ENV !== "development") {
if (request.headers["x-forwarded-proto"] !== "https")
reply.redirect(302, `https://${request.raw.hostname}${request.raw.originalUrl}`);
2019-01-08 19:30:41 +01:00
2019-01-08 19:46:29 +01:00
else
next();
}
2019-01-08 19:30:41 +01:00
2019-01-08 19:46:29 +01:00
next();
});
2019-01-08 19:30:41 +01:00
2018-07-12 17:21:42 +02:00
fastify.ready(err => {
if (err) throw err;
2018-05-30 17:25:04 +02:00
2018-07-12 17:21:42 +02:00
fastify.ws.on("connection", socket => {
2018-07-16 23:06:37 +02:00
socket.on("message", data => {
data = JSON.parse(data);
2018-09-27 18:11:26 +02:00
return handleSocketMessages(socket, data);
2018-05-12 12:03:21 +02:00
});
2018-07-05 20:50:18 +02:00
2018-09-27 18:11:26 +02:00
socket.on("close", () => socket.terminate());
2018-07-05 20:50:18 +02:00
});
2018-07-12 17:21:42 +02:00
});
2018-06-01 09:10:22 +02:00
2018-07-12 17:21:42 +02:00
// B E G I N
2018-06-01 09:10:22 +02:00
2018-10-06 22:53:01 +02:00
const start = async() => {
2018-07-12 17:21:42 +02:00
try {
2018-09-25 03:16:34 +02:00
await fastify.listen(process.env.PORT || 8080, process.env.IP || "0.0.0.0");
2019-01-08 19:46:29 +01:00
} catch(err) {
2018-07-12 17:21:42 +02:00
fastify.log.error(err);
process.exit(1);
}
2018-06-01 09:10:22 +02:00
2018-07-12 23:07:16 +02:00
process.env.NODE_ENV === "development" ?
2018-09-27 18:11:26 +02:00
process.stdout.write(`\n${color.green("⚡")} ${fastify.server.address().port}\n`) :
2018-11-30 21:46:22 +01:00
messageSlack({
message: `Server started at port \`${fastify.server.address().port}\``,
title: "APP BOOT"
});
2018-07-12 17:21:42 +02:00
};
2018-06-06 13:02:16 +02:00
2018-07-12 17:21:42 +02:00
start();