cat << 'EOF' > server.js const express = require('express'); const torrentStream = require('torrent-stream'); const cors = require('cors'); const app = express(); app.use(cors()); const activeTorrents = {}; // Aceita qualquer rota para evitar erro 404 interno app.get('*', (req, res) => { const magnet = req.query.magnet; if (!magnet) return res.status(400).send('Magnet link não fornecido.'); let engine = activeTorrents[magnet]; if (!engine) { engine = torrentStream(magnet, { connections: 100, uploads: 10, path: '/tmp/tokudrive_torrents', trackers: [ 'udp://tracker.opentrackr.org:1337/announce', 'udp://tracker.openbittorrent.com:80/announce' ] }); activeTorrents[magnet] = engine; } engine.on('ready', () => { const file = engine.files.reduce((a, b) => a.length > b.length ? a : b); const fileSize = file.length; const range = req.headers.range; if (range) { const parts = range.replace(/bytes=/, "").split("-"); const start = parseInt(parts[0], 10); const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1; const chunksize = (end - start) + 1; const stream = file.createReadStream({ start, end }); res.writeHead(206, { 'Content-Range': `bytes ${start}-${end}/${fileSize}`, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize, 'Content-Type': 'video/mp4', }); stream.pipe(res); } else { res.writeHead(200, { 'Content-Length': fileSize, 'Content-Type': 'video/mp4', }); file.createReadStream().pipe(res); } }); engine.on('error', (err) => { console.error('Erro no torrent:', err); res.status(500).send('Erro ao processar o torrent.'); }); }); const PORT = 3000; app.listen(PORT, () => { console.log(`TokuStreamer rodando na porta ${PORT}`); }); EOF pm2 restart tokustreamer