From a1e00b4e28d56365b4b5cc4aa44185c4b53f5c33 Mon Sep 17 00:00:00 2001 From: Andrei Zeliankou Date: Tue, 16 Jan 2024 15:37:07 +0000 Subject: White space formatting fixes Closes: --- tools/setup-unit | 10 +++++----- tools/unitc | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 38592fe3..f40a767c 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -77,9 +77,9 @@ SYNOPSIS Subcommands ├── cmd [-h] ├── ctl [-h] [-s SOCK] SUBCOMMAND [ARGS] - │   ├── edit [-h] PATH - │   ├── http [-h] [-c CURLOPT] METHOD PATH - │   └── insert [-h] PATH INDEX + │ ├── edit [-h] PATH + │ ├── http [-h] [-c CURLOPT] METHOD PATH + │ └── insert [-h] PATH INDEX ├── freeport [-h] ├── json-ins [-hn] JSON INDEX ├── os-probe [-h] @@ -87,8 +87,8 @@ SYNOPSIS ├── repo-config [-hn] [PKG-MANAGER OS-NAME OS-VERSION] ├── restart [-hls] ├── sock [-h] SUBCOMMAND [ARGS] - │   ├── filter [-chs] - │   └── find [-h] + │ ├── filter [-chs] + │ └── find [-h] └── welcome [-hn] DESCRIPTION diff --git a/tools/unitc b/tools/unitc index 4ab5f663..22417266 100755 --- a/tools/unitc +++ b/tools/unitc @@ -1,6 +1,6 @@ #!/bin/bash # unitc - a curl wrapper for configuring NGINX Unit -# https://github.com/nginx/unit/tree/master/tools +# https://github.com/nginx/unit/tree/master/tools # NGINX, Inc. (c) 2023 # Defaults @@ -292,7 +292,7 @@ else exit 1 fi NEW_ELEMENT=$(cat ${CONF_FILES[@]}) - echo $NEW_ELEMENT | jq > /dev/null || exit $? # Test the input is valid JSON before proceeding + echo $NEW_ELEMENT | jq > /dev/null || exit $? # Test the input is valid JSON before proceeding OLD_ARRAY=$($RPC_CMD curl -s $UNIT_CTRL$URI) if [ "$(echo $OLD_ARRAY | jq -r type)" = "array" ]; then echo $OLD_ARRAY | jq ". |= [$NEW_ELEMENT] + ." | $RPC_CMD curl -X PUT --data-binary @- $UNIT_CTRL$URI 2> /tmp/${0##*/}.$$ | $OUTPUT -- cgit From af6833a18272a0450037b929fef81f3ea43893f2 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Tue, 23 Jan 2024 13:37:08 +0100 Subject: Tools: setup-unit: -hh: Add missing documentation for 'restart' Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index f40a767c..885a5df6 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -3,7 +3,8 @@ ##################################################################### # # Copyright (C) NGINX, Inc. -# Author: NGINX Unit Team, F5 Inc. +# Author: NGINX Unit Team, F5 Inc. +# Copyright 2024, Alejandro Colomar # ##################################################################### @@ -118,6 +119,9 @@ COMMANDS Configure your package manager with the NGINX Unit repository for later installation. + restart + Restart all running unitd(8) instances. + sock Print the control API socket address. welcome -- cgit From 034b6394a414d7336cc2450eaddd842e2e8c35cb Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Tue, 23 Jan 2024 13:40:04 +0100 Subject: Tools: setup-unit: -hh: The advanced commands aren't experimental I've been using them for a long time, and they are quite useful and stable. Let's say they're advanced instead of experimental. Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 885a5df6..bb5b2ba0 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -63,8 +63,7 @@ OPTIONS Print this help. --help-more - Print help for more commands. They are experimental. Using - these isn't recommended, unless you know what you're doing. + Print help for more (advanced) commands. __EOF__ } -- cgit From ba56e50ee77d11c45f569ba8fbc95e6dadb323ef Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Tue, 23 Jan 2024 13:42:14 +0100 Subject: Tools: setup-unit: -hh: Add short-cut for the advanced help I hate having to type so much just for the useful help. Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index bb5b2ba0..e9ad5896 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -37,7 +37,7 @@ help_unit() { cat <<__EOF__ ; SYNOPSIS - $0 [-h] COMMAND [ARGS] + $0 [-h[h]] COMMAND [ARGS] Subcommands ├── repo-config [-hn] [PKG-MANAGER OS-NAME OS-VERSION] @@ -62,7 +62,7 @@ OPTIONS -h, --help Print this help. - --help-more + -hh, --help-more Print help for more (advanced) commands. __EOF__ @@ -72,7 +72,7 @@ help_more_unit() { cat <<__EOF__ ; SYNOPSIS - $0 [-h] COMMAND [ARGS] + $0 [-h[h]] COMMAND [ARGS] Subcommands ├── cmd [-h] @@ -131,7 +131,7 @@ OPTIONS -h, --help Print basic help (some commands are hidden). - --help-more + -hh, --help-more Print the hidden help with more commands. __EOF__ @@ -1637,7 +1637,7 @@ while test $# -ge 1; do help_unit; exit 0; ;; - --help-more) + -hh | --help-more) help_more_unit; exit 0; ;; -- cgit From 1dca86028a1306655f513512f353a38e10b75d85 Mon Sep 17 00:00:00 2001 From: Liam Crilly Date: Wed, 8 Nov 2023 09:33:38 +0000 Subject: Tools: disambiguate unitc control socket detection Now that unitd has multiple --control* startup options, locating the address of the control socket requires additional precision. Signed-off-by: Liam Crilly Acked-by: Andrew Clayton Signed-off-by: Andrew Clayton --- tools/unitc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/unitc b/tools/unitc index 22417266..9b3557c5 100755 --- a/tools/unitc +++ b/tools/unitc @@ -186,9 +186,9 @@ if [ $REMOTE -eq 0 ]; then echo "${0##*/}: WARNING: unable to identify unitd command line parameters for PID $PID, assuming unitd defaults from \$PATH" PARAMS=unitd fi - CTRL_ADDR=$(echo "$PARAMS" | grep '\--control' | cut -f2 -d' ') + CTRL_ADDR=$(echo "$PARAMS" | grep '\--control ' | cut -f2 -d' ') if [ "$CTRL_ADDR" = "" ]; then - CTRL_ADDR=$($(echo "$PARAMS") --help | grep -A1 '\--control' | tail -1 | cut -f2 -d\") + CTRL_ADDR=$($(echo "$PARAMS") --help | grep -A1 '\--control ADDRESS' | tail -1 | cut -f2 -d\") fi if [ "$CTRL_ADDR" = "" ]; then echo "${0##*/}: ERROR: cannot detect control socket. Did you start unitd with a relative path? Try starting unitd with --control option." -- cgit From 53648ed56488c73aaed94c3258fc4136bc4cba6d Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Fri, 5 Jan 2024 12:09:36 +0000 Subject: Tools: Fix typo in tools/README.md As suggested by @lcrilly --- tools/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/README.md b/tools/README.md index 883bc107..e7caae34 100644 --- a/tools/README.md +++ b/tools/README.md @@ -33,7 +33,7 @@ web page with NGINX Unit. | Options | | |---------|-| -| filename … | Read configuration data consequently from the specified files instead of stdin. +| filename … | Read configuration data consecutively from the specified files instead of stdin. | _HTTP method_ | It is usually not required to specify a HTTP method. `GET` is used to read the configuration. `PUT` is used when making configuration changes unless a specific method is provided. | `edit` | Opens **URI** in the default editor for interactive configuration. The [jq](https://stedolan.github.io/jq/) tool is required for this option. | `INSERT` | A _virtual_ HTTP method that prepends data when the URI specifies an existing array. The [jq](https://stedolan.github.io/jq/) tool is required for this option. -- cgit From cca2c46e4995497c091073d51d7148eac5cf140a Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 9 Feb 2024 12:37:14 +0100 Subject: Tools: setup-unit: Use trap(1) to handle cleanup This allows listening to command exit statuses. Before this change, we had to ignore the exit status of curl(1) (and a few other commands), since otherwise the script would go kaboom and not cleanup the ssh(1) tunnels. Fixes: 543d478e1236 ("Tools: setup-unit: ctl: added "edit" subcommand.") Fixes: 3778877eb3be ("Tools: Added subcommands to setup-unit.") Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index e9ad5896..5b5b3ccc 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -29,6 +29,7 @@ test -v BASH_VERSION \ test -v ZSH_VERSION \ && setopt sh_word_split; + export LC_ALL=C dry_run='no'; @@ -164,6 +165,18 @@ dry_run_eval() fi; } +run_trap() +{ + trap -p "$1" \ + | tr -d '\n' \ + | sed "s/[^']*'\(.*\)'[^']*/\1/" \ + | sed "s/'\\\\''/'/g" \ + | read -r trap_cmd; + + eval $trap_cmd; + trap - "$1"; +} + help_unit_cmd() { @@ -399,14 +412,16 @@ unit_ctl_edit() -o 'ExitOnForwardFailure yes' \ -L "$local_sock:$remote_sock" "$remote"; + trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; + unlink '$local_sock'" EXIT; + sock="unix:$local_sock"; fi; - local tmp="$(mktemp ||:)"; + local tmp="$(mktemp)"; unit_ctl_http ---s "$sock" -c --no-progress-meter GET "$req_path" \ - "$tmp" \ - ||:; + "$tmp"; $( ((test -v VISUAL && test -n "$VISUAL") && printf '%s\n' "$VISUAL") \ @@ -415,15 +430,12 @@ unit_ctl_edit() || command -v vi \ || command -v vim \ || echo ed; - ) "$tmp" \ - ||:; + ) "$tmp"; - unit_ctl_http ---s "$sock" PUT "$req_path" <"$tmp" \ - ||:; + unit_ctl_http ---s "$sock" PUT "$req_path" <"$tmp"; if test -v remote; then - ssh -S "$ssh_ctrl" -O exit "$remote" 2>/dev/null; - unlink "$local_sock"; + run_trap EXIT; fi; } @@ -519,16 +531,17 @@ unit_ctl_http() -o 'ExitOnForwardFailure yes' \ -L "$local_sock:$remote_sock" "$remote"; + trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; + unlink '$local_sock'" EXIT; + sock="unix:$local_sock"; fi; curl $curl_options -X $method -d@- \ - $(echo "$sock" | unit_sock_filter -c)${req_path} \ - ||:; + $(echo "$sock" | unit_sock_filter -c)${req_path}; if test -v remote; then - ssh -S "$ssh_ctrl" -O exit "$remote" 2>/dev/null; - unlink "$local_sock"; + run_trap EXIT; fi; } @@ -603,22 +616,22 @@ unit_ctl_insert() -o 'ExitOnForwardFailure yes' \ -L "$local_sock:$remote_sock" "$remote"; + trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; + unlink '$local_sock'" EXIT; + sock="unix:$local_sock"; fi; - local old="$(mktemp ||:)"; + local old="$(mktemp)"; unit_ctl_http ---s "$sock" -c --no-progress-meter GET "$req_path" \ - "$old" \ - ||:; + "$old"; unit_json_ins "$old" "$idx" \ - | unit_ctl_http ---s "$sock" PUT "$req_path" \ - ||:; + | unit_ctl_http ---s "$sock" PUT "$req_path"; if test -v remote; then - ssh -S "$ssh_ctrl" -O exit "$remote" 2>/dev/null; - unlink "$local_sock"; + run_trap EXIT; fi; } -- cgit From d6ed000316b4226ad73333ba294ac63096665a02 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 9 Feb 2024 12:51:28 +0100 Subject: Tools: setup-unit: De-duplicate code Centralize handling of the ssh(1) tunnel in the ctl command. This is possible now that we do the cleanup with trap(1). Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 100 ++++++++++++------------------------------------------- 1 file changed, 22 insertions(+), 78 deletions(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 5b5b3ccc..8466e882 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -315,25 +315,44 @@ unit_ctl() if echo $sock | grep '^ssh://' >/dev/null; then local remote="$(echo $sock | sed 's,\(ssh://[^/]*\).*,\1,')"; local sock="$(echo $sock | sed 's,ssh://[^/]*\(.*\),unix:\1,')"; + + local remote_sock="$(echo "$sock" | unit_sock_filter -s)"; + local local_sock="$(mktemp -u -p /var/run/unit/)"; + local ssh_ctrl="$(mktemp -u -p /var/run/unit/)"; + + mkdir -p /var/run/unit/; + + ssh -fMNnT -S "$ssh_ctrl" \ + -o 'ExitOnForwardFailure yes' \ + -L "$local_sock:$remote_sock" "$remote"; + + trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; + unlink '$local_sock';" EXIT; + + sock="unix:$local_sock"; fi; case $1 in edit) shift; - unit_ctl_edit ${remote:+ ---r $remote} ---s "$sock" $@; + unit_ctl_edit ---s "$sock" $@; ;; http) shift; - unit_ctl_http ${remote:+ ---r $remote} ---s "$sock" $@; + unit_ctl_http ---s "$sock" $@; ;; insert) shift; - unit_ctl_insert ${remote:+ ---r $remote} ---s "$sock" $@; + unit_ctl_insert ---s "$sock" $@; ;; *) err "ctl: $1: Unknown argument."; ;; esac; + + if test -v remote; then + run_trap EXIT; + fi; } @@ -378,10 +397,6 @@ unit_ctl_edit() help_unit_ctl_edit; exit 0; ;; - ---r | ----remote) - local remote="$2"; - shift; - ;; ---s | ----sock) local sock="$2"; shift; @@ -401,23 +416,6 @@ unit_ctl_edit() fi; local req_path="$1"; - if test -v remote; then - local remote_sock="$(echo "$sock" | unit_sock_filter -s)"; - local local_sock="$(mktemp -u -p /var/run/unit/)"; - local ssh_ctrl="$(mktemp -u -p /var/run/unit/)"; - - mkdir -p /var/run/unit/; - - ssh -fMNnT -S "$ssh_ctrl" \ - -o 'ExitOnForwardFailure yes' \ - -L "$local_sock:$remote_sock" "$remote"; - - trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; - unlink '$local_sock'" EXIT; - - sock="unix:$local_sock"; - fi; - local tmp="$(mktemp)"; unit_ctl_http ---s "$sock" -c --no-progress-meter GET "$req_path" \ @@ -433,10 +431,6 @@ unit_ctl_edit() ) "$tmp"; unit_ctl_http ---s "$sock" PUT "$req_path" <"$tmp"; - - if test -v remote; then - run_trap EXIT; - fi; } @@ -492,10 +486,6 @@ unit_ctl_http() help_unit_ctl_http; exit 0; ;; - ---r | ----remote) - local remote="$2"; - shift; - ;; ---s | ----sock) local sock="$2"; shift; @@ -520,29 +510,8 @@ unit_ctl_http() fi; local req_path="$2"; - if test -v remote; then - local remote_sock="$(echo "$sock" | unit_sock_filter -s)"; - local local_sock="$(mktemp -u -p /var/run/unit/)"; - local ssh_ctrl="$(mktemp -u -p /var/run/unit/)"; - - mkdir -p /var/run/unit/; - - ssh -fMNnT -S "$ssh_ctrl" \ - -o 'ExitOnForwardFailure yes' \ - -L "$local_sock:$remote_sock" "$remote"; - - trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; - unlink '$local_sock'" EXIT; - - sock="unix:$local_sock"; - fi; - curl $curl_options -X $method -d@- \ $(echo "$sock" | unit_sock_filter -c)${req_path}; - - if test -v remote; then - run_trap EXIT; - fi; } @@ -577,10 +546,6 @@ unit_ctl_insert() help_unit_ctl_insert; exit 0; ;; - ---r | ----remote) - local remote="$2"; - shift; - ;; ---s | ----sock) local sock="$2"; shift; @@ -605,23 +570,6 @@ unit_ctl_insert() fi; local idx="$2"; - if test -v remote; then - local remote_sock="$(echo "$sock" | unit_sock_filter -s)"; - local local_sock="$(mktemp -u -p /var/run/unit/)"; - local ssh_ctrl="$(mktemp -u -p /var/run/unit/)"; - - mkdir -p /var/run/unit/; - - ssh -fMNnT -S "$ssh_ctrl" \ - -o 'ExitOnForwardFailure yes' \ - -L "$local_sock:$remote_sock" "$remote"; - - trap "ssh -S '$ssh_ctrl' -O exit '$remote' 2>/dev/null; - unlink '$local_sock'" EXIT; - - sock="unix:$local_sock"; - fi; - local old="$(mktemp)"; unit_ctl_http ---s "$sock" -c --no-progress-meter GET "$req_path" \ @@ -629,10 +577,6 @@ unit_ctl_insert() unit_json_ins "$old" "$idx" \ | unit_ctl_http ---s "$sock" PUT "$req_path"; - - if test -v remote; then - run_trap EXIT; - fi; } -- cgit From e9a0c49dbca628d8bfa6dbc8819846881b16b8b0 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 9 Feb 2024 14:01:56 +0100 Subject: Tools: setup-unit: Pass --fail-with-body to curl(1) Suggested-by: Liam Crilly Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 8466e882..48e5c998 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -510,7 +510,7 @@ unit_ctl_http() fi; local req_path="$2"; - curl $curl_options -X $method -d@- \ + curl --fail-with-body $curl_options -X $method -d@- \ $(echo "$sock" | unit_sock_filter -c)${req_path}; } -- cgit From 565a8ed0183718deb4e14b3b3d67417db4a8092a Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 9 Feb 2024 00:26:47 +0100 Subject: Tools: setup-unit: ctl edit: Print file name on error When editing the configuration in-place, it's easy to make a mistake. If the configuration is wrong, it will be passed to the control socket, which will reject it, keeping the old configuration. Those manual edits would be lost, which can make it very uncomfortable to edit in-place. By printing the name of the temporary file, we allow the user to recover the changes. Cc: Liam Crilly Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 48e5c998..0df19070 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -138,6 +138,11 @@ OPTIONS __EOF__ } +info() +{ + >&2 echo "$(basename "$0"): info: $*"; +} + warn() { >&2 echo "$(basename "$0"): error: $*"; @@ -430,7 +435,11 @@ unit_ctl_edit() || echo ed; ) "$tmp"; + trap "info 'ctl: edit: Invalid configuration saved in <$tmp>.'" ERR + unit_ctl_http ---s "$sock" PUT "$req_path" <"$tmp"; + + trap - ERR; } -- cgit From bc093ab3ee72ca9606fea821fe5c4af221737331 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 9 Feb 2024 00:28:51 +0100 Subject: Tools: setup-unit: Fix error message Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 0df19070..5fb7218e 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -417,7 +417,7 @@ unit_ctl_edit() done; if ! test $# -ge 1; then - err 'ctl: insert: PATH: Missing argument.'; + err 'ctl: edit: PATH: Missing argument.'; fi; local req_path="$1"; -- cgit From 6aa5ef63ce52df598b73c496955f1c0fddd01fb4 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 9 Feb 2024 00:49:07 +0100 Subject: Tools: setup-unit: ctl edit: Append suffix to tmp file name This allows the editor(1) to enable syntax highlighting. See suffixes(7). Cc: Liam Crilly Reviewed-by: Andrew Clayton Signed-off-by: Alejandro Colomar --- tools/setup-unit | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index 5fb7218e..a0dafe10 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -421,7 +421,12 @@ unit_ctl_edit() fi; local req_path="$1"; - local tmp="$(mktemp)"; + echo "$req_path" \ + | sed 's%^/js_modules/.*%.js%' \ + | sed 's%^/config\>.*%.json%' \ + | sed 's%^/.*%.txt%' \ + | xargs mktemp --suffix \ + | read -r tmp; unit_ctl_http ---s "$sock" -c --no-progress-meter GET "$req_path" \ "$tmp"; -- cgit From f71ead5fa5b8bae378a0eca2bedb689cf08a8eff Mon Sep 17 00:00:00 2001 From: Andrei Zeliankou Date: Tue, 30 Jan 2024 09:14:39 +0000 Subject: Updated copyright notice. --- tools/setup-unit | 2 +- tools/unitc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/setup-unit b/tools/setup-unit index a0dafe10..688e87a1 100755 --- a/tools/setup-unit +++ b/tools/setup-unit @@ -760,7 +760,7 @@ unit_ctl_welcome()

NGINX Unit — the universal web app server
- NGINX, Inc. © 2023

+ NGINX, Inc. © 2024

__EOF__'; diff --git a/tools/unitc b/tools/unitc index 9b3557c5..9fba4c6d 100755 --- a/tools/unitc +++ b/tools/unitc @@ -1,7 +1,7 @@ #!/bin/bash # unitc - a curl wrapper for configuring NGINX Unit # https://github.com/nginx/unit/tree/master/tools -# NGINX, Inc. (c) 2023 +# NGINX, Inc. (c) 2024 # Defaults # -- cgit