From 1ee5bdea941b20745bb2b711f861719c71288723 Mon Sep 17 00:00:00 2001 From: cilame Date: Fri, 5 Aug 2022 00:14:28 +0800 Subject: [PATCH] add --- tools/model_funcs.js | 126 +++++++++++++++++++++++++++++-------------- 1 file changed, 86 insertions(+), 40 deletions(-) diff --git a/tools/model_funcs.js b/tools/model_funcs.js index 1500ac5..2ea6415 100644 --- a/tools/model_funcs.js +++ b/tools/model_funcs.js @@ -86,7 +86,9 @@ app.listen(INTERFACE_PORT, function(){ function mk_proxy_code(){ var PROXY_HTTP_PORT = 3000 +var GET_HTTP_PORT = 3100 var PROXY_HTTP_PORT_XML = 3001 +var GET_HTTP_PORT_XML = 3101 var INTERFACE_SHOW_PORT = 3333 var zlib = require('zlib') @@ -369,74 +371,101 @@ function get_cookie_local(callback){ global.conn.send(JSON.stringify({type:'do_change'})) resqueue.unshift({json: callback}) } -function handle_proxy(req, res) { - if (global.conn){ - get_cookie_local(function(v){ - var message = v.message - if(message){ - if (message.headers){ - if (message.headers['Cookie'] || req.headers.cookie){ - req.headers.cookie = message.headers['Cookie'] || req.headers.cookie - } - if (message.headers['User-Agent'] || req.headers['user-agent']){ - req.headers['user-agent'] = message.headers['User-Agent'] || req.headers['user-agent'] - } +function get_response(res, msg){ + res.writeHead(200, {'Content-type': 'application/json;charset=utf-8'}) + res.write(msg) + res.end() +} +function get_cookie_response(type, req, res){ + return function(v){ + var message = v.message + if(message){ + if (message.headers){ + if (message.headers['Cookie'] || req.headers.cookie){ + req.headers.cookie = message.headers['Cookie'] || req.headers.cookie } + if (message.headers['User-Agent'] || req.headers['user-agent']){ + req.headers['user-agent'] = message.headers['User-Agent'] || req.headers['user-agent'] + } + } + if (type == 'proxy'){ proxy.web(req, res, { target: message.href }, function(e){ console.log('[!] proxy error.') console.log(e) }); }else{ - error(res, '

no message obj.

') + get_response(res, JSON.stringify(message)) } - }) + }else{ + error(res, '

no message obj.

') + } + } +} +function handle_proxy(req, res) { + if (global.conn){ + get_cookie_local(get_cookie_response('proxy', req, res)) + }else{ + error(res, '

wss not start.

') + } +} +function handle_proxy_bk(req, res) { + if (global.conn){ + get_cookie_local(get_cookie_response(undefined, req, res)) }else{ error(res, '

wss not start.

') } } - var http = require('http') http.createServer(handle_proxy).listen(PROXY_HTTP_PORT, function(){ console.log('proxy http start @', PROXY_HTTP_PORT) }) +http.createServer(handle_proxy_bk).listen(GET_HTTP_PORT, function(){ console.log('proxy http start @', GET_HTTP_PORT) }) // hook xml http request -var app = express(); -var router = express.Router(); function get_xml_req_hook(callback, info){ info = info || {} info.type = 'xmlhttprequest' global.conn.send(JSON.stringify(info)) resqueue.unshift({json: callback}) } -router.all('*', function(req, res){ - if (global.conn){ - var data = {url: req.url.replace(/^https?:\/\/[^/]+/g, ''), method: req.method, body: req.body} - get_xml_req_hook(function(v){ - if(v.message.error){ - error(res, '
message.error
') - return +function mk_xml_callback(type, req, res){ + return function (v){ + if(v.message.error){ + error(res, '
message.error
') + return + } + var message = v.message.collect[0] + if(message){ + message = message[1] + if (message.headers){ + if (message.headers['Cookie'] || req.headers.cookie){ + req.headers.cookie = message.headers['Cookie'] || req.headers.cookie + } + if (message.headers['User-Agent'] || req.headers['user-agent']){ + req.headers['user-agent'] = message.headers['User-Agent'] || req.headers['user-agent'] + } } - var message = v.message.collect[0] - if(message){ - message = message[1] - if (message.headers){ - if (message.headers['Cookie'] || req.headers.cookie){ - req.headers.cookie = message.headers['Cookie'] || req.headers.cookie - } - if (message.headers['User-Agent'] || req.headers['user-agent']){ - req.headers['user-agent'] = message.headers['User-Agent'] || req.headers['user-agent'] - } - } - if (req.method == 'POST'){ - req.body = message.data - } + if (req.method == 'POST'){ + req.body = message.data + } + if (type == 'proxy'){ proxy.web(req, res, { target: message.href }, function(e){ console.log('[!] proxy error.') console.log(e) }); }else{ - error(res, '

no message obj.

') + get_response(res, JSON.stringify(message)) } - }, {data: JSON.stringify(data)}) + }else{ + error(res, '

no message obj.

') + } + } +} + +var app = express(); +var router = express.Router(); +router.all('*', function(req, res){ + if (global.conn){ + var data = {url: req.url.replace(/^https?:\/\/[^/]+/g, ''), method: req.method, body: req.body} + get_xml_req_hook(mk_xml_callback('proxy', req, res), {data: JSON.stringify(data)}) }else{ error(res, '

wss not start.

') } @@ -447,6 +476,23 @@ router.all('*', function(req, res){ app.use(bodyParser.text({inflate: true, limit: '50mb', type: function(){return true}})); app.use('/', router); app.listen(PROXY_HTTP_PORT_XML, function(){ console.log('xml start @', PROXY_HTTP_PORT_XML) }) + +var app = express(); +var router = express.Router(); +router.all('*', function(req, res){ + if (global.conn){ + var data = {url: req.url.replace(/^https?:\/\/[^/]+/g, ''), method: req.method, body: req.body} + get_xml_req_hook(mk_xml_callback(undefined, req, res), {data: JSON.stringify(data)}) + }else{ + error(res, '

wss not start.

') + } + if (!global.conn){ + return res.json({message: 'browser not start.'}) + } +}) +app.use(bodyParser.text({inflate: true, limit: '50mb', type: function(){return true}})); +app.use('/', router); +app.listen(GET_HTTP_PORT_XML, function(){ console.log('xml start @', GET_HTTP_PORT_XML) }) }