mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
https://github.com/vercel/next.js/security/advisories/GHSA-p9j2-gv94-2wf4
42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
// @ts-check
|
|
const http = require('http')
|
|
const process = require('process')
|
|
const { promisify } = require('util')
|
|
|
|
/**
|
|
* @returns {Promise<() => Promise<void>>} A promise that resolves to a function that closes the server
|
|
*/
|
|
function createServer(targetPort) {
|
|
const server = http.createServer((req, res) => {
|
|
const headers = req.headers
|
|
|
|
res.setHeader('Content-Type', 'application/json')
|
|
res.end(
|
|
JSON.stringify({
|
|
forwardedHost: headers['x-forwarded-host'],
|
|
host: headers['host'],
|
|
})
|
|
)
|
|
})
|
|
|
|
return new Promise((resolve, reject) => {
|
|
server.listen(targetPort, () => {
|
|
console.log(`Server listening on port ${targetPort}`)
|
|
resolve(promisify(server.close.bind(server)))
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = createServer
|
|
|
|
if (require.main === module) {
|
|
const targetPort = parseInt(process.env.TEST_TARGET_PORT, 10)
|
|
if (Number.isNaN(targetPort)) {
|
|
throw new Error('TEST_TARGET_PORT is not set or invalid')
|
|
}
|
|
createServer(targetPort).catch((err) => {
|
|
console.error(err)
|
|
process.exit(1)
|
|
})
|
|
}
|