| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | 
							- var logging = require("./logging");
 
- var config = require("../config");
 
- var cache = require("./cache");
 
- var path = require("path");
 
- var df = require("node-df");
 
- var fs = require("fs");
 
- var redis = cache.get_redis();
 
- var exp = {};
 
- // does nothing
 
- function nil() {}
 
- // compares redis' used_memory with cleaning_redis_limit
 
- // callback: error, true|false
 
- function should_clean_redis(callback) {
 
-   cache.info(function(err, info) {
 
-     if (err) {
 
-       callback(err, false);
 
-     } else {
 
-       try {
 
-         // logging.debug(info.toString());
 
-         var used = parseInt(info.used_memory) / 1024;
 
-         var result = used >= config.cleaner.redis_limit;
 
-         var msg = "RedisCleaner: " + used + "KB used";
 
-         (result ? logging.log : logging.debug)(msg);
 
-         callback(err, result);
 
-       } catch(e) {
 
-         callback(e, false);
 
-       }
 
-     }
 
-   });
 
- }
 
- // uses `df` to get the available fisk space
 
- // callback: error, true|false
 
- function should_clean_disk(callback) {
 
-   df({
 
-     file: config.directories.faces,
 
-     prefixMultiplier: "KiB",
 
-     isDisplayPrefixMultiplier: false,
 
-     precision: 2
 
-   }, function(err, response) {
 
-     if (err) {
 
-       callback(err, false);
 
-     } else {
 
-       var available = response[0].available;
 
-       var result = available < config.cleaner.disk_limit;
 
-       var msg = "DiskCleaner: " + available + "KB available";
 
-       (result ? logging.log : logging.debug)(msg);
 
-       callback(err, result);
 
-     }
 
-   });
 
- }
 
- // check if redis limit reached, then flush redis
 
- // check if disk limit reached, then delete images
 
- exp.run = function() {
 
-   should_clean_redis(function(err, clean) {
 
-     if (err) {
 
-       logging.error("Failed to run RedisCleaner");
 
-       logging.error(err);
 
-     } else if (clean) {
 
-       logging.warn("RedisCleaner: Redis limit reached! flushing now");
 
-       redis.flushall();
 
-     } else {
 
-       logging.log("RedisCleaner: Nothing to clean");
 
-     }
 
-   });
 
-   should_clean_disk(function(err, clean) {
 
-     if (err) {
 
-       logging.error("Failed to run DiskCleaner");
 
-       logging.error(err);
 
-     } else if (clean) {
 
-       logging.warn("DiskCleaner: Disk limit reached! Cleaning images now");
 
-       // hotfix for #139 | FIXME
 
-       logging.warn("DiskCleaner: Flushing Redis to prevent ENOENT");
 
-       redis.flushall();
 
-       // end hotfix
 
-       var skinsdir = config.directories.skins;
 
-       var capesdir = config.directories.capes;
 
-       var facesdir = config.directories.faces;
 
-       var helmsdir = config.directories.helms;
 
-       var rendersdir = config.directories.renders;
 
-       fs.readdir(skinsdir, function(readerr, files) {
 
-         if (!readerr) {
 
-           for (var i = 0, l = Math.min(files.length, config.cleaner.amount); i < l; i++) {
 
-             var filename = files[i];
 
-             if (filename[0] !== ".") {
 
-               fs.unlink(path.join(facesdir, filename), nil);
 
-               fs.unlink(path.join(helmsdir, filename), nil);
 
-               fs.unlink(path.join(skinsdir, filename), nil);
 
-             }
 
-           }
 
-         }
 
-       });
 
-       fs.readdir(rendersdir, function(readerr, files) {
 
-         if (!readerr) {
 
-           for (var j = 0, l = Math.min(files.length, config.cleaner.amount); j < l; j++) {
 
-             var filename = files[j];
 
-             if (filename[0] !== ".") {
 
-               fs.unlink(rendersdir + filename, nil);
 
-             }
 
-           }
 
-         }
 
-       });
 
-       fs.readdir(capesdir, function(readerr, files) {
 
-         if (!readerr) {
 
-           for (var j = 0, l = Math.min(files.length, config.cleaner.amount); j < l; j++) {
 
-             var filename = files[j];
 
-             if (filename[0] !== ".") {
 
-               fs.unlink(capesdir + filename, nil);
 
-             }
 
-           }
 
-         }
 
-       });
 
-     } else {
 
-       logging.log("DiskCleaner: Nothing to clean");
 
-     }
 
-   });
 
- };
 
- module.exports = exp;
 
 
  |