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

107 lines
3.1 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');
2024-12-20 00:31:24 -05:00
const fs = require('fs');
2024-12-31 20:11:41 -05:00
const axios = require('axios');
const NodeCache = require('node-cache');
const cache = new NodeCache({ stdTTL: 1800 });
2024-12-03 22:36:16 -05:00
function checkSetup() {
if (!fs.existsSync(path.join(__dirname, '.env'))) {
console.error("Couldn't find .env file, please create one using the provided .env.example file.");
process.exit(1);
}
const reqVar = ['INTERNAL_PORT'];
const missingVar = reqVar.filter(envVar => !process.env[envVar]);
if (missingVar.length > 0) {
console.error(`Oops, you're missing these required variables in your .env file: ${missingVar.join(', ')}`);
process.exit(1);
}
}
require('dotenv').config();
2024-12-03 22:36:16 -05:00
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')));
// TODO: Reintegrate backend logic for counters on home page
2024-12-31 20:11:41 -05:00
app.get('/', async (req, res) => {
2025-01-19 18:27:23 -05:00
res.render('index', { currentPage: 'home' });
2024-12-03 22:36:16 -05:00
});
app.get('/services', (req, res) => {
res.render('services', { currentPage: 'services' });
});
app.get('/donate', (req, res) => {
const donations = JSON.parse(fs.readFileSync('donations.json', 'utf8'));
res.render('donate', {
currentPage: 'donate',
bitcoin: donations.bitcoin,
litecoin: donations.litecoin,
ethereum: donations.ethereum,
2024-12-20 00:48:37 -05:00
monero: donations.monero,
solana: donations.solana,
current: donations.current,
goal: donations.goal
});
2024-12-03 22:36:16 -05:00
});
2024-12-05 10:11:58 -05:00
app.get('/privacy', (req, res) => {
res.render('privacy', { currentPage: 'privacy' });
});
// Guide routes
// TODO: Improve how guides are routed to be simpler
2024-12-08 18:14:58 -05:00
app.get('/guides', (req, res) => {
res.render('guides', { currentPage: 'guides' });
});
app.get('/guides/user', (req, res) => {
res.render('guides/user/index', { currentPage: 'guides' });
});
app.get('/guides/user/password-change', (req, res) => {
res.render('guides/user/password-change', { currentPage: 'guides' });
});
app.get('/guides/user/external-accounts', (req, res) => {
res.render('guides/user/external-accounts', { currentPage: 'guides' });
});
app.get('/guides/user/create-account', (req, res) => {
res.render('guides/user/create-account', { currentPage: 'guides' });
});
app.get('/guides/email', (req, res) => {
res.render('guides/email/index', { currentPage: 'guides' });
});
app.get('/guides/email/thunderbird', (req, res) => {
res.render('guides/email/thunderbird', { currentPage: 'guides' });
2024-12-08 18:14:58 -05:00
});
app.get('/guides/vaultwarden/android', (req, res) => {
res.render('guides/vaultwarden/android', { currentPage: 'guides' });
});
app.get('/guides/vaultwarden/chrome', (req, res) => {
res.render('guides/vaultwarden/chrome', { currentPage: 'guides' });
});
app.get('/guides/vaultwarden/firefox', (req, res) => {
res.render('guides/vaultwarden/firefox', { currentPage: 'guides' });
});
// Verify .env and start server on internal port defined in .env
checkSetup();
app.listen(process.env.INTERNAL_PORT, () => {
console.log(`Server started on port ${process.env.INTERNAL_PORT}`);
2024-12-03 22:36:16 -05:00
});