aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'config.d/controller/modules/cfunctions.sh')
-rw-r--r--config.d/controller/modules/cfunctions.sh207
1 files changed, 194 insertions, 13 deletions
diff --git a/config.d/controller/modules/cfunctions.sh b/config.d/controller/modules/cfunctions.sh
index f91dfd4..ae50300 100644
--- a/config.d/controller/modules/cfunctions.sh
+++ b/config.d/controller/modules/cfunctions.sh
@@ -1,42 +1,223 @@
#!/bin/bash
+die() {
+ echo "$@" 1>&2 ; exit 1
+}
+
_bsu_dfs() {
# EXPORT BOOT DEVICE
- BOOTDEV="$(cat devname.info | sed '/^#/ d' | sed '/^\s*$/d' | grep BOOT | awk -F ' ' '{ print $2 }')"
+ BOOTDEV="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep BOOT | awk -F ' ' '{ print $2 }')"
export BOOTDEV
# EXPORT SYSTEM DEVICE
- SYSDEV="$(cat devname.info | sed '/^#/ d' | sed '/^\s*$/d' | grep SYS | awk -F ' ' '{ print $2 }')"
+ SYSDEV="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep SYS | awk -F ' ' '{ print $2 }')"
export SYSDEV
+ # EXPORT BACKUP DEVICE
+ BACKUPDEV="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep BACKUP | awk -F ' ' '{ print $2 }')"
+ export BACKUPDEV
+
# EXPORT USERDATA DEVICE
- USERDATADEV="$(cat devname.info | sed '/^#/ d' | sed '/^\s*$/d' | grep USERDATA | awk -F ' ' '{ print $2 }')"
+ USERDATADEV="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep USERDATA | awk -F ' ' '{ print $2 }')"
export USERDATADEV
- # SOURCE THE SOURCES CONFIGURATION FILES FOR EXPORTING THE SERVER INFORMATIONS
- source "${CTCONFDIR}/sources/sources.conf"
-
# EXPORT THE BOOT FILE SYSTEM TYPE
- BOOTFS="$(cat fstab.info | sed '/^#/ d' | sed '/^\s*$/d' | grep BOOT | awk -F ' ' '{ print $2 }')"
+ BOOTFS="$(cat "${CTCONFDIR}/confdir/fstab.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep BOOT | awk -F ' ' '{ print $2 }')"
export BOOTFS
# EXPORT THE SYSTEM FILE SYSTEM TYPE
- SYSFS="$(cat fstab.info | sed '/^#/ d' | sed '/^\s*$/d' | grep SYS | awk -F ' ' '{ print $2 }')"
+ SYSFS="$(cat "${CTCONFDIR}/confdir/fstab.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep SYS | awk -F ' ' '{ print $2 }')"
export SYSFS
+ # EXPORT THE BACKUP FILE SYSTEM TYPE
+ BACKUPFS="$(cat "${CTCONFDIR}/confdir/fstab.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep BACKUP | awk -F ' ' '{ print $2 }')"
+ export BACKUPFS
+
# EXPORT THE USERDATA FILE STSTEM TYPE
- USERDATAFS="$(cat fstab.info | sed '/^#/ d' | sed '/^\s*$/d' | grep USERDATA | awk -F ' ' '{ print $2 }')"
+ USERDATAFS="$(cat "${CTCONFDIR}/confdir/fstab.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep USERDATA | awk -F ' ' '{ print $2 }')"
export USERDATAFS
# EXPORT BOOT SIZE
- BOOTSFS="$(cat devname.info | sed '/^#/ d' | sed '/^\s*$/d' | grep BOOT | awk -F ' ' '{ print $3 }')"
+ BOOTSFS="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep BOOT | awk -F ' ' '{ print $3 }')"
export BOOTSFS
# EXPORT SYSTEM SIZE
- SYSSFS="$(cat devname.info | sed '/^#/ d' | sed '/^\s*$/d' | grep SYS | awk -F ' ' '{ print $3 }')"
+ SYSSFS="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep SYS | awk -F ' ' '{ print $3 }')"
export SYSSFS
+ # EXPORT BACKUP SIZE
+ BACKUPSFS="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep BACKUP | awk -F ' ' '{ print $3 }')"
+ export BACKUPSFS
+
# EXPORT USERDATA SIZE
- USERDATASFS="$(cat devname.info | sed '/^#/ d' | sed '/^\s*$/d' | grep USERDATA | awk -F ' ' '{ print $3 }')"
+ USERDATASFS="$(cat "${CTCONFDIR}/confdir/devname.info" | sed '/^#/ d' | sed '/^\s*$/d' | grep USERDATA | awk -F ' ' '{ print $3 }')"
export USERDATASFS
-} \ No newline at end of file
+
+ _sources_exp
+}
+
+server_exp() {
+ echo "Selecting server..."
+ _ser_list=()
+ while read -r "s";do
+ _ser_list+=("${s}")
+ done < "${CTCONFDIR}/sources/servers"
+
+ if [[ "${#_ser_list[@]}" -ge 1 ]]; then
+ _act_ser_ar=()
+ for i in "${_ser_list[@]}"; do
+ avms=$(ping -c 3 "$i" | tail -1| awk -F '/' '{print $5}')
+ _act_ser+=("${avms}")
+ done
+ else
+ avms=$(ping -c 3 "${_ser_list[0]}" | tail -1| awk -F '/' '{print $5}')
+ _act_ser="${avms}"
+ fi
+
+ _max_entry="${_ser_list[0]}"
+ for n in "${_ser_list[@]}" ; do
+ if [[ "$n" != '' ]]; then
+ ((${n%.*} > ${_max_entry%.*})) && _max_entry="$n"
+ fi
+ done
+ _act_ser="${_max_entry}"
+}
+
+_sources_exp() {
+ # SOURCE THE SOURCES CONFIGURATION FILES FOR EXPORTING THE SERVER INFORMATIONS
+ source "${CTCONFDIR}/confdir/sources/sources.conf"
+
+ if [[ -z "${_conf_dir}" ]]; then
+ _conf_dir="$(grep "confdir" "${CTCONFDIR}/confdir/sources/sources.conf" | sed '/^#/ d' | sed '/^\s*$/d' | awk -F ':' '{ print $2 }')"
+ export _conf_dir
+ fi
+
+ if [[ -z "${_dist_dir}" ]]; then
+ _dist_dir="$(grep "distdir" "${CTCONFDIR}/confdir/sources/sources.conf" | sed '/^#/ d' | sed '/^\s*$/d' | awk -F ':' '{ print $2 }')"
+ export _dist_dir
+ fi
+
+ if [[ -z "${_ser_user}" ]]; then
+ _ser_user="$(grep "user" "${CTCONFDIR}/confdir/sources/sources.conf" | sed '/^#/ d' | sed '/^\s*$/d' | awk -F ':' '{ print $2 }')"
+ export _ser_user
+ fi
+}
+
+_call_net() {
+ ifconfig "${_net_interface}" up
+ udhcpc -t 5 -q -s "/bin/net_script.sh"
+}
+
+_mount_sysfs() {
+ if mount -t "${SYSFS}" -o rw "${SYSDEV}" "/mnt/workdir"; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+_call_backup_switch() {
+ _ctflag_active_system="BACKUPDEV"
+ export _ctflag_active_system
+}
+
+_question() {
+ for i in "$@"; do
+ [[ "$i" ]] && echo "$i"
+ done
+ while true; do
+ echo "Answer: Y/N "
+ read -rp "Input :: <= " ANS
+ case "${ANS}" in
+ [yY])
+ return 0
+ break;;
+ [nN]])
+ return 1
+ break;;
+ esac
+ done
+
+ unset ANS
+ unset _question_yes_action
+ unset _question_no_action
+}
+
+_fetch_version() {
+ if scp "${_act_user}@${_act_ser}/${_conf_dir}" "${CTCONFDIR}/version"; then
+ _ctflag_sverison=0
+ else
+ _ctflag_sversion=1
+ fi
+ export _ctflag_sversion
+}
+
+_fetch_confd() {
+ if rsync -aAXPhrv "${_act_user}@${_act_ser}/${_conf_dir}" "${CTCONFDIR}/confdir/"; then
+ _ctflag_confd=0
+ else
+ _ctflag_confd=1
+ fi
+ export _ctflag_confd
+}
+
+_check_version() {
+ _fetch_version
+
+ if [[ "${_ctflag_sversion}" == 0 ]]; then
+ _local_version="$(cat "/mnt/workdir/var/lib/version")"
+ _server_version="$(cat "${CTCONFDIR}/version")"
+ if [[ "${_local_version}" != "${_server_version}" ]]; then
+ if [[ -z "${_ctflag_nohuman}" ]]; then
+ if _question "A new System Version is present on the server" "Do you wish to fetch the new system?"; then
+ _ctflag_sysfetch=0
+ else
+ _ctflag_sysfetch=1
+ fi
+ export _ctflag_sysfetch
+ else
+ _ctflag_sysfetch=0
+ export _ctflag_sysfetch
+ fi
+ else
+ echo "Remote version matches the local"
+ fi
+}
+
+_remake_sysfs() {
+ if umount "/mnt/workdir"; then
+ if [[ "${SYSFS}" == 'btrfs' ]]; then
+ if eval "mkfs.${SYSFS}" -L ROOTFS -f "${SYSDEV}"; then
+ echo "File system created"
+ else
+ echo "Failed creating new filesystem"
+ _call_backup_switch
+ fi
+ else
+ if eval "mkfs.${SYSFS}" -L ROOTFS "${SYSDEV}"; then
+ echo "File system created"
+ else
+ echo "Failed creating new filesystem"
+ _call_backup_switch
+ fi
+ fi
+ else
+ echo "Failed unmounting workdir"
+ _call_backup_switch
+ fi
+}
+
+_fetch_new_sys() {
+ if _mount_sysfs; then
+ if sync -aAXhq "${_M_SERVER}/dist.d/stage3-amd64-${_server_version}.tar.bz2" "${CTCONFDIR}/version"; then
+ echo "New system was fetched successfully"
+ _ctflag_active_system="SYSDEV"
+ else
+ echo "Fetching new system FAILED"
+ _call_backup_switch
+ fi
+ else
+ echo "Failed mounting ${SYSDEV} to /mnt/workdir"
+ _call_backup_switch
+ fi
+}