2022-05-05 15:19:35 +00:00
|
|
|
import fastify from 'fastify';
|
2022-05-05 18:11:43 +00:00
|
|
|
import cors from '@fastify/cors';
|
|
|
|
import rateLimit from '@fastify/rate-limit';
|
2022-05-05 15:19:35 +00:00
|
|
|
import v1ReportRoutes from 'routes/v1/report';
|
|
|
|
import environment from 'services/environment';
|
|
|
|
|
|
|
|
const server = fastify({ logger: true });
|
|
|
|
|
|
|
|
server.register(cors, {
|
|
|
|
origin: (origin, callback) => {
|
2022-05-12 18:47:03 +00:00
|
|
|
const chrome = /chrome-extension:\/\/[a-z]{32}/g;
|
2022-05-05 15:19:35 +00:00
|
|
|
const moz =
|
|
|
|
/moz-extension:\/\/[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}/g;
|
|
|
|
|
2022-05-12 18:47:03 +00:00
|
|
|
if (chrome.test(origin) || moz.test(origin)) {
|
|
|
|
callback(null, true);
|
|
|
|
return;
|
2022-05-05 15:19:35 +00:00
|
|
|
}
|
2022-05-12 18:47:03 +00:00
|
|
|
|
|
|
|
callback(new Error('Not allowed'), false);
|
2022-05-05 15:19:35 +00:00
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
server.register(rateLimit, { max: 1, timeWindow: 30000 });
|
|
|
|
|
|
|
|
server.register(v1ReportRoutes, { prefix: '/rest/v1' });
|
|
|
|
|
|
|
|
server.listen(environment.port, '0.0.0.0', (error, address) => {
|
|
|
|
if (error) {
|
|
|
|
console.error(error);
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log(`Server listening at ${address}`);
|
|
|
|
});
|