add stop btn to web interface

This commit is contained in:
加里 2014-09-02 15:59:58 +08:00
parent 4bffdf8224
commit c5624a3c6b
6 changed files with 55 additions and 6 deletions

View File

@ -1,8 +1,17 @@
module.exports = {
shouldUseLocalResponse : function(req,reqBody){
//intercept all options request
if(req.method == "OPTIONS"){
return true;
}else{
return false;
}
},
dealLocalResponse : function(req,reqBody,callback){
if(req.method == "OPTIONS"){
callback(200,mergeCORSHeader(req.headers),"");
}
},
replaceRequestProtocol:function(req,protocol){
@ -18,6 +27,7 @@ module.exports = {
},
replaceResponseHeader: function(req,res,header){
return mergeCORSHeader(req.headers, header);
},
replaceServerResData: function(req,res,serverResData){
@ -28,4 +38,20 @@ module.exports = {
shouldInterceptHttpsReq :function(req){
}
};
};
function mergeCORSHeader(reqHeader,originHeader){
var targetObj = originHeader || {};
delete targetObj["Access-Control-Allow-Credentials"];
delete targetObj["Access-Control-Allow-Origin"];
delete targetObj["Access-Control-Allow-Methods"];
delete targetObj["Access-Control-Allow-Headers"];
targetObj["access-control-allow-credentials"] = "true";
targetObj["access-control-allow-origin"] = reqHeader['origin'] || "-___-||";
targetObj["access-control-allow-methods"] = "GET, POST, PUT";
targetObj["access-control-allow-headers"] = reqHeader['access-control-request-headers'] || "-___-||";
return targetObj;
}

View File

@ -1,6 +1,6 @@
{
"name": "anyproxy",
"version": "2.1.0",
"version": "2.1.1",
"description": "a charles/fiddler like proxy written in NodeJs, which can handle HTTPS requests and CROS perfectly.",
"main": "proxy.js",
"bin": {

View File

@ -144,9 +144,7 @@ function startWebServer(port){
//web socket interface
var wss = new WebSocketServer({port: DEFAULT_WEBSOCKET_PORT});
wss.on("connection",function(ws){
console.log("wss connection");
});
wss.on("connection",function(ws){});
wss.broadcast = function(data) {
for(var i in this.clients){
this.clients[i].send(data);

View File

@ -13,6 +13,10 @@
margin: 0 5px;
}
.topHead .btn_disable{
color: #777;
}
.mainTableWrapper{
margin-top: 0;
}

View File

@ -9,6 +9,8 @@
<div class="topHead">
<h1>Anyproxy</h1>
<a href="#" class="J_clearBtn"><span class="topBtn">Clear Logs(Ctrl+X)</span></a>
<a href="#" class="J_statusBtn"><span class="topBtn">Stop</span></a>
<a href="#" class="J_statusBtn btn_disable"><span class="topBtn">Resume</span></a>
</div>
<div class="mainTableWrapper J_mainTable">

View File

@ -13,7 +13,6 @@ seajs.use(['$','Underscore' ,'Backbone'], function($, _, Backbone) {
$(function(){
//record detail
//backbone太麻烦了这里手写拉倒..
var DetailView = function(){
var self = this,
$detailEl = $(".J_recordDetailOverlay"),
@ -153,6 +152,25 @@ seajs.use(['$','Underscore' ,'Backbone'], function($, _, Backbone) {
recList.reset();
}
//pause btn
var ifPause = false;
(function(){
var statusBtn = $(".J_statusBtn");
statusBtn.on("click",function(e){
e.stopPropagation();
e.preventDefault();
$(".J_statusBtn").removeClass("btn_disable");
$(this).addClass("btn_disable");
if(/stop/i.test($(this).html()) ){
ifPause = true;
}else{
ifPause = false;
}
});
})();
//data via web socket
if(!WebSocket){
alert("WebSocket is required. Please use a modern browser.");
@ -162,6 +180,7 @@ seajs.use(['$','Underscore' ,'Backbone'], function($, _, Backbone) {
dataSocket.onopen = function(){}
dataSocket.onmessage = function(event){
if(ifPause) return;
var data = JSON.parse(event.data);
var reqDate = new Date(data.startTime);