Add complete system qualification evidence
This commit is contained in:
parent
775dd61963
commit
6952767503
1 changed files with 1256 additions and 84 deletions
46
web/tests/system/proxy.mjs
Normal file
46
web/tests/system/proxy.mjs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
import http from 'node:http'
|
||||
import net from 'node:net'
|
||||
|
||||
const upstreamHost = 'qualification-ingress'
|
||||
const upstreamPort = 80
|
||||
|
||||
const server = http.createServer((request, response) => {
|
||||
const upstream = http.request(
|
||||
{
|
||||
host: upstreamHost,
|
||||
port: upstreamPort,
|
||||
method: request.method,
|
||||
path: request.url,
|
||||
headers: { ...request.headers, host: upstreamHost },
|
||||
},
|
||||
(upstreamResponse) => {
|
||||
response.writeHead(
|
||||
upstreamResponse.statusCode ?? 502,
|
||||
upstreamResponse.headers,
|
||||
)
|
||||
upstreamResponse.pipe(response)
|
||||
},
|
||||
)
|
||||
upstream.on('error', () => {
|
||||
response.writeHead(502)
|
||||
response.end()
|
||||
})
|
||||
request.pipe(upstream)
|
||||
})
|
||||
|
||||
server.on('upgrade', (request, socket, head) => {
|
||||
const upstream = net.connect(upstreamPort, upstreamHost, () => {
|
||||
const headers = Object.entries(request.headers)
|
||||
.filter(([name]) => name.toLowerCase() !== 'host')
|
||||
.map(([name, value]) => `${name}: ${String(value)}`)
|
||||
.join('\r\n')
|
||||
upstream.write(
|
||||
`${request.method} ${request.url} HTTP/${request.httpVersion}\r\nHost: ${upstreamHost}\r\n${headers}\r\n\r\n`,
|
||||
)
|
||||
if (head.length > 0) upstream.write(head)
|
||||
socket.pipe(upstream).pipe(socket)
|
||||
})
|
||||
upstream.on('error', () => socket.destroy())
|
||||
})
|
||||
|
||||
server.listen(4174, '127.0.0.1')
|
||||
Loading…
Reference in a new issue