update
This commit is contained in:
@ -2,16 +2,20 @@ import * as plugins from '../../../plugins.js';
|
||||
// Certificate types removed - use local definition
|
||||
import type { TForwardingType } from '../../../forwarding/config/forwarding-types.js';
|
||||
import type { PortRange } from '../../../proxies/nftables-proxy/models/interfaces.js';
|
||||
import type { IRouteContext } from '../../../core/models/route-context.js';
|
||||
|
||||
// Re-export IRouteContext for convenience
|
||||
export type { IRouteContext };
|
||||
|
||||
/**
|
||||
* Supported action types for route configurations
|
||||
*/
|
||||
export type TRouteActionType = 'forward' | 'redirect' | 'block' | 'static' | 'socket-handler';
|
||||
export type TRouteActionType = 'forward' | 'socket-handler';
|
||||
|
||||
/**
|
||||
* Socket handler function type
|
||||
*/
|
||||
export type TSocketHandler = (socket: plugins.net.Socket) => void | Promise<void>;
|
||||
export type TSocketHandler = (socket: plugins.net.Socket, context: IRouteContext) => void | Promise<void>;
|
||||
|
||||
/**
|
||||
* TLS handling modes for route configurations
|
||||
@ -40,36 +44,6 @@ export interface IRouteMatch {
|
||||
headers?: Record<string, string | RegExp>; // Match specific HTTP headers
|
||||
}
|
||||
|
||||
/**
|
||||
* Context provided to port and host mapping functions
|
||||
*/
|
||||
export interface IRouteContext {
|
||||
// Connection information
|
||||
port: number; // The matched incoming port
|
||||
domain?: string; // The domain from SNI or Host header
|
||||
clientIp: string; // The client's IP address
|
||||
serverIp: string; // The server's IP address
|
||||
path?: string; // URL path (for HTTP connections)
|
||||
query?: string; // Query string (for HTTP connections)
|
||||
headers?: Record<string, string>; // HTTP headers (for HTTP connections)
|
||||
method?: string; // HTTP method (for HTTP connections)
|
||||
|
||||
// TLS information
|
||||
isTls: boolean; // Whether the connection is TLS
|
||||
tlsVersion?: string; // TLS version if applicable
|
||||
|
||||
// Route information
|
||||
routeName?: string; // The name of the matched route
|
||||
routeId?: string; // The ID of the matched route
|
||||
|
||||
// Target information (resolved from dynamic mapping)
|
||||
targetHost?: string | string[]; // The resolved target host(s)
|
||||
targetPort?: number; // The resolved target port
|
||||
|
||||
// Additional properties
|
||||
timestamp: number; // The request timestamp
|
||||
connectionId: string; // Unique connection identifier
|
||||
}
|
||||
|
||||
/**
|
||||
* Target configuration for forwarding
|
||||
@ -89,15 +63,6 @@ export interface IRouteAcme {
|
||||
renewBeforeDays?: number; // Days before expiry to renew (default: 30)
|
||||
}
|
||||
|
||||
/**
|
||||
* Static route handler response
|
||||
*/
|
||||
export interface IStaticResponse {
|
||||
status: number;
|
||||
headers?: Record<string, string>;
|
||||
body: string | Buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* TLS configuration for route actions
|
||||
*/
|
||||
@ -117,14 +82,6 @@ export interface IRouteTls {
|
||||
sessionTimeout?: number; // TLS session timeout in seconds
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect configuration for route actions
|
||||
*/
|
||||
export interface IRouteRedirect {
|
||||
to: string; // URL or template with {domain}, {port}, etc.
|
||||
status: 301 | 302 | 307 | 308;
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentication options
|
||||
*/
|
||||
@ -270,12 +227,6 @@ export interface IRouteAction {
|
||||
// TLS handling
|
||||
tls?: IRouteTls;
|
||||
|
||||
// For redirects
|
||||
redirect?: IRouteRedirect;
|
||||
|
||||
// For static files
|
||||
static?: IRouteStaticFiles;
|
||||
|
||||
// WebSocket support
|
||||
websocket?: IRouteWebSocket;
|
||||
|
||||
@ -300,9 +251,6 @@ export interface IRouteAction {
|
||||
// NFTables-specific options
|
||||
nftables?: INfTablesOptions;
|
||||
|
||||
// Handler function for static routes
|
||||
handler?: (context: IRouteContext) => Promise<IStaticResponse>;
|
||||
|
||||
// Socket handler function (when type is 'socket-handler')
|
||||
socketHandler?: TSocketHandler;
|
||||
}
|
||||
|
Reference in New Issue
Block a user