captcha / server.js
scnario's picture
Update server.js
221aef6 verified
raw
history blame
1.02 kB
const express = require("express");
const { CaptchaGenerator } = require("captcha-canvas");
const fs = require("fs");
const os = require("os");
const path = require("path");
const crypto = require("crypto");
const app = express();
app.set('json spaces', 4)
const tempDir = os.tmpdir();
function generateRandomHex(length) {
return crypto.randomBytes(length).toString("hex");
}
app.use("/tmp", express.static(tempDir));
app.all("/", async (req, res) => {
const captcha = new CaptchaGenerator({ height: 200, width: 600 })
const fileName = `temp_${generateRandomHex(8)}.png`;
const filePath = path.join(tempDir, fileName);
const buffer = await captcha.generate()
fs.writeFile(filePath, buffer, (err) => {
if (err) return res.status(500).json({ error: "Failed to save captcha" });
res.json({
answer: captcha.text,
url: `https://${req.hostname}/tmp/${fileName}`
});
});
});
app.listen(7860, () => console.log("Server running on port 7860"));