2021-08-24 17:17:46 +02:00
|
|
|
|
module.exports.removeCacheFiles = function() {
|
|
|
|
|
const fs = require('fs')
|
|
|
|
|
const config = require('./config')
|
|
|
|
|
const pics = './static/pics'
|
|
|
|
|
const flairs = './static/pics/flairs'
|
|
|
|
|
const icons = './static/pics/icons'
|
|
|
|
|
const thumbs = './static/pics/thumbs'
|
|
|
|
|
const vids = './static/vids'
|
|
|
|
|
let util = require('util')
|
|
|
|
|
let spawn = require('child_process').spawn
|
|
|
|
|
|
|
|
|
|
let usage
|
|
|
|
|
const limit = config.cache_max_size
|
|
|
|
|
|
|
|
|
|
function getUsage() {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
let size = spawn('du', ['-sBM', './static/'])
|
|
|
|
|
size.stdout.on('data', function (data) {
|
2021-08-29 19:36:36 +02:00
|
|
|
|
data = data.toString()
|
|
|
|
|
let lines = data.split('\n')
|
|
|
|
|
if(lines) {
|
|
|
|
|
for(let i = lines.length; i >= 0; i--) {
|
|
|
|
|
if(lines[i] && lines[i].includes('./static/')) {
|
|
|
|
|
usage = parseInt(lines[i])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-08-24 17:17:46 +02:00
|
|
|
|
resolve(usage)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function deleteFiles() {
|
|
|
|
|
return new Promise(async (resolve, reject) => {
|
|
|
|
|
usage = await getUsage()
|
|
|
|
|
if(usage > limit) {
|
|
|
|
|
const { exec } = require('child_process')
|
|
|
|
|
exec(`cd ${pics} && ls -1btr -Iflairs -Iicons -Ithumbs -I.gitignore | head -50 | xargs rm -f --`)
|
2021-08-29 19:36:36 +02:00
|
|
|
|
exec(`cd ${flairs} && ls -1btr -I.gitignore | head -6 | xargs rm -f --`)
|
|
|
|
|
exec(`cd ${icons} && ls -1btr -I.gitignore | head -6 | xargs rm -f --`)
|
|
|
|
|
exec(`cd ${thumbs} && ls -1btr -I.gitignore | head -80 | xargs rm -f --`)
|
|
|
|
|
exec(`cd ${vids} && ls -1btr -I.gitignore | head -2 | xargs rm -f --`)
|
2021-08-24 17:17:46 +02:00
|
|
|
|
}
|
|
|
|
|
resolve(1)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function main() {
|
|
|
|
|
usage = await getUsage()
|
|
|
|
|
if(usage > limit) {
|
|
|
|
|
console.log('Started removeCacheFiles()')
|
|
|
|
|
while(usage > limit) {
|
|
|
|
|
await deleteFiles()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(config.cache_control) {
|
|
|
|
|
main()
|
|
|
|
|
|
|
|
|
|
const interval_ms = config.cache_control_interval
|
|
|
|
|
setInterval(() => {
|
|
|
|
|
main()
|
|
|
|
|
}, interval_ms)
|
|
|
|
|
}
|
|
|
|
|
}
|