From a2c0573f843ee9e8b17d97a6d0e0b5582653fe35 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sat, 24 Jun 2023 23:35:09 +0200 Subject: refactor(backend): replace private-ip with ipaddr.js (#11041) * refactor(backend): replace private-ip with ipaddr.js * restore ip-cidr --- packages/backend/src/core/DownloadService.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'packages/backend/src/core/DownloadService.ts') diff --git a/packages/backend/src/core/DownloadService.ts b/packages/backend/src/core/DownloadService.ts index bd535c6032..09039a8b57 100644 --- a/packages/backend/src/core/DownloadService.ts +++ b/packages/backend/src/core/DownloadService.ts @@ -2,8 +2,7 @@ import * as fs from 'node:fs'; import * as stream from 'node:stream'; import * as util from 'node:util'; import { Inject, Injectable } from '@nestjs/common'; -import IPCIDR from 'ip-cidr'; -import PrivateIp from 'private-ip'; +import ipaddr from 'ipaddr.js'; import chalk from 'chalk'; import got, * as Got from 'got'; import { parse } from 'content-disposition'; @@ -123,15 +122,15 @@ export class DownloadService { public async downloadTextFile(url: string): Promise { // Create temp file const [path, cleanup] = await createTemp(); - + this.logger.info(`text file: Temp file is ${path}`); - + try { // write content at URL to temp file await this.downloadUrl(url, path); - + const text = await util.promisify(fs.readFile)(path, 'utf8'); - + return text; } finally { cleanup(); @@ -140,13 +139,14 @@ export class DownloadService { @bindThis private isPrivateIp(ip: string): boolean { + const parsedIp = ipaddr.parse(ip); + for (const net of this.config.allowedPrivateNetworks ?? []) { - const cidr = new IPCIDR(net); - if (cidr.contains(ip)) { + if (parsedIp.match(ipaddr.parseCIDR(net))) { return false; } } - return PrivateIp(ip) ?? false; + return parsedIp.range() !== 'unicast'; } } -- cgit v1.2.3-freya