mirror of
https://github.com/avwo/whistle.git
synced 2026-10-26 03:53:03 +08:00
feat: Support modify the headers of websocket
This commit is contained in:
+5
-11
@@ -4,6 +4,7 @@ var url = require('url');
|
||||
var socks = require('socksv5');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var util = require('../util');
|
||||
var extend = require('util')._extend;
|
||||
var config = require('../config');
|
||||
var rules = require('../rules');
|
||||
var pluginMgr = require('../plugins');
|
||||
@@ -195,22 +196,15 @@ function handleWebsocket(socket, clientIp, clientPort, callback) {
|
||||
|
||||
//TODO: 暂时支持reqHeaders://(value),该头部设置主要给插件whistle.nohost
|
||||
//TODO: whistle v2.0将全面支持对websocket的操作
|
||||
var ruleKey;
|
||||
var ruleValue;
|
||||
var headersIsModified;
|
||||
var reqHeaders = parseReqHeaders(_rules.reqHeaders);
|
||||
if (reqHeaders) {
|
||||
reqHeaders = util.lowerCaseify(reqHeaders);
|
||||
ruleKey = reqHeaders['x-whistle-rule-key'];
|
||||
if (ruleKey) {
|
||||
headers['x-whistle-rule-key'] = ruleKey;
|
||||
}
|
||||
ruleValue = reqHeaders['x-whistle-rule-value'];
|
||||
if (ruleValue) {
|
||||
headers['x-whistle-rule-value'] = ruleValue;
|
||||
}
|
||||
extend(headers, reqHeaders);
|
||||
headersIsModified = Object.keys(reqHeaders).length;
|
||||
}
|
||||
|
||||
reqSocket.write(socket.getBuffer((isInternalProxy || ruleKey || ruleValue
|
||||
reqSocket.write(socket.getBuffer((isInternalProxy || headersIsModified
|
||||
|| plugin || matchedUrl || _rules.hostname) ? headers : null,
|
||||
matchedUrl ? options.path : null));
|
||||
var transform = util.getEventTransform(proxy, 'wsRequest', fullUrl);
|
||||
|
||||
Reference in New Issue
Block a user