feat: add frontend
This commit is contained in:
parent
4a723d75d3
commit
74b11b8df0
|
@ -1,19 +1,21 @@
|
|||
const express = require('express')
|
||||
const dns = require('dns');
|
||||
const swipl = require('swipl');
|
||||
const path = require('path');
|
||||
|
||||
const app = express()
|
||||
const PORT = 3000
|
||||
|
||||
const spf = (req, res) => {
|
||||
try {
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
const { domain } = req.query;
|
||||
console.log(domain)
|
||||
let spf = ""
|
||||
dns.resolveTxt(domain, (err, address) => {
|
||||
if (err) {
|
||||
console.error("ERROR", err)
|
||||
return res.status(400).send("ERROR: occur on resolving SPF")
|
||||
return res.status(400).json("ERROR: occur on resolving SPF")
|
||||
}
|
||||
else {
|
||||
console.log(address)
|
||||
|
@ -28,14 +30,14 @@ const spf = (req, res) => {
|
|||
}
|
||||
if (!spf) {
|
||||
console.error("ERROR: not spf")
|
||||
return res.status(400).send(`ERROR: No SPF record found in ${domain}`)
|
||||
return res.status(400).json(`ERROR: No SPF record found in ${domain}`)
|
||||
}
|
||||
const spfArray = spf.split(" ");
|
||||
console.log(spfArray)
|
||||
return parseSPF(domain, spfArray, swipl, domain, (err) => {
|
||||
if (err) {
|
||||
console.error("ERROR", err)
|
||||
return res.status(err.code).send(err.message)
|
||||
return res.status(err.code).json(err.message)
|
||||
}
|
||||
else {
|
||||
swipl.call('assert(ip4("_", "_"))');
|
||||
|
@ -63,7 +65,7 @@ const spf = (req, res) => {
|
|||
query.close();
|
||||
swipl.cleanup()
|
||||
swipl.initialise()
|
||||
return res.status(200).send({spf: spf, allowedIP4: [...new Set(allowedIP4)], allowedIP6: [...new Set(allowedIP6)]})
|
||||
return res.status(200).json({spf: spf, allowedIP4: [...new Set(allowedIP4)], allowedIP6: [...new Set(allowedIP6)]})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
@ -75,15 +77,16 @@ const spf = (req, res) => {
|
|||
|
||||
const a = (req, res) => {
|
||||
try {
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
const { domain } = req.query;
|
||||
console.log(domain)
|
||||
dns.resolve4(domain, (err, address) => {
|
||||
if (err) {
|
||||
console.log(err)
|
||||
return res.status(400).send("ERROR: No a record found")
|
||||
return res.status(400).json("ERROR: No a record found")
|
||||
}
|
||||
else {
|
||||
return res.status(200).send(address)
|
||||
return res.status(200).json(address)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -94,15 +97,16 @@ const a = (req, res) => {
|
|||
|
||||
const mx = (req, res) => {
|
||||
try {
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
const { domain } = req.query;
|
||||
console.log(domain)
|
||||
dns.resolveMx(domain, (err, address) => {
|
||||
if (err) {
|
||||
console.log(err)
|
||||
return res.status(400).send("ERROR: No mx record found")
|
||||
return res.status(400).json("ERROR: No mx record found")
|
||||
}
|
||||
else {
|
||||
return res.status(200).send(address)
|
||||
return res.status(200).json(address)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -329,6 +333,7 @@ const parseSPF = (domain, spf, swipl, curr, callback) => {
|
|||
app.get('/spf', spf)
|
||||
app.get('/a', a)
|
||||
app.get('/mx', mx)
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.listen(PORT, (err) => {
|
||||
if (err) {
|
||||
|
|
42
Project/public/index.html
Normal file
42
Project/public/index.html
Normal file
|
@ -0,0 +1,42 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
</head>
|
||||
<body>
|
||||
<label for="inputText">Enter Domain Name: </label>
|
||||
<input type="text" id="inputText">
|
||||
<button onclick="sendGetRequest()">Send</button>
|
||||
|
||||
<h3>Results: </h3>
|
||||
<h5>a:</h5>
|
||||
<pre id="result1"></pre>
|
||||
<h5>mx: </h5>
|
||||
<pre id="result2"></pre>
|
||||
<h5>spf: </h5>
|
||||
<pre id="result3"></pre>
|
||||
|
||||
<script>
|
||||
async function sendGetRequest() {
|
||||
const inputText = document.getElementById('inputText').value;
|
||||
|
||||
try {
|
||||
const response1 = await fetch(`/a?domain=${encodeURIComponent(inputText)}`);
|
||||
const result1 = await response1.json();
|
||||
document.getElementById('result1').textContent = JSON.stringify(result1, undefined, 4);
|
||||
|
||||
const response2 = await fetch(`/mx?domain=${encodeURIComponent(inputText)}`);
|
||||
const result2 = await response2.json();
|
||||
document.getElementById('result2').textContent = JSON.stringify(result2, undefined, 4);
|
||||
|
||||
const response3 = await fetch(`/spf?domain=${encodeURIComponent(inputText)}`);
|
||||
const result3 = await response3.json();
|
||||
document.getElementById('result3').textContent = JSON.stringify(result3, undefined, 4);
|
||||
} catch (error) {
|
||||
console.error('ERROR:', error);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user