Old ngn4 website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB

var fs = require('fs');
var path = require('path');
var IMGDIR = dir = path.join(__dirname, '/../www-root/img/');
function existsSync(filename) {
try {
fs.accessSync(filename);
return true;
} catch(ex) {
return false;
}
}
module.exports = function(set, app, data, scriptMethods) {
var keys = Object.keys(set.generators);
var cache = {};
var fileNames = {};
for(var i = 0; i < keys.length; ++i) {
var fileName = "bg_" + keys[i].split('/').join('_') + ".png";
if(existsSync(IMGDIR + fileName)) {
fileName = "/img/" + fileName;
} else {
fileName = "bg_" + keys[i].split('/')[0] + ".png";
if(existsSync(IMGDIR + fileName)) {
fileName = "/img/" + fileName;
} else {
fileName = null;
}
}
var binding = {'json': JSON.stringify(fileName), 'fileName': fileName};
app.get('/b/' + keys[i], (function (req, res) {
var agent = req.headers['user-agent'];
res.header("Content-Type", "application/json; charset=utf-8");
if(agent.indexOf('curl/') != -1) {
res.end(this.fileName);
} else {
res.end(this.json);
}
}).bind(binding));
console.log('[INFO] bg for "'+keys[i]+'" = "'+fileName+'"');
fileNames[keys[i]] = fileName;
}
scriptMethods.getBackgroundFromCookie = function(cookies) {
var key;
if(Object.prototype.hasOwnProperty.call(cookies, 'last_generator')) {
key = cookies['last_generator'];
} else {
key = scriptMethods.getDefaultDataKey();
}
return 'body { background-image: url(' + fileNames[key] + '); }'
}
}