teddit/cacheControl.js

67 lines
1.9 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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) {
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])
}
}
}
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 --`)
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 --`)
}
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)
}
}