@keplr-wallet/background 0.10.23 → 0.10.24

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.
Files changed (49) hide show
  1. package/build/index.d.ts +1 -0
  2. package/build/index.js +9 -0
  3. package/build/index.js.map +1 -1
  4. package/build/phishing-list/constants.d.ts +1 -0
  5. package/build/phishing-list/constants.js +5 -0
  6. package/build/phishing-list/constants.js.map +1 -0
  7. package/build/phishing-list/handler.d.ts +3 -0
  8. package/build/phishing-list/handler.js +19 -0
  9. package/build/phishing-list/handler.js.map +1 -0
  10. package/build/phishing-list/index.d.ts +2 -0
  11. package/build/phishing-list/index.js +15 -0
  12. package/build/phishing-list/index.js.map +1 -0
  13. package/build/phishing-list/init.d.ts +3 -0
  14. package/build/phishing-list/init.js +12 -0
  15. package/build/phishing-list/init.js.map +1 -0
  16. package/build/phishing-list/internal.d.ts +2 -0
  17. package/build/phishing-list/internal.js +15 -0
  18. package/build/phishing-list/internal.js.map +1 -0
  19. package/build/phishing-list/messages.d.ts +9 -0
  20. package/build/phishing-list/messages.js +30 -0
  21. package/build/phishing-list/messages.js.map +1 -0
  22. package/build/phishing-list/messages.spec.d.ts +1 -0
  23. package/build/phishing-list/messages.spec.js +102 -0
  24. package/build/phishing-list/messages.spec.js.map +1 -0
  25. package/build/phishing-list/service.d.ts +22 -0
  26. package/build/phishing-list/service.js +86 -0
  27. package/build/phishing-list/service.js.map +1 -0
  28. package/build/phishing-list/service.spec.d.ts +1 -0
  29. package/build/phishing-list/service.spec.js +302 -0
  30. package/build/phishing-list/service.spec.js.map +1 -0
  31. package/build/phishing-list/utils.d.ts +1 -0
  32. package/build/phishing-list/utils.js +27 -0
  33. package/build/phishing-list/utils.js.map +1 -0
  34. package/build/phishing-list/utils.spec.d.ts +1 -0
  35. package/build/phishing-list/utils.spec.js +142 -0
  36. package/build/phishing-list/utils.spec.js.map +1 -0
  37. package/package.json +11 -11
  38. package/src/index.ts +11 -0
  39. package/src/phishing-list/constants.ts +1 -0
  40. package/src/phishing-list/handler.ts +27 -0
  41. package/src/phishing-list/index.ts +2 -0
  42. package/src/phishing-list/init.ts +11 -0
  43. package/src/phishing-list/internal.ts +2 -0
  44. package/src/phishing-list/messages.spec.ts +104 -0
  45. package/src/phishing-list/messages.ts +32 -0
  46. package/src/phishing-list/service.spec.ts +367 -0
  47. package/src/phishing-list/service.ts +88 -0
  48. package/src/phishing-list/utils.spec.ts +144 -0
  49. package/src/phishing-list/utils.ts +27 -0
package/build/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export * from "./updater";
9
9
  export * from "./tokens";
10
10
  export * from "./interaction";
11
11
  export * from "./permission";
12
+ export * from "./phishing-list";
12
13
  import { KVStore } from "@keplr-wallet/common";
13
14
  import { ChainInfo } from "@keplr-wallet/types";
14
15
  import { CommonCrypto } from "./keyring";
package/build/index.js CHANGED
@@ -33,6 +33,7 @@ const Updater = __importStar(require("./updater/internal"));
33
33
  const Tokens = __importStar(require("./tokens/internal"));
34
34
  const Interaction = __importStar(require("./interaction/internal"));
35
35
  const Permission = __importStar(require("./permission/internal"));
36
+ const PhishingList = __importStar(require("./phishing-list/internal"));
36
37
  __exportStar(require("./persistent-memory"), exports);
37
38
  __exportStar(require("./chains"), exports);
38
39
  __exportStar(require("./ledger"), exports);
@@ -43,6 +44,7 @@ __exportStar(require("./updater"), exports);
43
44
  __exportStar(require("./tokens"), exports);
44
45
  __exportStar(require("./interaction"), exports);
45
46
  __exportStar(require("./permission"), exports);
47
+ __exportStar(require("./phishing-list"), exports);
46
48
  function init(router, storeCreator,
47
49
  // Message requester to the content script.
48
50
  eventMsgRequester, embedChainInfos,
@@ -61,6 +63,11 @@ privilegedOrigins, commonCrypto, notification, ledgerOptions = {}, experimentalO
61
63
  const keyRingService = new KeyRing.KeyRingService(storeCreator("keyring"), embedChainInfos, commonCrypto);
62
64
  const secretWasmService = new SecretWasm.SecretWasmService(storeCreator("secretwasm"));
63
65
  const backgroundTxService = new BackgroundTx.BackgroundTxService(notification);
66
+ const phishingListService = new PhishingList.PhishingListService({
67
+ blockListUrl: "https://raw.githubusercontent.com/chainapsis/phishing-block-list/main/block-list.txt",
68
+ fetchingIntervalMs: 3 * 3600 * 1000,
69
+ retryIntervalMs: 10 * 60 * 1000,
70
+ });
64
71
  interactionService.init();
65
72
  persistentMemoryService.init();
66
73
  permissionService.init(interactionService, chainsService, keyRingService);
@@ -71,6 +78,7 @@ privilegedOrigins, commonCrypto, notification, ledgerOptions = {}, experimentalO
71
78
  keyRingService.init(interactionService, chainsService, permissionService, ledgerService);
72
79
  secretWasmService.init(chainsService, keyRingService, permissionService);
73
80
  backgroundTxService.init(chainsService, permissionService);
81
+ phishingListService.init();
74
82
  Interaction.init(router, interactionService);
75
83
  PersistentMemory.init(router, persistentMemoryService);
76
84
  Permission.init(router, permissionService);
@@ -81,6 +89,7 @@ privilegedOrigins, commonCrypto, notification, ledgerOptions = {}, experimentalO
81
89
  KeyRing.init(router, keyRingService);
82
90
  SecretWasm.init(router, secretWasmService);
83
91
  BackgroundTx.init(router, backgroundTxService);
92
+ PhishingList.init(router, phishingListService);
84
93
  }
85
94
  exports.init = init;
86
95
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const ROUTE = "phishing-list";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ROUTE = void 0;
4
+ exports.ROUTE = "phishing-list";
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/phishing-list/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,KAAK,GAAG,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Handler } from "@keplr-wallet/router";
2
+ import { PhishingListService } from "./service";
3
+ export declare const getHandler: (service: PhishingListService) => Handler;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHandler = void 0;
4
+ const messages_1 = require("./messages");
5
+ const getHandler = (service) => {
6
+ return (env, msg) => {
7
+ switch (msg.constructor) {
8
+ case messages_1.CheckURLIsPhishingMsg:
9
+ return handleCheckURLIsPhishingMsg(service)(env, msg);
10
+ default:
11
+ throw new Error("Unknown msg type");
12
+ }
13
+ };
14
+ };
15
+ exports.getHandler = getHandler;
16
+ const handleCheckURLIsPhishingMsg = (service) => (_, msg) => {
17
+ return service.checkURLIsPhishing(msg.origin);
18
+ };
19
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/phishing-list/handler.ts"],"names":[],"mappings":";;;AAEA,yCAAmD;AAE5C,MAAM,UAAU,GAA8C,CACnE,OAA4B,EAC5B,EAAE;IACF,OAAO,CAAC,GAAQ,EAAE,GAAqB,EAAE,EAAE;QACzC,QAAQ,GAAG,CAAC,WAAW,EAAE;YACvB,KAAK,gCAAqB;gBACxB,OAAO,2BAA2B,CAAC,OAAO,CAAC,CACzC,GAAG,EACH,GAA4B,CAC7B,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACvC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,UAAU,cAcrB;AAEF,MAAM,2BAA2B,GAEa,CAC5C,OAA4B,EAC5B,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACd,OAAO,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./service";
2
+ export * from "./messages";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./service"), exports);
14
+ __exportStar(require("./messages"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/phishing-list/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,6CAA2B"}
@@ -0,0 +1,3 @@
1
+ import { Router } from "@keplr-wallet/router";
2
+ import { PhishingListService } from "./service";
3
+ export declare function init(router: Router, service: PhishingListService): void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.init = void 0;
4
+ const constants_1 = require("./constants");
5
+ const handler_1 = require("./handler");
6
+ const messages_1 = require("./messages");
7
+ function init(router, service) {
8
+ router.registerMessage(messages_1.CheckURLIsPhishingMsg);
9
+ router.addHandler(constants_1.ROUTE, handler_1.getHandler(service));
10
+ }
11
+ exports.init = init;
12
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/phishing-list/init.ts"],"names":[],"mappings":";;;AACA,2CAAoC;AACpC,uCAAuC;AAEvC,yCAAmD;AAEnD,SAAgB,IAAI,CAAC,MAAc,EAAE,OAA4B;IAC/D,MAAM,CAAC,eAAe,CAAC,gCAAqB,CAAC,CAAC;IAE9C,MAAM,CAAC,UAAU,CAAC,iBAAK,EAAE,oBAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AAJD,oBAIC"}
@@ -0,0 +1,2 @@
1
+ export * from "./service";
2
+ export * from "./init";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./service"), exports);
14
+ __exportStar(require("./init"), exports);
15
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/phishing-list/internal.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,yCAAuB"}
@@ -0,0 +1,9 @@
1
+ import { Message } from "@keplr-wallet/router";
2
+ export declare class CheckURLIsPhishingMsg extends Message<boolean> {
3
+ static type(): string;
4
+ constructor();
5
+ validateBasic(): void;
6
+ approveExternal(): boolean;
7
+ route(): string;
8
+ type(): string;
9
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CheckURLIsPhishingMsg = void 0;
4
+ const router_1 = require("@keplr-wallet/router");
5
+ const constants_1 = require("./constants");
6
+ const utils_1 = require("./utils");
7
+ class CheckURLIsPhishingMsg extends router_1.Message {
8
+ static type() {
9
+ return "check-url-is-phishing";
10
+ }
11
+ constructor() {
12
+ super();
13
+ }
14
+ validateBasic() {
15
+ const url = new URL(this.origin);
16
+ // Will throw an error if url has not second level domain.
17
+ utils_1.parseDomainUntilSecondLevel(url.origin);
18
+ }
19
+ approveExternal() {
20
+ return true;
21
+ }
22
+ route() {
23
+ return constants_1.ROUTE;
24
+ }
25
+ type() {
26
+ return CheckURLIsPhishingMsg.type();
27
+ }
28
+ }
29
+ exports.CheckURLIsPhishingMsg = CheckURLIsPhishingMsg;
30
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/phishing-list/messages.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAC/C,2CAAoC;AACpC,mCAAsD;AAEtD,MAAa,qBAAsB,SAAQ,gBAAgB;IAClD,MAAM,CAAC,IAAI;QAChB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,aAAa;QACX,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjC,0DAA0D;QAC1D,mCAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,iBAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;CACF;AA3BD,sDA2BC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const messages_1 = require("./messages");
4
+ describe("Test phishing list service messages", () => {
5
+ test("Test CheckURLIsPhishingMsg", () => {
6
+ const tests = [
7
+ {
8
+ url: "",
9
+ invalid: true,
10
+ },
11
+ {
12
+ url: ".",
13
+ invalid: true,
14
+ },
15
+ {
16
+ url: "..",
17
+ invalid: true,
18
+ },
19
+ {
20
+ url: ".test.",
21
+ invalid: true,
22
+ },
23
+ {
24
+ url: "..test",
25
+ invalid: true,
26
+ },
27
+ {
28
+ url: "test.com.",
29
+ invalid: true,
30
+ },
31
+ {
32
+ url: "test.com..",
33
+ invalid: true,
34
+ },
35
+ {
36
+ url: "asd.test.com.",
37
+ invalid: true,
38
+ },
39
+ {
40
+ url: "asd..test.com.",
41
+ invalid: true,
42
+ },
43
+ {
44
+ url: "http://",
45
+ invalid: true,
46
+ },
47
+ {
48
+ url: "https://.",
49
+ invalid: true,
50
+ },
51
+ {
52
+ url: "https://..",
53
+ invalid: true,
54
+ },
55
+ {
56
+ url: "https://.test.",
57
+ invalid: true,
58
+ },
59
+ {
60
+ url: "https://..test",
61
+ invalid: true,
62
+ },
63
+ {
64
+ url: "https://test.com.",
65
+ },
66
+ {
67
+ url: "https://test.com..",
68
+ },
69
+ {
70
+ url: "https://.test.com.",
71
+ },
72
+ {
73
+ url: "https://..test.com..",
74
+ },
75
+ {
76
+ url: "https://test..com",
77
+ },
78
+ {
79
+ url: "https://..test..com..",
80
+ },
81
+ {
82
+ url: "https://asd.test.com.",
83
+ },
84
+ {
85
+ url: "https://asd..test.com.",
86
+ },
87
+ ];
88
+ for (const test of tests) {
89
+ const msg = new messages_1.CheckURLIsPhishingMsg();
90
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
91
+ // @ts-ignore
92
+ msg.origin = test.url;
93
+ if ("invalid" in test) {
94
+ expect(() => msg.validateBasic()).toThrow();
95
+ }
96
+ else {
97
+ expect(() => msg.validateBasic()).not.toThrow();
98
+ }
99
+ }
100
+ });
101
+ });
102
+ //# sourceMappingURL=messages.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.spec.js","sourceRoot":"","sources":["../../src/phishing-list/messages.spec.ts"],"names":[],"mappings":";;AAAA,yCAAmD;AAEnD,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,KAAK,GAGL;YACJ;gBACE,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,GAAG;gBACR,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,IAAI;gBACT,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,QAAQ;gBACb,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,QAAQ;gBACb,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,YAAY;gBACjB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,eAAe;gBACpB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,gBAAgB;gBACrB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,YAAY;gBACjB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,gBAAgB;gBACrB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,gBAAgB;gBACrB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,GAAG,EAAE,mBAAmB;aACzB;YACD;gBACE,GAAG,EAAE,oBAAoB;aAC1B;YACD;gBACE,GAAG,EAAE,oBAAoB;aAC1B;YACD;gBACE,GAAG,EAAE,sBAAsB;aAC5B;YACD;gBACE,GAAG,EAAE,mBAAmB;aACzB;YACD;gBACE,GAAG,EAAE,uBAAuB;aAC7B;YACD;gBACE,GAAG,EAAE,uBAAuB;aAC7B;YACD;gBACE,GAAG,EAAE,wBAAwB;aAC9B;SACF,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,GAAG,GAAG,IAAI,gCAAqB,EAAE,CAAC;YACxC,6DAA6D;YAC7D,aAAa;YACb,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;YAEtB,IAAI,SAAS,IAAI,IAAI,EAAE;gBACrB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aAC7C;iBAAM;gBACL,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACjD;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /// <reference types="node" />
2
+ export declare class PhishingListService {
3
+ readonly opts: {
4
+ readonly blockListUrl: string;
5
+ readonly fetchingIntervalMs: number;
6
+ readonly retryIntervalMs: number;
7
+ };
8
+ protected map: Map<string, boolean>;
9
+ protected _hasInited: boolean;
10
+ protected _hasStopped: boolean;
11
+ protected timeoutId?: NodeJS.Timeout;
12
+ constructor(opts: {
13
+ readonly blockListUrl: string;
14
+ readonly fetchingIntervalMs: number;
15
+ readonly retryIntervalMs: number;
16
+ });
17
+ get hasInited(): boolean;
18
+ init(): void;
19
+ stop(): void;
20
+ startFetchPhishingList(): Promise<void>;
21
+ checkURLIsPhishing(url: string): boolean;
22
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PhishingListService = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const utils_1 = require("./utils");
18
+ class PhishingListService {
19
+ constructor(opts) {
20
+ this.opts = opts;
21
+ this.map = new Map();
22
+ this._hasInited = false;
23
+ this._hasStopped = false;
24
+ }
25
+ get hasInited() {
26
+ return this._hasInited;
27
+ }
28
+ init() {
29
+ this.startFetchPhishingList();
30
+ }
31
+ stop() {
32
+ if (this.timeoutId != null) {
33
+ clearTimeout(this.timeoutId);
34
+ this.timeoutId = undefined;
35
+ }
36
+ this._hasStopped = true;
37
+ }
38
+ startFetchPhishingList() {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (this.timeoutId != null) {
41
+ clearTimeout(this.timeoutId);
42
+ this.timeoutId = undefined;
43
+ }
44
+ if (this._hasStopped) {
45
+ return;
46
+ }
47
+ let failed = false;
48
+ try {
49
+ const res = yield axios_1.default.get(this.opts.blockListUrl);
50
+ const domains = res.data
51
+ .split(/(\r?\n)|,|;|\s|\t/)
52
+ .filter((str) => str != null)
53
+ .map((str) => {
54
+ return str.trim();
55
+ })
56
+ .filter((str) => str.length > 0);
57
+ const map = new Map();
58
+ for (const domain of domains) {
59
+ try {
60
+ map.set(utils_1.parseDomainUntilSecondLevel(domain), true);
61
+ }
62
+ catch (e) {
63
+ console.log(e);
64
+ }
65
+ }
66
+ this._hasInited = true;
67
+ this.map = map;
68
+ }
69
+ catch (e) {
70
+ failed = true;
71
+ console.log(e);
72
+ }
73
+ if (!this._hasStopped) {
74
+ this.timeoutId = setTimeout(() => {
75
+ this.startFetchPhishingList();
76
+ }, failed ? this.opts.retryIntervalMs : this.opts.fetchingIntervalMs);
77
+ }
78
+ });
79
+ }
80
+ checkURLIsPhishing(url) {
81
+ const parsed = new URL(url);
82
+ return this.map.get(utils_1.parseDomainUntilSecondLevel(parsed.origin)) === true;
83
+ }
84
+ }
85
+ exports.PhishingListService = PhishingListService;
86
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/phishing-list/service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,mCAAsD;AAEtD,MAAa,mBAAmB;IAO9B,YACkB,IAIf;QAJe,SAAI,GAAJ,IAAI,CAInB;QAXO,QAAG,GAAyB,IAAI,GAAG,EAAE,CAAC;QAEtC,eAAU,GAAY,KAAK,CAAC;QAC5B,gBAAW,GAAY,KAAK,CAAC;IASpC,CAAC;IAEJ,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEK,sBAAsB;;YAC1B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC1B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;aAC5B;YAED,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,OAAO;aACR;YAED,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAS,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE5D,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI;qBACrB,KAAK,CAAC,mBAAmB,CAAC;qBAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC;qBAC5B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACX,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;gBACpB,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEnC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;gBAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;oBAC5B,IAAI;wBACF,GAAG,CAAC,GAAG,CAAC,mCAA2B,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;qBACpD;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBAChB;iBACF;gBAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;aAChB;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChB;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,SAAS,GAAG,UAAU,CACzB,GAAG,EAAE;oBACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAChC,CAAC,EACD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAClE,CAAC;aACH;QACH,CAAC;KAAA;IAED,kBAAkB,CAAC,GAAW;QAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mCAA2B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3E,CAAC;CACF;AApFD,kDAoFC"}
@@ -0,0 +1 @@
1
+ export {};