Consume headers for IP

This commit is contained in:
2024-10-30 10:38:18 -06:00
parent 6418bff35c
commit c631566ab0
2 changed files with 13 additions and 3 deletions

View File

@@ -2,7 +2,6 @@ import {
Body,
Controller,
Get,
Ip,
Param,
Post,
Redirect,
@@ -19,6 +18,7 @@ import { FilesInterceptor } from '@nestjs/platform-express';
import { generateUniqueSlug } from 'src/utils/slug';
import { JunkDrawerMetadata } from './types';
import { Request, Response } from 'express';
import { ipFromRequest } from 'src/utils/ip';
@Controller('junk-drawer')
@ApiTags('junk-drawer')
@@ -27,8 +27,9 @@ export class JunkDrawerController {
@Get('')
@Render('junk-drawer/upload')
async generateUploadForm(@Ip() ip: string) {
async generateUploadForm(@Req() req: Request) {
let items: string[] = [];
const ip = ipFromRequest(req);
if (ip) {
items = await this.junkDrawerService.getItemsForIp(ip);
}
@@ -87,7 +88,6 @@ export class JunkDrawerController {
async handleFileUpload(
@UploadedFiles() files: Express.Multer.File[],
@Req() request: Request,
@Ip() ip: string,
@Body('description') description: string,
@Body('private-ish') privateIsh: boolean,
@Body('remember') remember: boolean,
@@ -95,6 +95,7 @@ export class JunkDrawerController {
const uniqueSlug = generateUniqueSlug({
random: privateIsh,
});
const ip = ipFromRequest(request);
const metadata: JunkDrawerMetadata = {
slug: uniqueSlug,
version: '1.0.0',

9
src/utils/ip.ts Normal file
View File

@@ -0,0 +1,9 @@
import { Request } from 'express';
export const ipFromRequest = (req: Request): string | undefined => {
const flyIp = req.headers['fly-client-ip'] as string | undefined;
const forwardedFor = (req.headers['x-forwarded-for'] as string)?.split(
',',
)[0];
return flyIp || forwardedFor || req.ip;
};