const express = require('express');
const fetch = require('node-fetch');
const FormData = require('form-data');
const app = express();
app.use(express.urlencoded({ extended: true }));
const secretKeys = {
'www.a.se': process.env.SECRET_KEY_a,
'www.b.se': process.env.SECRET_KEY_b,
'www.c.se' : process.env.SECRET_KEY_c
};
async function handlePost(request, response) {
const token = request.body['cf-turnstile-response'];
const ip = request.headers['cf-connecting-ip'];
const referer = request.headers['referer'];
const hostname = new URL(referer).hostname;
const secret = secretKeys[hostname];
if (!token) {
return response.status(401).send('Missing Turnstile token');
}
if (!secret) {
return response.status(401).send('Invalid hostname');
}
const formData = new FormData();
formData.append('secret', secret);
formData.append('response', token);
formData.append('remoteip', ip);
const result = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
body: formData,
method: 'POST',
});
const outcome = await result.json();
if (!outcome.success) {
return response.status(401).send('The provided Turnstile token was not valid! \n' + JSON.stringify(outcome));
}
response.send('Turnstile token successfully validated. \n' + JSON.stringify(outcome));
}
app.post('/', handlePost);
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`App listening on port ${port}!`));
const express = require('express');
const fetch = require('node-fetch');
const FormData = require('form-data');
const app = express();
app.use(express.urlencoded({ extended: true }));
const secretKeys = {
'www.a.se': process.env.SECRET_KEY_a,
'www.b.se': process.env.SECRET_KEY_b,
'www.c.se' : process.env.SECRET_KEY_c
};
async function handlePost(request, response) {
const token = request.body['cf-turnstile-response'];
const ip = request.headers['cf-connecting-ip'];
const referer = request.headers['referer'];
const hostname = new URL(referer).hostname;
const secret = secretKeys[hostname];
if (!token) {
return response.status(401).send('Missing Turnstile token');
}
if (!secret) {
return response.status(401).send('Invalid hostname');
}
const formData = new FormData();
formData.append('secret', secret);
formData.append('response', token);
formData.append('remoteip', ip);
const result = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
body: formData,
method: 'POST',
});
const outcome = await result.json();
if (!outcome.success) {
return response.status(401).send('The provided Turnstile token was not valid! \n' + JSON.stringify(outcome));
}
response.send('Turnstile token successfully validated. \n' + JSON.stringify(outcome));
}
app.post('/', handlePost);
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`App listening on port ${port}!`));