add support for ip-based websocket

This commit is contained in:
加里 2014-10-10 10:55:46 +08:00
parent ee5917391b
commit 59297dd85b
7 changed files with 19 additions and 22 deletions

View File

@ -197,7 +197,7 @@ Using https features
#### to intercept(decrypt) https requests
* start your anyproxy as normal. When rootCA is generated, it will intercept all the https requests for you automatically.
* if you get a warning like 'unsafe connection', please check if the root CA is trusted correctly.
* if you get a warning like 'unsafe connection', please check if the root CA is correctly trusted .
#### to start an https proxy
* ``anyproxy --type https --host my.domain.com``

View File

@ -1,8 +0,0 @@
var httpsServerMgr = require("./httpsServerMgr");
var instance = new httpsServerMgr();
instance.fetchPort("localhost",function(err,port){
console.log(port);
});

View File

@ -1,6 +1,6 @@
{
"name": "anyproxy",
"version": "2.4.4",
"version": "2.4.6",
"description": "A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.",
"main": "proxy.js",
"bin": {
@ -14,11 +14,12 @@
"entities": "^1.1.1",
"express": "^4.8.5",
"iconv-lite": "^0.4.4",
"ip": "^0.3.2",
"juicer": "^0.6.6-stable",
"nedb": "^0.11.0",
"ws": "^0.4.32",
"socks5-http-client": "^0.1.6",
"socks5-https-client": "^0.2.2"
"socks5-https-client": "^0.2.2",
"ws": "^0.4.32"
},
"devDependencies": {},
"scripts": {

View File

@ -25,6 +25,7 @@ var http = require('http'),
juicer = require('juicer'),
events = require("events"),
express = require("express"),
ip = require("ip"),
fork = require("child_process").fork;
GLOBAL.recorder = new Recorder();
@ -108,14 +109,15 @@ function proxyServer(option){
function(callback){
//web interface
var child_webServer = fork(path.join(__dirname,"./webServer.js"),[proxyWebPort, socketPort , proxyConfigPort,requestHandler.getRuleSummary()]);
var args = [proxyWebPort, socketPort, proxyConfigPort, requestHandler.getRuleSummary(), ip.address()];
var child_webServer = fork(path.join(__dirname,"./webServer.js"),args);
child_webServer.on("message",function(data){
if(data.type == "reqBody" && data.id){
child_webServer.send({
type : "body",
id : data.id,
body : GLOBAL.recorder.getBody(data.id)
})
});
}
});
@ -243,7 +245,6 @@ function UIConfigServer(port){
inherits(UIConfigServer, events.EventEmitter);
module.exports.proxyServer = proxyServer;
module.exports.generateRootCA = certMgr.generateRootCA;
module.exports.isRootCAFileExists = certMgr.isRootCAFileExists;

View File

@ -45,6 +45,7 @@
</div>
<input type="hidden" id="socketPort" value="{{webSocketPort}}" />
<input type="hidden" id="baseUrl" value="{{ipAddress}}" />
<script type="text/template" id="main_table_row">
<td class="data_id"><%= _id %></td>

View File

@ -176,8 +176,9 @@ seajs.use(['$','Underscore' ,'Backbone'], function($, _, Backbone) {
alert("WebSocket is required. Please use a modern browser.");
return;
}
var socketPort = $("#socketPort").val() || "8003",
dataSocket = new WebSocket("ws://127.0.0.1:" + socketPort);
var socketPort = $("#socketPort").val(),
baseUrl = $("#baseUrl").val(),
dataSocket = new WebSocket("ws://" + baseUrl + ":" + socketPort);
dataSocket.onopen = function(){}
dataSocket.onmessage = function(event){
@ -196,8 +197,8 @@ seajs.use(['$','Underscore' ,'Backbone'], function($, _, Backbone) {
}
dataSocket.onerror = function(e){
alert("socket err, please refresh");
console.log(e);
alert("socket err, please refresh");
}
});

View File

@ -8,7 +8,7 @@ var express = require("express"),
entities = require("entities"),
WebSocketServer = require('ws').Server;
function proxyWebServer(port,webSocketPort,proxyConfigPort,ruleSummary,recorder){
function proxyWebServer(port,webSocketPort,proxyConfigPort,ruleSummary,ipAddress){
var self = this;
if(arguments.length < 3){
@ -52,7 +52,8 @@ function proxyWebServer(port,webSocketPort,proxyConfigPort,ruleSummary,recorder)
res.end(util.simpleRender(indexHTML, {
rule : ruleSummary || "",
webSocketPort : webSocketPort,
proxyConfigPort : proxyConfigPort
proxyConfigPort : proxyConfigPort,
ipAddress : ipAddress || "127.0.0.1"
}));
}else{
next();
@ -60,7 +61,6 @@ function proxyWebServer(port,webSocketPort,proxyConfigPort,ruleSummary,recorder)
});
app.use(express.static(__dirname + '/web'));
app.listen(port);
//web socket interface
@ -83,9 +83,10 @@ function proxyWebServer(port,webSocketPort,proxyConfigPort,ruleSummary,recorder)
inherits(proxyWebServer, events.EventEmitter);
var param = process.argv.slice(2),
server = new proxyWebServer(param[0],param[1],param[2],param[3]),
server = new proxyWebServer(param[0],param[1],param[2],param[3],param[4]),
cbMap = {}; // id body cb
process.on("message",function(data){
if(data.type == "update"){