GoDoxy/schemas/middlewares/middlewares.ts
2025-01-17 14:33:47 +08:00

149 lines
3.1 KiB
TypeScript

import * as types from "../types";
/**
* @additionalProperties false
*/
export type MiddlewaresMap = {
redirect_http?: RedirectHTTP;
redirectHTTP?: RedirectHTTP;
RedirectHTTP?: RedirectHTTP;
oidc?: types.Nullable<OIDC>;
OIDC?: types.Nullable<OIDC>;
request?: ModifyRequest;
Request?: ModifyRequest;
modify_request?: ModifyRequest;
modifyRequest?: ModifyRequest;
ModifyRequest?: ModifyRequest;
response?: ModifyResponse;
Response?: ModifyResponse;
modify_response?: ModifyResponse;
modifyResponse?: ModifyResponse;
ModifyResponse?: ModifyResponse;
set_x_forwarded?: SetXForwarded;
setXForwarded?: SetXForwarded;
SetXForwarded?: SetXForwarded;
hide_x_forwarded?: HideXForwarded;
hideXForwarded?: HideXForwarded;
HideXForwarded?: HideXForwarded;
error_page?: CustomErrorPage;
errorPage?: CustomErrorPage;
custom_error_page?: CustomErrorPage;
customErrorPage?: CustomErrorPage;
CustomErrorPage?: CustomErrorPage;
real_ip?: RealIP;
realIP?: RealIP;
RealIP?: RealIP;
cloudflare_real_ip?: types.Nullable<CloudflareRealIP>;
cloudflareRealIP?: types.Nullable<CloudflareRealIP>;
CloudflareRealIP?: types.Nullable<CloudflareRealIP>;
rate_limit?: RateLimit;
rateLimit?: RateLimit;
RateLimit?: RateLimit;
cidr_whitelist?: CIDRWhitelist;
cidrWhitelist?: CIDRWhitelist;
CIDRWhitelist?: CIDRWhitelist;
};
export type CustomErrorPage = types.Null;
export type RedirectHTTP = types.Null;
export type SetXForwarded = types.Null;
export type HideXForwarded = types.Null;
/**
* @additionalProperties false
*/
export type CIDRWhitelist = {
/* Allowed CIDRs/IPs */
allow: types.CIDR[];
/** HTTP status code when blocked
*
* @default 403
*/
status_code?: types.StatusCode;
/** Error message when blocked
*
* @default "IP not allowed"
*/
message?: string;
};
/**
* @additionalProperties false
*/
export type CloudflareRealIP = {
/** Recursively resolve the IP
*
* @default false
*/
recursive?: boolean;
};
/**
* @additionalProperties false
*/
export type ModifyRequest = {
/** Set HTTP headers */
set_headers?: { [key: types.HTTPHeader]: string };
/** Add HTTP headers */
add_headers?: { [key: types.HTTPHeader]: string };
/** Hide HTTP headers */
hide_headers?: types.HTTPHeader[];
};
/**
* @additionalProperties false
*/
export type ModifyResponse = ModifyRequest;
/**
* @additionalProperties false
*/
export type OIDC = {
/** Allowed users
*
* @minItems 1
*/
allowed_users?: string[];
/** Allowed groups
*
* @minItems 1
*/
allowed_groups?: string[];
};
/**
* @additionalProperties false
*/
export type RateLimit = {
/** Average number of requests allowed in a period
*
* @min 1
*/
average: number;
/** Maximum number of requests allowed in a period
*
* @min 1
*/
burst: number;
/** Duration of the rate limit
*
* @default 1s
*/
period?: types.Duration;
};
/**
* @additionalProperties false
*/
export type RealIP = {
/** Header to get the client IP from
*
*/
header: types.HTTPHeader;
from: types.CIDR[];
/** Recursive resolve the IP
*
* @default false
*/
recursive: boolean;
};