whistle 2.9.34 → 2.9.36-beta
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/assets/js/worker.js +84 -0
- package/biz/index.js +1 -0
- package/biz/webui/cgi-bin/get-data.js +2 -0
- package/biz/webui/cgi-bin/set-custom-column.js +6 -8
- package/biz/webui/htdocs/editor.html +11 -1
- package/biz/webui/htdocs/index.html +1 -1
- package/biz/webui/htdocs/js/index.js +46 -46
- package/biz/webui/lib/index.js +12 -0
- package/lib/https/index.js +4 -6
- package/lib/inspectors/res.js +2 -2
- package/lib/plugins/get-plugins-sync.js +2 -0
- package/lib/plugins/index.js +6 -1
- package/lib/plugins/load-plugin.js +74 -6
- package/lib/plugins/util.js +45 -0
- package/lib/util/common.js +10 -0
- package/lib/util/index.js +126 -54
- package/package.json +2 -2
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
|
|
2
|
+
var exports = {};
|
|
3
|
+
var module = { exports: exports };
|
|
4
|
+
|
|
5
|
+
;(function() {
|
|
6
|
+
var self = null;
|
|
7
|
+
try {
|
|
8
|
+
(function() {
|
|
9
|
+
/*sourcecode*/
|
|
10
|
+
})();
|
|
11
|
+
} catch (e) {
|
|
12
|
+
setTimeout(function() {
|
|
13
|
+
throw e;
|
|
14
|
+
}, 20);
|
|
15
|
+
}
|
|
16
|
+
})();
|
|
17
|
+
|
|
18
|
+
;(function() {
|
|
19
|
+
!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){try{return i(e)}catch(t){}}var o,i=n(1).toByteArray,a=n(2).Base64.decode,s=n(3);if(self.TextDecoder)try{o=new self.TextDecoder("GB18030")}catch(l){}self.getText=function(e){var t=e&&r(e);if(!t)return"";if(!s(t))try{if(o)return o.decode(t)}catch(n){}try{return a(e)}catch(n){}return""}},function(e,t){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");-1===n&&(n=t);var r=n===t?0:4-n%4;return[n,r]}function r(e){var t=n(e),r=t[0],o=t[1];return 3*(r+o)/4-o}function o(e,t,n){return 3*(t+n)/4-n}function i(e){var t,r,i=n(e),a=i[0],s=i[1],l=new d(o(e,a,s)),c=0,p=s>0?a-4:a;for(r=0;p>r;r+=4)t=u[e.charCodeAt(r)]<<18|u[e.charCodeAt(r+1)]<<12|u[e.charCodeAt(r+2)]<<6|u[e.charCodeAt(r+3)],l[c++]=t>>16&255,l[c++]=t>>8&255,l[c++]=255&t;return 2===s&&(t=u[e.charCodeAt(r)]<<2|u[e.charCodeAt(r+1)]>>4,l[c++]=255&t),1===s&&(t=u[e.charCodeAt(r)]<<10|u[e.charCodeAt(r+1)]<<4|u[e.charCodeAt(r+2)]>>2,l[c++]=t>>8&255,l[c++]=255&t),l}function a(e){return c[e>>18&63]+c[e>>12&63]+c[e>>6&63]+c[63&e]}function s(e,t,n){for(var r,o=[],i=t;n>i;i+=3)r=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(a(r));return o.join("")}function l(e){for(var t,n=e.length,r=n%3,o=[],i=16383,a=0,l=n-r;l>a;a+=i)o.push(s(e,a,a+i>l?l:a+i));return 1===r?(t=e[n-1],o.push(c[t>>2]+c[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(c[t>>10]+c[t>>4&63]+c[t<<2&63]+"=")),o.join("")}t.byteLength=r,t.toByteArray=i,t.fromByteArray=l;for(var c=[],u=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=0,g=p.length;g>f;++f)c[f]=p[f],u[p.charCodeAt(f)]=f;u["-".charCodeAt(0)]=62,u["_".charCodeAt(0)]=63},function(e,t,n){var r,o;(function(n){!function(t,n){e.exports=n(t)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof n?n:this,function(n){"use strict";n=n||{};var i,a=n.Base64,s="2.6.4",l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=function(e){for(var t={},n=0,r=e.length;r>n;n++)t[e.charAt(n)]=n;return t}(l),u=String.fromCharCode,d=function(e){if(e.length<2){var t=e.charCodeAt(0);return 128>t?e:2048>t?u(192|t>>>6)+u(128|63&t):u(224|t>>>12&15)+u(128|t>>>6&63)+u(128|63&t)}var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return u(240|t>>>18&7)+u(128|t>>>12&63)+u(128|t>>>6&63)+u(128|63&t)},p=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,f=function(e){return e.replace(p,d)},g=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0),r=[l.charAt(n>>>18),l.charAt(n>>>12&63),t>=2?"=":l.charAt(n>>>6&63),t>=1?"=":l.charAt(63&n)];return r.join("")},h=n.btoa&&"function"==typeof n.btoa?function(e){return n.btoa(e)}:function(e){if(e.match(/[^\x00-\xFF]/))throw new RangeError("The string contains invalid characters.");return e.replace(/[\s\S]{1,3}/g,g)},m=function(e){return h(f(String(e)))},A=function(e){return e.replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,"")},M=function(e,t){return t?A(m(e)):m(e)},w=function(e){return M(e,!0)};n.Uint8Array&&(i=function(e,t){for(var n="",r=0,o=e.length;o>r;r+=3){var i=e[r],a=e[r+1],s=e[r+2],c=i<<16|a<<8|s;n+=l.charAt(c>>>18)+l.charAt(c>>>12&63)+("undefined"!=typeof a?l.charAt(c>>>6&63):"=")+("undefined"!=typeof s?l.charAt(63&c):"=")}return t?A(n):n});var b,y=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,v=function(e){switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),n=t-65536;return u((n>>>10)+55296)+u((1023&n)+56320);case 3:return u((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return u((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},T=function(e){return e.replace(y,v)},x=function(e){var t=e.length,n=t%4,r=(t>0?c[e.charAt(0)]<<18:0)|(t>1?c[e.charAt(1)]<<12:0)|(t>2?c[e.charAt(2)]<<6:0)|(t>3?c[e.charAt(3)]:0),o=[u(r>>>16),u(r>>>8&255),u(255&r)];return o.length-=[0,0,2,1][n],o.join("")},N=n.atob&&"function"==typeof n.atob?function(e){return n.atob(e)}:function(e){return e.replace(/\S{1,4}/g,x)},C=function(e){return N(String(e).replace(/[^A-Za-z0-9\+\/]/g,""))},I=function(e){return T(N(e))},E=function(e){return String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,"")},D=function(e){return I(E(e))};n.Uint8Array&&(b=function(e){return Uint8Array.from(C(E(e)),function(e){return e.charCodeAt(0)})});var L=function(){var e=n.Base64;return n.Base64=a,e};if(n.Base64={VERSION:s,atob:C,btoa:h,fromBase64:D,toBase64:M,utob:f,encode:M,encodeURI:w,btou:T,decode:D,noConflict:L,fromUint8Array:i,toUint8Array:b},"function"==typeof Object.defineProperty){var S=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};n.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",S(function(){return D(this)})),Object.defineProperty(String.prototype,"toBase64",S(function(e){return M(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",S(function(){return M(this,!0)}))}}return n.Meteor&&(Base64=n.Base64),"undefined"!=typeof e&&e.exports?e.exports.Base64=n.Base64:(r=[],o=function(){return n.Base64}.apply(t,r),!(void 0!==o&&(e.exports=o))),{Base64:n.Base64}})}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t){t=t||0;for(var n=Math.min(e.length,r);n>t;t++){var o=e[t];if(!(9==o||10==o||13==o||o>=32&&127>=o)){++t;var i=e[t];if(o>=194&&223>=o){if(i>=128&&191>=i)continue;return!i}++t;var a=e[t];if(224==o){if(i>=160&&191>=i&&a>=128&&191>=a)continue;return!a}if(o>=225&&236>=o||238==o||239==o){if(i>=128&&191>=i&&a>=128&&191>=a)continue;return!a}if(237==o){if(i>=128&&159>=i&&a>=128&&191>=a)continue;return!a}++t;var s=e[t];if(240==o){if(i>=144&&191>=i&&a>=128&&191>=a&&s>=128&&191>=s)continue;return!s}if(o>=241&&243>=o){if(i>=128&&191>=i&&a>=128&&191>=a&&s>=128&&191>=s)continue;return!s}if(244==o){if(i>=128&&143>=i&&a>=128&&191>=a&&s>=128&&191>=s)continue;return!s}return!1}}return!0}var r=32768;e.exports=function(e){return n(e)?!0:0===e[0]&&n(e,5)}}]);
|
|
20
|
+
|
|
21
|
+
var getText = function(obj) {
|
|
22
|
+
return self.getText(obj.base64);
|
|
23
|
+
};
|
|
24
|
+
var parseJson = function(str) {
|
|
25
|
+
if (!str || !/^(?:\{[\s\S]*\}|\[[\s\S]*\])$/) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(str);
|
|
30
|
+
} catch (e) {}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var defineProps = function (obj) {
|
|
34
|
+
if (Object.defineProperties) {
|
|
35
|
+
var body, json;
|
|
36
|
+
var getBody = function () {
|
|
37
|
+
if (body === undefined) {
|
|
38
|
+
body = getText(obj);
|
|
39
|
+
}
|
|
40
|
+
return body;
|
|
41
|
+
}
|
|
42
|
+
Object.defineProperties(obj, {
|
|
43
|
+
body: { get: getBody },
|
|
44
|
+
json: {
|
|
45
|
+
get: function () {
|
|
46
|
+
if (json === undefined) {
|
|
47
|
+
json = parseJson(getBody()) || null;
|
|
48
|
+
}
|
|
49
|
+
return json;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
obj.body = getText(obj) || '';
|
|
55
|
+
obj.json = parseJson(obj) || null;
|
|
56
|
+
}
|
|
57
|
+
return obj;
|
|
58
|
+
};
|
|
59
|
+
var handle = module.exports;
|
|
60
|
+
if (typeof handle !== 'function') {
|
|
61
|
+
handle = null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
self.onmessage = function(e) {
|
|
65
|
+
var data = handle && e.data;
|
|
66
|
+
var id = data && data.id;
|
|
67
|
+
if (!id) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
data.res = defineProps(data.res || {});
|
|
71
|
+
data.req = defineProps(data.req || {});
|
|
72
|
+
data.req.headers = data.req.headers || {};
|
|
73
|
+
data.res.headers = data.res.headers || {};
|
|
74
|
+
handle(data, function(result) {
|
|
75
|
+
result && self.postMessage({
|
|
76
|
+
id: id,
|
|
77
|
+
data: result
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
})();
|
|
82
|
+
|
|
83
|
+
self.postMessage(true);
|
|
84
|
+
|
package/biz/index.js
CHANGED
|
@@ -28,6 +28,7 @@ module.exports = function(req, res, next) {
|
|
|
28
28
|
var port = host[1] || (req.isHttps ? 443 : 80);
|
|
29
29
|
var bypass;
|
|
30
30
|
host = host[0];
|
|
31
|
+
req._w2hostname = host;
|
|
31
32
|
var transformPort, isProxyReq, isWeinre, isOthers;
|
|
32
33
|
var webUI = WEBUI_PATH;
|
|
33
34
|
var realHostRe = REAL_WEBUI_HOST;
|
|
@@ -25,6 +25,8 @@ module.exports = function(req, res) {
|
|
|
25
25
|
version: config.version,
|
|
26
26
|
custom1: properties.get('Custom1'),
|
|
27
27
|
custom2: properties.get('Custom2'),
|
|
28
|
+
custom1Key: properties.get('Custom1Key'),
|
|
29
|
+
custom2Key: properties.get('Custom2Key'),
|
|
28
30
|
supportH2: config.enableH2,
|
|
29
31
|
hasInvalidCerts: ca.hasInvalidCerts,
|
|
30
32
|
clientIp: clientIp,
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
+
var util = require('../../../lib/util');
|
|
1
2
|
var properties = require('../../../lib/rules/util').properties;
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
value = value.trim().toString(0, 16);
|
|
8
|
-
}
|
|
9
|
-
properties.set(name, value);
|
|
4
|
+
|
|
5
|
+
function updateName(name, value, key) {
|
|
6
|
+
properties.set(name, util.isString(value) ? value.trim().toString(0, 16) : name);
|
|
7
|
+
properties.set(name + 'Key', util.isString(key) ? key.trim().substring(0, 72) : '');
|
|
10
8
|
}
|
|
11
9
|
|
|
12
10
|
module.exports = function(req, res) {
|
|
13
11
|
var name = req.body.name;
|
|
14
12
|
var value = req.body.value;
|
|
15
13
|
if (name === 'Custom1' || name === 'Custom2') {
|
|
16
|
-
updateName(name, value);
|
|
14
|
+
updateName(name, value, req.body.key);
|
|
17
15
|
}
|
|
18
16
|
res.json({ ec: 0 });
|
|
19
17
|
};
|
|
@@ -22,7 +22,16 @@ textarea {resize: none; display: block; padding: 6px; font-size: 12px; width: 10
|
|
|
22
22
|
</div>
|
|
23
23
|
<script>
|
|
24
24
|
var editor = document.getElementById('editor');
|
|
25
|
-
|
|
25
|
+
var getInitCallback = function() {
|
|
26
|
+
try {
|
|
27
|
+
var cb = window.parent._initWhistleTextEditor_;
|
|
28
|
+
if (typeof cb === 'function') {
|
|
29
|
+
return cb;
|
|
30
|
+
}
|
|
31
|
+
} catch (e) {}
|
|
32
|
+
};
|
|
33
|
+
var init = getInitCallback();
|
|
34
|
+
if (!init && window.getValue) {
|
|
26
35
|
var value = getValue();
|
|
27
36
|
if (value) {
|
|
28
37
|
editor.value = window.name = value;
|
|
@@ -34,6 +43,7 @@ textarea {resize: none; display: block; padding: 6px; font-size: 12px; width: 10
|
|
|
34
43
|
window.setValue = function(value) {
|
|
35
44
|
editor.value = value;
|
|
36
45
|
};
|
|
46
|
+
init && init(window);
|
|
37
47
|
}
|
|
38
48
|
</script>
|
|
39
49
|
</body>
|