#!/bin/sh # # Description: Rename a jail # Usage: rename # Return codes: # * 1: error # # shellcheck source=./includes LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" new_jail_name="${2:?}" if [ -z "${jail_name}" ] || [ -z "${new_jail_name}" ]; then show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") incs_path=$(incs_path "${jail_name}") jail_config_dir=$(jail_config_dir "${jail_name}") legacy_config_file="${CONFDIR}/${jail_name}" test -d "${jail_path}" || error "${jail_name}: jail not found" 2 new_jail_path=$(jail_path "${new_jail_name}") new_incs_path=$(incs_path "${new_jail_name}") new_jail_config_dir=$(jail_config_dir "${new_jail_name}") new_legacy_config_file="${CONFDIR}/${new_jail_name}" test -d "${new_jail_path}" && error "${new_jail_name}: jail already exists" 2 test -d "${new_incs_path}" && error "${new_jail_name}: incs already exists" 2 "${LIBDIR}/bkctld-is-on" "${jail_name}" 2>/dev/null case "$?" in 0) jail_initial_status="on" ;; 100) jail_initial_status="off" ;; *) unset jail_initial_status error "Error evaluating jail \`${jail_name}' state. bkctld-is-on exited with \`$?'" ;; esac test "${jail_initial_status}" = "on" && "${LIBDIR}/bkctld-stop" "${jail_name}" if dry_run; then echo "[dry-run] rename ${jail_path} to ${new_jail_path}" else mv "${jail_path}" "${new_jail_path}" fi if [ -d "${incs_path}" ]; then if dry_run; then echo "[dry-run] rename ${incs_path} to ${new_incs_path}" else mv "${incs_path}" "${new_incs_path}" fi fi if [ -d "${jail_config_dir}" ]; then if dry_run; then echo "[dry-run] rename ${jail_config_dir} to ${new_jail_config_dir}" else mv "${jail_config_dir}" "${new_jail_config_dir}" fi fi if [ -f "${legacy_config_file}" ]; then if dry_run; then mv "${legacy_config_file}" "${new_legacy_config_file}" else echo "[dry-run] rename ${legacy_config_file} to ${new_legacy_config_file}" fi fi # Reset firewall for new jail name "${LIBDIR}/bkctld-firewall" "${jail_name}" "${LIBDIR}/bkctld-firewall" "${new_jail_name}" test "${jail_initial_status}" = "on" && "${LIBDIR}/bkctld-start" "${new_jail_name}" notice "Rename jail \`${jail_name}' to \`${new_jail_name}' : OK"