keything / srv.js
dodd869's picture
Update srv.js
ffe24d8 verified
const express = require('express');
const fs = require('fs');
const path = require('os');
const axios = require('axios');
const cheerio = require('cheerio');
const app = express();
const port = 7860;
const allowed = ['MLBB', 'BS', 'PUBG'];
async function fetchKey(game) {
if (!allowed.includes(game)) throw new Error('Invalid game');
const idxRes = await axios.get('https://web.aachann.my.id/Get-key/');
const m = idxRes.data.match(/const sessionToken\s*=\s*["']([^"']+)["']/);
if (!m) throw new Error('sessionToken not found');
const sessionToken = m[1];
const data = Buffer.from(`game=${game}&token=${sessionToken}`).toString('base64');
const genRes = await axios.get(`https://web.aachann.my.id/Get-key/genkey.php?data=${data}`);
const $ = cheerio.load(genRes.data);
const key = $('#gameKey').text().trim();
if (!key) throw new Error('key not found in response');
return key;
}
app.get('/key', async (req, res) => {
try {
const game = (req.query.game || 'MLBB').toUpperCase();
const key = await fetchKey(game);
res.json({ game, key });
} catch (e) {
res.status(500).json({ error: e.message });
}
});
app.get('/key/bulk', async (req, res) => {
try {
const game = (req.query.game || 'MLBB').toUpperCase();
const qty = Math.min(parseInt(req.query.qty) || 10, 1000);
const keys = [];
for (let i = 0; i < qty; i++) keys.push(await fetchKey(game));
const file = `${path.tmpdir()}/${game}-${Date.now()}.txt`;
fs.writeFileSync(file, keys.join('\n'));
res.download(file, `${game}-keys.txt`, () => fs.unlinkSync(file));
} catch (e) {
res.status(500).json({ error: e.message });
}
});
app.listen(port, () => console.log(`Running on :${port}`));