Skip to content

Commit ea5922d

Browse files
committed
feat: add support for custom resolvers certificates
1 parent 4c139b7 commit ea5922d

15 files changed

+468
-350
lines changed

lib/docker.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class DockerModule {
2323
const Dolphin = require('dolphin');
2424

2525
this.redbird = redbird;
26-
this.log = redbird.log;
26+
this.log = redbird.logger;
2727

2828
const targets: Record<string, Record<string, string>> = (this.targets = {});
2929
this.ports = {};

lib/etcd-backend.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class ETCDModule {
1717

1818
// Create Redbird Instance and Log
1919
this.redbird = redbird;
20-
const log = redbird.log;
20+
const log = redbird.logger;
2121
const _this = this;
2222

2323
// Create node-etcd Instance

lib/interfaces/proxy-options.ts

+2-14
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,7 @@ import http, { IncomingMessage, ServerResponse } from 'http';
22
import httpProxy, { ProxyTargetUrl } from 'http-proxy';
33
import { Socket } from 'net';
44
import pino from 'pino';
5-
6-
type ResolverFnResult = string | { path: string; url: string } | null | undefined;
7-
8-
export type ResolverFn = (
9-
host: string,
10-
url: string,
11-
req?: IncomingMessage
12-
) => ResolverFnResult | Promise<ResolverFnResult>;
13-
14-
export interface Resolver {
15-
fn: ResolverFn;
16-
priority: number;
17-
}
5+
import { Resolver } from './resolver.js';
186

197
export interface SSLConfig {
208
port?: number;
@@ -39,7 +27,7 @@ export interface ProxyOptions {
3927
httpProxy?: httpProxy.ServerOptions;
4028

4129
// Enable Logging
42-
log?: pino.LoggerOptions;
30+
logger?: pino.Logger;
4331

4432
// Enable Cluster Mode
4533
cluster?: number;

lib/interfaces/proxy-route.ts

+4-12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { ProxyTargetUrl } from './proxy-target-url.js';
2+
import { RouteOptions } from './route-options.js';
3+
14
/**
25
* ProxyRoute interface
36
* @description
@@ -8,16 +11,5 @@ export interface ProxyRoute {
811
path?: string;
912
rr?: number;
1013
isResolved?: boolean;
11-
opts?: {
12-
onRequest?: (req: any, res: any, target: ProxyTargetUrl) => void;
13-
};
14-
}
15-
16-
export interface ProxyTargetUrl {
17-
host: string;
18-
hostname: string;
19-
port: number;
20-
pathname: string;
21-
useTargetHostHeader: boolean;
22-
href: string;
14+
opts?: RouteOptions;
2315
}

lib/interfaces/proxy-target-url.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export interface ProxyTargetUrl {
2+
host: string;
3+
hostname: string;
4+
port: number;
5+
pathname: string;
6+
useTargetHostHeader: boolean;
7+
href: string;
8+
}

lib/interfaces/resolver.ts

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { IncomingMessage } from 'http';
2+
import { RouteOptions } from './route-options.js';
3+
4+
export type ResolverFnResult =
5+
| string
6+
| { path?: string; url: string; opts?: RouteOptions }
7+
| null
8+
| undefined;
9+
10+
export type ResolverFn = (
11+
host: string,
12+
url: string,
13+
req?: IncomingMessage
14+
) => ResolverFnResult | Promise<ResolverFnResult>;
15+
16+
export interface Resolver {
17+
fn: ResolverFn;
18+
priority: number;
19+
}

lib/interfaces/route-options.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { ProxyTargetUrl } from './proxy-target-url.js';
2+
3+
export interface RouteOptions {
4+
useTargetHostHeader?: boolean;
5+
ssl?: {
6+
key?: string;
7+
cert?: string;
8+
ca?: string;
9+
letsencrypt?: { email: string; production: boolean; lazy?: boolean };
10+
};
11+
onRequest?: (req: any, res: any, target: ProxyTargetUrl) => void;
12+
}

0 commit comments

Comments
 (0)