You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.5 KiB
89 lines
1.5 KiB
import fastify from 'fastify'
|
|
import dotenv from 'dotenv'
|
|
import path from 'path'
|
|
import { EventEmitter } from 'events'
|
|
import formBody from '@fastify/formbody'
|
|
|
|
// getting .env
|
|
dotenv.config({ path: path.join(path.resolve(), '/../../.env') })
|
|
|
|
// create server
|
|
const server = fastify()
|
|
|
|
// adding eventEmitter
|
|
server.decorate('eventEmitter', new EventEmitter())
|
|
|
|
// adding formBody
|
|
server.register(formBody)
|
|
|
|
/**
|
|
* add xmpp
|
|
*
|
|
*/
|
|
|
|
import xmpp from './plugins/xmpp.js'
|
|
|
|
server.register(xmpp, {
|
|
service: process.env.XMPP_SERVICE,
|
|
domain: process.env.XMPP_DOMAIN,
|
|
username: process.env.XMPP_USERNAME,
|
|
password: process.env.XMPP_PASSWORD,
|
|
to: process.env.XMPP_TO
|
|
})
|
|
|
|
/**
|
|
* add helmet
|
|
*
|
|
*/
|
|
|
|
import helmet from '@fastify/helmet'
|
|
|
|
/***
|
|
server.register(
|
|
helmet, {
|
|
referrerPolicy: {
|
|
policy: ['origin']
|
|
}
|
|
}
|
|
)*/
|
|
|
|
/**
|
|
* add rateLimit
|
|
*
|
|
*/
|
|
|
|
import rateLimit from '@fastify/rate-limit'
|
|
|
|
const rateLimitSettings = {
|
|
max: 100,
|
|
timeWindow: 60000
|
|
}
|
|
|
|
if (process.env.APP_RATE_LIMIT_MAX) {
|
|
rateLimitSettings.max = process.env.APP_RATE_LIMIT_MAX
|
|
}
|
|
|
|
if (process.env.APP_RATE_LIMIT_TIMEWINDOW) {
|
|
rateLimitSettings.timeWindow = process.env.APP_RATE_LIMIT_TIMEWINDOW
|
|
}
|
|
|
|
server.register(rateLimit, rateLimitSettings)
|
|
|
|
/**
|
|
* add routes
|
|
*
|
|
*
|
|
*/
|
|
import webhookHttp from './http/api/webhook.js'
|
|
import healthHttp from './http/api/health.js'
|
|
|
|
server
|
|
.register(webhookHttp, {
|
|
'prefix': '/api/webhook'
|
|
})
|
|
.register(healthHttp, {
|
|
'prefix': '/api/health'
|
|
})
|
|
|
|
export default server
|