This repository has been archived on 2025-02-18. You can view files and clone it, but cannot push or open issues or pull requests.
pontus-mail/app.js

62 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-12-03 22:36:16 -05:00
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const winston = require('winston');
const rateLimit = require('express-rate-limit');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
return `${timestamp} [${level.toUpperCase()}] ${message}`;
})
),
transports: [
new winston.transports.File({ filename: 'register.log' })
],
});
const registerLimiter = rateLimit({
windowMs: 24 * 60 * 60 * 1000,
max: 1,
message: 'You have already submitted a registration today. Please try again tomorrow.',
standardHeaders: true,
legacyHeaders: false,
});
const app = express();
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'src'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', (req, res) => {
res.render('index');
});
app.post('/register', registerLimiter, (req, res) => {
const formData = req.body;
logger.info(`New registration:
Name: ${formData.name}
Email: ${formData.email}
Reason: ${formData.message}
Telegram: ${formData.telegram}`);
res.render('success');
});
app.get('/register', (req, res) => {
res.render('register');
});
app.get('/services', (req, res) => {
res.render('services');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});