38 lines
976 B
TypeScript
38 lines
976 B
TypeScript
|
import fastify from 'fastify';
|
||
|
import cors from 'fastify-cors';
|
||
|
import rateLimit from 'fastify-rate-limit';
|
||
|
import v1ReportRoutes from 'routes/v1/report';
|
||
|
import environment from 'services/environment';
|
||
|
|
||
|
const server = fastify({ logger: true });
|
||
|
|
||
|
server.register(cors, {
|
||
|
origin: (origin, callback) => {
|
||
|
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;
|
||
|
|
||
|
switch (true) {
|
||
|
case environment.extension.chrome === origin:
|
||
|
case moz.test(origin):
|
||
|
callback(null, true);
|
||
|
break;
|
||
|
default:
|
||
|
callback(new Error('Not allowed'), false);
|
||
|
break;
|
||
|
}
|
||
|
},
|
||
|
});
|
||
|
|
||
|
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}`);
|
||
|
});
|