whistle
Version:
HTTP, HTTP2, HTTPS, Websocket debugging proxy
64 lines (61 loc) • 2.63 kB
JavaScript
var proxy = require('../lib/proxy');
var util = require('./util');
var config = require('../../../lib/config');
var rulesUtil = require('../../../lib/rules/util');
var ca = require('../../../lib/https/ca');
var properties = rulesUtil.properties;
var rules = rulesUtil.rules;
var pluginMgr = proxy.pluginMgr;
var logger = proxy.logger;
module.exports = function(req, res) {
var data = req.query;
if (data.ids && typeof data.ids == 'string') {
data.ids = data.ids.split(',');
if (data.status && typeof data.status == 'string') {
data.status = data.status.split(',');
} else {
data.status = null;
}
} else {
data.ids = null;
}
var clientIp = util.getClientIp(req);
var stopRecordSvrLog = data.startSvrLogTime == -3;
var h = req.headers;
var curSvrLogId = logger.getLatestId();
util.sendGzip(req, res, {
ec: 0,
wName: config.whistleName,
disableInstaller: config.disableInstaller,
account: config.account,
version: config.version,
installErrors: config.getInstallPluginErrors && config.getInstallPluginErrors(data.clientId),
custom1: properties.get('Custom1'),
custom2: properties.get('Custom2'),
custom1Key: properties.get('Custom1Key'),
custom2Key: properties.get('Custom2Key'),
supportH2: config.enableH2,
hasInvalidCerts: ca.hasInvalidCerts,
clientIp: clientIp,
mrulesClientId: config.mrulesClientId,
mrulesTime: config.mrulesTime,
mvaluesClientId: config.mvaluesClientId,
mvaluesTime: config.mvaluesTime,
server: util.getServerInfo(req),
curSvrLogId: stopRecordSvrLog ? undefined : curSvrLogId,
lastSvrLogId: stopRecordSvrLog ? curSvrLogId : undefined,
svrLog: stopRecordSvrLog ? [] : logger.getLogs(data.startSvrLogTime, data.count),
plugins: pluginMgr.getPlugins(),
disabledPlugins: !config.notAllowedDisablePlugins && properties.get('disabledPlugins') || {},
allowMultipleChoice: properties.get('allowMultipleChoice'),
backRulesFirst: properties.get('backRulesFirst'),
enabledCount: rules.getEnabledRules().length,
disabledAllPlugins: !config.notAllowedDisablePlugins && properties.get('disabledAllPlugins'),
disabledAllRules: !config.notAllowedDisableRules && properties.get('disabledAllRules'),
interceptHttpsConnects: properties.isEnableCapture(),
enableHttp2: properties.isEnableHttp2(),
defaultRulesIsDisabled: rules.defaultRulesIsDisabled(),
list: rules.getSelectedList(),
data: proxy.getData(data, clientIp, h['x-whistle-filter-key'], h['x-whistle-filter-value'], h['x-whistle-filter-client-id'], h[config.CLIENT_ID_HEADER])
});
};