Guard against invalid logging levels
This commit is contained in:
parent
2ce50300ce
commit
5dc09e254f
1 changed files with 54 additions and 29 deletions
81
rowbot
81
rowbot
|
@ -6,31 +6,6 @@
|
||||||
|
|
||||||
shopt -s nullglob dotglob extglob
|
shopt -s nullglob dotglob extglob
|
||||||
|
|
||||||
###
|
|
||||||
# utilities
|
|
||||||
###
|
|
||||||
|
|
||||||
parent() {
|
|
||||||
(( BASHPID == $$ ))
|
|
||||||
}
|
|
||||||
|
|
||||||
has() {
|
|
||||||
hash "$1" 2>/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
die() {
|
|
||||||
local status=1
|
|
||||||
|
|
||||||
if (( $# > 1 )) && [[ $1 = -s ]]; then
|
|
||||||
status=$2
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
error "$@"
|
|
||||||
exit "$status"
|
|
||||||
}
|
|
||||||
|
|
||||||
###
|
###
|
||||||
# logger
|
# logger
|
||||||
###
|
###
|
||||||
|
@ -62,6 +37,43 @@ error() {
|
||||||
LEVEL=error log "$@"
|
LEVEL=error log "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# utilities
|
||||||
|
###
|
||||||
|
|
||||||
|
parent() {
|
||||||
|
(( BASHPID == $$ ))
|
||||||
|
}
|
||||||
|
|
||||||
|
has() {
|
||||||
|
hash "$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
local status=1
|
||||||
|
|
||||||
|
if (( $# > 1 )) && [[ $1 = -s ]]; then
|
||||||
|
status=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
error "$@"
|
||||||
|
exit "$status"
|
||||||
|
}
|
||||||
|
|
||||||
|
is-log-level() {
|
||||||
|
local level
|
||||||
|
|
||||||
|
for level in "${!levels[@]}"; do
|
||||||
|
if [[ ${1,,} = "$level" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
###
|
###
|
||||||
# argument parser for parsing arguments
|
# argument parser for parsing arguments
|
||||||
##
|
##
|
||||||
|
@ -126,6 +138,16 @@ if [[ -v opts[tls] ]]; then
|
||||||
tls=${opts[tls]}
|
tls=${opts[tls]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# This is a false positive.
|
||||||
|
# shellcheck disable=SC2102
|
||||||
|
if [[ -v opts[level] ]]; then
|
||||||
|
if is-log-level "${opts[level]}"; then
|
||||||
|
level=${opts[level],,}
|
||||||
|
else
|
||||||
|
die "%s is not a valid logging level" "${opts[level]}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $tls = yes ]]; then
|
if [[ $tls = yes ]]; then
|
||||||
# This is a false positive.
|
# This is a false positive.
|
||||||
# shellcheck disable=SC2102
|
# shellcheck disable=SC2102
|
||||||
|
@ -140,8 +162,7 @@ fi
|
||||||
|
|
||||||
config=(
|
config=(
|
||||||
server port nick ident realname chan trigger
|
server port nick ident realname chan trigger
|
||||||
fact_root reload dev level log owner sys_root
|
fact_root reload dev log owner sys_root reload
|
||||||
reload
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for opt in "${config[@]}"; do
|
for opt in "${config[@]}"; do
|
||||||
|
@ -685,8 +706,12 @@ hook_cmd_control_panel() {
|
||||||
exec "$0" --reload "${original_args[@]}"
|
exec "$0" --reload "${original_args[@]}"
|
||||||
;;
|
;;
|
||||||
level)
|
level)
|
||||||
level=${action_args[0]}
|
if is-log-level "${action_args[0]}"; then
|
||||||
|
level=${action_args[0],,}
|
||||||
privmsg "$to" "log level is now set to $level"
|
privmsg "$to" "log level is now set to $level"
|
||||||
|
else
|
||||||
|
privmsg "$to" "${action_args[0]} is not a valid logging level"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
dev)
|
dev)
|
||||||
if [[ $dev = yes ]]; then
|
if [[ $dev = yes ]]; then
|
||||||
|
|
Loading…
Reference in a new issue