clean_images.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. var logging = require("./logging");
  2. var config = require("./config");
  3. var df = require("node-df");
  4. var fs = require("fs");
  5. var exp = {};
  6. // uses `df` to get the available fisk space
  7. // callback contains error, true|false
  8. function should_clean(callback) {
  9. df({
  10. file: __dirname + "/../" + config.faces_dir,
  11. prefixMultiplier: 'KiB',
  12. isDisplayPrefixMultiplier: false,
  13. precision: 2
  14. }, function (err, response) {
  15. if (err) {
  16. callback(err, false);
  17. } else {
  18. var available = response[0].available;
  19. console.log("ImageCleaner: " + available + "KB available");
  20. callback(err, available < config.cleaning_limit);
  21. }
  22. });
  23. }
  24. // check if disk limit reached
  25. // then delete images
  26. exp.run = function() {
  27. should_clean(function(err, clean) {
  28. if (err) {
  29. logging.error("Failed to run ImageCleaner");
  30. logging.error(err);
  31. } else if (clean || true) {
  32. logging.warn("ImageCleaner: Disk limit reached! Cleaning images now");
  33. var facesdir = __dirname + "/../" + config.faces_dir;
  34. var helmdir = __dirname + "/../" + config.helms_dir;
  35. var renderdir = __dirname + "/../" + config.renders_dir;
  36. var skindir = __dirname + "/../" + config.skins_dir;
  37. var files = fs.readdirSync(facesdir);
  38. for (var i = 0; i < Math.min(files.length, config.cleaning_amount); i++) {
  39. var filename = files[i];
  40. if (filename[0] != ".") {
  41. fs.unlink(facesdir + filename, function(){});
  42. fs.unlink(helmdir + filename, function(){});
  43. fs.unlink(skindir + filename, function(){});
  44. }
  45. }
  46. files = fs.readdirSync(renderdir);
  47. for (var j = 0; j < Math.min(files.length, config.cleaning_amount); j++) {
  48. var filename = files[j];
  49. if (filename[0] != ".") {
  50. fs.unlink(renderdir + filename, function(){});
  51. }
  52. }
  53. } else {
  54. logging.log("ImageCleaner: Nothing to clean");
  55. }
  56. });
  57. };
  58. module.exports = exp;