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

8 years ago
8 years ago
8 years ago
8 years ago
  1. var fs = require('fs');
  2. var path = require('path');
  3. var IMGDIR = dir = path.join(__dirname, '/../www-root/img/');
  4. function existsSync(filename) {
  5. try {
  6. fs.accessSync(filename);
  7. return true;
  8. } catch(ex) {
  9. return false;
  10. }
  11. }
  12. module.exports = function(set, app, data, scriptMethods) {
  13. var keys = Object.keys(set.generators);
  14. var cache = {};
  15. var fileNames = {};
  16. for(var i = 0; i < keys.length; ++i) {
  17. var fileName = "bg_" + keys[i].split('/').join('_') + ".png";
  18. if(existsSync(IMGDIR + fileName)) {
  19. fileName = "/img/" + fileName;
  20. } else {
  21. fileName = "bg_" + keys[i].split('/')[0] + ".png";
  22. if(existsSync(IMGDIR + fileName)) {
  23. fileName = "/img/" + fileName;
  24. } else {
  25. fileName = null;
  26. }
  27. }
  28. var binding = {'json': JSON.stringify(fileName), 'fileName': fileName};
  29. app.get('/b/' + keys[i], (function (req, res) {
  30. var agent = req.headers['user-agent'];
  31. res.header("Content-Type", "application/json; charset=utf-8");
  32. if(agent.indexOf('curl/') != -1) {
  33. res.end(this.fileName);
  34. } else {
  35. res.end(this.json);
  36. }
  37. }).bind(binding));
  38. console.log('[INFO] bg for "'+keys[i]+'" = "'+fileName+'"');
  39. fileNames[keys[i]] = fileName;
  40. }
  41. scriptMethods.getBackgroundFromCookie = function(cookies) {
  42. var key;
  43. if(Object.prototype.hasOwnProperty.call(cookies, 'last_generator')) {
  44. key = cookies['last_generator'];
  45. } else {
  46. key = scriptMethods.getDefaultDataKey();
  47. }
  48. return 'body { background-image: url(' + fileNames[key] + '); }'
  49. }
  50. }