diff --git a/app.js b/app.js index 518a8ea..edaf39f 100644 --- a/app.js +++ b/app.js @@ -65,6 +65,17 @@ async function fetchDomainData() { } } +function getDomains() { + const domainsPath = path.join(__dirname, 'domains.txt'); + try { + const domains = fs.readFileSync(domainsPath, 'utf-8').split('\n').filter(Boolean); + return domains; + } catch (error) { + console.error('Error reading domains.txt:', error); + return []; + } +} + // Sync DB models sequelize.sync(); @@ -132,35 +143,70 @@ app.get('/guides/vaultwarden/firefox', (req, res) => { }); app.get('/register', (req, res) => { - res.render('register', { currentPage: 'register' }); + const domains = getDomains(); + res.render('register', { domains }); }); app.post('/register', async (req, res) => { - const { fullName, email, reason, telegram } = req.body; + const { fullName, email, domain, reason, telegram } = req.body; const crit = /^[a-zA-Z0-9.-]+$/; // regex (see also: public/js/register.js) + if (!crit.test(email) || /\s/.test(email) || email !== email.toLowerCase()) { return res.render('error/500'); } - await Request.create({ fullName, email, reason, telegram }); - res.render('reg-success', { currentPage: 'register' }); + + const fullEmail = `${email}@${domain}`; + + try { + await Request.create({ fullName, email: fullEmail, reason, telegram }); + res.render('reg-success', { currentPage: 'register' }); + } catch (error) { + console.error('Error creating request:', error); + res.render('error/500'); + } }); app.get('/request', async (req, res) => { + console.log("Found!"); const { email } = req.query; + const domains = getDomains(); if (!email) { - return res.status(400).render('error/email'); + return res.render('error/email', { domains }); } try { const request = await Request.findOne({ where: { email } }); if (!request) { - return res.status(404).render('error/404'); + return res.status(404).render('error/notfoundemail', { email, domain }); } - res.render('request', { request }); + res.render('request', { request, domains }); } catch (error) { console.error(error); - res.status(500).render('error/500'); + res.render('error/500'); + } +}); + +app.post('/request', async (req, res) => { + console.log("Found!"); + const { email, domain } = req.body; + const fullEmail = `${email}@${domain}`; + const domains = getDomains(); + + if (!email || !domain) { + return res.render('error/email', { domains }); + } + + try { + const request = await Request.findOne({ where: { email: fullEmail } }); + const domains = getDomains(); + if (!request) { + return res.render('error/notfoundemail', { email, domain }); + } + res.render('request', { request, domains }); + } catch (error) { + console.error(error); + res.render('error/500'); } }); diff --git a/domains.txt b/domains.txt new file mode 100644 index 0000000..aaac829 --- /dev/null +++ b/domains.txt @@ -0,0 +1,3 @@ +p0ntus.com +pontusmail.org +ihate.college \ No newline at end of file diff --git a/src/error/email.ejs b/src/error/email.ejs index 96a431d..f88efc7 100644 --- a/src/error/email.ejs +++ b/src/error/email.ejs @@ -4,14 +4,19 @@ We need your email

We need an email to check your request. Please enter your p0ntus mail email address below:

-
+
-
- @p0ntus.com +
+ @
+
diff --git a/src/error/notfoundemail.ejs b/src/error/notfoundemail.ejs new file mode 100644 index 0000000..4415c2a --- /dev/null +++ b/src/error/notfoundemail.ejs @@ -0,0 +1,7 @@ +<%- include('../shards/header', { title: "Couldn't find that email - p0ntus mail", currentPage: 'err' }) %> +
+ We couldn't find that email +
+

We couldn't find a request under <%= email %>@<%= domain %>. Please try again later or try and register again.

+
+<%- include('../shards/footer') %> \ No newline at end of file diff --git a/src/register.ejs b/src/register.ejs index f4eb109..b52e497 100644 --- a/src/register.ejs +++ b/src/register.ejs @@ -1,4 +1,4 @@ -<%- include('shards/header', { title: 'Register - p0ntus mail' }) %> +<%- include('shards/header', { title: 'Register - p0ntus mail', currentPage: 'register' }) %>
<%- include('shards/nav', { currentPage: 'register' }) %>

Register

@@ -21,9 +21,14 @@
-
- @p0ntus.com +
+ @
+
Only letters, numbers, periods, and dashes are allowed.
diff --git a/src/request.ejs b/src/request.ejs index db753ae..3416916 100644 --- a/src/request.ejs +++ b/src/request.ejs @@ -3,7 +3,28 @@ <%- include('shards/nav', { currentPage: 'request' }) %> Request Status
+ +
+ +
+ +
+ @ +
+ +
+ Only letters, numbers, periods, and dashes are allowed. +
+ + + <% if (request) { %> +
+

Email: <%= request.email %>

Request Status: <%= request.status %>

<% if (request.status === 'Approved') { %>