diff --git a/src/controllers/ImagesController.ts b/src/controllers/ImagesController.ts index 1c76b144..9eb46d4b 100644 --- a/src/controllers/ImagesController.ts +++ b/src/controllers/ImagesController.ts @@ -1,3 +1,5 @@ +import { unlinkSync } from 'fs'; +import { join } from 'path'; import { FastifyReply, FastifyRequest, FastifyInstance } from 'fastify'; import { Controller, @@ -57,14 +59,24 @@ export class ImagesController { id: req.params.id }); - Console.logger(Image).info(`image ${image.id} was deleted`); - if (this.webhooks.events.includes(WebhookType.DELETE_IMAGE)) - WebhookHelper.sendWebhook(this.webhooks.upload.content, { - image, - host: `${config.core.secure ? 'https' : 'http'}://${req.hostname}${config.uploader.route}/` - }); + const dir = config.uploader.directory ? config.uploader.directory : 'uploads'; + const path = join(dir.charAt(0) == '/' ? dir : join(process.cwd(), dir), image.file); - return reply.send(image); + try { + unlinkSync(path); + + Console.logger(Image).info(`image ${image.id} was deleted`); + if (this.webhooks.events.includes(WebhookType.DELETE_IMAGE)) + WebhookHelper.sendWebhook(this.webhooks.upload.content, { + image, + host: `${config.core.secure ? 'https' : 'http'}://${req.hostname}${config.uploader.route}/` + }); + + return reply.send(image); + } catch (e) { + Console.logger(Image).error(`image ${image.id} could not be deleted...`); + return reply.status(401).send({ error: 'Could not delete image.' }); + } } @GET('/recent') diff --git a/src/index.ts b/src/index.ts index fbbf77bb..e6920a6f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -39,6 +39,9 @@ if (!config) { process.exit(0); } +const dir = config.uploader.directory ? config.uploader.directory : 'uploads'; +const path = dir.charAt(0) == '/' ? dir : join(process.cwd(), dir); + const server = fastify({}); const app = next({ dev, @@ -121,7 +124,7 @@ server.register(fastifyCookies, { }); server.register(fastifyStatic, { - root: join(process.cwd(), config.uploader.directory), + root: path, prefix: config.uploader.route });