diff options
Diffstat (limited to 'app/config.js')
-rw-r--r-- | app/config.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app/config.js b/app/config.js new file mode 100644 index 0000000..6a66027 --- /dev/null +++ b/app/config.js @@ -0,0 +1,36 @@ +"use strict"; + +function deepFreeze(obj) { + for (const name of Reflect.ownKeys(obj)) { + const value = obj[name]; + if ((value && typeof value === "object") || + typeof value === "function") deepFreeze(value); + } return Object.freeze(obj); +} + +Math.clamp ||= ((x,l,h) => Math.max(l,Math.min(x,h))); +const PORT = Math.clamp(+process.env.PORT||8080, 1, 65535); +const HOST = process.env.HOST||"0.0.0.0"; + +module.exports = deepFreeze({ + PORT: Math.clamp(+process.env.PORT||8080, 1, 65535), + HOST: process.env.HOST||"0.0.0.0", + DOMAIN: "localhost", + SECURE: false, // i.e. served over https + + auth: { + TOKEN_RENEW_AGE: 15*60, // 15 mins + TOKEN_MAX_AGE: 30*86400, // 30 days + TOKEN_LENGTH: 24, // bytes + SESSION_ID_LENGTH: 12, + USERNAME_MAX_LENGTH: 128, + PASSWORD_MIN_LENGTH: 8, + PASSWORD_MAX_LENGTH: 512, // Avoid DDOS + RATE_LIMIT_MAX_LEVEL: 16, + RATE_LIMIT_MAX_WAITING: 512, + fingerprintIP: req => + //req.headers["cf-connecting-ip"] || + //req.headers["x-forwarded-for"] || + req.socket.remoteAddress, + }, +}); |