|
@@ -1,126 +0,0 @@
|
|
|
-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;
|