basic project
This commit is contained in:
76
app.js
76
app.js
@@ -1,13 +1,73 @@
|
||||
const zlib = require('zlib');
|
||||
const fs = require('fs');
|
||||
const express = require('express');
|
||||
var requestProxy = require("express-request-proxy");
|
||||
const proxy = require('http-proxy-middleware');
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
const port = process.env.NODE_PORT || '3000';
|
||||
|
||||
app.all(
|
||||
"/*",
|
||||
requestProxy({
|
||||
url: "https://piratebayztemzmv.onion/*",
|
||||
})
|
||||
);
|
||||
const inject = fs.readFileSync('./inject.html', 'utf8');
|
||||
|
||||
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
|
||||
const Transmission = require('transmission-promise')
|
||||
let tr_client = new Transmission({
|
||||
host:'192.168.1.176',
|
||||
// port: ,
|
||||
username: 'william',
|
||||
// password: 'palm7',
|
||||
// ssl: true
|
||||
})
|
||||
|
||||
tr_client.on('ready', console.log)
|
||||
|
||||
tr_client.on('error', console.log)
|
||||
|
||||
|
||||
app.post("/__api/torrent", function(req, res, next){
|
||||
|
||||
console.log('api', req.body)
|
||||
|
||||
tr_client.addUrl(Buffer.from(req.body.magnet, 'base64').toString('binary')).then(function(data){
|
||||
console.log(data)
|
||||
res.status('200')
|
||||
}).error(function(err){
|
||||
console.error(err)
|
||||
res.status('500').json({})
|
||||
});
|
||||
});
|
||||
|
||||
app.all("/*.js", function(req, res){res.send('')});
|
||||
|
||||
app.all("/*", proxy({
|
||||
target: 'http://piratebayztemzmv.onion',
|
||||
autoRewrite: true,
|
||||
selfHandleResponse: true, // so that the onProxyRes takes care of sending the response
|
||||
onProxyRes: function(proxyRes, req, res){
|
||||
|
||||
for(let key of Object.keys(proxyRes.headers)){
|
||||
if(['content-encoding'].includes(key)) continue;
|
||||
res.set(key, proxyRes.headers[key].toString().replace('http://', 'https://'))
|
||||
}
|
||||
|
||||
let body = new Buffer('');
|
||||
|
||||
proxyRes.on('data', function(data){
|
||||
body = Buffer.concat([body, data]);
|
||||
});
|
||||
|
||||
proxyRes.on('end', function(){
|
||||
body = proxyRes.headers['content-encoding'] === 'gzip' ? zlib.gunzipSync(body).toString('utf8') : body;
|
||||
if(proxyRes.headers['content-type'] && proxyRes.headers['content-type'].match('html')){
|
||||
body = body.toString().replace(/<\s*script[^]*?script>/igm, '');
|
||||
body = body.replace(/<\s*iframe[^]*?iframe>/igm, '');
|
||||
body = body.replace("</html>", '');
|
||||
body = body+inject+"</html>";
|
||||
}
|
||||
res.status(proxyRes.statusCode).end(body);
|
||||
});
|
||||
|
||||
}
|
||||
}));
|
||||
|
||||
app.listen(port, () => console.log(`The Pirate Bay TOR proxy listening on ${port}!`))
|
||||
|
||||
Reference in New Issue
Block a user