mirror of
https://github.com/EndPwnArchive/bspwn-lambda.git
synced 2024-08-14 23:57:04 +00:00
.
This commit is contained in:
parent
4fbee777b0
commit
6f7c92df74
1 changed files with 81 additions and 73 deletions
154
scrape.js
154
scrape.js
|
@ -1,135 +1,143 @@
|
||||||
#!/usr/bin/node --expose-gc
|
#!/usr/bin/node --expose-gc
|
||||||
|
|
||||||
const fetch = require('node-fetch');
|
const fetch = require("node-fetch");
|
||||||
const request = require('request');
|
const request = require("request");
|
||||||
const fs = require('fs');
|
const fs = require("fs");
|
||||||
const ncp = require('ncp');
|
const ncp = require("ncp");
|
||||||
const asar = require('asar');
|
const asar = require("asar");
|
||||||
const archiver = require('archiver');
|
const archiver = require("archiver");
|
||||||
const exec = require('child_process').exec;
|
const exec = require("child_process").exec;
|
||||||
|
|
||||||
const branches = ['canary', 'ptb', 'stable'];
|
const branches = ["canary", "ptb", "stable"];
|
||||||
const platforms = ['win', 'linux', 'osx'];
|
const platforms = ["win", "linux", "osx"];
|
||||||
|
|
||||||
console.log('loading config...');
|
console.log("loading config...");
|
||||||
var config = fs.existsSync('config.json') ?
|
var config = fs.existsSync("config.json")
|
||||||
JSON.parse(fs.readFileSync('config.json').toString()) :
|
? JSON.parse(fs.readFileSync("config.json").toString())
|
||||||
{};
|
: {};
|
||||||
|
|
||||||
var lastver = {};
|
var lastver = {};
|
||||||
|
|
||||||
function patch(target, resolve) {
|
function patch(target, resolve) {
|
||||||
|
console.log("extracting zip...");
|
||||||
console.log('extracting zip...');
|
|
||||||
if (!fs.existsSync(target)) fs.mkdirSync(target);
|
if (!fs.existsSync(target)) fs.mkdirSync(target);
|
||||||
console.log(`unzip -o ${target}.orig.zip -d ${target}`);
|
console.log(`unzip -o ${target}.orig.zip -d ${target}`);
|
||||||
var child = exec(`unzip -o ${target}.orig.zip -d ${target}`);
|
var child = exec(`unzip -o ${target}.orig.zip -d ${target}`);
|
||||||
child.stdout.pipe(process.stdout);
|
child.stdout.pipe(process.stdout);
|
||||||
child.on('exit', () => {
|
child.on("exit", () => {
|
||||||
|
path = target + "/core";
|
||||||
|
|
||||||
path = target + '/core';
|
console.log("extracting asar...");
|
||||||
|
asar.extractAll(path + ".asar", path);
|
||||||
|
|
||||||
console.log('extracting asar...');
|
console.log("patching mainScreen.js...");
|
||||||
asar.extractAll(path + '.asar', path);
|
var mainScreen = fs
|
||||||
|
.readFileSync(path + "/app/mainScreen.js")
|
||||||
console.log('patching mainScreen.js...');
|
.toString();
|
||||||
var mainScreen = fs.readFileSync(path + '/app/mainScreen.js').toString();
|
|
||||||
mainScreen = mainScreen
|
mainScreen = mainScreen
|
||||||
.replace(/nodeIntegration: false,/, 'nodeIntegration: true,')
|
.replace(/nodeIntegration: false,/, "nodeIntegration: true,")
|
||||||
.replace(/mainWindow\.loadURL\(URL_TO_LOAD\);/, "mainWindow.loadURL(_url.format({ pathname: _path2.default.join(__dirname, 'bspwn/updater.html'), protocol: 'file:', slashes: true }));");
|
.replace(
|
||||||
fs.writeFileSync(path + '/app/mainScreen.js', mainScreen);
|
/mainWindow\.loadURL\(URL_TO_LOAD\);/,
|
||||||
|
"mainWindow.loadURL(_url.format({ pathname: _path2.default.join(__dirname, 'bspwn/updater.html'), protocol: 'file:', slashes: true }));"
|
||||||
|
);
|
||||||
|
fs.writeFileSync(path + "/app/mainScreen.js", mainScreen);
|
||||||
|
|
||||||
console.log('patching mainScreenPreload.js...');
|
console.log("patching mainScreenPreload.js...");
|
||||||
var mainScreenPreload = fs.readFileSync(path + '/app/mainScreenPreload.js').toString();
|
var mainScreenPreload = fs
|
||||||
mainScreenPreload = mainScreenPreload
|
.readFileSync(path + "/app/mainScreenPreload.js")
|
||||||
.replace(/var electron = require\('electron'\);/, "var bspwn = require('./bspwn');\nbspwn.go();\nvar electron = require('electron');");
|
.toString();
|
||||||
fs.writeFileSync(path + '/app/mainScreenPreload.js', mainScreenPreload);
|
mainScreenPreload = mainScreenPreload.replace(
|
||||||
|
/var electron = require\('electron'\);/,
|
||||||
|
"var bspwn = require('./bspwn');\nbspwn.go();\nvar electron = require('electron');"
|
||||||
|
);
|
||||||
|
fs.writeFileSync(path + "/app/mainScreenPreload.js", mainScreenPreload);
|
||||||
|
|
||||||
console.log('copying bspwn files...')
|
console.log("copying bspwn files...");
|
||||||
ncp.ncp(__dirname + '/bspwn', path + '/app/bspwn', () => {
|
ncp.ncp(__dirname + "/bspwn", path + "/app/bspwn", () => {
|
||||||
|
console.log("zipping it all up...");
|
||||||
|
var archive = archiver("zip");
|
||||||
|
|
||||||
console.log('zipping it all up...');
|
var output = fs.createWriteStream(
|
||||||
var archive = archiver('zip');
|
(config.target || "./out/") + target + ".zip"
|
||||||
|
);
|
||||||
var output = fs.createWriteStream((config.target || './') + target + '.zip');
|
|
||||||
|
|
||||||
archive.pipe(output);
|
archive.pipe(output);
|
||||||
archive.directory(path, 'core');
|
archive.directory(path, "core");
|
||||||
archive.file(__dirname + '/files/index.js', { name: 'index.js' });
|
archive.file(__dirname + "/files/index.js", { name: "index.js" });
|
||||||
archive.file(target + '/package.json', { name: 'package.json' });
|
archive.file(target + "/package.json", { name: "package.json" });
|
||||||
archive.finalize();
|
archive.finalize();
|
||||||
|
|
||||||
//output.close(resolve);
|
//output.close(resolve);
|
||||||
resolve();
|
resolve();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function scrape() {
|
async function scrape() {
|
||||||
|
console.log("scraping...");
|
||||||
console.log('scraping...');
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
for (b in branches) {
|
for (b in branches) {
|
||||||
|
|
||||||
var branch = branches[b];
|
var branch = branches[b];
|
||||||
|
|
||||||
for (p in platforms) {
|
for (p in platforms) {
|
||||||
|
|
||||||
await new Promise(async (resolve, reject) => {
|
await new Promise(async (resolve, reject) => {
|
||||||
|
|
||||||
var platform = platforms[p];
|
var platform = platforms[p];
|
||||||
|
|
||||||
var ident = `${branch}-${platform}`;
|
var ident = `${branch}-${platform}`;
|
||||||
|
|
||||||
var currentver = await fetch(`https://discordapp.com/api/updates/${branch}?platform=${platform}`);
|
var currentver = await fetch(
|
||||||
|
`https://discordapp.com/api/updates/${branch}?platform=${platform}`
|
||||||
|
);
|
||||||
currentver = await currentver.json();
|
currentver = await currentver.json();
|
||||||
currentver = currentver.name;
|
currentver = currentver.name;
|
||||||
|
|
||||||
var modules = await fetch(`https://discordapp.com/api/modules/${branch}/versions.json?platform=${platform}&host_version=${currentver}`);
|
var modules = await fetch(
|
||||||
|
`https://discordapp.com/api/modules/${branch}/versions.json?platform=${platform}&host_version=${currentver}`
|
||||||
|
);
|
||||||
modules = await modules.json();
|
modules = await modules.json();
|
||||||
|
|
||||||
var verstring = `${currentver}-${modules.discord_desktop_core}`;
|
var verstring = `${currentver}-${
|
||||||
|
modules.discord_desktop_core
|
||||||
|
}`;
|
||||||
|
|
||||||
console.log(`${ident} ${verstring}`);
|
console.log(`${ident} ${verstring}`);
|
||||||
|
|
||||||
if (!lastver[ident] || verstring > lastver[ident]) {
|
if (!lastver[ident] || verstring > lastver[ident]) {
|
||||||
console.log('update available, fetching...');
|
console.log("update available, fetching...");
|
||||||
lastver[ident] = verstring;
|
lastver[ident] = verstring;
|
||||||
var target = `https://discordapp.com/api/modules/${branch}/discord_desktop_core/${modules.discord_desktop_core}?platform=${platform}&host_version=${currentver}`;
|
var target = `https://discordapp.com/api/modules/${branch}/discord_desktop_core/${
|
||||||
|
modules.discord_desktop_core
|
||||||
|
}?platform=${platform}&host_version=${currentver}`;
|
||||||
console.log(target);
|
console.log(target);
|
||||||
|
|
||||||
request({
|
request(
|
||||||
followAllRedirects: true,
|
{
|
||||||
url: target,
|
followAllRedirects: true,
|
||||||
encoding: null
|
url: target,
|
||||||
}, (err, response, body) => {
|
encoding: null
|
||||||
fs.writeFile(ident + '.orig.zip', body, () => {
|
},
|
||||||
console.log('done downloading');
|
(err, response, body) => {
|
||||||
patch(ident, resolve);
|
fs.writeFile(
|
||||||
})
|
"./out/" + ident + ".orig.zip",
|
||||||
});
|
body,
|
||||||
}
|
() => {
|
||||||
else resolve();
|
console.log("done downloading");
|
||||||
|
patch(ident, resolve);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else resolve();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
} catch (ex) {
|
||||||
}
|
|
||||||
catch (ex) {
|
|
||||||
console.log(ex);
|
console.log(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('scraping again in 15 minutes');
|
console.log("scraping again in 15 minutes");
|
||||||
global.gc();
|
global.gc();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setInterval(scrape, 15 * 60 * 1000);
|
setInterval(scrape, 15 * 60 * 1000);
|
||||||
|
|
Loading…
Reference in a new issue