Skip to content

Commit d2eba7b

Browse files
committed
fix check blacklist/whitelist
1 parent 076f1b7 commit d2eba7b

38 files changed

+102
-58
lines changed

popup/helpers/modal.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ function initModal() {
1919

2020
export function openModal(title, body) {
2121
modalTitle.innerHTML = title;
22-
modalBody.innerHTML = body;
22+
if (typeof body === "string") {
23+
modalBody.innerHTML = body;
24+
} else if (typeof body === "object" && nodeName in body) {
25+
modalBody.innerHTML = "";
26+
modalBody.appendChild(body);
27+
}
2328
modal.style.display = "block";
2429
}
2530

popup/helpers/scriptHelpers.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,28 @@ import { allScripts } from "../../scripts/index.js";
22
import { getCurrentURL } from "./utils.js";
33

44
export async function getAvailableScripts() {
5-
let hostname = (await getCurrentURL()).hostname;
5+
let url = await getCurrentURL();
66
let avai = [];
77
for (let script of Object.values(allScripts)) {
8-
if (await checkBlackWhiteList(script, hostname)) {
8+
if (await checkBlackWhiteList(script, url)) {
99
avai.push(script);
1010
}
1111
}
1212

1313
return avai;
1414
}
1515

16-
export async function checkBlackWhiteList(script, hostname = null) {
17-
if (!hostname) {
18-
hostname = (await getCurrentURL()).hostname;
16+
export async function checkBlackWhiteList(script, url = null) {
17+
if (!url) {
18+
url = await getCurrentURL();
1919
}
2020

21-
let hasWhiteList = script.whiteList?.length > 0;
22-
let hasBlackList = script.blackList?.length > 0;
23-
let inWhiteList = script.whiteList?.findIndex((_) => _ === hostname) >= 0;
24-
let inBlackList = script.blackList?.findIndex((_) => _ === hostname) >= 0;
21+
let w = script.whiteList,
22+
b = script.blackList,
23+
hasWhiteList = w?.length > 0,
24+
hasBlackList = b?.length > 0,
25+
inWhiteList = w?.findIndex((_) => isUrlMatchPattern(url, _)) >= 0,
26+
inBlackList = b?.findIndex((_) => isUrlMatchPattern(url, _)) >= 0;
2527

2628
let willRun =
2729
(!hasWhiteList && !hasBlackList) ||
@@ -30,3 +32,16 @@ export async function checkBlackWhiteList(script, hostname = null) {
3032

3133
return willRun;
3234
}
35+
36+
export function isUrlMatchPattern(url, pattern) {
37+
let curIndex = 0,
38+
visiblePartsInPattern = pattern.split("*").filter((_) => _ !== "");
39+
40+
for (let p of visiblePartsInPattern) {
41+
let index = url.indexOf(p, curIndex);
42+
if (index < 0) return false;
43+
curIndex = index + p.length;
44+
}
45+
46+
return true;
47+
}

popup/helpers/utils.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ export const openUrlAndRunScript = async (url, func) => {
4242

4343
export async function getCurrentURL() {
4444
let tabs = await chrome.tabs.query({ active: true, currentWindow: true });
45-
let url = tabs[0].url;
46-
return new URL(url);
45+
return tabs[0].url;
4746
}
4847

4948
export function viewScriptSource(script) {

popup/index.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,19 +241,21 @@ async function runScript(script) {
241241
recentScriptsSaver.add(script);
242242
runScriptInCurrentTab(script.func);
243243
} else {
244-
const { whiteList: w, blackList: b } = script;
244+
let w = script.whiteList?.join(", ");
245+
let b = script.blackList?.join(", ");
246+
245247
openModal(
246248
t({
247249
en: `Script not supported in current website`,
248250
vi: `Script không hỗ trợ website hiện tại`,
249251
}),
250252
t({
251253
en:
252-
`${w?.length ? `+ Only run at: ${w?.join(", ")}` : ""}\n` +
253-
`${b?.length ? `+ Not run at: ${b?.join(", ")}` : ""}`,
254+
`${w ? `+ Only run at: ${w}` : ""}\n` +
255+
`${b ? `+ Not run at: ${b}` : ""}`,
254256
vi:
255-
`${w?.length ? `+ Chỉ chạy tại: ${w?.join(", ")}` : ""}\n` +
256-
`${b?.length ? `+ Không chạy tại: ${b?.join(", ")}` : ""}`,
257+
`${w ? `+ Chỉ chạy tại: ${w}` : ""}\n` +
258+
`${b ? `+ Không chạy tại: ${b}` : ""}`,
257259
})
258260
);
259261
}

scripts/doutube_getAllVideoInUserProfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
vi: "Tải tất cả video từ profile của user doutu.be bất kỳ",
99
},
1010
blackList: [],
11-
whiteList: ["doutu.be"],
11+
whiteList: ["*://doutu.be"],
1212

1313
func: async function () {
1414
const WAIT_FOR_FULL_VIDEO_LOADED = 5000;

scripts/download_video.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
en: "Can be used on almost any website",
99
vi: "Dùng được cho gần như tất cả trang web",
1010
},
11-
blackList: ["www.youtube.com"],
11+
blackList: ["*://*.youtube.com"],
1212
whiteList: [],
1313

1414
func: function () {

scripts/fb_downloadAlbumMedia.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
vi: "Tải về danh sách link ảnh/video",
99
},
1010
blackList: [],
11-
whiteList: ["www.facebook.com"],
11+
whiteList: ["*://www.facebook.com"],
1212

1313
func: function () {
1414
const accessToken = prompt("Enter access token:", "");

scripts/fb_downloadCurrentVideo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
vi: "Lấy link để tải video đang xem",
99
},
1010
blackList: [],
11-
whiteList: ["www.facebook.com"],
11+
whiteList: ["*://www.facebook.com"],
1212

1313
func: function () {
1414
// Tải video đang xem - khi đang trong trang web video, dạng: https://www.facebook.com/watch?v=254222479732213

scripts/fb_getAlbumId.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default {
99
vi: "Lấy id của album trong trang web hiện tại",
1010
},
1111
blackList: [],
12-
whiteList: ["www.facebook.com"],
12+
whiteList: ["*://www.facebook.com"],
1313

1414
func: function () {
1515
// Lấy album id - khi đang xem 1 album, ví dụ https://www.facebook.com/media/set/?vanity=ColourfulSpace&set=a.945632905514659

scripts/fb_getAllAlbumId.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
vi: "Lấy tất cả album id có trong trang web",
99
},
1010
blackList: [],
11-
whiteList: ["www.facebook.com"],
11+
whiteList: ["*://www.facebook.com"],
1212

1313
func: function () {
1414
// Lấy tất cả album id có trong trang web - Khi đang xem 1 danh sách album của user/group/page

0 commit comments

Comments
 (0)