fix(core): update
This commit is contained in:
parent
95bf41a602
commit
c13549ac82
@ -13,4 +13,11 @@ tap.test('should deal with UrlHouse data', async () => {
|
|||||||
console.log(data.length);
|
console.log(data.length);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tap.test('should deal with FeodoTracker data', async () => {
|
||||||
|
const feodoTracker = new abuseCh.FeodoTracker();
|
||||||
|
const data = await feodoTracker.getData();
|
||||||
|
console.log(data.length);
|
||||||
|
console.log(data[0]);
|
||||||
|
});
|
||||||
|
|
||||||
tap.start();
|
tap.start();
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@apiclient.xyz/abuse.ch',
|
name: '@apiclient.xyz/abuse.ch',
|
||||||
version: '1.0.8',
|
version: '1.0.9',
|
||||||
description: 'an unofficial client to retrieve abuse.ch data'
|
description: 'an unofficial client to retrieve abuse.ch data'
|
||||||
}
|
}
|
||||||
|
63
ts/abuse.ch.classes.feodotracker.ts
Normal file
63
ts/abuse.ch.classes.feodotracker.ts
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import * as plugins from './plugins.js';
|
||||||
|
import * as paths from './paths.js';
|
||||||
|
import * as helpers from './helpers.js';
|
||||||
|
|
||||||
|
export interface IFeodoTrackerData {
|
||||||
|
ID: string;
|
||||||
|
Dateadded: string;
|
||||||
|
DestinationIP: string;
|
||||||
|
DestinationPort: string;
|
||||||
|
Malware: string;
|
||||||
|
Reporter: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class FeodoTracker {
|
||||||
|
private static readonly FEODO_TRACKER_API_URL: string = 'https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt';
|
||||||
|
|
||||||
|
public async getData(): Promise<IFeodoTrackerData[]> {
|
||||||
|
plugins.smartfile.fs.ensureDirSync(paths.feodoTrackerTmp);
|
||||||
|
const txtPath = plugins.path.join(paths.feodoTrackerTmp, 'feodo.txt');
|
||||||
|
|
||||||
|
const response = await plugins.nodeFetch(FeodoTracker.FEODO_TRACKER_API_URL, {
|
||||||
|
...(helpers.findProxy() ? {
|
||||||
|
agent: helpers.getAgent(),
|
||||||
|
} : {})
|
||||||
|
});
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
const fileStream = plugins.fs.createWriteStream(txtPath);
|
||||||
|
// @ts-ignore
|
||||||
|
const readable = plugins.stream.Readable.from(response.body);
|
||||||
|
plugins.stream.pipeline(readable, fileStream, (err) => {
|
||||||
|
if (err) reject(err);
|
||||||
|
else resolve(null);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
let data: IFeodoTrackerData[] = [];
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
plugins.stream.pipeline(
|
||||||
|
plugins.fs.createReadStream(txtPath),
|
||||||
|
plugins.csv({
|
||||||
|
headers: ['ID', 'Dateadded', 'DestinationIP', 'DestinationPort', 'Malware', 'Reporter'],
|
||||||
|
mapValues: ({ header, value }) => value.trim()
|
||||||
|
}),
|
||||||
|
(err) => {
|
||||||
|
if (err) reject(err);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.on('data', (row) => {
|
||||||
|
data.push(row);
|
||||||
|
})
|
||||||
|
.on('end', resolve)
|
||||||
|
.on('error', reject);
|
||||||
|
});
|
||||||
|
|
||||||
|
plugins.smartfile.fs.removeSync(paths.feodoTrackerTmp);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -1,2 +1,3 @@
|
|||||||
export * from './abuse.ch.classes.urlhouse.js';
|
export * from './abuse.ch.classes.feodotracker.js';
|
||||||
export * from './abuse.ch.classes.threatfox.js';
|
export * from './abuse.ch.classes.threatfox.js';
|
||||||
|
export * from './abuse.ch.classes.urlhouse.js';
|
||||||
|
@ -5,3 +5,4 @@ export const nogitDir = plugins.path.join(packageDir, '.nogit');
|
|||||||
|
|
||||||
export const urlHouseTmp = plugins.path.join(nogitDir, 'tmp.urlhaus');
|
export const urlHouseTmp = plugins.path.join(nogitDir, 'tmp.urlhaus');
|
||||||
export const threatFoxTmp = plugins.path.join(nogitDir, 'tmp.threatfox');
|
export const threatFoxTmp = plugins.path.join(nogitDir, 'tmp.threatfox');
|
||||||
|
export const feodoTrackerTmp = plugins.path.join(nogitDir, 'tmp.feodotracker');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user