UNPKG

connect-qos

Version:

Connect middleware that helps maintain a high quality of service during heavy traffic

28 lines (23 loc) 971 B
import { IncomingMessage } from 'http'; import { Http2ServerRequest } from 'http2'; const HOST_NORMALIZE_REGEX = /(^www\.)?([^:]+)(:\d+)?$/; export function normalizeHost(host: string): string { const match = HOST_NORMALIZE_REGEX.exec(host.toLowerCase()); return match ? match[2] : host; } export function resolveHostFromRequest(req: IncomingMessage|Http2ServerRequest): string { const authority: string = req.headers[':authority'] as string|undefined; return normalizeHost(authority || req.headers.host || 'unknown') ; } export function resolveIpFromRequest(req: IncomingMessage|Http2ServerRequest, behindProxy = false): string { // for security reasons, we should never ASSUME the server is behind a proxy // and only support `x-forwarded-for` is explicitly enabled const forwardedFor: string = behindProxy && req.headers['x-forwarded-for'] as string|undefined; return forwardedFor || req?.socket?.remoteAddress || 'unknown' ; }