@xyo-network/url-safety-plugin 2.70.12 → 2.70.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Plugin.js +5 -5
- package/dist/cjs/Plugin.js.map +1 -1
- package/dist/cjs/Witness/Witness.js +17 -10
- package/dist/cjs/Witness/Witness.js.map +1 -1
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +1911 -1775
- package/dist/esm/Plugin.js +4 -4
- package/dist/esm/Plugin.js.map +1 -1
- package/dist/esm/Witness/Witness.js +12 -6
- package/dist/esm/Witness/Witness.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/types/Plugin.d.ts +2 -2
- package/dist/types/Plugin.d.ts.map +1 -1
- package/dist/types/Witness/Witness.d.ts +16 -3
- package/dist/types/Witness/Witness.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/Plugin.ts +6 -6
- package/src/Witness/Witness.ts +34 -9
- package/src/index.ts +3 -3
package/dist/esm/Plugin.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { PayloadSetSchema } from '@xyo-network/payload-model';
|
|
2
2
|
import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export const
|
|
3
|
+
import { UrlSafetySchema } from '@xyo-network/url-safety-payload-plugin';
|
|
4
|
+
import { UrlSafetyWitness } from './Witness';
|
|
5
|
+
export const UrlSafetyPlugin = () => createPayloadSetWitnessPlugin({ required: { [UrlSafetySchema]: 1 }, schema: PayloadSetSchema }, {
|
|
6
6
|
witness: async (params) => {
|
|
7
|
-
const result = await
|
|
7
|
+
const result = await UrlSafetyWitness.create(params);
|
|
8
8
|
return result;
|
|
9
9
|
},
|
|
10
10
|
});
|
package/dist/esm/Plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAClC,6BAA6B,CAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAChE;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
|
|
@@ -2,9 +2,10 @@ import { AxiosJson } from '@xyo-network/axios';
|
|
|
2
2
|
import { UrlSchema } from '@xyo-network/url-payload-plugin';
|
|
3
3
|
import { AbstractWitness } from '@xyo-network/witness';
|
|
4
4
|
import { UrlSafetyWitnessConfigSchema } from './Config';
|
|
5
|
+
export const GoogleSafeBrowsingMatchSchema = 'com.google.safebrowsing.match';
|
|
5
6
|
const checkUrlSafety = async (urls, config) => {
|
|
6
7
|
const axios = new AxiosJson();
|
|
7
|
-
const endPoint = config?.endPoint ?? 'https://safebrowsing.googleapis.com/
|
|
8
|
+
const endPoint = config?.endPoint ?? 'https://safebrowsing.googleapis.com/v4/threatMatches:find';
|
|
8
9
|
const key = config?.key;
|
|
9
10
|
const mutatedUrls = urls.map((url) => url.replace('ipfs://', 'https://cloudflare-ipfs.com/'));
|
|
10
11
|
if (mutatedUrls.length === 0) {
|
|
@@ -22,12 +23,17 @@ const checkUrlSafety = async (urls, config) => {
|
|
|
22
23
|
threatTypes: ['SOCIAL_ENGINEERING', 'POTENTIALLY_HARMFUL_APPLICATION', 'UNWANTED_SOFTWARE', 'THREAT_TYPE_UNSPECIFIED'],
|
|
23
24
|
},
|
|
24
25
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
console.log(`checkUrlSafetyIn: ${JSON.stringify(postData, null, 2)}`);
|
|
27
|
+
const result = (await axios.post(`${endPoint}?key=${key}`, postData, { headers: { referer: 'http://localhost:3000' } }))
|
|
28
|
+
.data;
|
|
29
|
+
console.log(`checkUrlSafetyOut: ${JSON.stringify(result, null, 2)}`);
|
|
30
|
+
return result.matches?.map((match) => ({ ...match, schema: GoogleSafeBrowsingMatchSchema })) ?? [];
|
|
28
31
|
};
|
|
29
|
-
export class
|
|
32
|
+
export class UrlSafetyWitness extends AbstractWitness {
|
|
30
33
|
static configSchemas = [UrlSafetyWitnessConfigSchema];
|
|
34
|
+
get key() {
|
|
35
|
+
return this.params.google?.safeBrowsing?.key;
|
|
36
|
+
}
|
|
31
37
|
get urls() {
|
|
32
38
|
return this.config?.urls;
|
|
33
39
|
}
|
|
@@ -38,7 +44,7 @@ export class UrlWitness extends AbstractWitness {
|
|
|
38
44
|
.map((p) => {
|
|
39
45
|
return p.url;
|
|
40
46
|
});
|
|
41
|
-
return await checkUrlSafety(urls);
|
|
47
|
+
return await checkUrlSafety(urls, { key: this.key });
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
//# sourceMappingURL=Witness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EAAc,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAIvD,MAAM,CAAC,MAAM,6BAA6B,GAAkC,+BAA+B,CAAA;AAkB3G,MAAM,cAAc,GAAG,KAAK,EAC1B,IAAc,EACd,MAGC,EAC0C,EAAE;IAC7C,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAA;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,2DAA2D,CAAA;IAChG,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,CAAA;IACvB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC,CAAA;IAC7F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAA;KACV;IACD,MAAM,QAAQ,GAAG;QACf,MAAM,EAAE;YACN,QAAQ,EAAE,aAAa;YACvB,aAAa,EAAE,KAAK;SACrB;QACD,UAAU,EAAE;YACV,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;YAC1C,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,WAAW,EAAE,CAAC,oBAAoB,EAAE,iCAAiC,EAAE,mBAAmB,EAAE,yBAAyB,CAAC;SACvH;KACF,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAA2B,GAAG,QAAQ,QAAQ,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;SAC/I,IAAI,CAAA;IACP,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACpE,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,CAAiC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACpI,CAAC,CAAA;AAED,MAAM,OAAO,gBAAkF,SAAQ,eAAwB;IAC7H,MAAM,CAAU,aAAa,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAE9D,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAA;IAC9C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAA;IAC1B,CAAC;IAEkB,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE;QACjE,MAAM,IAAI,GACR,IAAI,CAAC,IAAI;YACT,QAAQ;iBACL,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;iBACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,OAAO,CAAC,CAAC,GAAG,CAAA;YACd,CAAC,CAAC,CAAA;QAEN,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UrlSafetyPlugin } from './Plugin';
|
|
2
2
|
export * from './Witness';
|
|
3
|
-
export {
|
|
3
|
+
export { UrlSafetyPlugin };
|
|
4
4
|
// eslint-disable-next-line import/no-default-export
|
|
5
|
-
export default
|
|
5
|
+
export default UrlSafetyPlugin;
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B,oDAAoD;AACpD,eAAe,eAAe,CAAA"}
|
package/dist/types/Plugin.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { UrlSafetyWitness } from './Witness';
|
|
2
|
+
export declare const UrlSafetyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlSafetyWitness<import("@xyo-network/core").BaseParamsFields & {
|
|
3
3
|
account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
|
|
4
4
|
accountDerivationPath?: string | undefined;
|
|
5
5
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASzB,CAAA"}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
|
+
import { Payload } from '@xyo-network/payload-model';
|
|
1
2
|
import { UrlPayload } from '@xyo-network/url-payload-plugin';
|
|
2
|
-
import { UrlSafetyPayload } from '@xyo-network/url-safety-payload-plugin';
|
|
3
3
|
import { AbstractWitness } from '@xyo-network/witness';
|
|
4
4
|
import { UrlSafetyWitnessParams } from './Params';
|
|
5
|
-
export
|
|
5
|
+
export type GoogleSafeBrowsingMatchSchema = 'com.google.safebrowsing.match';
|
|
6
|
+
export declare const GoogleSafeBrowsingMatchSchema: GoogleSafeBrowsingMatchSchema;
|
|
7
|
+
export interface GoogleSafeBrowsingMatch {
|
|
8
|
+
cacheDuration: string;
|
|
9
|
+
platformType: string;
|
|
10
|
+
threat: {
|
|
11
|
+
url: string;
|
|
12
|
+
};
|
|
13
|
+
threatEntryType: string;
|
|
14
|
+
threatType: string;
|
|
15
|
+
}
|
|
16
|
+
export type GoogleSafeBrowsingMatchPayload = Payload<GoogleSafeBrowsingMatch, GoogleSafeBrowsingMatchSchema>;
|
|
17
|
+
export declare class UrlSafetyWitness<TParams extends UrlSafetyWitnessParams = UrlSafetyWitnessParams> extends AbstractWitness<TParams> {
|
|
6
18
|
static configSchemas: "network.xyo.url.safety.witness.config"[];
|
|
19
|
+
get key(): string | undefined;
|
|
7
20
|
get urls(): string[] | undefined;
|
|
8
|
-
protected observeHandler(payloads?: UrlPayload[]): Promise<
|
|
21
|
+
protected observeHandler(payloads?: UrlPayload[]): Promise<GoogleSafeBrowsingMatchPayload[]>;
|
|
9
22
|
}
|
|
10
23
|
//# sourceMappingURL=Witness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAa,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AAC3E,eAAO,MAAM,6BAA6B,EAAE,6BAA+D,CAAA;AAE3G,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,8BAA8B,GAAG,OAAO,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,CAAA;AAuC5G,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC7H,OAAgB,aAAa,4CAAiC;IAE9D,IAAI,GAAG,uBAEN;IAED,IAAI,IAAI,yBAEP;cAEwB,cAAc,CAAC,QAAQ,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;CAWhH"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UrlSafetyPlugin } from './Plugin';
|
|
2
2
|
export * from './Witness';
|
|
3
|
-
export {
|
|
4
|
-
export default
|
|
3
|
+
export { UrlSafetyPlugin };
|
|
4
|
+
export default UrlSafetyPlugin;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,CAAA;AAG1B,eAAe,eAAe,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xyo-network/axios": "~2.70.
|
|
14
|
-
"@xyo-network/module": "~2.70.
|
|
15
|
-
"@xyo-network/payload-model": "~2.70.
|
|
16
|
-
"@xyo-network/payloadset-plugin": "~2.70.
|
|
17
|
-
"@xyo-network/url-payload-plugin": "~2.70.
|
|
18
|
-
"@xyo-network/url-safety-payload-plugin": "~2.70.
|
|
19
|
-
"@xyo-network/witness": "~2.70.
|
|
13
|
+
"@xyo-network/axios": "~2.70.13",
|
|
14
|
+
"@xyo-network/module": "~2.70.13",
|
|
15
|
+
"@xyo-network/payload-model": "~2.70.13",
|
|
16
|
+
"@xyo-network/payloadset-plugin": "~2.70.13",
|
|
17
|
+
"@xyo-network/url-payload-plugin": "~2.70.13",
|
|
18
|
+
"@xyo-network/url-safety-payload-plugin": "~2.70.13",
|
|
19
|
+
"@xyo-network/witness": "~2.70.13"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@xylabs/ts-scripts-yarn3": "^2.19.0",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
},
|
|
57
57
|
"sideEffects": false,
|
|
58
58
|
"types": "dist/types/index.d.ts",
|
|
59
|
-
"version": "2.70.
|
|
59
|
+
"version": "2.70.13"
|
|
60
60
|
}
|
package/src/Plugin.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { PayloadSetSchema } from '@xyo-network/payload-model'
|
|
2
2
|
import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
|
|
3
|
-
import {
|
|
3
|
+
import { UrlSafetySchema } from '@xyo-network/url-safety-payload-plugin'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { UrlSafetyWitness } from './Witness'
|
|
6
6
|
|
|
7
|
-
export const
|
|
8
|
-
createPayloadSetWitnessPlugin<
|
|
9
|
-
{ required: { [
|
|
7
|
+
export const UrlSafetyPlugin = () =>
|
|
8
|
+
createPayloadSetWitnessPlugin<UrlSafetyWitness>(
|
|
9
|
+
{ required: { [UrlSafetySchema]: 1 }, schema: PayloadSetSchema },
|
|
10
10
|
{
|
|
11
11
|
witness: async (params) => {
|
|
12
|
-
const result = await
|
|
12
|
+
const result = await UrlSafetyWitness.create(params)
|
|
13
13
|
return result
|
|
14
14
|
},
|
|
15
15
|
},
|
package/src/Witness/Witness.ts
CHANGED
|
@@ -1,20 +1,39 @@
|
|
|
1
1
|
import { AxiosJson } from '@xyo-network/axios'
|
|
2
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
2
3
|
import { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'
|
|
3
|
-
import { UrlSafetyPayload } from '@xyo-network/url-safety-payload-plugin'
|
|
4
4
|
import { AbstractWitness } from '@xyo-network/witness'
|
|
5
5
|
|
|
6
6
|
import { UrlSafetyWitnessConfigSchema } from './Config'
|
|
7
7
|
import { UrlSafetyWitnessParams } from './Params'
|
|
8
8
|
|
|
9
|
+
export type GoogleSafeBrowsingMatchSchema = 'com.google.safebrowsing.match'
|
|
10
|
+
export const GoogleSafeBrowsingMatchSchema: GoogleSafeBrowsingMatchSchema = 'com.google.safebrowsing.match'
|
|
11
|
+
|
|
12
|
+
export interface GoogleSafeBrowsingMatch {
|
|
13
|
+
cacheDuration: string
|
|
14
|
+
platformType: string
|
|
15
|
+
threat: {
|
|
16
|
+
url: string
|
|
17
|
+
}
|
|
18
|
+
threatEntryType: string
|
|
19
|
+
threatType: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type GoogleSafeBrowsingMatchPayload = Payload<GoogleSafeBrowsingMatch, GoogleSafeBrowsingMatchSchema>
|
|
23
|
+
|
|
24
|
+
interface GoogleSafeBrowsingResult {
|
|
25
|
+
matches?: GoogleSafeBrowsingMatch[]
|
|
26
|
+
}
|
|
27
|
+
|
|
9
28
|
const checkUrlSafety = async (
|
|
10
29
|
urls: string[],
|
|
11
30
|
config?: {
|
|
12
31
|
endPoint?: string
|
|
13
32
|
key?: string
|
|
14
33
|
},
|
|
15
|
-
): Promise<
|
|
34
|
+
): Promise<GoogleSafeBrowsingMatchPayload[]> => {
|
|
16
35
|
const axios = new AxiosJson()
|
|
17
|
-
const endPoint = config?.endPoint ?? 'https://safebrowsing.googleapis.com/
|
|
36
|
+
const endPoint = config?.endPoint ?? 'https://safebrowsing.googleapis.com/v4/threatMatches:find'
|
|
18
37
|
const key = config?.key
|
|
19
38
|
const mutatedUrls = urls.map((url) => url.replace('ipfs://', 'https://cloudflare-ipfs.com/'))
|
|
20
39
|
if (mutatedUrls.length === 0) {
|
|
@@ -32,19 +51,25 @@ const checkUrlSafety = async (
|
|
|
32
51
|
threatTypes: ['SOCIAL_ENGINEERING', 'POTENTIALLY_HARMFUL_APPLICATION', 'UNWANTED_SOFTWARE', 'THREAT_TYPE_UNSPECIFIED'],
|
|
33
52
|
},
|
|
34
53
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
54
|
+
console.log(`checkUrlSafetyIn: ${JSON.stringify(postData, null, 2)}`)
|
|
55
|
+
const result = (await axios.post<GoogleSafeBrowsingResult>(`${endPoint}?key=${key}`, postData, { headers: { referer: 'http://localhost:3000' } }))
|
|
56
|
+
.data
|
|
57
|
+
console.log(`checkUrlSafetyOut: ${JSON.stringify(result, null, 2)}`)
|
|
58
|
+
return result.matches?.map<GoogleSafeBrowsingMatchPayload>((match) => ({ ...match, schema: GoogleSafeBrowsingMatchSchema })) ?? []
|
|
38
59
|
}
|
|
39
60
|
|
|
40
|
-
export class
|
|
61
|
+
export class UrlSafetyWitness<TParams extends UrlSafetyWitnessParams = UrlSafetyWitnessParams> extends AbstractWitness<TParams> {
|
|
41
62
|
static override configSchemas = [UrlSafetyWitnessConfigSchema]
|
|
42
63
|
|
|
64
|
+
get key() {
|
|
65
|
+
return this.params.google?.safeBrowsing?.key
|
|
66
|
+
}
|
|
67
|
+
|
|
43
68
|
get urls() {
|
|
44
69
|
return this.config?.urls
|
|
45
70
|
}
|
|
46
71
|
|
|
47
|
-
protected override async observeHandler(payloads: UrlPayload[] = []): Promise<
|
|
72
|
+
protected override async observeHandler(payloads: UrlPayload[] = []): Promise<GoogleSafeBrowsingMatchPayload[]> {
|
|
48
73
|
const urls: string[] =
|
|
49
74
|
this.urls ??
|
|
50
75
|
payloads
|
|
@@ -53,6 +78,6 @@ export class UrlWitness<TParams extends UrlSafetyWitnessParams = UrlSafetyWitnes
|
|
|
53
78
|
return p.url
|
|
54
79
|
})
|
|
55
80
|
|
|
56
|
-
return await checkUrlSafety(urls)
|
|
81
|
+
return await checkUrlSafety(urls, { key: this.key })
|
|
57
82
|
}
|
|
58
83
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UrlSafetyPlugin } from './Plugin'
|
|
2
2
|
|
|
3
3
|
export * from './Witness'
|
|
4
4
|
|
|
5
|
-
export {
|
|
5
|
+
export { UrlSafetyPlugin }
|
|
6
6
|
|
|
7
7
|
// eslint-disable-next-line import/no-default-export
|
|
8
|
-
export default
|
|
8
|
+
export default UrlSafetyPlugin
|