blob: 9ed1a71fe2b0de7ce4508c518400495bab8ddb6a [file] [log] [blame]
const PID_FILE = '.github-proxy.pid';
if (process.argv.indexOf('stop') > 0) {
const { readFile, existsSync, unlink } = require('fs');
if (!existsSync(PID_FILE)) {
return;
}
readFile(PID_FILE, (err, data) => {
if (err) {
throw err;
}
try {
process.kill(Number.parseInt(data), 'SIGINT');
} catch (e) {
unlink(PID_FILE);
}
});
} else if (process.argv.indexOf('start') > 0) {
const fs = require('fs');
const log = fs.createWriteStream('.github-proxy.log', { flags: 'a' });
process.stdout.write = process.stderr.write = log.write.bind(log);
if (!(process.env.GITHUB_USR && process.env.GITHUB_PSW)) {
console.log('No GITHUB_USR and GITHUB_PSW environment variables set');
process.exit(1);
}
fs.writeFile(PID_FILE, process.pid.toString());
process.on('SIGINT', (code) => {
console.log('Stopping');
log.uncork();
log.end();
fs.unlink(PID_FILE);
process.exit(0);
});
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer({
auth: `${process.env.GITHUB_USR}:${process.env.GITHUB_PSW}`,
changeOrigin: true,
target: 'https://api.github.com'
}).listen(22635)
console.info('Proxy started.');
proxy.on('error', console.error);
} else {
const { spawn } = require('child_process');
const proxy = spawn(process.argv[0], ['github-proxy.js', 'start'], {
detached: true,
stdio: 'ignore'
});
proxy.unref();
}