mirror of https://github.com/renzynx/bliss.git
82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
import { uploadDir } from "./constants";
|
|
import { promises as fs } from "fs";
|
|
import { CronJob } from "cron";
|
|
import { Logger } from "@nestjs/common";
|
|
import { exec } from "child_process";
|
|
|
|
const cleanUp = async () => {
|
|
const currentTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
|
|
const job = new CronJob(
|
|
// every 24 hours at 12 AM
|
|
"0 0 * * *",
|
|
async () => {
|
|
const startTime = Date.now();
|
|
|
|
const logger = new Logger("CronJob");
|
|
|
|
const isWindows = process.platform === "win32";
|
|
|
|
if (isWindows) {
|
|
// check if forfiles.exe exists
|
|
try {
|
|
await fs.access("C:\\Windows\\System32\\forfiles.exe");
|
|
} catch (error) {
|
|
logger.error("forfiles.exe not found, aborting job");
|
|
logger.log(`Finished job in ${Date.now() - startTime}ms`);
|
|
return;
|
|
}
|
|
|
|
const { stdout } = await exec(
|
|
`forfiles /p ${uploadDir} /s /m tmp_* /D -1 /c "cmd /c del @path"`
|
|
);
|
|
|
|
stdout.on("data", (data) => {
|
|
logger.log(data);
|
|
});
|
|
|
|
logger.log(`Finished job in ${Date.now() - startTime}ms`);
|
|
|
|
return;
|
|
}
|
|
|
|
const isUnix =
|
|
process.platform === "linux" ||
|
|
process.platform === "darwin" ||
|
|
process.platform === "freebsd" ||
|
|
process.platform === "openbsd";
|
|
|
|
if (isUnix) {
|
|
const { stdout } = await exec(
|
|
`find ${uploadDir} -type f -name "tmp_*" -mtime +1 -exec rm -f {} \\;`
|
|
);
|
|
|
|
stdout.on("data", (data) => {
|
|
logger.log(data);
|
|
});
|
|
|
|
logger.log(`Finished job in ${Date.now() - startTime}ms`);
|
|
|
|
return;
|
|
} else {
|
|
logger.log("OS not supported");
|
|
logger.log(`Finished job in ${Date.now() - startTime}ms`);
|
|
return;
|
|
}
|
|
},
|
|
null,
|
|
true,
|
|
currentTimeZone
|
|
);
|
|
|
|
const supportedOS = ["win32", "linux", "darwin", "freebsd", "openbsd"];
|
|
|
|
if (!supportedOS.includes(process.platform)) {
|
|
return;
|
|
}
|
|
|
|
job.start();
|
|
};
|
|
|
|
cleanUp();
|