11"use strict" ;
22
3+ import fs from "node:fs" ;
34import http from "node:http" ;
45import https from "node:https" ;
56import { WebSocketServer } from "ws" ;
6- import { ConfigurableProxy } from "./configproxy.js" ;
7+ import { ConfigurableProxy , parseListenOptions } from "./configproxy.js" ;
78import { defaultLogger } from "./log.js" ;
89
910var servers = [ ] ;
1011
1112// TODO: make this an options dict
12- export function addTarget ( proxy , path , port , websocket , targetPath , sslOptions ) {
13- var proto = sslOptions ? "https" : "http" ;
14- var target = proto + "://127.0.0.1:" + port ;
13+ export function addTarget ( proxy , path , port , websocket , targetPath , sslOptions , unixSocketPath ) {
14+ var proto ;
15+ var listenTarget ;
16+ var target ;
17+
18+ if ( unixSocketPath ) {
19+ listenTarget = decodeURIComponent ( unixSocketPath ) ;
20+ proto = "http" ;
21+ target = "unix+" + proto + "://" + unixSocketPath ;
22+ } else {
23+ proto = sslOptions ? "https" : "http" ;
24+ target = proto + "://" + "127.0.0.1:" + port ;
25+ listenTarget = port ;
26+ }
27+
1528 if ( targetPath ) {
1629 target = target + targetPath ;
1730 }
@@ -48,7 +61,7 @@ export function addTarget(proxy, path, port, websocket, targetPath, sslOptions)
4861 } ) ;
4962 }
5063
51- server . listen ( port ) ;
64+ server . listen ( listenTarget ) ;
5265 servers . push ( server ) ;
5366 return proxy . addRoute ( path , { target : target } ) . then ( ( ) => {
5467 // routes are created with an activity timestamp artificially shifted into the past
@@ -87,14 +100,16 @@ export function addTargets(proxy, paths, port) {
87100 } ) ;
88101}
89102
90- export function setupProxy ( port , options , paths ) {
103+ export function setupProxy ( listenOptions , options , paths ) {
91104 options = options || { } ;
92105 options . authToken = "secret" ;
93106 options . log = defaultLogger ( { level : "error" } ) ;
94-
107+ var listen = parseListenOptions ( listenOptions , options . log ) ;
108+ var port = listen . port || 8000 ;
109+ var ip = listen . ip ;
95110 var proxy = new ConfigurableProxy ( options ) ;
96111 proxy . _setup_timestamp = new Date ( new Date ( ) . getTime ( ) - 60000 ) ;
97- var ip = "127.0.0.1" ;
112+
98113 var countdown = 2 ;
99114 var resolvePromise ;
100115
@@ -134,10 +149,10 @@ export function setupProxy(port, options, paths) {
134149 proxy . proxyServer . on ( "listening" , onlisten ) ;
135150
136151 addTargets ( proxy , paths || [ "/" ] , port + 2 ) . then ( function ( ) {
137- proxy . proxyServer . listen ( port , ip ) ;
138- proxy . apiServer . listen ( port + 1 , ip ) ;
152+ proxy . proxyServer . listen ( ... listen . proxyTarget ) ;
153+ proxy . apiServer . listen ( ... listen . apiTarget ) ;
139154 if ( options . enableMetrics ) {
140- proxy . metricsServer . listen ( port + 3 , ip ) ;
155+ proxy . metricsServer . listen ( ... listen . metricsTarget ) ;
141156 }
142157 } ) ;
143158 return p ;
@@ -154,7 +169,6 @@ export function teardownServers(callback) {
154169 } ;
155170 for ( var i = servers . length - 1 ; i >= 0 ; i -- ) {
156171 servers [ i ] . close ( onclose ) ;
157-
158172 // closeAllConnections is implied in close in node >=19
159173 // but this avoids waits between all tests with node 18
160174 servers [ i ] . closeAllConnections ( ) ;
0 commit comments