@freemework/hosting
Version:
Hosting library of the Freemework Project.
179 lines (178 loc) • 7.11 kB
TypeScript
import { FConfiguration, FLogger } from "@freemework/common";
export declare namespace FHostingSettings {
type WebServer = UnsecuredWebServer | SecuredWebServer;
interface WebServerBase {
readonly name: string;
readonly listenHost: string;
readonly listenPort: number;
readonly log?: FLogger;
/**
* See http://expressjs.com/en/4x/api.html#trust.proxy.options.table
*/
readonly trustProxy?: boolean | "loopback" | "linklocal" | "uniquelocal";
/**
* @default true
*
* Handle HTTP Upgrade to switch a connection into a WebSocket.
* See more https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade
*/
readonly handleUpgrade?: boolean;
}
interface UnsecuredBaseWebServer extends WebServerBase {
readonly type: "http";
}
interface UnsecuredCommonWebServer extends UnsecuredBaseWebServer {
}
interface UnsecuredXfccWebServer extends UnsecuredBaseWebServer {
readonly caCertificates: Buffer | string | Array<string | Buffer>;
readonly clientCertificateMode: ClientCertificateMode.XFCC;
}
type UnsecuredWebServer = UnsecuredCommonWebServer | UnsecuredXfccWebServer;
interface SecuredBaseWebServer extends WebServerBase {
readonly type: "https";
/**
* Certificate's data as Buffer or Path to file
*/
readonly serverCertificate: Buffer | string;
/**
* Private Key's data as Buffer or Path to file
*/
readonly serverKey: Buffer | string;
readonly serverKeyPassword?: string;
}
interface SecuredCommonWebServer extends SecuredBaseWebServer {
/**
* Certificate's data as Buffer or Path to file
*/
readonly caCertificates?: Buffer | string | Array<string | Buffer>;
readonly clientCertificateMode: ClientCertificateMode.REQUEST | ClientCertificateMode.NONE;
}
interface SecuredClientWebServer extends SecuredBaseWebServer {
/**
* Certificate's data as Buffer or Path to file
*/
readonly caCertificates: Buffer | string | Array<string | Buffer>;
readonly clientCertificateMode: ClientCertificateMode.TRUST | ClientCertificateMode.XFCC;
}
type SecuredWebServer = SecuredCommonWebServer | SecuredClientWebServer;
enum ClientCertificateMode {
/**
* The server will NOT request a certificate from clients that connect WILL NOT validate the certificate.
*/
NONE = "none",
/**
* The server WILL request a certificate from clients that connect and WILL NOT validate the certificate.
* Validate the certificate by yourself.
*/
REQUEST = "request",
/**
* The server WILL request a certificate from clients that connect and validate the certificate
* Rejects untrusted certificate
*/
TRUST = "trust",
/**
* The server WILL retrieve a certificate from the HTTP header X-Forwarded-Client-Cert and validate the certificate.
* Rejects untrusted certificate
* Hist: Use $ssl_client_escaped_cert NGINX variable to set X-Forwarded-Client-Cert header inside configuration.
*/
XFCC = "xfcc"
}
interface ServerEndpoint {
readonly servers: Array<string>;
}
interface BindEndpoint {
readonly bindPath: string;
}
interface WebSocketEndpoint extends BindEndpoint {
readonly defaultProtocol: string;
readonly allowedProtocols?: ReadonlyArray<string>;
}
function fromConfigurationWebServer(configuration: FConfiguration, serverName: string): WebServer;
/**
* @deprecated Use FHostingSettings.fromConfigurationWebServer instead
*/
const parseWebServer: typeof fromConfigurationWebServer;
function fromConfigurationWebServers(configuration: FConfiguration): Array<FHostingSettings.WebServer>;
/**
* @deprecated Use FHostingSettings.fromConfigurationWebServers instead
*/
const parseWebServers: typeof fromConfigurationWebServers;
function fromConfigurationTrustProxy(val: string): boolean | "loopback" | "linklocal" | "uniquelocal";
/**
* @deprecated Use FHostingSettings.fromConfigurationTrustProxy instead
*/
const parseTrustProxy: typeof fromConfigurationTrustProxy;
}
/**
* @deprecated Use FHostingSettings instead
*/
export declare namespace FHostingConfiguration {
/**
* @deprecated Use FHostingSettings.WebServer instead
*/
type WebServer = FHostingSettings.WebServer;
/**
* @deprecated Use FHostingSettings.WebServerBase instead
*/
type WebServerBase = FHostingSettings.WebServerBase;
/**
* @deprecated Use FHostingSettings.UnsecuredBaseWebServer instead
*/
type UnsecuredBaseWebServer = FHostingSettings.UnsecuredBaseWebServer;
/**
* @deprecated Use FHostingSettings.UnsecuredCommonWebServer instead
*/
type UnsecuredCommonWebServer = FHostingSettings.UnsecuredCommonWebServer;
/**
* @deprecated Use FHostingSettings.UnsecuredXfccWebServer instead
*/
type UnsecuredXfccWebServer = FHostingSettings.UnsecuredXfccWebServer;
/**
* @deprecated Use FHostingSettings.UnsecuredWebServer instead
*/
type UnsecuredWebServer = FHostingSettings.UnsecuredWebServer;
/**
* @deprecated Use FHostingSettings.SecuredBaseWebServer instead
*/
type SecuredBaseWebServer = FHostingSettings.SecuredBaseWebServer;
/**
* @deprecated Use FHostingSettings.SecuredCommonWebServer instead
*/
type SecuredCommonWebServer = FHostingSettings.SecuredCommonWebServer;
/**
* @deprecated Use FHostingSettings.SecuredClientWebServer instead
*/
type SecuredClientWebServer = FHostingSettings.SecuredClientWebServer;
/**
* @deprecated Use FHostingSettings.SecuredWebServer instead
*/
type SecuredWebServer = FHostingSettings.SecuredWebServer;
/**
* @deprecated Use FHostingSettings.ClientCertificateMode instead
*/
const ClientCertificateMode: typeof FHostingSettings.ClientCertificateMode;
/**
* @deprecated Use FHostingSettings.ServerEndpoint instead
*/
type ServerEndpoint = FHostingSettings.ServerEndpoint;
/**
* @deprecated Use FHostingSettings.BindEndpoint instead
*/
type BindEndpoint = FHostingSettings.BindEndpoint;
/**
* @deprecated Use FHostingSettings.WebSocketEndpoint instead
*/
type WebSocketEndpoint = FHostingSettings.WebSocketEndpoint;
/**
* @deprecated Use FHostingSettings.parseWebServer instead
*/
const parseWebServer: typeof FHostingSettings.fromConfigurationWebServer;
/**
* @deprecated Use FHostingSettings.parseWebServers instead
*/
const parseWebServers: typeof FHostingSettings.fromConfigurationWebServers;
/**
* @deprecated Use FHostingSettings.parseTrustProxy instead
*/
const parseTrustProxy: typeof FHostingSettings.fromConfigurationTrustProxy;
}