diff options
| author | Kagami Sascha Rosylight <saschanaz@outlook.com> | 2023-06-24 23:35:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-25 06:35:09 +0900 |
| commit | a2c0573f843ee9e8b17d97a6d0e0b5582653fe35 (patch) | |
| tree | 2f8f4fbe18639b2ec8ad4ab0f4c576047bad9682 /packages/backend/src/core/DownloadService.ts | |
| parent | chore(frontend): use @vitest/coverage-v8 (diff) | |
| download | misskey-a2c0573f843ee9e8b17d97a6d0e0b5582653fe35.tar.gz misskey-a2c0573f843ee9e8b17d97a6d0e0b5582653fe35.tar.bz2 misskey-a2c0573f843ee9e8b17d97a6d0e0b5582653fe35.zip | |
refactor(backend): replace private-ip with ipaddr.js (#11041)
* refactor(backend): replace private-ip with ipaddr.js
* restore ip-cidr
Diffstat (limited to 'packages/backend/src/core/DownloadService.ts')
| -rw-r--r-- | packages/backend/src/core/DownloadService.ts | 18 |
1 files changed, 9 insertions, 9 deletions
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<string> { // 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'; } } |