Skip to content

Commit 4ce3d10

Browse files
committed
Squashed 'vendor/whistle/' changes from 19133a06e..05e991e17
05e991e17 chore: remove whistle.test 578e50760 test: add whistle.test 142d01a91 Release v2.9.3 87bf04cc5 fix: req.filter 7f73e4e7a refactor: refine code 5c783d5fd refactor: realPort === actualPort 44a91211f chore: fix eslint 1ca5f604f feat: w2 i plugin@version 5db9f5c53 docs: redirect cb33d8065 Release v2.9.3 2916dd060 feat: rules.redirect -> rules.rule.redirect 2af3bea15 refactor: refine code 0bd1bb8cb style: refine rules mode aa51d41d3 refactor: refine code af2997f07 refactor: refine redirect://url 7dc818dc3 refactor: refine code 0e20698e3 refactor: refine statusCode ee97b3e1f feat: add url.actualPort c8233f825 refactor: add default port bfea362c3 feat: add WhistleCallback 95a3b4e93 chore: add typescript types a0d69507e fix: electron/electron#21162 cf00a3bd0 Release v2.9.2 9eb104859 refactor: refine code 7a9f07e2c refactor: refine max value size a0f80da42 Release v2.9.2 029cbf7b0 feat: file://:key 9976392f2 refactor: handle read remote value errors f3662ea11 refactor: refine max value size f8338cb62 feat: handle file:///key f072544e0 feat: handle remote value 2bf707be4 feat: add requestValue & requestStream 223124429 refactor: add request timeout 0a915237f refactor: refine code 2bbce8795 feat: add requestValue & requestStream ef683a81a refactor: refine code 6a8beb9c4 feat: add requestRaw(options, callback) 306469278 Release v2.9.2 c7ef3b4e7 refactor: refine code edbcd41a5 refactor: refine storage name 3d7b5558c refactor: add default storage 826f4d97f refactor: refine code 6a6589489 refactor: handle callback 51c1e186a chore: ignore publish README-zh_CN.md 896066c1e refactor: refine code ea0b10fea style: refine code 57f4cb943 Release v2.9.2 6a548124f fix: avwo/whistle#697 6e0508f01 refactor: http2 request is required Node > 12 6d1d39bbe refactor: refine code f57702b0c Release v2.9.2 5adb0431d refactor: mandatory need to customize options.storage after setting options.server 3cf5e3384 refactor: refine code a19314c8d feat: allow custom server by options.server cb3581a45 feat: show pid if exec w2 status --all 4cb6cace6 refactor: refine code 1d7440058 refactor: refine log file 58593dcb9 chore: update node 6f86c8249 Merge branch 'master' of github.com:avwo/whistle dbaff24f3 refactor: refine code 7f31ec539 refactor: refine deps 7bb11f388 update https://registry.npm.taobao.org to https://registry.npmmirror.com b13dc5282 fix: replaceRules 925135690 style:refine code 5dbc3b0c0 refactor: code style , prettier format f370e4ff4 refactor: refine code b3a41a2cd feat: enable://keepAllCSP 88f5ef61a Release v2.9.1 190ba3f74 refactor: add plugin version d1b732eda refactor: move cwd/whistle.log to /whistle.log 883eb15f9 refactor: refine code b2ae1cd2b feat: add plugin/options.getValue(key, cb) b68ba0b38 feat: add plugin/options.getValue(key, cb) 8cc47f357 Release v2.9.1 f887ff9f3 style: refine code e9da49c2b style: refine code dc91fa3c9 style: refine fold gutter 70b8e3da7 style: refine code 4d62a6f0e style: add flod gutter option 8766de9c8 feat: add code editor fold gutter f46782337 feat: add enable://clientIp 85d7af05e feat: add forwardedFor to plugin request a6e9a57aa refactor: update node-forge fcececd94 style: refine ui 4606ab29c refactor: refine code 1976a1d98 style: handle drag events 691f112d0 Release 2.9.0 aa4187283 style: refine ui 954184b10 style: refine context menu 9d671ece5 feat: add referer c586c26a0 Release 2.9.0 d0c0971fd feat: add reqHeaders & auth to plugin request 2438741fb feat: add compose event b05dceb05 feat: allow to disable composer 71bfd19ad style: refine font style 939d6d67e Release v2.9.0 cf960c9ba style: refine custom tabs ba9b4336b feat: add custom tabs 9546efb85 style: refine ui 789d77eeb feat: custom composer 711bc315c refactor: refine code 4127c8cc7 style: add custom inspector & composer tabs 4fe482c1d style: refine composer bcd8dcefb style: add No Frames tips 0cd576597 style: add Composer menu 9d72fef3d style: move Frames into Inspectors 4e7228e10 refactor: automatically resolve websocket requests by default ebb6133fa refactor: refine code 5945699c4 refactor: refine code 7dbd6a05d style: Frames -> Inspectors c2ddf1f1d refactor: refine code 83b2c5863 refactor: add ping pong 181702653 feat: add options.wrapWsReader & options.wrapWsWriter c08a6d212 refactor: handle errors a2337e141 refactor: refine code e8ac9a735 refactor: refine policy 94ec41e70 refactor: pauseOnConnect 9d38f84ad refactor: refine code dc68f2294 refactor: refine code 4e8d871a9 feat: proxy plugin requests 5a771fa7f refactor: add debugMode 80bcd288d feat: add x-whistle-request-tunnel-ack ee84dd0a2 refactor: add x-whistle-request-from 719dccd83 refactor: refine code e01f7992f refactor: update pfork 745323890 refactor: handle uncauth exception b08ff07fe feat: add process.handleUncaughtErrorMessage 0981371c4 feat: add connect policy 579c437fe feat: add options.request 05bbf67cd feat: add options.connect ce78b0429 refactor: refine composer ddd9bf417 refactor: refine code 2a7fc565a refactor: refine code b5a1485db refactor: refine code 169f96fab feat: add clientIp 7a976fc4f feat: add options.request & options.connect fbe94a7a6 refactor: isH2 === useH2 2d3609953 style: add whistleBridge.compose 54a89c8ef docs: update mode adc4647b4 feat: add frameChange event 9011a9c3d feat: add tabChange event to custom tabs 6ec001b2e refactor: refine code 068c7436c rafactor: refine timeout dc67a3f26 style: overscroll-behavior-x 9d44e3787 Merge branch 'master' of github.com:avwo/whistle 73d2f67f5 refactor: refine code 025d8cf44 style: refine code 9ee1c692d style: export pageId e53fda454 style: add getPageId() 1111ac17b style: fix diabledAllPlugins b050eeadc Release v2.8.11 38244506d feat: send pattern to plugin c38bfe173 refactor: refine code d419467e6 Release v2.8.11 16fc8c38a style: fix diabledAllPlugins git-subtree-dir: vendor/whistle git-subtree-split: 05e991e1730d97a589ce42b6b282b7aebb617059
1 parent 45ebdc9 commit 4ce3d10

File tree

276 files changed

+24705
-13236
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

276 files changed

+24705
-13236
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ node_modules
22
/biz/webui/htdocs/js
33
/biz/webui/htdocs/src/js/components
44
/test/assets/values
5+
/test/plugins/whistle.test/assets

.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ assets/launcher
6565
/.history
6666
CHANGELOG.md
6767
Dockerfile
68+
/README-zh_CN.md
6869

6970

7071
# Coveralls

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
# v2.9.3
2+
1. feat: `redirect` 归类为 `rule``file``statusCode` 等协议同级别
3+
2. refactor: 添加 ts 描述文件
4+
3. refactor:`w2 i plugin` 支持 `w2 i plugin@version`
5+
4. fix: Node 16 引入 `req.filter` 方法引发的问题
6+
7+
# v2.9.2
8+
1. feat: 支持启动参数设置 `options.server` 方便第三方服务集成
9+
> `server` 可以为 `http.Server` 或 `events.EventEmitter` 对象,在第三方应用中可以通过 `server.emit('request'| 'upgrade' | 'connect', req, res)` 将请求交给 Whistle 处理
10+
2. feat: 支持通过插件引入远程 Value:`protocol://$plugin/xxx`,这种配置会自动从插件 whistle.plugin uiServer 的 `/api/key/value?key=xxx` 获取对应的值
11+
3. refactor: 优化错误日志路径 & `w2 status --all` 显示进程 id
12+
4. refactor: 支持 HTTP2 的 Node 最低版本有 12 调整为 14(低版本的 HTTP2 模块存在一些 bug)
13+
5. fix: https://github.com/avwo/whistle/issues/697
14+
15+
# v2.9.1
16+
1. feat: 支持通过 `pattern enable://clientIp` 让 Whistle 自动设置 `x-forwarded-for` 请求头
17+
2. style: Values 编辑器支持 JSON 对象折叠,详见:https://github.com/avwo/whistle/pull/683
18+
3. refactor: Whistle 的日志统一放 `$WHISTLE_PATH/whistle.log` 文件,默认为 `~/.WhistleAppData/whistle.log`
19+
20+
# v2.9.0
21+
1. style: 修复禁用所有插件编辑器对应插件规则无法显示插件已失效的问题
22+
2. style: `Frames` 移入 `Inspectors`
23+
3. feat: 将请求匹配的 pattern 传给插件,可以通过 `req.originalReq.isRegExp``req.originalReq.pattern` 获取
24+
4. feat: 支持自定义 Inspectors tab,详见:https://github.com/whistle-plugins/examples/tree/master/whistle.view-md5
25+
5. feat: 支持自定义 Composer tab,详见:https://github.com/whistle-plugins/examples/tree/master/whistle.view-md5
26+
6. refactor: 插件全局异常也会写入启动目录的日志文件 `whistle.log`,且支持插件通过 `process.handleUncaughtPluginErrorMessage = (errMsg) => {}` 获取全局异常信息,且可以通过 `return false` 来禁止插件自动退出
27+
28+
129
# v2.8.10
230
1. fix: 插件的 sniCallback 返回 `false` 请求没有重新走 TUNNEL 代理问题
331
2. refactor: 如果插件接收到的请求是 https,则 `req.url` 将为完整的路径

assets/inspector.html

Lines changed: 0 additions & 124 deletions
This file was deleted.

assets/menu.html

Lines changed: 96 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -53,58 +53,112 @@
5353
window.addEventListener('load', delayOnLoad);
5454
} catch (e) {}
5555
var toast = {};
56+
var addNetworkListener = function(l) {
57+
if (typeof l === 'function' && networkListeners.indexOf(l) === -1) {
58+
networkListeners.push(l);
59+
}
60+
};
61+
var removeNetworkListener = function(l) {
62+
l = networkListeners.indexOf(l);
63+
if (l !== -1) {
64+
networkListeners.splice(l, 1);
65+
}
66+
};
67+
var removeAllNetworkListeners = function() {
68+
networkListeners = [];
69+
};
70+
var addRulesListener = function(l) {
71+
if (typeof l === 'function' && rulesListeners.indexOf(l) === -1) {
72+
rulesListeners.push(l);
73+
}
74+
};
75+
var removeRulesListener = function(l) {
76+
l = rulesListeners.indexOf(l);
77+
if (l !== -1) {
78+
rulesListeners.splice(l, 1);
79+
}
80+
};
81+
var removeAllRulesListeners = function() {
82+
rulesListeners = [];
83+
};
84+
var addValuesListener = function(l) {
85+
if (typeof l === 'function' && valuesListeners.indexOf(l) === -1) {
86+
valuesListeners.push(l);
87+
}
88+
};
89+
var removeValuesListener = function(l) {
90+
l = valuesListeners.indexOf(l);
91+
if (l !== -1) {
92+
valuesListeners.splice(l, 1);
93+
}
94+
};
95+
var removeAllValuesListeners = function() {
96+
valuesListeners = [];
97+
};
98+
99+
function on(type, l) {
100+
if (typeof l !== 'function') {
101+
return;
102+
}
103+
switch(type) {
104+
case 'network':
105+
return addNetworkListener(l);
106+
case 'rules':
107+
return addRulesListener(l);
108+
case 'values':
109+
return addValuesListener(l);
110+
}
111+
}
112+
113+
function off(type, l) {
114+
switch(type) {
115+
case 'network':
116+
if (l) {
117+
removeNetworkListener(l);
118+
} else {
119+
removeAllNetworkListeners();
120+
}
121+
return;
122+
case 'rules':
123+
if (l) {
124+
removeRulesListener(l);
125+
} else {
126+
removeAllRulesListeners();
127+
}
128+
return;
129+
case 'values':
130+
if (l) {
131+
removeValuesListener(l);
132+
} else {
133+
removeAllValuesListeners();
134+
}
135+
return;
136+
}
137+
}
138+
56139
var whistleBridge = {
57140
config: config,
58141
toast: toast,
59-
addNetworkListener: function(l) {
60-
if (typeof l === 'function' && networkListeners.indexOf(l) === -1) {
61-
networkListeners.push(l);
62-
}
63-
},
64-
removeNetworkListener: function(l) {
65-
l = networkListeners.indexOf(l);
66-
if (l !== -1) {
67-
networkListeners.splice(l, 1);
68-
}
69-
},
70-
removeAllNetworkListeners: function() {
71-
networkListeners = [];
72-
},
73-
addRulesListener: function(l) {
74-
if (typeof l === 'function' && rulesListeners.indexOf(l) === -1) {
75-
rulesListeners.push(l);
76-
}
77-
},
78-
removeRulesListener: function(l) {
79-
l = rulesListeners.indexOf(l);
80-
if (l !== -1) {
81-
rulesListeners.splice(l, 1);
82-
}
83-
},
84-
removeAllRulesListeners: function() {
85-
rulesListeners = [];
86-
},
87-
addValuesListener: function(l) {
88-
if (typeof l === 'function' && valuesListeners.indexOf(l) === -1) {
89-
valuesListeners.push(l);
90-
}
91-
},
92-
removeValuesListener: function(l) {
93-
l = valuesListeners.indexOf(l);
94-
if (l !== -1) {
95-
valuesListeners.splice(l, 1);
96-
}
97-
},
98-
removeAllValuesListeners: function() {
99-
valuesListeners = [];
100-
}
142+
on: on,
143+
off: off,
144+
addNetworkListener: addNetworkListener,
145+
removeNetworkListener: removeNetworkListener,
146+
removeAllNetworkListeners: removeAllNetworkListeners,
147+
addRulesListener: addRulesListener,
148+
removeRulesListener: removeRulesListener,
149+
removeAllRulesListeners: removeAllRulesListeners,
150+
addValuesListener: addValuesListener,
151+
removeValuesListener: removeValuesListener,
152+
removeAllValuesListeners: removeAllValuesListeners
101153
};
102154
try {
103155
window.initWhistleBridge = function(options) {
104156
window.initWhistleBridge = function() {};
105157
Object.keys(options.msgBox).forEach(function(name) {
106158
toast[name] = options.msgBox[name];
107159
});
160+
whistleBridge.pageId = options.pageId;
161+
whistleBridge.compose = options.compose;
108162
whistleBridge.decodeBase64 = options.decodeBase64;
109163
whistleBridge.importSessions = options.importSessions;
110164
whistleBridge.request = options.request;

0 commit comments

Comments
 (0)