From a37ad20d089836d6ca278de412a46f4bec13db1a Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 9 Sep 2016 07:51:10 +0000 Subject: [PATCH] +ch.hk --- src/lib.js | 46 --------------------- src/trigger/parser.js | 94 +++++++++++++++++++++++++++++-------------- 2 files changed, 64 insertions(+), 76 deletions(-) diff --git a/src/lib.js b/src/lib.js index a529807..d1b3a88 100644 --- a/src/lib.js +++ b/src/lib.js @@ -79,52 +79,6 @@ Lib.prototype.getCheckSum = (file, cbcs) => { cbcs(sha256sum.digest('hex')); }); }; -Lib.prototype.dl = (url, dest, cb) => { - (url.match(/^https/)?https:http).get(url, (response) => { // type:1=post,type:2=stfu - console.log(response.headers['content-type']); - if(cfg.allowedMimes.hasOwnProperty(response.headers['content-type'])) { - if(response.headers['content-length'] <= cfg.maxFileSize) { - Lib.prototype.checkRepost(url, (cbcr) => { - if(cbcr === true) { - var file = fs.createWriteStream(dest+"."+cfg.allowedMimes[response.headers['content-type']]); - response.pipe(file); - file.on('finish', () => { - file.close(); - var mime = Mime.lookup(dest+"."+cfg.allowedMimes[response.headers['content-type']]); - if(cfg.allowedMimes.hasOwnProperty(mime)) { - probe(dest+"."+cfg.allowedMimes[response.headers['content-type']], (err, probeData) => { - if(probeData.streams[0].height !== undefined || probeData.streams[0].width !== undefined) { - if(probeData.streams[0].height + probeData.streams[0].width <= cfg.minRes) - cb({'status':false, 'msg':'f0ck! your shitpost is too small', 'type':1}); - else - cb({'status':true, 'msg':'downloaded '+dest, 'type':1, 'infos':{'mime':response.headers['content-type'], 'size':response.headers['content-length'], 'ext':cfg.allowedMimes[response.headers['content-type']]}}); - } - else - cb({'status':true, 'msg':'downloaded '+dest, 'type':1, 'infos':{'mime':response.headers['content-type'], 'size':response.headers['content-length'], 'ext':cfg.allowedMimes[response.headers['content-type']]}}); - }); - } - else - cb({'status':false, 'msg':'lol, go f0ck yourself', 'type':1}); - }); - file.on('error', (err) => { - fs.unlink(dest+"."+cfg.allowedMimes[response.headers['content-type']]); - file.close(); - cb({'status':false, 'msg':err.message, 'type':1}); - }); - } - else - cb({'status':false, 'msg':'repost motherf0cker: https://f0ck.me/'+cbcr, 'type':1}); - }); - } - else - cb({'status':false, 'msg':'f0ck! your file is too big (~'+Lib.prototype.formatSize(response.headers['content-length'])+'), max '+Lib.prototype.formatSize(cfg.maxFileSize)+' allowed', 'type':1}); - } - else - cb({'status':false, 'msg':'f0ck you', 'type':2}); - }).on('error', (msg) => { - cb({'status':false, 'msg':msg, 'type':2}); - }); -}; Lib.prototype.generateThumbs = () => { var outdir = './t/'; sql.query("select * from `f0ck`.`items`", (err, rows, fields) => { diff --git a/src/trigger/parser.js b/src/trigger/parser.js index 8bbd801..c577568 100644 --- a/src/trigger/parser.js +++ b/src/trigger/parser.js @@ -1,6 +1,10 @@ var fs = require('fs-extra'); var uuid = require('uuid'); var path = require('path'); +var cloudscraper = require('cloudscraper'); +var Mime = require('mime'); +var probe = require('node-ffprobe'); +var cfg = require('../../cfg/main.json'); module.exports = (bot, trigger, lib) => { trigger.add({ @@ -15,41 +19,71 @@ module.exports = (bot, trigger, lib) => { tmp.forEach((entry,i,a) => { var tmpdest = uuid.v1().split('-')[0]; if(!entry.match(/f0ck\.me/i)) { - lib.dl(entry, "./b/"+tmpdest, (cb) => { // download item - if(cb.status === true) { - bot.whois(e.user.getNick(), e.network, (err, cbgu) => { - lib.getCheckSum("./b/"+tmpdest+"."+cb.infos.ext, (cbcs) => { - lib.checkRepostCheckSum(cbcs, (cbcrcs) => { - if(cbcrcs === true) { - lib.sql.query("insert into `f0ck`.`items` (`src`,`dest`,`mime`,`size`,`checksum`,`username`,`userchannel`,`usernetwork`,`stamp`,`active`) values (?,?,?,?,?,?,?,?,?,?)", [ - entry, - "./b/"+tmpdest+"."+cb.infos.ext, - cb.infos.mime, - cb.infos.size, - cbcs, - cbgu['nick'], - e.channel.getName(), - e.network, - Math.floor(new Date() / 1000), - 0 - ]).on('result', (result) => { - lib.generateThumbs(); - e.reply("https://f0ck.me/"+result.insertId+" - "+path.parse(entry).base+" ("+cb.infos.mime+", ~"+lib.formatSize(cb.infos.size)+") from "+cbgu['nick']+" ("+cbgu['username']+"@"+cbgu['hostname']+")"); - }).on('error', (msg) => { - e.reply(msg); + lib.checkRepost(entry, (cbcr) => { + if(cbcr === true) { + cloudscraper.request({ + method: 'GET', + url: entry, + encoding: null, + }, + (error, res, data) => { + if(error) + console.log('Error occurred'); + else { + var type = res.headers['content-type']; + var length = res.headers['content-length']; + var dest = './b/'+tmpdest+'.'+cfg.allowedMimes[type]; + if(cfg.allowedMimes.hasOwnProperty(type)) { + if(length <= cfg.maxFileSize) { + fs.writeFile(dest, data, (err) => { + if(!err) { + lib.getCheckSum(dest, (cbcs) => { + lib.checkRepostCheckSum(cbcs, (cbcrcs) => { + if(cbcrcs === true) { + var mime = Mime.lookup(dest); + if(cfg.allowedMimes.hasOwnProperty(mime)) { + bot.whois(e.user.getNick(), e.network, (err, cbgu) => { + lib.sql.query("insert into `f0ck`.`items` (`src`,`dest`,`mime`,`size`,`checksum`,`username`,`userchannel`,`usernetwork`,`stamp`,`active`) values (?,?,?,?,?,?,?,?,?,?)", [ + entry, + dest, + mime, + length, + cbcs, + cbgu['nick'], + e.channel.getName(), + e.network, + Math.floor(new Date() / 1000), + 0 + ]).on('result', (result) => { + lib.generateThumbs(); + e.reply("https://f0ck.me/"+result.insertId+" - "+path.parse(entry).base+" ("+mime+", ~"+lib.formatSize(length)+") from "+cbgu['nick']+" ("+cbgu['username']+"@"+cbgu['hostname']+")"); + }).on('error', (msg) => { + e.reply(msg); + }); + }); + } + else + e.reply('lol, go f0ck yourself'); + } + else + e.reply("repost motherf0cker: https://f0ck.me/"+cbcrcs); + }); + }); + } + else + e.reply(err); }); } - else { - fs.unlink("./b/"+tmpdest+"."+cb.infos.ext); // delete repost - e.reply("repost motherf0cker: https://f0ck.me/"+cbcrcs); - } - }); - }); + else + e.reply('f0ck! your file is too big (~'+lib.formatSize(length)+'), max '+lib.formatSize(cfg.maxFileSize)+' allowed'); + } + else + e.reply('lol, go f0ck yourself'); + } }); } else - if(cb.type == 1) - e.reply(cb.msg); + e.reply('repost motherf0cker: https://f0ck.me/'+cbcr); }); } });