mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
Quote installer arguments
This commit is contained in:
parent
4ea110f746
commit
deb4178459
55
install.sh
55
install.sh
@ -88,9 +88,33 @@ verify_system() {
|
|||||||
fatal "Can not find systemd or openrc to use as a process supervisor for k3s"
|
fatal "Can not find systemd or openrc to use as a process supervisor for k3s"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --- add quotes to command arguments ---
|
||||||
|
quote() {
|
||||||
|
for arg in "$@"; do
|
||||||
|
printf "%s\n" "$arg" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- add indentation and trailing slash to quoted args ---
|
||||||
|
quote_indent() {
|
||||||
|
printf ' \\'"\n"
|
||||||
|
for arg in "$@"; do
|
||||||
|
printf "\t%s "'\\'"\n" "$(quote "$arg")"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- escape most punctuation characters, except quotes, forward slash, and space ---
|
||||||
|
escape() {
|
||||||
|
printf "%s" "$@" | sed -e 's/\([][!#$%&()*;<=>?\_`{|}]\)/\\\1/g;'
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- escape double quotes ---
|
||||||
|
escape_dq() {
|
||||||
|
printf "%s" "$@" | sed -e 's/"/\\"/g'
|
||||||
|
}
|
||||||
|
|
||||||
# --- define needed environment variables ---
|
# --- define needed environment variables ---
|
||||||
setup_env() {
|
setup_env() {
|
||||||
|
|
||||||
# --- use command args if passed or create default ---
|
# --- use command args if passed or create default ---
|
||||||
case "$1" in
|
case "$1" in
|
||||||
# --- if we only have flags discover if command should be server or agent ---
|
# --- if we only have flags discover if command should be server or agent ---
|
||||||
@ -103,15 +127,14 @@ setup_env() {
|
|||||||
fi
|
fi
|
||||||
CMD_K3S=agent
|
CMD_K3S=agent
|
||||||
fi
|
fi
|
||||||
CMD_K3S_EXEC="${CMD_K3S} $@"
|
|
||||||
;;
|
;;
|
||||||
# --- command is provided ---
|
# --- command is provided ---
|
||||||
(*)
|
(*)
|
||||||
CMD_K3S="$1"
|
CMD_K3S="$1"
|
||||||
CMD_K3S_EXEC="$@"
|
shift
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
CMD_K3S_EXEC=$(trim() { echo $@; } && trim ${CMD_K3S_EXEC})
|
CMD_K3S_EXEC="${CMD_K3S}$(quote_indent "$@")"
|
||||||
|
|
||||||
# --- use systemd name if defined or create default ---
|
# --- use systemd name if defined or create default ---
|
||||||
if [ -n "${INSTALL_K3S_NAME}" ]; then
|
if [ -n "${INSTALL_K3S_NAME}" ]; then
|
||||||
@ -123,6 +146,17 @@ setup_env() {
|
|||||||
SYSTEM_NAME=k3s-${CMD_K3S}
|
SYSTEM_NAME=k3s-${CMD_K3S}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- check for invalid characters in system name ---
|
||||||
|
valid_chars=$(printf "%s" "${SYSTEM_NAME}" | sed -e 's/[][!#$%&()*;<=>?\_`{|}/[:space:]]/^/g;' )
|
||||||
|
if [ "${SYSTEM_NAME}" != "${valid_chars}" ]; then
|
||||||
|
invalid_chars=$(printf "%s" "${valid_chars}" | sed -e 's/[^^]/ /g')
|
||||||
|
fatal "Invalid characters for system name:
|
||||||
|
${SYSTEM_NAME}
|
||||||
|
${invalid_chars}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- set related files from system name ---
|
||||||
SERVICE_K3S=${SYSTEM_NAME}.service
|
SERVICE_K3S=${SYSTEM_NAME}.service
|
||||||
UNINSTALL_K3S_SH=${SYSTEM_NAME}-uninstall.sh
|
UNINSTALL_K3S_SH=${SYSTEM_NAME}-uninstall.sh
|
||||||
KILLALL_K3S_SH=k3s-killall.sh
|
KILLALL_K3S_SH=k3s-killall.sh
|
||||||
@ -482,7 +516,9 @@ Type=${SYSTEMD_TYPE}
|
|||||||
EnvironmentFile=${FILE_K3S_ENV}
|
EnvironmentFile=${FILE_K3S_ENV}
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
ExecStartPre=-/sbin/modprobe br_netfilter
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
ExecStartPre=-/sbin/modprobe overlay
|
||||||
ExecStart=${BIN_DIR}/k3s ${CMD_K3S_EXEC}
|
ExecStart=${BIN_DIR}/k3s \\
|
||||||
|
${CMD_K3S_EXEC}
|
||||||
|
|
||||||
KillMode=process
|
KillMode=process
|
||||||
Delegate=yes
|
Delegate=yes
|
||||||
LimitNOFILE=infinity
|
LimitNOFILE=infinity
|
||||||
@ -517,7 +553,9 @@ start_pre() {
|
|||||||
supervisor=supervise-daemon
|
supervisor=supervise-daemon
|
||||||
name="${SYSTEM_NAME}"
|
name="${SYSTEM_NAME}"
|
||||||
command="${BIN_DIR}/k3s"
|
command="${BIN_DIR}/k3s"
|
||||||
command_args="${CMD_K3S_EXEC} >>${LOG_FILE} 2>&1"
|
command_args="$(escape_dq "${CMD_K3S_EXEC}")
|
||||||
|
>>${LOG_FILE} 2>&1"
|
||||||
|
|
||||||
pidfile="/var/run/${SYSTEM_NAME}.pid"
|
pidfile="/var/run/${SYSTEM_NAME}.pid"
|
||||||
respawn_delay=5
|
respawn_delay=5
|
||||||
|
|
||||||
@ -590,10 +628,13 @@ service_enable_and_start() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --- re-evaluate args to include env command ---
|
||||||
|
eval set -- $(escape "${INSTALL_K3S_EXEC}") $(quote "$@")
|
||||||
|
|
||||||
# --- run the install process --
|
# --- run the install process --
|
||||||
{
|
{
|
||||||
verify_system
|
verify_system
|
||||||
setup_env ${INSTALL_K3S_EXEC} $@
|
setup_env "$@"
|
||||||
download_and_verify
|
download_and_verify
|
||||||
create_symlinks
|
create_symlinks
|
||||||
create_killall
|
create_killall
|
||||||
|
Loading…
Reference in New Issue
Block a user