Skip to content

Commit 328ca18

Browse files
committed
🐛 修复后台脚本调试时unsafeHeader发送错误
1 parent bd16121 commit 328ca18

File tree

6 files changed

+69
-56
lines changed

6 files changed

+69
-56
lines changed

build/scriptcat/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 2,
33
"name": "ScriptCat",
4-
"version": "0.7.7",
4+
"version": "0.8.0",
55
"description": "脚本猫,一个用户脚本的框架,可编写脚本每天帮你自动处理事务.",
66
"background": {
77
"page": "background.html"

src/apps/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const ExtVersion = "0.7.7";
1+
export const ExtVersion = "0.8.0";
22

33
export const Server = process.env.NODE_ENV == "production" ? "https://sc.icodef.com/" : "http://localhost:8080/";
44

src/apps/grant/background.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { PermissionModel } from '@App/model/permission';
22
import { base64ToBlob, isFirefox } from '@App/pkg/utils/utils';
33
import { App } from '../app';
4-
import { AppEvent, ListenGmLog, PermissionConfirm, ScriptGrant, ScriptValueChange, TabMenuClick, TabRemove } from '../msg-center/event';
4+
import { AppEvent, ListenGmLog, PermissionConfirm, RequestBackgroundRandCode, ScriptGrant, ScriptValueChange, TabMenuClick, TabRemove } from '../msg-center/event';
55
import { MsgCenter } from '../msg-center/msg-center';
66
import { ScriptManager } from '../script/manager';
77
import { Grant, Api, IPostMessage, IGrantListener, ConfirmParam, PermissionParam, FreedCallback } from './interface';
@@ -57,8 +57,15 @@ export class BackgroundGrant {
5757
this.isdebug = isdebug;
5858
//处理xhrcookie的问题,firefox不支持
5959
if (this.isdebug) {
60+
// 从bg获取rand码
61+
MsgCenter.sendMessage(RequestBackgroundRandCode, undefined, (rand) => {
62+
this.rand = rand;
63+
});
6064
return;
6165
}
66+
MsgCenter.listenerMessage(RequestBackgroundRandCode, (data, send) => {
67+
send(this.rand);
68+
});
6269
try {
6370
chrome.webRequest.onBeforeSendHeaders.addListener((data) => {
6471
let setCookie = '';
@@ -715,7 +722,6 @@ export class BackgroundGrant {
715722
return reject('action can only be: get, set, delete, store');
716723
}
717724
}
718-
return resolve(undefined);
719725
});
720726
}
721727

src/apps/grant/frontend.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ export class FrontendGrant implements ScriptContext {
215215
details.onerror && details.onerror(grant.errorMsg || '');
216216
return;
217217
}
218-
const data = <{ type: string, data: GM_Types.XHRResponse }>grant.data;
218+
const data = <{ type: string, data: GM_Types.XHRResponse }>grant.data || {};
219219
switch (data.type) {
220220
case 'load':
221221
details.onload && details.onload(data.data);
@@ -279,7 +279,7 @@ export class FrontendGrant implements ScriptContext {
279279
delete data.oncreate;
280280
}
281281
this.postRequest('GM_notification', [data], (grant: Grant) => {
282-
const data = <{ type: string, id: string, index: number, user: boolean }>grant.data;
282+
const data = <{ type: string, id: string, index: number, user: boolean }>grant.data || {};
283283
switch (data.type) {
284284
case 'click': {
285285
click && click.apply({ id: data.id }, [data.id, data.index])
@@ -409,7 +409,7 @@ export class FrontendGrant implements ScriptContext {
409409
},
410410
};
411411
this.postRequest('GM_openInTab', [url, option], grant => {
412-
const data = <{ type: string, tabId: number }>grant.data;
412+
const data = <{ type: string, tabId: number }>grant.data || {};
413413
switch (data.type) {
414414
case 'tabid':
415415
tabid = data.tabId
@@ -448,8 +448,8 @@ export class FrontendGrant implements ScriptContext {
448448
public GM_registerMenuCommand(name: string, listener: () => any, accessKey?: string): number {
449449
const id = randomInt(1, 100000);
450450
this.postRequest('GM_registerMenuCommand', [{ name: name, accessKey: accessKey, id: id }], (grant: Grant) => {
451-
const data = <{ action: string }>grant.data;
452-
if (data && data.action == 'click') {
451+
const data = <{ action: string }>grant.data || {};
452+
if (data.action == 'click') {
453453
listener();
454454
}
455455
});
@@ -494,7 +494,7 @@ export class FrontendGrant implements ScriptContext {
494494
if (grant.error) {
495495
return done && done([], grant.errorMsg);
496496
}
497-
const data = <{ type: string, data: GM_Types.Cookie[] | any }>grant.data;
497+
const data = <{ type: string, data: GM_Types.Cookie[] | any }>grant.data || {};
498498
switch (data.type) {
499499
case 'done':
500500
done && done(data.data, undefined);
@@ -509,7 +509,7 @@ export class FrontendGrant implements ScriptContext {
509509
if (grant.error) {
510510
return done && done(0, grant.errorMsg);
511511
}
512-
const data = <{ type: string, data: number }>grant.data;
512+
const data = <{ type: string, data: number }>grant.data || {};
513513
switch (data.type) {
514514
case 'done':
515515
done && done(data.data, undefined);

src/apps/msg-center/event.ts

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,60 @@
11
// TODO: 优化消息通信机制
2-
export const PermissionConfirm: string = "permission-confirm";
3-
4-
export const ScriptExec: string = "script-exec";
5-
export const ScriptStop: string = "script-stop";
6-
export const ScriptInstallByURL: string = "script-install-by-url";
7-
export const ScriptInstall: string = "script-install";
8-
export const ScriptReinstall: string = "script-reinstall";
9-
export const ScriptUninstall: string = "script-uninstall";
10-
export const ScriptStatusChange: string = "script-status-change";
11-
export const ScriptRunStatusChange: string = "script-run-status-change";
12-
export const ScriptCheckUpdate = "script-check-update";
13-
14-
export const SubscribeUpdate: string = "subscribe-update";
15-
export const Unsubscribe: string = "unsubscribe";
16-
export const SubscribeCheckUpdate: string = 'subscribe-check-update';
17-
export const SubscribeStatusChange: string = "subscribe-status-change";
18-
19-
export const RequestInstallInfo: string = "request-install-info";
20-
export const RequestConfirmInfo: string = "request-confirm-info";
21-
export const RequestTabRunScript: string = "request-tab-run-script";
22-
export const ListenGmLog: string = "gm-log";
23-
export const TabRemove: string = "tab-remove";
24-
export const TabMenuClick: string = "tab-menu-click";
25-
26-
export const ScriptGrant: string = "script-grant";
27-
28-
export const Logger: string = "logger";
29-
30-
export const SystemCacheEvent: string = "system-cache";
31-
32-
export const ScriptValueChange: string = "script-value-change";
2+
export const PermissionConfirm = 'permission-confirm';
3+
// 脚本执行
4+
export const ScriptExec = 'script-exec';
5+
// 脚本停止
6+
export const ScriptStop = 'script-stop';
7+
// 脚本通过url安装
8+
export const ScriptInstallByURL = 'script-install-by-url';
9+
// 脚本安装
10+
export const ScriptInstall = 'script-install';
11+
// 脚本更新
12+
export const ScriptReinstall = 'script-reinstall';
13+
// 脚本卸载
14+
export const ScriptUninstall = 'script-uninstall';
15+
export const ScriptStatusChange = 'script-status-change';
16+
export const ScriptRunStatusChange = 'script-run-status-change';
17+
export const ScriptCheckUpdate = 'script-check-update';
18+
19+
export const SubscribeUpdate = 'subscribe-update';
20+
export const Unsubscribe = 'unsubscribe';
21+
export const SubscribeCheckUpdate = 'subscribe-check-update';
22+
export const SubscribeStatusChange = 'subscribe-status-change';
23+
24+
export const RequestInstallInfo = 'request-install-info';
25+
export const RequestConfirmInfo = 'request-confirm-info';
26+
export const RequestTabRunScript = 'request-tab-run-script';
27+
export const ListenGmLog = 'gm-log';
28+
export const TabRemove = 'tab-remove';
29+
export const TabMenuClick = 'tab-menu-click';
30+
31+
export const ScriptGrant = 'script-grant';
32+
33+
export const Logger = 'logger';
34+
35+
export const SystemCacheEvent = 'system-cache';
36+
37+
export const ScriptValueChange = 'script-value-change';
3338

3439
export type ListenCallback = (msg: any) => void;
3540

36-
export const UserLogin: string = "user-login";
37-
export const UserLogout: string = "user-logout";
41+
export const UserLogin = 'user-login';
42+
export const UserLogout = 'user-logout';
3843

39-
export const SyncTaskEvent: string = "sync-task-event";
40-
export const TriggerSync: string = 'trigger-sync';
44+
export const SyncTaskEvent = 'sync-task-event';
45+
export const TriggerSync = 'trigger-sync';
4146

42-
export const OpenImportFileWindow: string = "open-import-file-window";
43-
export const ImportFile: string = "import-file";
44-
export const RequestImportFile: string = "request-import-file";
47+
export const OpenImportFileWindow = 'open-import-file-window';
48+
export const ImportFile = 'import-file';
49+
export const RequestImportFile = 'request-import-file';
4550

46-
export const ToolsConnectVSCode = "tools-connect-vscode";
47-
export const ToolsDisconnecttVSCode = "tools-disconnect-vscode";
51+
export const ToolsConnectVSCode = 'tools-connect-vscode';
52+
export const ToolsDisconnecttVSCode = 'tools-disconnect-vscode';
4853

4954
export const ExternalMessage = 'external.message';
5055

56+
export const RequestBackgroundRandCode='request-background-rand-code';
57+
5158
// 单页面内的消息
5259
export class AppEvent {
5360
public static eventMap = new Map<string, Map<any, any>>();
@@ -62,7 +69,7 @@ export class AppEvent {
6269
}
6370

6471
public static removeListener(event: string, callback: ListenCallback) {
65-
let val = AppEvent.eventMap.get(event);
72+
const val = AppEvent.eventMap.get(event);
6673
if (val) {
6774
val.delete(callback);
6875
if (!val.size) {

src/apps/msg-center/msg-center.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

2-
export type ListenCallback = (msg: any, port: chrome.runtime.Port) => any | Promise<any>;
2+
export type ListenCallback = (msg: any, port: chrome.runtime.Port) => Promise<any> | any;
33

4-
export type MessageCallback = (body: any, sendResponse: (response?: any) => void, sender?: chrome.runtime.MessageSender) => void;
4+
export type MessageCallback = (body: any, sendResponse: (response?: any) => void, sender?: chrome.runtime.MessageSender) => Promise<any> | any;
55

66
const topicMap = new Map<string, Map<ListenCallback, ListenCallback>>();
77
chrome.runtime.onConnect.addListener((port: chrome.runtime.Port) => {
@@ -49,7 +49,7 @@ export class MsgCenter {
4949
public static trigger(topic: string, msg?: any) {
5050
const val = topicMap.get(topic);
5151
val && val.forEach(func => {
52-
func(msg, <any>{})
52+
func(msg, <chrome.runtime.Port>{})
5353
});
5454
}
5555

@@ -108,7 +108,7 @@ export class onRecv {
108108
const ret = this.callback(msg, port);
109109
if (ret) {
110110
if (ret instanceof Promise) {
111-
ret.then(result => {
111+
void ret.then(result => {
112112
port.postMessage(result);
113113
});
114114
} else {

0 commit comments

Comments
 (0)