Move check_jail_on functions into bkctld-is-on script

This commit is contained in:
Victor LABORIE 2019-01-07 16:34:14 +01:00
parent 5856cb2011
commit d9f8ae7036
14 changed files with 39 additions and 33 deletions

2
bkctld
View file

@ -29,7 +29,7 @@ case "${subcommand}" in
"inc" | "rm" | "check" | "stats" | "help")
"${LIBDIR}/bkctld-${subcommand}"
;;
"init")
"init" | "is-on")
"${LIBDIR}/bkctld-${subcommand}" "${jail}"
;;
"key" | "port" | "ip")

View file

@ -30,6 +30,6 @@ else
done
sed -i "s~^AllowUsers .*~${allow}~" "${JAILDIR}/$jail/${SSHD_CONFIG}"
notice "${jail} : update ip => ${ip}"
check_jail_on "${jail}" && "${LIBDIR}/bkctld-reload" "${jail}"
"${LIBDIR}/bkctld-is-on" "${jail}" && "${LIBDIR}/bkctld-reload" "${jail}"
"${LIBDIR}/bkctld-firewall" "${jail}"
fi

26
lib/bkctld-is-on Executable file
View file

@ -0,0 +1,26 @@
#!/bin/sh
#
# Check if a jail is on or not
# Usage: is-on <jailname>
#
LIBDIR="$(dirname $0)" && . "${LIBDIR}/config"
jail="${1:-}"
if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to check inexistant jail"
jail="${1}"
return=1
if [ -f "${JAILDIR}/${jail}/${SSHD_PID}" ]; then
pid=$(cat "${JAILDIR}/${jail}/${SSHD_PID}")
ps -p "${pid}" > /dev/null && return=0
fi
if [ "${return}" -eq 1 ]; then
rm -f "${JAILDIR}/${jail}/${SSHD_PID}"
grep -q "${JAILDIR}/${jail}/proc" /proc/mounts && umount --lazy "${JAILDIR}/${jail}/proc/"
grep -q "${JAILDIR}/${jail}/dev" /proc/mounts && umount --lazy --recursive "${JAILDIR}/${jail}/dev"
fi
exit "${return}"

View file

@ -23,5 +23,5 @@ else
chmod 600 "${JAILDIR}/${jail}/${AUTHORIZED_KEYS}"
notice "${jail} : update key => ${keyfile}"
check_jail_on "${jail}" && . "${LIBDIR}/bkctld-reload" "${jail}"
"${LIBDIR}/bkctld-is-on" "${jail}" && "${LIBDIR}/bkctld-reload" "${jail}"
fi

View file

@ -23,6 +23,6 @@ else
fi
sed -i "s/^Port .*/Port ${port}/" "${JAILDIR}/$jail/${SSHD_CONFIG}"
notice "${jail} : update port => ${port}"
check_jail_on "${jail}" && . "${LIBDIR}/bkctld-reload" "${jail}"
"${LIBDIR}/bkctld-is-on" "${jail}" && "${LIBDIR}/bkctld-reload" "${jail}"
"${LIBDIR}/bkctld-firewall" "${jail}"
fi

View file

@ -11,7 +11,7 @@ if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to reload inexistant jail"
check_jail_on "${jail}" || exit 0
"${LIBDIR}/bkctld-is-on" "${jail}" || exit 0
pid=$(cat "${JAILDIR}/${jail}/${SSHD_PID}")

View file

@ -11,7 +11,7 @@ if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to remove inexistant jail"
check_jail_on "${jail}" && . "${LIBDIR}/bkctld-stop" "${jail}"
"${LIBDIR}/bkctld-is-on" "${jail}" && "${LIBDIR}/bkctld-stop" "${jail}"
rm -f "${CONFDIR}/${jail}"
jail_inode=$(stat --format=%i "${JAILDIR}/${jail}")

View file

@ -13,5 +13,5 @@ if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to restart inexistant jail"
check_jail_on "${jail}" && "${LIBDIR}/bkctld-stop" "${jail}"
"${LIBDIR}/bkctld-is-on" "${jail}" && "${LIBDIR}/bkctld-stop" "${jail}"
"${LIBDIR}/bkctld-start" "${jail}"

View file

@ -11,7 +11,7 @@ if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to start inexistant jail"
check_jail_on "${jail}" && exit 0
"${LIBDIR}/bkctld-is-on" "${jail}" && exit 0
cd "${JAILDIR}/${jail}"
grep -q "${JAILDIR}/${jail}/proc" /proc/mounts || mount -t proc "proc-${jail}" proc

View file

@ -18,11 +18,8 @@ if [ -f "${CONFDIR}/${jail}" ]; then
month=$(grep -c "month" "${CONFDIR}/${jail}")
inc="${day}/${month}"
fi
if ( check_jail_on "${jail}" ); then
status="ON "
else
status="OFF"
fi
status="OFF"
"${LIBDIR}/bkctld-is-on" "${jail}" && status="ON "
port=$("${LIBDIR}/bkctld-port" "${jail}")
ip=$("${LIBDIR}/bkctld-ip" "${jail}"|xargs|tr -s ' ' ',')
echo "${jail} ${status} ${port} ${inc} ${ip}" | awk '{ printf("%- 30s %- 10s %- 10s %- 10s %- 40s\n", $1, $2, $3, $4, $5); }'

View file

@ -11,7 +11,7 @@ if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to stop inexistant jail"
check_jail_on "${jail}" || exit 0
"${LIBDIR}/bkctld-is-on" "${jail}" || exit 0
pid=$(cat "${JAILDIR}/${jail}/${SSHD_PID}")
for conn in $(ps --ppid "${pid}" -o pid=); do

View file

@ -18,9 +18,7 @@ jail="${1}"
ssh "${NODE}" "${LIBDIR}/bkctld-init" "${jail}" | debug
rsync -a "${JAILDIR}/${jail}/" "${NODE}:${JAILDIR}/${jail}/" --exclude proc/* --exclude sys/* --exclude dev/* --exclude run --exclude var/backup/*
rsync -a "${CONFDIR}/${jail}" "${NODE}:${CONFDIR}/${jail}"
if ( check_jail_on "${jail}" ); then
ssh "${NODE}" "${LIBDIR}/bkctld-start" "${jail}" | debug
fi
"${LIBDIR}/bkctld-is-on" "${jail}" && ssh "${NODE}" "${LIBDIR}/bkctld-start" "${jail}" | debug
if [ -n "${FIREWALL_RULES}" ]; then
rsync -a "${FIREWALL_RULES}" "${NODE}:${FIREWALL_RULES}"
ssh "${NODE}" /etc/init.d/minifirewall restart | debug

View file

@ -11,7 +11,7 @@ if [ ! -n "${jail}" ]; then
"${LIBDIR}/bkctld-help" && exit 1
fi
check_jail "${jail}" || error "${jail} : trying to update inexistant jail"
check_jail_on "${jail}" && . "${LIBDIR}/bkctld-stop" "${jail}"
"${LIBDIR}/bkctld-is-on" "${jail}" && "${LIBDIR}/bkctld-stop" "${jail}"
. "${LIBDIR}/mkjail"
notice "${jail} : updated jail"

View file

@ -5,18 +5,3 @@ check_jail() {
[ -d "${JAILDIR}/${jail}" ] && return 0
return 1
}
check_jail_on() {
jail="${1}"
return=1
if [ -f "${JAILDIR}/${jail}/${SSHD_PID}" ]; then
pid=$(cat "${JAILDIR}/${jail}/${SSHD_PID}")
ps -p "${pid}" > /dev/null && return=0
fi
if [ "${return}" -eq 1 ]; then
rm -f "${JAILDIR}/${jail}/${SSHD_PID}"
grep -q "${JAILDIR}/${jail}/proc" /proc/mounts && umount --lazy "${JAILDIR}/${jail}/proc/"
grep -q "${JAILDIR}/${jail}/dev" /proc/mounts && umount --lazy --recursive "${JAILDIR}/${jail}/dev"
fi
return "${return}"
}