summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/DownloadService.ts
diff options
context:
space:
mode:
authorKagami Sascha Rosylight <saschanaz@outlook.com>2023-06-24 23:35:09 +0200
committerGitHub <noreply@github.com>2023-06-25 06:35:09 +0900
commita2c0573f843ee9e8b17d97a6d0e0b5582653fe35 (patch)
tree2f8f4fbe18639b2ec8ad4ab0f4c576047bad9682 /packages/backend/src/core/DownloadService.ts
parentchore(frontend): use @vitest/coverage-v8 (diff)
downloadmisskey-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.ts18
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';
}
}