消息
Some checks failed
test / Run tests (push) Failing after 6s
build / Build (push) Failing after 18s
Some checks failed
test / Run tests (push) Failing after 6s
build / Build (push) Failing after 18s
This commit is contained in:
@ -1,24 +1,20 @@
|
||||
import { forwardMessage, Server } from "@Packages/message/server";
|
||||
import { ScriptService } from "./script";
|
||||
import { Broker, MessageQueue } from "@Packages/message/message_queue";
|
||||
import { Broker } from "@Packages/message/message_queue";
|
||||
import { Logger, LoggerDAO } from "@App/app/repo/logger";
|
||||
import { WindowMessage } from "@Packages/message/window_message";
|
||||
import { ExtensionMessage } from "@Packages/message/extension_message";
|
||||
import { ExtensionMessageSend } from "@Packages/message/extension_message";
|
||||
import { ServiceWorkerClient } from "../service_worker/client";
|
||||
import { sendMessage } from "@Packages/message/client";
|
||||
|
||||
// offscreen环境的管理器
|
||||
export class OffscreenManager {
|
||||
private extensionMessage = new ExtensionMessage();
|
||||
|
||||
private api: Server = new Server("offscreen", this.extensionMessage);
|
||||
private extensionMessage = new ExtensionMessageSend();
|
||||
|
||||
private windowMessage = new WindowMessage(window, sandbox);
|
||||
|
||||
private windowApi: Server = new Server("offscreen-window", this.windowMessage);
|
||||
|
||||
private mq: MessageQueue = new MessageQueue(this.api);
|
||||
|
||||
private broker: Broker = new Broker(this.extensionMessage);
|
||||
|
||||
private serviceWorker = new ServiceWorkerClient(this.extensionMessage);
|
||||
@ -39,33 +35,27 @@ export class OffscreenManager {
|
||||
|
||||
async initManager() {
|
||||
// 监听消息
|
||||
const group = this.api.group("offscreen");
|
||||
this.windowApi.on("logger", this.logger.bind(this));
|
||||
this.windowApi.on("preparationSandbox", this.preparationSandbox.bind(this));
|
||||
this.windowApi.on("sendMessageToServiceWorker", this.sendMessageToServiceWorker.bind(this));
|
||||
const script = new ScriptService(
|
||||
group.group("script"),
|
||||
this.mq,
|
||||
this.extensionMessage,
|
||||
this.windowMessage,
|
||||
this.broker
|
||||
);
|
||||
const script = new ScriptService(this.extensionMessage, this.windowMessage, this.broker);
|
||||
script.init();
|
||||
// 转发gm api请求
|
||||
forwardMessage("serviceWorker/runtime/gmApi", this.windowApi, this.extensionMessage);
|
||||
// 处理gm xhr请求
|
||||
this.api.on("gmXhr", (data) => {
|
||||
console.log("123");
|
||||
});
|
||||
// 测试xhr
|
||||
const ret = await sendMessage(this.extensionMessage, "serviceWorker/testGmApi");
|
||||
console.log("test xhr", ret);
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.onload = () => {
|
||||
console.log(xhr);
|
||||
};
|
||||
xhr.open("GET", "https://scriptcat.org/zh-CN");
|
||||
|
||||
xhr.send();
|
||||
// // 处理gm xhr请求
|
||||
// this.api.on("gmXhr", (data) => {
|
||||
// console.log("123");
|
||||
// });
|
||||
// // 测试xhr
|
||||
// const ret = await sendMessage(this.extensionMessage, "serviceWorker/testGmApi");
|
||||
// console.log("test xhr", ret);
|
||||
// const xhr = new XMLHttpRequest();
|
||||
// xhr.onload = () => {
|
||||
// console.log(xhr);
|
||||
// };
|
||||
// xhr.open("GET", "https://scriptcat.org/zh-CN");
|
||||
|
||||
// xhr.send();
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
import LoggerCore from "@App/app/logger/core";
|
||||
import Logger from "@App/app/logger/logger";
|
||||
import { Broker, MessageQueue } from "@Packages/message/message_queue";
|
||||
import { Group, Message } from "@Packages/message/server";
|
||||
import { Broker } from "@Packages/message/message_queue";
|
||||
import { WindowMessage } from "@Packages/message/window_message";
|
||||
import {
|
||||
ResourceClient,
|
||||
@ -12,6 +11,7 @@ import {
|
||||
} from "../service_worker/client";
|
||||
import { SCRIPT_STATUS_ENABLE, SCRIPT_TYPE_NORMAL } from "@App/app/repo/scripts";
|
||||
import { disableScript, enableScript } from "../sandbox/client";
|
||||
import { ExtensionMessageSend } from "@Packages/message/extension_message";
|
||||
|
||||
export class ScriptService {
|
||||
logger: Logger;
|
||||
@ -21,9 +21,7 @@ export class ScriptService {
|
||||
valueClient: ValueClient = new ValueClient(this.extensionMessage);
|
||||
|
||||
constructor(
|
||||
private group: Group,
|
||||
private mq: MessageQueue,
|
||||
private extensionMessage: Message,
|
||||
private extensionMessage: ExtensionMessageSend,
|
||||
private windowMessage: WindowMessage,
|
||||
private broker: Broker
|
||||
) {
|
||||
@ -46,7 +44,6 @@ export class ScriptService {
|
||||
});
|
||||
subscribeScriptInstall(this.broker, async (data) => {
|
||||
// 判断是开启还是关闭
|
||||
console.log("1dd23", data);
|
||||
if (data.script.status === SCRIPT_STATUS_ENABLE) {
|
||||
// 构造脚本运行资源,发送给沙盒运行
|
||||
enableScript(this.windowMessage, await this.scriptClient.getScriptRunResource(data.script));
|
||||
|
@ -3,10 +3,10 @@ import { Client } from "@Packages/message/client";
|
||||
import { InstallSource } from ".";
|
||||
import { Broker } from "@Packages/message/message_queue";
|
||||
import { Resource } from "@App/app/repo/resource";
|
||||
import { Message } from "@Packages/message/server";
|
||||
import { ExtensionMessageSend } from "@Packages/message/extension_message";
|
||||
|
||||
export class ServiceWorkerClient extends Client {
|
||||
constructor(msg: Message) {
|
||||
constructor(msg: ExtensionMessageSend) {
|
||||
super(msg, "serviceWorker");
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ export class ServiceWorkerClient extends Client {
|
||||
}
|
||||
|
||||
export class ScriptClient extends Client {
|
||||
constructor(msg: Message) {
|
||||
constructor(msg: ExtensionMessageSend) {
|
||||
super(msg, "serviceWorker/script");
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ export class ScriptClient extends Client {
|
||||
}
|
||||
|
||||
export class ResourceClient extends Client {
|
||||
constructor(msg: Message) {
|
||||
constructor(msg: ExtensionMessageSend) {
|
||||
super(msg, "serviceWorker/resource");
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ export class ResourceClient extends Client {
|
||||
}
|
||||
|
||||
export class ValueClient extends Client {
|
||||
constructor(msg: Message) {
|
||||
constructor(msg: ExtensionMessageSend) {
|
||||
super(msg, "serviceWorker/value");
|
||||
}
|
||||
|
||||
|
@ -33,77 +33,77 @@ export default class ServiceWorkerManager {
|
||||
runtime.init();
|
||||
|
||||
// 测试xhr
|
||||
setTimeout(() => {
|
||||
chrome.tabs.query(
|
||||
{
|
||||
url: chrome.runtime.getURL("src/offscreen.html"),
|
||||
},
|
||||
(result) => {
|
||||
console.log(result);
|
||||
}
|
||||
);
|
||||
}, 2000);
|
||||
group.on("testGmApi", () => {
|
||||
console.log(chrome.runtime.getURL("src/offscreen.html"));
|
||||
return new Promise((resolve) => {
|
||||
chrome.tabs.query({}, (tabs) => {
|
||||
const excludedTabIds: number[] = [];
|
||||
tabs.forEach((tab) => {
|
||||
if (tab.id) {
|
||||
excludedTabIds.push(tab.id);
|
||||
}
|
||||
});
|
||||
chrome.declarativeNetRequest.updateSessionRules(
|
||||
{
|
||||
removeRuleIds: [100],
|
||||
addRules: [
|
||||
{
|
||||
id: 100,
|
||||
priority: 1,
|
||||
action: {
|
||||
type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
|
||||
requestHeaders: [
|
||||
{
|
||||
header: "cookie",
|
||||
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||
value: "test=1234314",
|
||||
},
|
||||
{
|
||||
header: "origin",
|
||||
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||
value: "https://learn.scriptcat.org",
|
||||
},
|
||||
{
|
||||
header: "user-agent",
|
||||
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||
value: "test",
|
||||
},
|
||||
],
|
||||
},
|
||||
condition: {
|
||||
resourceTypes: [chrome.declarativeNetRequest.ResourceType.XMLHTTPREQUEST],
|
||||
urlFilter: "https://scriptcat.org/zh-CN",
|
||||
excludedTabIds: excludedTabIds,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
() => {
|
||||
resolve(1);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
chrome.webRequest.onHeadersReceived.addListener(
|
||||
(details) => {
|
||||
console.log(details);
|
||||
},
|
||||
{
|
||||
urls: ["<all_urls>"],
|
||||
types: ["xmlhttprequest"],
|
||||
},
|
||||
["responseHeaders", "extraHeaders"]
|
||||
);
|
||||
// setTimeout(() => {
|
||||
// chrome.tabs.query(
|
||||
// {
|
||||
// url: chrome.runtime.getURL("src/offscreen.html"),
|
||||
// },
|
||||
// (result) => {
|
||||
// console.log(result);
|
||||
// }
|
||||
// );
|
||||
// }, 2000);
|
||||
// group.on("testGmApi", () => {
|
||||
// console.log(chrome.runtime.getURL("src/offscreen.html"));
|
||||
// return new Promise((resolve) => {
|
||||
// chrome.tabs.query({}, (tabs) => {
|
||||
// const excludedTabIds: number[] = [];
|
||||
// tabs.forEach((tab) => {
|
||||
// if (tab.id) {
|
||||
// excludedTabIds.push(tab.id);
|
||||
// }
|
||||
// });
|
||||
// chrome.declarativeNetRequest.updateSessionRules(
|
||||
// {
|
||||
// removeRuleIds: [100],
|
||||
// addRules: [
|
||||
// {
|
||||
// id: 100,
|
||||
// priority: 1,
|
||||
// action: {
|
||||
// type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
|
||||
// requestHeaders: [
|
||||
// {
|
||||
// header: "cookie",
|
||||
// operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||
// value: "test=1234314",
|
||||
// },
|
||||
// {
|
||||
// header: "origin",
|
||||
// operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||
// value: "https://learn.scriptcat.org",
|
||||
// },
|
||||
// {
|
||||
// header: "user-agent",
|
||||
// operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||
// value: "test",
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// condition: {
|
||||
// resourceTypes: [chrome.declarativeNetRequest.ResourceType.XMLHTTPREQUEST],
|
||||
// urlFilter: "https://scriptcat.org/zh-CN",
|
||||
// excludedTabIds: excludedTabIds,
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// () => {
|
||||
// resolve(1);
|
||||
// }
|
||||
// );
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// chrome.webRequest.onHeadersReceived.addListener(
|
||||
// (details) => {
|
||||
// console.log(details);
|
||||
// },
|
||||
// {
|
||||
// urls: ["<all_urls>"],
|
||||
// types: ["xmlhttprequest"],
|
||||
// },
|
||||
// ["responseHeaders", "extraHeaders"]
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ export class ScriptService {
|
||||
logger.info("install success");
|
||||
// 广播一下
|
||||
this.mq.publish("installScript", { script, update });
|
||||
return {};
|
||||
return Promise.resolve(true);
|
||||
})
|
||||
.catch((e: any) => {
|
||||
logger.error("install error", Logger.E(e));
|
||||
|
Reference in New Issue
Block a user