feat: add support for various timeout-related functions to nginx, openresty and k3s plugins

Closes #7267
This commit is contained in:
Jose Diaz-Gonzalez
2024-10-16 00:43:35 -04:00
parent 07149fb846
commit 4d7f779c28
13 changed files with 475 additions and 14 deletions

View File

@@ -40,6 +40,8 @@ cmd-openresty-report-single() {
"--openresty-allowed-letsencrypt-domains-func-base64: $(fn-openresty-allowed-letsencrypt-domains-func-base64)"
"--openresty-bind-address-ipv4: $(fn-openresty-bind-address-ipv4 "$APP")"
"--openresty-bind-address-ipv6: $(fn-openresty-bind-address-ipv6 "$APP")"
"--openresty-client-body-timeout: $(fn-openresty-client-body-timeout "$APP")"
"--openresty-client-header-timeout: $(fn-openresty-client-header-timeout "$APP")"
"--openresty-client-max-body-size: $(fn-openresty-client-max-body-size "$APP")"
"--openresty-error-log-path: $(fn-openresty-error-log-path "$APP")"
"--openresty-global-hsts: $(fn-plugin-property-get-default "openresty" "--global" "hsts" "true")"
@@ -49,13 +51,18 @@ cmd-openresty-report-single() {
"--openresty-hsts-max-age: $(fn-openresty-hsts-max-age "$APP")"
"--openresty-hsts-preload: $(fn-openresty-hsts-preload "$APP")"
"--openresty-image: $(fn-openresty-image)"
"--openresty-keepalive-timeout: $(fn-openresty-keepalive-timeout "$APP")"
"--openresty-letsencrypt-email: $(fn-openresty-letsencrypt-email)"
"--openresty-letsencrypt-server: $(fn-openresty-letsencrypt-server)"
"--openresty-lingering-timeout: $(fn-openresty-lingering-timeout "$APP")"
"--openresty-proxy-buffer-size: $(fn-openresty-proxy-buffer-size "$APP")"
"--openresty-proxy-buffering: $(fn-openresty-proxy-buffering "$APP")"
"--openresty-proxy-buffers: $(fn-openresty-proxy-buffers "$APP")"
"--openresty-proxy-busy-buffers-size: $(fn-openresty-proxy-busy-buffers-size "$APP")"
"--openresty-proxy-connect-timeout: $(fn-openresty-proxy-connect-timeout "$APP")"
"--openresty-proxy-read-timeout: $(fn-openresty-proxy-read-timeout "$APP")"
"--openresty-proxy-send-timeout: $(fn-openresty-proxy-send-timeout "$APP")"
"--openresty-send-timeout: $(fn-openresty-send-timeout "$APP")"
"--openresty-underscore-in-headers: $(fn-openresty-underscore-in-headers "$APP")"
"--openresty-x-forwarded-for-value: $(fn-openresty-x-forwarded-for-value "$APP")"
"--openresty-x-forwarded-port-value: $(fn-openresty-x-forwarded-port-value "$APP")"

View File

@@ -124,6 +124,10 @@ trigger-openresty-vhosts-docker-args-process-deploy() {
[[ -n "$value" ]] && output="$output '--label=openresty.bind-address-ipv4=$value'"
value="$(fn-openresty-bind-address-ipv6 "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.bind-address-ipv6=$value'"
value="$(fn-openresty-client-body-timeout "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.client-body-timeout=$value'"
value="$(fn-openresty-client-header-timeout "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.client-header-timeout=$value'"
value="$(fn-openresty-client-max-body-size "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.client-max-body-size=$value'"
value="$(fn-openresty-error-log-path "$APP")"
@@ -142,6 +146,10 @@ trigger-openresty-vhosts-docker-args-process-deploy() {
[[ -n "$value" ]] && output="$output '--label=openresty.domains=$value'"
value="$(plugn trigger network-get-property "$APP" initial-network)"
[[ -n "$value" ]] && output="$output '--label=openresty.initial-network=$value'"
value="$(fn-openresty-keepalive-timeout "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.keepalive-timeout=$value'"
value="$(fn-openresty-lingering-timeout "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.lingering-timeout=$value'"
value="$(echo "$APP_PORT_MAP" | xargs)"
[[ -n "$value" ]] && output="$output '--label=openresty.port-mapping=$value'"
value="$(fn-openresty-proxy-buffer-size "$APP")"
@@ -160,6 +168,8 @@ trigger-openresty-vhosts-docker-args-process-deploy() {
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-send-timeout=$value'"
value="$(fn-openresty-send-timeout "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.send-timeout=$value'"
value="$(fn-openresty-send-timeout "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.send-timeout=$value'"
value="$(fn-openresty-underscore-in-headers "$APP")"
[[ -n "$value" ]] && output="$output '--label=openresty.underscore-in-headers=$value'"
value="$(fn-openresty-x-forwarded-for-value "$APP")"

View File

@@ -46,6 +46,20 @@ fn-openresty-bind-address-ipv6() {
fn-plugin-property-get-default "openresty" "$APP" "bind-address-ipv6" "::"
}
fn-openresty-client-body-timeout() {
declare desc="get the configured client body timeout"
declare APP="$1"
fn-plugin-property-get-default "openresty" "$APP" "client-body-timeout" "60s"
}
fn-openresty-client-header-timeout() {
declare desc="get the configured client header timeout"
declare APP="$1"
fn-plugin-property-get-default "openresty" "$APP" "client-body-timeout" "60s"
}
fn-openresty-client-max-body-size() {
declare desc="get the configured client max body size"
declare APP="$1"
@@ -121,6 +135,13 @@ fn-openresty-image() {
fn-plugin-property-get-default "openresty" "--global" "image" "$(grep "FROM" "$PLUGIN_AVAILABLE_PATH/openresty-vhosts/Dockerfile" | awk '{print $2}')"
}
fn-openresty-keepalive-timeout() {
declare desc="get the configured keepalive timeout"
declare APP="$1"
fn-plugin-property-get-default "openresty" "$APP" "keepalive-timeout" "75s"
}
fn-openresty-letsencrypt-email() {
fn-plugin-property-get-default "openresty" "--global" "letsencrypt-email" ""
}
@@ -156,6 +177,13 @@ fn-openresty-logs-usage() {
echo " -t, --tail # continually stream logs"
}
fn-openresty-lingering-timeout() {
declare desc="get the configured lingering timeout"
declare APP="$1"
fn-plugin-property-get-default "openresty" "$APP" "lingering-timeout" "5s"
}
fn-openresty-proxy-buffer-size() {
declare desc="get the configured proxy buffer size"
declare APP="$1"
@@ -206,7 +234,7 @@ fn-openresty-proxy-send-timeout() {
}
fn-openresty-send-timeout() {
declare desc="get the configured proxy send timeout"
declare desc="get the configured send timeout"
declare APP="$1"
fn-plugin-property-get-default "openresty" "$APP" "send-timeout" "60s"

View File

@@ -9,13 +9,13 @@ cmd-openresty-set() {
declare cmd="openresty:set"
[[ "$1" == "$cmd" ]] && shift 1
declare APP="$1" KEY="$2" VALUE="$3"
local VALID_KEYS=("access-log-format" "access-log-path" "allowed-letsencrypt-domains-func-base64" "bind-address-ipv4" "bind-address-ipv6" "client-max-body-size" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "image" "log-level" "letsencrypt-email" "letsencrypt-server" "proxy-read-timeout" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
local VALID_KEYS=("access-log-format" "access-log-path" "allowed-letsencrypt-domains-func-base64" "bind-address-ipv4" "bind-address-ipv6" "client-body-timeout" "client-header-timeout" "client-max-body-size" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "image" "keepalive-timeout" "log-level" "letsencrypt-email" "letsencrypt-server" "lingering-timeout" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "proxy-connect-timeout" "proxy-read-timeout" "send-timeout" "proxy-send-timeout" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
local GLOBAL_KEYS=("allowed-letsencrypt-domains-func-base64" "image" "log-level" "letsencrypt-email" "letsencrypt-server")
[[ -z "$KEY" ]] && dokku_log_fail "No key specified"
if ! fn-in-array "$KEY" "${VALID_KEYS[@]}"; then
dokku_log_fail "Invalid key specified, valid keys include: access-log-format, access-log-path, allowed-letsencrypt-domains-func-base64, bind-address-ipv4, bind-address-ipv6, client-max-body-size, error-log-path, hsts, hsts-include-subdomains, hsts-preload, hsts-max-age, image, log-level, letsencrypt-email, letsencrypt-server, proxy-read-timeout, proxy-buffer-size, proxy-buffering, proxy-buffers, proxy-busy-buffers-size, underscore-in-headers, x-forwarded-for-value, x-forwarded-port-value, x-forwarded-proto-value, x-forwarded-ssl"
dokku_log_fail "Invalid key specified, valid keys include: access-log-format, access-log-path, allowed-letsencrypt-domains-func-base64, bind-address-ipv4, bind-address-ipv6, client-body-timeout, client-header-timeout, client-max-body-size, error-log-path, hsts, hsts-include-subdomains, hsts-preload, hsts-max-age, image, keepalive-timeout, log-level, letsencrypt-email, letsencrypt-server, lingering-timeout, proxy-connect-timeout, proxy-connect-timeout, proxy-read-timeout, proxy-send-timeout, send-timeout, underscore-in-headers, x-forwarded-for-value, x-forwarded-port-value, x-forwarded-proto-value, x-forwarded-ssl"
fi
if ! fn-in-array "$KEY" "${GLOBAL_KEYS[@]}"; then