@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.
- package/build/index.d.ts +1 -0
- package/build/index.js +9 -0
- package/build/index.js.map +1 -1
- package/build/phishing-list/constants.d.ts +1 -0
- package/build/phishing-list/constants.js +5 -0
- package/build/phishing-list/constants.js.map +1 -0
- package/build/phishing-list/handler.d.ts +3 -0
- package/build/phishing-list/handler.js +19 -0
- package/build/phishing-list/handler.js.map +1 -0
- package/build/phishing-list/index.d.ts +2 -0
- package/build/phishing-list/index.js +15 -0
- package/build/phishing-list/index.js.map +1 -0
- package/build/phishing-list/init.d.ts +3 -0
- package/build/phishing-list/init.js +12 -0
- package/build/phishing-list/init.js.map +1 -0
- package/build/phishing-list/internal.d.ts +2 -0
- package/build/phishing-list/internal.js +15 -0
- package/build/phishing-list/internal.js.map +1 -0
- package/build/phishing-list/messages.d.ts +9 -0
- package/build/phishing-list/messages.js +30 -0
- package/build/phishing-list/messages.js.map +1 -0
- package/build/phishing-list/messages.spec.d.ts +1 -0
- package/build/phishing-list/messages.spec.js +102 -0
- package/build/phishing-list/messages.spec.js.map +1 -0
- package/build/phishing-list/service.d.ts +22 -0
- package/build/phishing-list/service.js +86 -0
- package/build/phishing-list/service.js.map +1 -0
- package/build/phishing-list/service.spec.d.ts +1 -0
- package/build/phishing-list/service.spec.js +302 -0
- package/build/phishing-list/service.spec.js.map +1 -0
- package/build/phishing-list/utils.d.ts +1 -0
- package/build/phishing-list/utils.js +27 -0
- package/build/phishing-list/utils.js.map +1 -0
- package/build/phishing-list/utils.spec.d.ts +1 -0
- package/build/phishing-list/utils.spec.js +142 -0
- package/build/phishing-list/utils.spec.js.map +1 -0
- package/package.json +11 -11
- package/src/index.ts +11 -0
- package/src/phishing-list/constants.ts +1 -0
- package/src/phishing-list/handler.ts +27 -0
- package/src/phishing-list/index.ts +2 -0
- package/src/phishing-list/init.ts +11 -0
- package/src/phishing-list/internal.ts +2 -0
- package/src/phishing-list/messages.spec.ts +104 -0
- package/src/phishing-list/messages.ts +32 -0
- package/src/phishing-list/service.spec.ts +367 -0
- package/src/phishing-list/service.ts +88 -0
- package/src/phishing-list/utils.spec.ts +144 -0
- 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
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+EAAiE;AACjE,0DAA4C;AAC5C,0DAA4C;AAC5C,4DAA8C;AAC9C,mEAAqD;AACrD,4DAA8C;AAC9C,4DAA8C;AAC9C,0DAA4C;AAC5C,oEAAsD;AACtD,kEAAoD;
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/phishing-list/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,KAAK,GAAG,eAAe,CAAC"}
|
|
@@ -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,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,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,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,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 {};
|