mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-19 05:29:59 -06:00
67 lines
1.5 KiB
CoffeeScript
67 lines
1.5 KiB
CoffeeScript
http = require("http")
|
|
path = require("path")
|
|
httpsProxy = require("../../lib/proxy")
|
|
|
|
prx = null
|
|
|
|
pipe = (req, res) ->
|
|
req.pipe(request(req.url))
|
|
.on "error", ->
|
|
console.log "**ERROR**", req.url
|
|
req.statusCode = 500
|
|
res.end()
|
|
.pipe(res)
|
|
|
|
onConnect = (req, socket, head, proxy) ->
|
|
proxy.connect(req, socket, head, {
|
|
onDirectConnection: (req, socket, head) ->
|
|
req.url is "localhost:8444"
|
|
})
|
|
|
|
onRequest = (req, res) ->
|
|
pipe(req, res)
|
|
|
|
module.exports = {
|
|
reset: ->
|
|
httpsProxy.reset()
|
|
|
|
start: (port) ->
|
|
prx = http.createServer()
|
|
|
|
dir = path.join(process.cwd(), "ca")
|
|
|
|
httpsProxy.create(dir, port, {
|
|
onUpgrade: (req, socket, head) ->
|
|
|
|
onRequest: (req, res) ->
|
|
console.log "ON REQUEST FROM OUTER PROXY", req.url, req.headers, req.method
|
|
|
|
if req.url.includes("replace")
|
|
write = res.write
|
|
res.write = (chunk) ->
|
|
chunk = Buffer.from(chunk.toString().replace("https server", "replaced content"))
|
|
|
|
write.call(@, chunk)
|
|
|
|
pipe(req, res)
|
|
else
|
|
pipe(req, res)
|
|
})
|
|
.then (proxy) =>
|
|
prx.on "request", onRequest
|
|
|
|
prx.on "connect", (req, socket, head) ->
|
|
onConnect(req, socket, head, proxy)
|
|
|
|
new Promise (resolve) ->
|
|
prx.listen port, ->
|
|
prx.proxy = proxy
|
|
console.log "server listening on port: #{port}"
|
|
resolve(proxy)
|
|
|
|
stop: ->
|
|
new Promise (resolve) ->
|
|
prx.close(resolve)
|
|
.then ->
|
|
prx.proxy.close()
|
|
} |