Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ddd0662fb8 | |||
| 11bc0dde6c | |||
| 610d691244 | |||
| c88410ea53 |
14
changelog.md
14
changelog.md
@@ -1,5 +1,19 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-02-18 - 6.13.1 - fix(dcrouter)
|
||||||
|
enable PROXY protocol v1 handling for SmartProxy when remoteIngress is enabled to preserve client IPs
|
||||||
|
|
||||||
|
- Set smartProxyConfig.acceptProxyProtocol = true when options.remoteIngressConfig.enabled
|
||||||
|
- Whitelist loopback address by setting smartProxyConfig.proxyIPs = ['127.0.0.1']
|
||||||
|
- Only applies when remoteIngress is enabled; used to accept tunneled connections forwarded by the hub to preserve original client IPs
|
||||||
|
|
||||||
|
## 2026-02-18 - 6.13.0 - feat(remoteingress)
|
||||||
|
include listenPorts for allowed edges sent to the Rust hub and always resync allowed edges when edge properties change
|
||||||
|
|
||||||
|
- getAllowedEdges now returns listenPorts for each allowed edge (uses getEffectiveListenPorts)
|
||||||
|
- remoteingress handler now calls tunnelManager.syncAllowedEdges() whenever tunnelManager exists so ports/tags/enabled changes are propagated
|
||||||
|
- Improves Rust hub routing by providing per-edge listening ports and ensuring allowed-edge list is kept up-to-date
|
||||||
|
|
||||||
## 2026-02-18 - 6.12.0 - feat(remote-ingress)
|
## 2026-02-18 - 6.12.0 - feat(remote-ingress)
|
||||||
add Remote Ingress hub integration, OpsServer UI, APIs, and docs
|
add Remote Ingress hub integration, OpsServer UI, APIs, and docs
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@serve.zone/dcrouter",
|
"name": "@serve.zone/dcrouter",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "6.12.0",
|
"version": "6.13.1",
|
||||||
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/dcrouter',
|
name: '@serve.zone/dcrouter',
|
||||||
version: '6.12.0',
|
version: '6.13.1',
|
||||||
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -586,6 +586,13 @@ export class DcRouter {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When remoteIngress is enabled, the hub binary forwards tunneled connections
|
||||||
|
// to SmartProxy with PROXY protocol v1 headers to preserve client IPs.
|
||||||
|
if (this.options.remoteIngressConfig?.enabled) {
|
||||||
|
smartProxyConfig.acceptProxyProtocol = true;
|
||||||
|
smartProxyConfig.proxyIPs = ['127.0.0.1'];
|
||||||
|
}
|
||||||
|
|
||||||
// Create SmartProxy instance
|
// Create SmartProxy instance
|
||||||
console.log('[DcRouter] Creating SmartProxy instance with config:', JSON.stringify({
|
console.log('[DcRouter] Creating SmartProxy instance with config:', JSON.stringify({
|
||||||
routeCount: smartProxyConfig.routes?.length,
|
routeCount: smartProxyConfig.routes?.length,
|
||||||
|
|||||||
@@ -117,8 +117,8 @@ export class RemoteIngressHandler {
|
|||||||
return { success: false, edge: null as any };
|
return { success: false, edge: null as any };
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sync allowed edges if enabled status changed
|
// Sync allowed edges — ports, tags, or enabled may have changed
|
||||||
if (tunnelManager && dataArg.enabled !== undefined) {
|
if (tunnelManager) {
|
||||||
await tunnelManager.syncAllowedEdges();
|
await tunnelManager.syncAllowedEdges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -242,11 +242,15 @@ export class RemoteIngressManager {
|
|||||||
/**
|
/**
|
||||||
* Get the list of allowed edges (enabled only) for the Rust hub.
|
* Get the list of allowed edges (enabled only) for the Rust hub.
|
||||||
*/
|
*/
|
||||||
public getAllowedEdges(): Array<{ id: string; secret: string }> {
|
public getAllowedEdges(): Array<{ id: string; secret: string; listenPorts: number[] }> {
|
||||||
const result: Array<{ id: string; secret: string }> = [];
|
const result: Array<{ id: string; secret: string; listenPorts: number[] }> = [];
|
||||||
for (const edge of this.edges.values()) {
|
for (const edge of this.edges.values()) {
|
||||||
if (edge.enabled) {
|
if (edge.enabled) {
|
||||||
result.push({ id: edge.id, secret: edge.secret });
|
result.push({
|
||||||
|
id: edge.id,
|
||||||
|
secret: edge.secret,
|
||||||
|
listenPorts: this.getEffectiveListenPorts(edge),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/dcrouter',
|
name: '@serve.zone/dcrouter',
|
||||||
version: '6.12.0',
|
version: '6.13.1',
|
||||||
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user