diff --git a/docs-src/cn/src_doc.md b/docs-src/cn/src_doc.md
index ae01fdc..3fe9af4 100644
--- a/docs-src/cn/src_doc.md
+++ b/docs-src/cn/src_doc.md
@@ -79,8 +79,7 @@ const options = {
rule: require('myRuleModule'),
webInterface: {
enable: true,
- webPort: 8002,
- wsPort: 8003,
+ webPort: 8002
},
throttle: 10000,
forceProxyHttps: false,
diff --git a/docs-src/en/src_doc.md b/docs-src/en/src_doc.md
index 36872ed..01757d7 100644
--- a/docs-src/en/src_doc.md
+++ b/docs-src/en/src_doc.md
@@ -78,8 +78,7 @@ const options = {
rule: require('myRuleModule'),
webInterface: {
enable: true,
- webPort: 8002,
- wsPort: 8003,
+ webPort: 8002
},
throttle: 10000,
forceProxyHttps: false,
diff --git a/lib/webInterface.js b/lib/webInterface.js
index 6c04b32..b039fc9 100644
--- a/lib/webInterface.js
+++ b/lib/webInterface.js
@@ -14,7 +14,6 @@ const express = require('express'),
wsServer = require('./wsServer'),
juicer = require('juicer'),
ip = require('ip'),
- co = require('co'),
compress = require('compression');
const packageJson = require('../package.json');
@@ -33,7 +32,6 @@ class webInterface extends events.EventEmitter {
*
* @param {object} config
* @param {number} config.webPort
- * @param {number} config.wsPort
* @param {object} recorder
*
* @memberOf webInterface
@@ -48,328 +46,281 @@ class webInterface extends events.EventEmitter {
self.recorder = recorder;
self.config = config || {};
- self.app = null;
+ self.app = this.getServer();
self.server = null;
self.wsServer = null;
}
- start() {
+ /**
+ * get the express server
+ */
+ getServer() {
const self = this;
- const recorder = self.recorder;
- let wsPort;
+ const recorder = self.recorder;
+ const ipAddress = ip.address(),
+ // userRule = proxyInstance.proxyRule,
+ webBasePath = 'web';
+ let ruleSummary = '';
+ let customMenu = [];
- return co(function *() {
- // determine ws port
- wsPort = self.config.wsPort ? self.config.wsPort : yield util.getFreePort();
- }).then(() => {
- const ipAddress = ip.address(),
- // userRule = proxyInstance.proxyRule,
- webBasePath = 'web';
- let ruleSummary = '';
- let customMenu = [];
+ try {
+ ruleSummary = ''; //userRule.summary();
+ customMenu = ''; // userRule._getCustomMenu();
+ } catch (e) { }
- try {
- ruleSummary = ''; //userRule.summary();
- customMenu = ''; // userRule._getCustomMenu();
- } catch (e) { }
+ const myAbsAddress = 'http://' + ipAddress + ':' + self.webPort + '/',
+ staticDir = path.join(__dirname, '../', webBasePath);
- const myAbsAddress = 'http://' + ipAddress + ':' + self.webPort + '/',
- staticDir = path.join(__dirname, '../', webBasePath);
+ const app = express();
+ app.use(compress()); //invoke gzip
+ app.use((req, res, next) => {
+ res.setHeader('note', 'THIS IS A REQUEST FROM ANYPROXY WEB INTERFACE');
+ return next();
+ });
+ app.use(bodyParser.json());
- const app = express();
- app.use(compress()); //invoke gzip
- app.use((req, res, next) => {
- res.setHeader('note', 'THIS IS A REQUEST FROM ANYPROXY WEB INTERFACE');
- return next();
+ app.get('/latestLog', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ recorder.getRecords(null, 10000, (err, docs) => {
+ if (err) {
+ res.end(err.toString());
+ } else {
+ res.json(docs);
+ }
});
- app.use(bodyParser.json());
+ });
- app.get('/latestLog', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- recorder.getRecords(null, 10000, (err, docs) => {
- if (err) {
- res.end(err.toString());
- } else {
- res.json(docs);
+ app.get('/downloadBody', (req, res) => {
+ const query = req.query;
+ recorder.getDecodedBody(query.id, (err, result) => {
+ if (err || !result || !result.content) {
+ res.json({});
+ } else if (result.mime) {
+ if (query.raw === 'true') {
+ //TODO : cache query result
+ res.type(result.mime).end(result.content);
+ } else if (query.download === 'true') {
+ res.setHeader('Content-disposition', `attachment; filename=${result.fileName}`);
+ res.setHeader('Content-type', result.mime);
+ res.end(result.content);
}
- });
- });
-
- app.get('/downloadBody', (req, res) => {
- const query = req.query;
- recorder.getDecodedBody(query.id, (err, result) => {
- if (err || !result || !result.content) {
- res.json({});
- } else if (result.mime) {
- if (query.raw === 'true') {
- //TODO : cache query result
- res.type(result.mime).end(result.content);
- } else if (query.download === 'true') {
- res.setHeader('Content-disposition', `attachment; filename=${result.fileName}`);
- res.setHeader('Content-type', result.mime);
- res.end(result.content);
- }
- } else {
- res.json({
-
- });
- }
- });
- });
-
- app.get('/fetchBody', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- const query = req.query;
- if (query && query.id) {
- recorder.getDecodedBody(query.id, (err, result) => {
- // 返回下载信息
- const _resDownload = function (isDownload) {
- isDownload = typeof isDownload === 'boolean' ? isDownload : true;
- res.json({
- id: query.id,
- type: result.type,
- method: result.meethod,
- fileName: result.fileName,
- ref: `/downloadBody?id=${query.id}&download=${isDownload}&raw=${!isDownload}`
- });
- };
-
- // 返回内容
- const _resContent = () => {
- if (util.getByteSize(result.content || '') > MAX_CONTENT_SIZE) {
- _resDownload(true);
- return;
- }
-
- res.json({
- id: query.id,
- type: result.type,
- method: result.method,
- resBody: result.content
- });
- };
-
- if (err || !result) {
- res.json({});
- } else if (result.statusCode === 200 && result.mime) {
- if (result.type === 'json' ||
- result.mime.indexOf('text') === 0 ||
- // deal with 'application/x-javascript' and 'application/javascript'
- result.mime.indexOf('javascript') > -1) {
- _resContent();
- } else if (result.type === 'image') {
- _resDownload(false);
- } else {
- _resDownload(true);
- }
- } else {
- _resContent();
- }
- });
- } else {
- res.end({});
- }
- });
-
- app.get('/fetchReqBody', (req, res) => {
- const query = req.query;
- if (query && query.id) {
- recorder.getSingleRecord(query.id, (err, doc) => {
- if (err || !doc[0]) {
- console.error(err);
- res.end('');
- return;
- }
-
- res.setHeader('Content-disposition', `attachment; filename=request_${query.id}_body.txt`);
- res.setHeader('Content-type', 'text/plain');
- res.end(doc[0].reqBody);
- });
- } else {
- res.end('');
- }
- });
-
- app.get('/fetchWsMessages', (req, res) => {
- const query = req.query;
- if (query && query.id) {
- recorder.getDecodedWsMessage(query.id, (err, messages) => {
- if (err) {
- console.error(err);
- res.json([]);
- return;
- }
- res.json(messages);
- });
- } else {
- res.json([]);
- }
- });
-
- app.get('/fetchCrtFile', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- const _crtFilePath = certMgr.getRootCAFilePath();
- if (_crtFilePath) {
- res.setHeader('Content-Type', 'application/x-x509-ca-cert');
- res.setHeader('Content-Disposition', 'attachment; filename="rootCA.crt"');
- res.end(fs.readFileSync(_crtFilePath, { encoding: null }));
- } else {
- res.setHeader('Content-Type', 'text/html');
- res.end('can not file rootCA ,plase use anyproxy --root to generate one');
- }
- });
-
- //make qr code
- app.get('/qr', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- const qr = qrCode.qrcode(4, 'M'),
- targetUrl = myAbsAddress;
- qr.addData(targetUrl);
- qr.make();
- const qrImageTag = qr.createImgTag(4);
- const resDom = ' __img
click or scan qr code to start client '.replace(/__url/, targetUrl).replace(/__img/, qrImageTag);
- res.setHeader('Content-Type', 'text/html');
- res.end(resDom);
- });
-
- app.get('/api/getQrCode', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- const qr = qrCode.qrcode(4, 'M'),
- targetUrl = myAbsAddress + 'fetchCrtFile';
-
- qr.addData(targetUrl);
- qr.make();
- const qrImageTag = qr.createImgTag(4);
-
- // resDom = ' __img
click or scan qr code to download rootCA.crt '.replace(/__url/,targetUrl).replace(/__img/,qrImageTag);
- // res.setHeader("Content-Type", "text/html");
- // res.end(resDom);
-
- const isRootCAFileExists = certMgr.isRootCAFileExists();
- res.json({
- status: 'success',
- url: targetUrl,
- isRootCAFileExists,
- qrImgDom: qrImageTag
- });
- });
-
- // response init data
- app.get('/api/getInitData', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- const rootCAExists = certMgr.isRootCAFileExists();
- const rootDirPath = certMgr.getRootDirPath();
- const interceptFlag = false; //proxyInstance.getInterceptFlag(); TODO
- const globalProxyFlag = false; // TODO: proxyInstance.getGlobalProxyFlag();
- res.json({
- status: 'success',
- rootCAExists,
- rootCADirPath: rootDirPath,
- currentInterceptFlag: interceptFlag,
- currentGlobalProxyFlag: globalProxyFlag,
- ruleSummary: ruleSummary || '',
- ipAddress: util.getAllIpAddress(),
- port: '', //proxyInstance.proxyPort, // TODO
- wsPort,
- appVersion: packageJson.version
- });
- });
-
- app.post('/api/generateRootCA', (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- const rootExists = certMgr.isRootCAFileExists();
- if (!rootExists) {
- certMgr.generateRootCA(() => {
- res.json({
- status: 'success',
- code: 'done'
- });
- });
} else {
res.json({
- status: 'success',
- code: 'root_ca_exists'
+
});
}
});
+ });
- // should not be available in in-build version
- // app.post('/api/toggleInterceptHttps', (req, res) => {
- // const rootExists = certMgr.isRootCAFileExists();
- // if (!rootExists) {
- // certMgr.generateRootCA(() => {
- // proxyInstance.setIntercept(req.body.flag);
- // // Also inform the web if RootCa exists
- // res.json({
- // status: 'success',
- // rootExists
- // });
- // });
- // } else {
- // proxyInstance.setIntercept(req.body.flag);
- // res.json({
- // status: 'success',
- // rootExists
- // });
- // }
- // });
-
- // app.post('/api/toggleGlobalProxy', (req, res) => {
- // const flag = req.body.flag;
- // let result = {};
- // result = flag ? proxyInstance.enableGlobalProxy() : proxyInstance.disableGlobalProxy();
-
- // if (result.status) {
- // res.json({
- // status: 'failed',
- // errorMsg: result.stdout
- // });
- // } else {
- // res.json({
- // status: 'success',
- // isWindows: /^win/.test(process.platform)
- // });
- // }
- // });
-
- app.use((req, res, next) => {
- const indexTpl = fs.readFileSync(path.join(staticDir, '/index.html'), { encoding: 'utf8' }),
- opt = {
- rule: ruleSummary || '',
- customMenu: customMenu || [],
- wsPort,
- ipAddress: ipAddress || '127.0.0.1'
+ app.get('/fetchBody', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ const query = req.query;
+ if (query && query.id) {
+ recorder.getDecodedBody(query.id, (err, result) => {
+ // 返回下载信息
+ const _resDownload = function (isDownload) {
+ isDownload = typeof isDownload === 'boolean' ? isDownload : true;
+ res.json({
+ id: query.id,
+ type: result.type,
+ method: result.meethod,
+ fileName: result.fileName,
+ ref: `/downloadBody?id=${query.id}&download=${isDownload}&raw=${!isDownload}`
+ });
};
- if (url.parse(req.url).pathname === '/') {
- res.setHeader('Content-Type', 'text/html');
- res.end(juicer(indexTpl, opt));
- } else {
- next();
- }
- });
+ // 返回内容
+ const _resContent = () => {
+ if (util.getByteSize(result.content || '') > MAX_CONTENT_SIZE) {
+ _resDownload(true);
+ return;
+ }
- app.use(express.static(staticDir));
+ res.json({
+ id: query.id,
+ type: result.type,
+ method: result.method,
+ resBody: result.content
+ });
+ };
- //plugin from rule file
- const server = app.listen(self.webPort);
-
- self.app = app;
- self.server = server;
- }).then(() => {
- // start ws server
- self.wsServer = new wsServer({
- port: wsPort
- }, recorder);
-
- return self.wsServer.start();
+ if (err || !result) {
+ res.json({});
+ } else if (result.statusCode === 200 && result.mime) {
+ if (result.type === 'json' ||
+ result.mime.indexOf('text') === 0 ||
+ // deal with 'application/x-javascript' and 'application/javascript'
+ result.mime.indexOf('javascript') > -1) {
+ _resContent();
+ } else if (result.type === 'image') {
+ _resDownload(false);
+ } else {
+ _resDownload(true);
+ }
+ } else {
+ _resContent();
+ }
+ });
+ } else {
+ res.end({});
+ }
});
+
+ app.get('/fetchReqBody', (req, res) => {
+ const query = req.query;
+ if (query && query.id) {
+ recorder.getSingleRecord(query.id, (err, doc) => {
+ if (err || !doc[0]) {
+ console.error(err);
+ res.end('');
+ return;
+ }
+
+ res.setHeader('Content-disposition', `attachment; filename=request_${query.id}_body.txt`);
+ res.setHeader('Content-type', 'text/plain');
+ res.end(doc[0].reqBody);
+ });
+ } else {
+ res.end('');
+ }
+ });
+
+ app.get('/fetchWsMessages', (req, res) => {
+ const query = req.query;
+ if (query && query.id) {
+ recorder.getDecodedWsMessage(query.id, (err, messages) => {
+ if (err) {
+ console.error(err);
+ res.json([]);
+ return;
+ }
+ res.json(messages);
+ });
+ } else {
+ res.json([]);
+ }
+ });
+
+ app.get('/fetchCrtFile', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ const _crtFilePath = certMgr.getRootCAFilePath();
+ if (_crtFilePath) {
+ res.setHeader('Content-Type', 'application/x-x509-ca-cert');
+ res.setHeader('Content-Disposition', 'attachment; filename="rootCA.crt"');
+ res.end(fs.readFileSync(_crtFilePath, { encoding: null }));
+ } else {
+ res.setHeader('Content-Type', 'text/html');
+ res.end('can not file rootCA ,plase use anyproxy --root to generate one');
+ }
+ });
+
+ //make qr code
+ app.get('/qr', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ const qr = qrCode.qrcode(4, 'M'),
+ targetUrl = myAbsAddress;
+ qr.addData(targetUrl);
+ qr.make();
+ const qrImageTag = qr.createImgTag(4);
+ const resDom = ' __img
click or scan qr code to start client '.replace(/__url/, targetUrl).replace(/__img/, qrImageTag);
+ res.setHeader('Content-Type', 'text/html');
+ res.end(resDom);
+ });
+
+ app.get('/api/getQrCode', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ const qr = qrCode.qrcode(4, 'M'),
+ targetUrl = myAbsAddress + 'fetchCrtFile';
+
+ qr.addData(targetUrl);
+ qr.make();
+ const qrImageTag = qr.createImgTag(4);
+
+ // resDom = ' __img
click or scan qr code to download rootCA.crt '.replace(/__url/,targetUrl).replace(/__img/,qrImageTag);
+ // res.setHeader("Content-Type", "text/html");
+ // res.end(resDom);
+
+ const isRootCAFileExists = certMgr.isRootCAFileExists();
+ res.json({
+ status: 'success',
+ url: targetUrl,
+ isRootCAFileExists,
+ qrImgDom: qrImageTag
+ });
+ });
+
+ // response init data
+ app.get('/api/getInitData', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ const rootCAExists = certMgr.isRootCAFileExists();
+ const rootDirPath = certMgr.getRootDirPath();
+ const interceptFlag = false; //proxyInstance.getInterceptFlag(); TODO
+ const globalProxyFlag = false; // TODO: proxyInstance.getGlobalProxyFlag();
+ res.json({
+ status: 'success',
+ rootCAExists,
+ rootCADirPath: rootDirPath,
+ currentInterceptFlag: interceptFlag,
+ currentGlobalProxyFlag: globalProxyFlag,
+ ruleSummary: ruleSummary || '',
+ ipAddress: util.getAllIpAddress(),
+ port: '', //proxyInstance.proxyPort, // TODO
+ appVersion: packageJson.version
+ });
+ });
+
+ app.post('/api/generateRootCA', (req, res) => {
+ res.setHeader('Access-Control-Allow-Origin', '*');
+ const rootExists = certMgr.isRootCAFileExists();
+ if (!rootExists) {
+ certMgr.generateRootCA(() => {
+ res.json({
+ status: 'success',
+ code: 'done'
+ });
+ });
+ } else {
+ res.json({
+ status: 'success',
+ code: 'root_ca_exists'
+ });
+ }
+ });
+
+ app.use((req, res, next) => {
+ const indexTpl = fs.readFileSync(path.join(staticDir, '/index.html'), { encoding: 'utf8' }),
+ opt = {
+ rule: ruleSummary || '',
+ customMenu: customMenu || [],
+ ipAddress: ipAddress || '127.0.0.1'
+ };
+
+ if (url.parse(req.url).pathname === '/') {
+ res.setHeader('Content-Type', 'text/html');
+ res.end(juicer(indexTpl, opt));
+ } else {
+ next();
+ }
+ });
+ app.use(express.static(staticDir));
+ return app;
+ }
+
+ start() {
+ const self = this;
+ return new Promise((resolve, reject) => {
+ self.server = self.app.listen(self.webPort);
+ self.wsServer = new wsServer({
+ server: self.server
+ }, self.recorder);
+ self.wsServer.start();
+ resolve();
+ })
}
close() {
this.server && this.server.close();
this.wsServer && this.wsServer.closeAll();
-
this.server = null;
this.wsServer = null;
this.proxyInstance = null;
diff --git a/lib/wsServer.js b/lib/wsServer.js
index 6fe69c5..7ab654a 100644
--- a/lib/wsServer.js
+++ b/lib/wsServer.js
@@ -46,14 +46,14 @@ function resToMsg(msg, recorder, cb) {
}
}
-//config.port
+//config.server
class wsServer {
constructor(config, recorder) {
if (!recorder) {
throw new Error('proxy recorder is required');
- } else if (!config || !config.port) {
- throw new Error('config.port is required');
+ } else if (!config || !config.server) {
+ throw new Error('config.server is required');
}
const self = this;
@@ -68,11 +68,11 @@ class wsServer {
return new Promise((resolve, reject) => {
//web socket interface
const wss = new WebSocketServer({
- port: config.port,
+ server: config.server,
clientTracking: true,
- }, resolve);
-
- logUtil.printLog(`WebSoket setup at port ${config.port} `, logUtil.T_DEBUG);
+ });
+ resolve();
+
// the queue of the messages to be delivered
let messageQueue = [];
// the flat to indicate wheter to broadcast the record
diff --git a/module_sample/normal_use.js b/module_sample/normal_use.js
index 5c813c2..d9d600c 100644
--- a/module_sample/normal_use.js
+++ b/module_sample/normal_use.js
@@ -6,8 +6,7 @@ const options = {
rule: null,
webInterface: {
enable: true,
- webPort: 8002,
- wsPort: 8003,
+ webPort: 8002
},
throttle: 10000,
forceProxyHttps: true,
diff --git a/proxy.js b/proxy.js
index b907c76..706dfdd 100644
--- a/proxy.js
+++ b/proxy.js
@@ -310,7 +310,6 @@ class ProxyServer extends ProxyCore {
* @param {object} [config.webInterface] - config of the web interface
* @param {boolean} [config.webInterface.enable=false] - if web interface is enabled
* @param {number} [config.webInterface.webPort=8002] - http port of the web interface
- * @param {number} [config.webInterface.wsPort] - web socket port of the web interface
*/
constructor(config) {
// prepare a recorder
diff --git a/test/spec_lib/proxyServerModule.js b/test/spec_lib/proxyServerModule.js
index 971c648..0b87a2c 100644
--- a/test/spec_lib/proxyServerModule.js
+++ b/test/spec_lib/proxyServerModule.js
@@ -16,8 +16,7 @@ describe('AnyProxy.proxyServer basic test', () => {
rule: null,
webInterface: {
enable: true,
- webPort: 8002,
- wsPort: 8003,
+ webPort: 8002
},
throttle: 10000,
forceProxyHttps: false,
diff --git a/test/util/ProxyServerUtil.js b/test/util/ProxyServerUtil.js
index 1974040..f892c6a 100644
--- a/test/util/ProxyServerUtil.js
+++ b/test/util/ProxyServerUtil.js
@@ -11,7 +11,6 @@ const DEFAULT_OPTIONS = {
webInterface: {
enable: true,
webPort: 8002, // optional, port for web interface
- wsPort: 8003, // optional, internal port for web socket
},
wsIntercept: true,
throttle: 10000, // optional, speed limit in kb/s
diff --git a/web/src/action/globalStatusAction.js b/web/src/action/globalStatusAction.js
index 758ea14..2bc93da 100644
--- a/web/src/action/globalStatusAction.js
+++ b/web/src/action/globalStatusAction.js
@@ -11,7 +11,6 @@ export const FETCH_MAPPED_CONFIG = 'FETCH_MAPPED_CONFIG';
export const UPDATE_LOCAL_MAPPED_CONFIG = 'UPDATE_LOCAL_MAPPED_CONFIG';
export const UPDATE_REMOTE_MAPPED_CONFIG = 'UPDATE_REMOTE_MAPPED_CONFIG';
export const UPDATE_ACTIVE_RECORD_ITEM = 'UPDATE_ACTIVE_RECORD_ITEM';
-export const UPDATE_GLOBAL_WSPORT = 'UPDATE_GLOBAL_WSPORT';
export const TOGGLE_REMOTE_INTERCEPT_HTTPS = 'TOGGLE_REMOTE_INTERCEPT_HTTPS';
export const UPDATE_LOCAL_INTERCEPT_HTTPS_FLAG = 'UPDATE_LOCAL_INTERCEPT_HTTPS_FLAG';
@@ -202,13 +201,6 @@ export function updateIsRootCAExists(exists) {
};
}
-export function updateGlobalWsPort(wsPort) {
- return {
- type: UPDATE_GLOBAL_WSPORT,
- data: wsPort
- }
-}
-
export function updateFechingRecordStatus(isFetching) {
return {
type: UPDATE_FETCHING_RECORD_STATUS,
diff --git a/web/src/common/WsUtil.js b/web/src/common/WsUtil.js
index 95835ba..80d8097 100644
--- a/web/src/common/WsUtil.js
+++ b/web/src/common/WsUtil.js
@@ -6,14 +6,14 @@ import { message } from 'antd';
/**
* Initiate a ws connection.
-* The default pay `do-not-proxy` means the ws do not need to be proxied.
-* This is very important for AnyProxy its' own server, such as WEB UI, and the
-* websocket detail panel, to prevent a recursive proxy.
+* The default path `do-not-proxy` means the ws do not need to be proxied.
+* This is very important for AnyProxy‘s own server, such as WEB UI,
+* and the websocket detail panel in it, to prevent a recursive proxy.
* @param {wsPort} wsPort the port of websocket
* @param {key} path the path of the ws url
*
*/
-export function initWs(wsPort = 8003, path = 'do-not-proxy') {
+export function initWs(wsPort = location.port, path = 'do-not-proxy') {
if(!WebSocket){
throw (new Error('WebSocket is not supportted on this browser'));
}
diff --git a/web/src/component/header-menu.jsx b/web/src/component/header-menu.jsx
index ea386fa..32e5541 100644
--- a/web/src/component/header-menu.jsx
+++ b/web/src/component/header-menu.jsx
@@ -19,7 +19,6 @@ import {
toggleRemoteGlobalProxyFlag,
updateShouldClearRecord,
updateIsRootCAExists,
- updateGlobalWsPort,
showFilter,
updateLocalAppVersion
} from 'action/globalStatusAction';
@@ -141,14 +140,12 @@ class HeaderMenu extends React.Component {
ruleSummary: response.ruleSummary,
rootCADirPath: response.rootCADirPath,
ipAddress: response.ipAddress,
- port: response.port,
- wsPort: response.wsPort
+ port: response.port
});
this.props.dispatch(updateLocalInterceptHttpsFlag(response.currentInterceptFlag));
this.props.dispatch(updateLocalGlobalProxyFlag(response.currentGlobalProxyFlag));
this.props.dispatch(updateLocalAppVersion(response.appVersion));
this.props.dispatch(updateIsRootCAExists(response.rootCAExists));
- this.props.dispatch(updateGlobalWsPort(response.wsPort));
})
.catch((error) => {
console.error(error);
diff --git a/web/src/component/record-detail.jsx b/web/src/component/record-detail.jsx
index a3c4c9a..c9a1756 100644
--- a/web/src/component/record-detail.jsx
+++ b/web/src/component/record-detail.jsx
@@ -66,7 +66,7 @@ class RecordDetail extends React.Component {
getWsMessageDiv(recordDetail) {
const { globalStatus } = this.props;
- return ;
+ return ;
}
getRecordContentDiv(recordDetail = {}, fetchingRecord) {
diff --git a/web/src/component/record-ws-message-detail.jsx b/web/src/component/record-ws-message-detail.jsx
index 1c0decb..f816e52 100644
--- a/web/src/component/record-ws-message-detail.jsx
+++ b/web/src/component/record-ws-message-detail.jsx
@@ -49,8 +49,7 @@ class RecordWsMessageDetail extends React.Component {
}
static propTypes = {
- recordDetail: PropTypes.object,
- wsPort: PropTypes.number
+ recordDetail: PropTypes.object
}
toggleRefresh () {
@@ -112,13 +111,11 @@ class RecordWsMessageDetail extends React.Component {
}
componentDidMount () {
- const { wsPort, recordDetail } = this.props;
- if (!wsPort) {
- return;
- }
+ const { recordDetail } = this.props;
+
this.refreshPage();
- this.wsClient = initWs(wsPort);
+ this.wsClient = initWs();
this.wsClient.addEventListener('message', this.onMessageHandler);
}
diff --git a/web/src/component/ws-listener.jsx b/web/src/component/ws-listener.jsx
index 877fb33..d5da6a4 100644
--- a/web/src/component/ws-listener.jsx
+++ b/web/src/component/ws-listener.jsx
@@ -140,12 +140,11 @@ class WsListener extends React.Component {
}
initWs() {
- const { wsPort } = this.props.globalStatus;
- if (!wsPort || this.state.wsInited) {
+ if (this.state.wsInited) {
return;
}
this.state.wsInited = true;
- const wsClient = initWs(wsPort);
+ const wsClient = initWs();
wsClient.onmessage = this.onWsMessage;
}
diff --git a/web/src/reducer/globalStatusReducer.js b/web/src/reducer/globalStatusReducer.js
index 8faa8f3..3f59496 100644
--- a/web/src/reducer/globalStatusReducer.js
+++ b/web/src/reducer/globalStatusReducer.js
@@ -18,7 +18,6 @@ const defaultStatus = {
showNewRecordTip: false,
isRootCAFileExists: false,
fetchingRecord: false,
- wsPort: null,
mappedConfig:[] // configured map config
};
@@ -45,7 +44,6 @@ import {
UPDATE_APP_VERSION,
UPDATE_IS_ROOTCA_EXISTS,
UPDATE_SHOW_NEW_RECORD_TIP,
- UPDATE_GLOBAL_WSPORT,
UPDATE_FETCHING_RECORD_STATUS
} from 'action/globalStatusAction';
@@ -209,12 +207,6 @@ function requestListReducer(state = defaultStatus, action) {
return newState;
}
- case UPDATE_GLOBAL_WSPORT: {
- const newState = Object.assign({}, state);
- newState.wsPort = action.data;
- return newState;
- }
-
case UPDATE_FETCHING_RECORD_STATUS: {
const newState = Object.assign({}, state);
newState.fetchingRecord = action.data;