小调整

pull/299/head^2
王良 2024-04-17 17:49:35 +08:00
parent 3fde235c90
commit 3968272843
4 changed files with 29 additions and 16 deletions

View File

@ -60,7 +60,11 @@ module.exports = {
head: tags + '\r\n' head: tags + '\r\n'
} }
} catch (err) { } catch (err) {
try {
res.setHeader('DS-Script-Interceptor', 'error') res.setHeader('DS-Script-Interceptor', 'error')
} catch (e) {
// ignore
}
log.error('load monkey script error', err) log.error('load monkey script error', err)
} }
}, },

View File

@ -12,9 +12,9 @@ const proxy = require('./impl/req/proxy')
const sni = require('./impl/req/sni') const sni = require('./impl/req/sni')
// response interceptor impls // response interceptor impls
const responseReplace = require('./impl/res/responseReplace')
const cacheRes = require('./impl/res/cacheRes') const cacheRes = require('./impl/res/cacheRes')
const script = require('./impl/res/script') const script = require('./impl/res/script')
const responseReplace = require('./impl/res/responseReplace')
module.exports = [ module.exports = [
// request interceptor impls // request interceptor impls

View File

@ -36,7 +36,7 @@ function loadScript (content, scriptName) {
const sc = { const sc = {
grant: [], grant: [],
match: [], match: [],
content: '' script: ''
} }
for (const string of confItemArr) { for (const string of confItemArr) {
const reg = new RegExp('.*@([^\\s]+)\\s(.+)') const reg = new RegExp('.*@([^\\s]+)\\s(.+)')
@ -80,7 +80,8 @@ const api = {
// scripts.jquery = { script: readFile(rootDir, 'jquery.min.js') } // scripts.jquery = { script: readFile(rootDir, 'jquery.min.js') }
scripts.global = { script: readFile(rootDir, 'global.script') } scripts.global = { script: readFile(rootDir, 'global.script') }
return scripts return scripts
} },
loadScript
} }
module.exports = api module.exports = api

View File

@ -64,7 +64,7 @@ module.exports = function createRequestHandler (createIntercepts, middlewares, e
if (!reqIncpt.requestIntercept) { if (!reqIncpt.requestIntercept) {
continue continue
} }
const goNext = reqIncpt.requestIntercept(context, req, res, ssl) const goNext = reqIncpt.requestIntercept(context, req, res, ssl, next)
if (goNext) { if (goNext) {
next() next()
return return
@ -252,7 +252,12 @@ module.exports = function createRequestHandler (createIntercepts, middlewares, e
let head = '' let head = ''
let body = '' let body = ''
for (const resIncpt of resIncpts) { for (const resIncpt of resIncpts) {
const append = resIncpt.responseIntercept(context, req, res, proxyReq, proxyRes, ssl) const append = resIncpt.responseIntercept(context, req, res, proxyReq, proxyRes, ssl, next)
// 判断是否已经关闭
if (res.writableEnded) {
next()
return
}
if (append) { if (append) {
if (append.head) { if (append.head) {
head += append.head head += append.head
@ -260,10 +265,8 @@ module.exports = function createRequestHandler (createIntercepts, middlewares, e
if (append.body) { if (append.body) {
body += append.body body += append.body
} }
} } else if (append === false) {
if (res.writableEnded) { break // 返回false表示终止拦截器跳出循环
next()
return
} }
} }
InsertScriptMiddleware.responseInterceptor(req, res, proxyReq, proxyRes, ssl, next, { InsertScriptMiddleware.responseInterceptor(req, res, proxyReq, proxyRes, ssl, next, {
@ -302,6 +305,9 @@ module.exports = function createRequestHandler (createIntercepts, middlewares, e
} }
})().catch(e => { })().catch(e => {
if (!res.writableEnded) { if (!res.writableEnded) {
log.error('Request error:', e)
try {
const status = e.status || 500 const status = e.status || 500
res.writeHead(status, { 'Content-Type': 'text/html;charset=UTF8' }) res.writeHead(status, { 'Content-Type': 'text/html;charset=UTF8' })
res.write(`DevSidecar Error:<br/> res.write(`DevSidecar Error:<br/>
@ -309,7 +315,9 @@ module.exports = function createRequestHandler (createIntercepts, middlewares, e
目标地址${rOptions.protocol}//${rOptions.hostname}:${rOptions.port}${rOptions.path}` 目标地址${rOptions.protocol}//${rOptions.hostname}:${rOptions.port}${rOptions.path}`
) )
res.end() res.end()
log.error('Request error:', e) } catch (e) {
// do nothing
}
} }
}) })
} }