fix(tests): use high non-privileged ports in tests to avoid conflicts and CI failures
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-02-21 - 25.7.9 - fix(tests)
|
||||||
|
use high non-privileged ports in tests to avoid conflicts and CI failures
|
||||||
|
|
||||||
|
- Updated multiple test files to use high-range, non-privileged ports instead of well-known or conflicting ports.
|
||||||
|
- Files changed: test/test.acme-http01-challenge.ts, test/test.connection-forwarding.ts, test/test.forwarding-regression.ts, test/test.http-port8080-forwarding.ts, test/test.port-mapping.ts, test/test.smartproxy.ts, test/test.socket-handler.ts.
|
||||||
|
- Notable port remappings: 8080/8081 -> 47730/47731 (and other proxy ports like 47710), 8443 -> 47711, 7001/7002 -> 47712/47713, 9090 -> 47721, 8181/8182 -> 47732/47733, 9999 -> 47780, TEST_PORT_START/PROXY_PORT_START -> 47750/48750, and TEST_SERVER_PORT/PROXY_PORT -> 47770/47771.
|
||||||
|
|
||||||
## 2026-02-19 - 25.7.8 - fix(no-changes)
|
## 2026-02-19 - 25.7.8 - fix(no-changes)
|
||||||
no changes detected; nothing to release
|
no changes detected; nothing to release
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ tap.test('should correctly handle HTTP-01 challenge requests with initial data c
|
|||||||
routes: [{
|
routes: [{
|
||||||
name: 'acme-challenge-route',
|
name: 'acme-challenge-route',
|
||||||
match: {
|
match: {
|
||||||
ports: 8080,
|
ports: 47700,
|
||||||
path: '/.well-known/acme-challenge/*'
|
path: '/.well-known/acme-challenge/*'
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -60,7 +60,7 @@ tap.test('should correctly handle HTTP-01 challenge requests with initial data c
|
|||||||
|
|
||||||
// Connect to the proxy and send the HTTP-01 challenge request
|
// Connect to the proxy and send the HTTP-01 challenge request
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
testClient.connect(8080, 'localhost', () => {
|
testClient.connect(47700, 'localhost', () => {
|
||||||
// Send HTTP request for the challenge token
|
// Send HTTP request for the challenge token
|
||||||
testClient.write(
|
testClient.write(
|
||||||
`GET ${challengePath} HTTP/1.1\r\n` +
|
`GET ${challengePath} HTTP/1.1\r\n` +
|
||||||
@@ -113,7 +113,7 @@ tap.test('should return 404 for non-existent challenge tokens', async (tapTest)
|
|||||||
routes: [{
|
routes: [{
|
||||||
name: 'acme-challenge-route',
|
name: 'acme-challenge-route',
|
||||||
match: {
|
match: {
|
||||||
ports: 8081,
|
ports: 47701,
|
||||||
path: '/.well-known/acme-challenge/*'
|
path: '/.well-known/acme-challenge/*'
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -135,7 +135,7 @@ tap.test('should return 404 for non-existent challenge tokens', async (tapTest)
|
|||||||
|
|
||||||
// Connect and send a request for a non-existent token
|
// Connect and send a request for a non-existent token
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
testClient.connect(8081, 'localhost', () => {
|
testClient.connect(47701, 'localhost', () => {
|
||||||
testClient.write(
|
testClient.write(
|
||||||
'GET /.well-known/acme-challenge/invalid-token HTTP/1.1\r\n' +
|
'GET /.well-known/acme-challenge/invalid-token HTTP/1.1\r\n' +
|
||||||
'Host: test.example.com\r\n' +
|
'Host: test.example.com\r\n' +
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ tap.test('setup test servers', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await new Promise<void>((resolve) => {
|
await new Promise<void>((resolve) => {
|
||||||
testServer.listen(7001, '127.0.0.1', () => {
|
testServer.listen(47712, '127.0.0.1', () => {
|
||||||
console.log('TCP test server listening on port 7001');
|
console.log('TCP test server listening on port 47712');
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -45,8 +45,8 @@ tap.test('setup test servers', async () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
await new Promise<void>((resolve) => {
|
await new Promise<void>((resolve) => {
|
||||||
tlsTestServer.listen(7002, '127.0.0.1', () => {
|
tlsTestServer.listen(47713, '127.0.0.1', () => {
|
||||||
console.log('TLS test server listening on port 7002');
|
console.log('TLS test server listening on port 47713');
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -60,13 +60,13 @@ tap.test('should forward TCP connections correctly', async () => {
|
|||||||
{
|
{
|
||||||
name: 'tcp-forward',
|
name: 'tcp-forward',
|
||||||
match: {
|
match: {
|
||||||
ports: 8080,
|
ports: 47710,
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
type: 'forward',
|
type: 'forward',
|
||||||
targets: [{
|
targets: [{
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
port: 7001,
|
port: 47712,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -77,7 +77,7 @@ tap.test('should forward TCP connections correctly', async () => {
|
|||||||
|
|
||||||
// Test TCP forwarding
|
// Test TCP forwarding
|
||||||
const client = await new Promise<net.Socket>((resolve, reject) => {
|
const client = await new Promise<net.Socket>((resolve, reject) => {
|
||||||
const socket = net.connect(8080, '127.0.0.1', () => {
|
const socket = net.connect(47710, '127.0.0.1', () => {
|
||||||
console.log('Connected to proxy');
|
console.log('Connected to proxy');
|
||||||
resolve(socket);
|
resolve(socket);
|
||||||
});
|
});
|
||||||
@@ -106,7 +106,7 @@ tap.test('should handle TLS passthrough correctly', async () => {
|
|||||||
{
|
{
|
||||||
name: 'tls-passthrough',
|
name: 'tls-passthrough',
|
||||||
match: {
|
match: {
|
||||||
ports: 8443,
|
ports: 47711,
|
||||||
domains: 'test.example.com',
|
domains: 'test.example.com',
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -116,7 +116,7 @@ tap.test('should handle TLS passthrough correctly', async () => {
|
|||||||
},
|
},
|
||||||
targets: [{
|
targets: [{
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
port: 7002,
|
port: 47713,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -129,7 +129,7 @@ tap.test('should handle TLS passthrough correctly', async () => {
|
|||||||
const client = await new Promise<tls.TLSSocket>((resolve, reject) => {
|
const client = await new Promise<tls.TLSSocket>((resolve, reject) => {
|
||||||
const socket = tls.connect(
|
const socket = tls.connect(
|
||||||
{
|
{
|
||||||
port: 8443,
|
port: 47711,
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
servername: 'test.example.com',
|
servername: 'test.example.com',
|
||||||
rejectUnauthorized: false,
|
rejectUnauthorized: false,
|
||||||
@@ -164,7 +164,7 @@ tap.test('should handle SNI-based forwarding', async () => {
|
|||||||
{
|
{
|
||||||
name: 'domain-a',
|
name: 'domain-a',
|
||||||
match: {
|
match: {
|
||||||
ports: 8443,
|
ports: 47711,
|
||||||
domains: 'a.example.com',
|
domains: 'a.example.com',
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -174,14 +174,14 @@ tap.test('should handle SNI-based forwarding', async () => {
|
|||||||
},
|
},
|
||||||
targets: [{
|
targets: [{
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
port: 7002,
|
port: 47713,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'domain-b',
|
name: 'domain-b',
|
||||||
match: {
|
match: {
|
||||||
ports: 8443,
|
ports: 47711,
|
||||||
domains: 'b.example.com',
|
domains: 'b.example.com',
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -191,7 +191,7 @@ tap.test('should handle SNI-based forwarding', async () => {
|
|||||||
},
|
},
|
||||||
targets: [{
|
targets: [{
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
port: 7002,
|
port: 47713,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -204,7 +204,7 @@ tap.test('should handle SNI-based forwarding', async () => {
|
|||||||
const clientA = await new Promise<tls.TLSSocket>((resolve, reject) => {
|
const clientA = await new Promise<tls.TLSSocket>((resolve, reject) => {
|
||||||
const socket = tls.connect(
|
const socket = tls.connect(
|
||||||
{
|
{
|
||||||
port: 8443,
|
port: 47711,
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
servername: 'a.example.com',
|
servername: 'a.example.com',
|
||||||
rejectUnauthorized: false,
|
rejectUnauthorized: false,
|
||||||
@@ -231,7 +231,7 @@ tap.test('should handle SNI-based forwarding', async () => {
|
|||||||
const clientB = await new Promise<tls.TLSSocket>((resolve, reject) => {
|
const clientB = await new Promise<tls.TLSSocket>((resolve, reject) => {
|
||||||
const socket = tls.connect(
|
const socket = tls.connect(
|
||||||
{
|
{
|
||||||
port: 8443,
|
port: 47711,
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
servername: 'b.example.com',
|
servername: 'b.example.com',
|
||||||
rejectUnauthorized: false,
|
rejectUnauthorized: false,
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ tap.test('forward connections should not be immediately closed', async (t) => {
|
|||||||
|
|
||||||
// Listen on a non-privileged port
|
// Listen on a non-privileged port
|
||||||
await new Promise<void>((resolve) => {
|
await new Promise<void>((resolve) => {
|
||||||
testServer.listen(9090, '127.0.0.1', () => {
|
testServer.listen(47721, '127.0.0.1', () => {
|
||||||
console.log('Test server listening on port 9090');
|
console.log('Test server listening on port 47721');
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -34,13 +34,13 @@ tap.test('forward connections should not be immediately closed', async (t) => {
|
|||||||
{
|
{
|
||||||
name: 'forward-test',
|
name: 'forward-test',
|
||||||
match: {
|
match: {
|
||||||
ports: 8080,
|
ports: 47720,
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
type: 'forward',
|
type: 'forward',
|
||||||
targets: [{
|
targets: [{
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
port: 9090,
|
port: 47721,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -51,7 +51,7 @@ tap.test('forward connections should not be immediately closed', async (t) => {
|
|||||||
|
|
||||||
// Create a client connection through the proxy
|
// Create a client connection through the proxy
|
||||||
const client = net.createConnection({
|
const client = net.createConnection({
|
||||||
port: 8080,
|
port: 47720,
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import * as http from 'http';
|
|||||||
|
|
||||||
tap.test('should forward HTTP connections on port 8080', async (tapTest) => {
|
tap.test('should forward HTTP connections on port 8080', async (tapTest) => {
|
||||||
// Create a mock HTTP server to act as our target
|
// Create a mock HTTP server to act as our target
|
||||||
const targetPort = 8181;
|
const targetPort = 47732;
|
||||||
let receivedRequest = false;
|
let receivedRequest = false;
|
||||||
let receivedPath = '';
|
let receivedPath = '';
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ tap.test('should forward HTTP connections on port 8080', async (tapTest) => {
|
|||||||
routes: [{
|
routes: [{
|
||||||
name: 'test-route',
|
name: 'test-route',
|
||||||
match: {
|
match: {
|
||||||
ports: 8080
|
ports: 47730
|
||||||
// Remove domain restriction for HTTP connections
|
// Remove domain restriction for HTTP connections
|
||||||
// Domain matching happens after HTTP headers are received
|
// Domain matching happens after HTTP headers are received
|
||||||
},
|
},
|
||||||
@@ -55,7 +55,7 @@ tap.test('should forward HTTP connections on port 8080', async (tapTest) => {
|
|||||||
// Make an HTTP request to port 8080
|
// Make an HTTP request to port 8080
|
||||||
const options = {
|
const options = {
|
||||||
hostname: 'localhost',
|
hostname: 'localhost',
|
||||||
port: 8080,
|
port: 47730,
|
||||||
path: '/.well-known/acme-challenge/test-token',
|
path: '/.well-known/acme-challenge/test-token',
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -104,7 +104,7 @@ tap.test('should forward HTTP connections on port 8080', async (tapTest) => {
|
|||||||
|
|
||||||
tap.test('should handle basic HTTP request forwarding', async (tapTest) => {
|
tap.test('should handle basic HTTP request forwarding', async (tapTest) => {
|
||||||
// Create a simple target server
|
// Create a simple target server
|
||||||
const targetPort = 8182;
|
const targetPort = 47733;
|
||||||
let receivedRequest = false;
|
let receivedRequest = false;
|
||||||
|
|
||||||
const targetServer = http.createServer((req, res) => {
|
const targetServer = http.createServer((req, res) => {
|
||||||
@@ -126,7 +126,7 @@ tap.test('should handle basic HTTP request forwarding', async (tapTest) => {
|
|||||||
routes: [{
|
routes: [{
|
||||||
name: 'simple-forward',
|
name: 'simple-forward',
|
||||||
match: {
|
match: {
|
||||||
ports: 8081
|
ports: 47731
|
||||||
// Remove domain restriction for HTTP connections
|
// Remove domain restriction for HTTP connections
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -142,7 +142,7 @@ tap.test('should handle basic HTTP request forwarding', async (tapTest) => {
|
|||||||
// Make request
|
// Make request
|
||||||
const options = {
|
const options = {
|
||||||
hostname: 'localhost',
|
hostname: 'localhost',
|
||||||
port: 8081,
|
port: 47731,
|
||||||
path: '/test',
|
path: '/test',
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import type { IRouteConfig, IRouteContext } from '../ts/proxies/smart-proxy/mode
|
|||||||
let testServers: Array<{ server: net.Server; port: number }> = [];
|
let testServers: Array<{ server: net.Server; port: number }> = [];
|
||||||
let smartProxy: SmartProxy;
|
let smartProxy: SmartProxy;
|
||||||
|
|
||||||
const TEST_PORT_START = 4000;
|
const TEST_PORT_START = 47750;
|
||||||
const PROXY_PORT_START = 5000;
|
const PROXY_PORT_START = 48750;
|
||||||
const TEST_DATA = 'Hello through dynamic port mapper!';
|
const TEST_DATA = 'Hello through dynamic port mapper!';
|
||||||
|
|
||||||
// Cleanup function to close all servers and proxies
|
// Cleanup function to close all servers and proxies
|
||||||
@@ -103,9 +103,9 @@ function createTestClient(port: number, data: string): Promise<string> {
|
|||||||
tap.test('setup port mapping test environment', async () => {
|
tap.test('setup port mapping test environment', async () => {
|
||||||
// Create multiple test servers on different ports
|
// Create multiple test servers on different ports
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
createTestServer(TEST_PORT_START), // Server on port 4000
|
createTestServer(TEST_PORT_START), // Server on port 47750
|
||||||
createTestServer(TEST_PORT_START + 1), // Server on port 4001
|
createTestServer(TEST_PORT_START + 1), // Server on port 47751
|
||||||
createTestServer(TEST_PORT_START + 2), // Server on port 4002
|
createTestServer(TEST_PORT_START + 2), // Server on port 47752
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Create a SmartProxy with dynamic port mapping routes
|
// Create a SmartProxy with dynamic port mapping routes
|
||||||
@@ -119,7 +119,7 @@ tap.test('setup port mapping test environment', async () => {
|
|||||||
name: 'Identity Port Mapping'
|
name: 'Identity Port Mapping'
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// Offset port mapping from 5001 to 4001 (offset -1000)
|
// Offset port mapping from 48751 to 47751 (offset -1000)
|
||||||
createOffsetPortMappingRoute({
|
createOffsetPortMappingRoute({
|
||||||
ports: PROXY_PORT_START + 1,
|
ports: PROXY_PORT_START + 1,
|
||||||
targetHost: 'localhost',
|
targetHost: 'localhost',
|
||||||
@@ -170,13 +170,13 @@ tap.test('setup port mapping test environment', async () => {
|
|||||||
await smartProxy.start();
|
await smartProxy.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Test 1: Simple identity port mapping (5000 -> 4000)
|
// Test 1: Simple identity port mapping (48750 -> 47750)
|
||||||
tap.test('should map port using identity function', async () => {
|
tap.test('should map port using identity function', async () => {
|
||||||
const response = await createTestClient(PROXY_PORT_START, TEST_DATA);
|
const response = await createTestClient(PROXY_PORT_START, TEST_DATA);
|
||||||
expect(response).toEqual(`Server ${TEST_PORT_START} says: ${TEST_DATA}`);
|
expect(response).toEqual(`Server ${TEST_PORT_START} says: ${TEST_DATA}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Test 2: Offset port mapping (5001 -> 4001)
|
// Test 2: Offset port mapping (48751 -> 47751)
|
||||||
tap.test('should map port using offset function', async () => {
|
tap.test('should map port using offset function', async () => {
|
||||||
const response = await createTestClient(PROXY_PORT_START + 1, TEST_DATA);
|
const response = await createTestClient(PROXY_PORT_START + 1, TEST_DATA);
|
||||||
expect(response).toEqual(`Server ${TEST_PORT_START + 1} says: ${TEST_DATA}`);
|
expect(response).toEqual(`Server ${TEST_PORT_START + 1} says: ${TEST_DATA}`);
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { SmartProxy } from '../ts/proxies/smart-proxy/index.js';
|
|||||||
|
|
||||||
let testServer: net.Server;
|
let testServer: net.Server;
|
||||||
let smartProxy: SmartProxy;
|
let smartProxy: SmartProxy;
|
||||||
const TEST_SERVER_PORT = 4000;
|
const TEST_SERVER_PORT = 47770;
|
||||||
const PROXY_PORT = 4001;
|
const PROXY_PORT = 47771;
|
||||||
const TEST_DATA = 'Hello through port proxy!';
|
const TEST_DATA = 'Hello through port proxy!';
|
||||||
|
|
||||||
// Track all created servers and proxies for proper cleanup
|
// Track all created servers and proxies for proper cleanup
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ tap.test('setup socket handler test', async () => {
|
|||||||
const routes: IRouteConfig[] = [{
|
const routes: IRouteConfig[] = [{
|
||||||
name: 'echo-handler',
|
name: 'echo-handler',
|
||||||
match: {
|
match: {
|
||||||
ports: 9999
|
ports: 47780
|
||||||
// No domains restriction - matches all connections
|
// No domains restriction - matches all connections
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@@ -43,7 +43,7 @@ tap.test('should handle socket with custom function', async () => {
|
|||||||
let response = '';
|
let response = '';
|
||||||
|
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
client.connect(9999, 'localhost', () => {
|
client.connect(47780, 'localhost', () => {
|
||||||
console.log('Client connected to proxy');
|
console.log('Client connected to proxy');
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
@@ -78,7 +78,7 @@ tap.test('should handle async socket handler', async () => {
|
|||||||
// Update route with async handler
|
// Update route with async handler
|
||||||
await proxy.updateRoutes([{
|
await proxy.updateRoutes([{
|
||||||
name: 'async-handler',
|
name: 'async-handler',
|
||||||
match: { ports: 9999 },
|
match: { ports: 47780 },
|
||||||
action: {
|
action: {
|
||||||
type: 'socket-handler',
|
type: 'socket-handler',
|
||||||
socketHandler: async (socket, context) => {
|
socketHandler: async (socket, context) => {
|
||||||
@@ -108,7 +108,7 @@ tap.test('should handle async socket handler', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
client.connect(9999, 'localhost', () => {
|
client.connect(47780, 'localhost', () => {
|
||||||
// Send initial data to trigger the handler
|
// Send initial data to trigger the handler
|
||||||
client.write('test data\n');
|
client.write('test data\n');
|
||||||
resolve();
|
resolve();
|
||||||
@@ -131,7 +131,7 @@ tap.test('should handle errors in socket handler', async () => {
|
|||||||
// Update route with error-throwing handler
|
// Update route with error-throwing handler
|
||||||
await proxy.updateRoutes([{
|
await proxy.updateRoutes([{
|
||||||
name: 'error-handler',
|
name: 'error-handler',
|
||||||
match: { ports: 9999 },
|
match: { ports: 47780 },
|
||||||
action: {
|
action: {
|
||||||
type: 'socket-handler',
|
type: 'socket-handler',
|
||||||
socketHandler: (socket, context) => {
|
socketHandler: (socket, context) => {
|
||||||
@@ -148,7 +148,7 @@ tap.test('should handle errors in socket handler', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
client.connect(9999, 'localhost', () => {
|
client.connect(47780, 'localhost', () => {
|
||||||
// Connection established - send data to trigger handler
|
// Connection established - send data to trigger handler
|
||||||
client.write('trigger\n');
|
client.write('trigger\n');
|
||||||
resolve();
|
resolve();
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartproxy',
|
name: '@push.rocks/smartproxy',
|
||||||
version: '25.7.8',
|
version: '25.7.9',
|
||||||
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user