From d9f8ae7036abdfee1b4a0e987ad90833fc19e4f9 Mon Sep 17 00:00:00 2001 From: Victor LABORIE Date: Mon, 7 Jan 2019 16:34:14 +0100 Subject: [PATCH] Move check_jail_on functions into bkctld-is-on script --- bkctld | 2 +- lib/bkctld-ip | 2 +- lib/bkctld-is-on | 26 ++++++++++++++++++++++++++ lib/bkctld-key | 2 +- lib/bkctld-port | 2 +- lib/bkctld-reload | 2 +- lib/bkctld-remove | 2 +- lib/bkctld-restart | 2 +- lib/bkctld-start | 2 +- lib/bkctld-status | 7 ++----- lib/bkctld-stop | 2 +- lib/bkctld-sync | 4 +--- lib/bkctld-update | 2 +- lib/functions | 15 --------------- 14 files changed, 39 insertions(+), 33 deletions(-) create mode 100755 lib/bkctld-is-on diff --git a/bkctld b/bkctld index f8d30d1..80a93ef 100755 --- a/bkctld +++ b/bkctld @@ -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") diff --git a/lib/bkctld-ip b/lib/bkctld-ip index f381c02..49cb1b8 100755 --- a/lib/bkctld-ip +++ b/lib/bkctld-ip @@ -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 diff --git a/lib/bkctld-is-on b/lib/bkctld-is-on new file mode 100755 index 0000000..41f548a --- /dev/null +++ b/lib/bkctld-is-on @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Check if a jail is on or not +# Usage: is-on +# + +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}" diff --git a/lib/bkctld-key b/lib/bkctld-key index 67e6662..bf75f8d 100755 --- a/lib/bkctld-key +++ b/lib/bkctld-key @@ -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 diff --git a/lib/bkctld-port b/lib/bkctld-port index ac28d09..86f05fc 100755 --- a/lib/bkctld-port +++ b/lib/bkctld-port @@ -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 diff --git a/lib/bkctld-reload b/lib/bkctld-reload index 70f1adf..1b8701f 100755 --- a/lib/bkctld-reload +++ b/lib/bkctld-reload @@ -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}") diff --git a/lib/bkctld-remove b/lib/bkctld-remove index 942dd82..bbd4884 100755 --- a/lib/bkctld-remove +++ b/lib/bkctld-remove @@ -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}") diff --git a/lib/bkctld-restart b/lib/bkctld-restart index 21db5b0..40701bc 100755 --- a/lib/bkctld-restart +++ b/lib/bkctld-restart @@ -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}" diff --git a/lib/bkctld-start b/lib/bkctld-start index 4aa5a65..9749633 100755 --- a/lib/bkctld-start +++ b/lib/bkctld-start @@ -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 diff --git a/lib/bkctld-status b/lib/bkctld-status index fa057ac..d2e3dfa 100755 --- a/lib/bkctld-status +++ b/lib/bkctld-status @@ -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); }' diff --git a/lib/bkctld-stop b/lib/bkctld-stop index 3ca4f02..8f76cd7 100755 --- a/lib/bkctld-stop +++ b/lib/bkctld-stop @@ -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 diff --git a/lib/bkctld-sync b/lib/bkctld-sync index 50db934..b484bac 100755 --- a/lib/bkctld-sync +++ b/lib/bkctld-sync @@ -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 diff --git a/lib/bkctld-update b/lib/bkctld-update index 7c34038..1998fea 100755 --- a/lib/bkctld-update +++ b/lib/bkctld-update @@ -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" diff --git a/lib/functions b/lib/functions index 5fb1461..c21fc2c 100755 --- a/lib/functions +++ b/lib/functions @@ -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}" -}