aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'config.d')
-rwxr-xr-xconfig.d/controller/modules/functions/ct_config.sh47
-rwxr-xr-xconfig.d/controller/modules/functions/ct_fetch.sh77
-rwxr-xr-xconfig.d/controller/modules/functions/ct_netf.sh25
-rwxr-xr-xconfig.d/controller/modules/functions/ct_newsys.sh5
-rwxr-xr-xconfig.d/controller/modules/functions/ct_prelim.sh109
5 files changed, 175 insertions, 88 deletions
diff --git a/config.d/controller/modules/functions/ct_config.sh b/config.d/controller/modules/functions/ct_config.sh
index 7ae0c73..6ebdee2 100755
--- a/config.d/controller/modules/functions/ct_config.sh
+++ b/config.d/controller/modules/functions/ct_config.sh
@@ -1,27 +1,23 @@
#!/bin/bash
_chroot_config(){
- _revert_chroot() {
- if chroot "$1" "$2"; then
- return 0
- else
- return 1
- fi
- }
-
_init_chroot() {
- if chroot "$1" "$2"; then
- echo "Configuration was successful"
+ if chroot "$1" "$2/cchroot.sh" "chroot"; then
+ echo -e "[\e[32m*\e[0m] Configuration was successful"
_sys_config=0
else
- echo "Configuration failed"
- echo "Reverting changes"
- if _revert_chroot "$1" "var/tmp/ctworkdir/ccrevert_chroot.sh"; then
- echo "Changes reverted"
+ echo -e "[\e[31m*\e[0m] Configuration failed"
+ echo -e "[\e[33m*\e[0m] Reverting changes"
+ echo -e "[\e[33m*\e[0m]Initiating revert function"
+ if chroot "$1" "$2/cchroot.sh" "revert"; then
+ echo -e "[\e[32m*\e[0m] Changes reverted"
+ _sys_revert=0
else
- echo "Failed reverting changes"
- echo "Calling backup system"
+ _sys_revert=1
+ echo -e "[\e[31m*\e[0m] Failed reverting changes"
+ echo -e "[\e[33m*\e[0m] Calling backup system"
fi
+ export _sys_revert
_sys_config=1
fi
export _sys_config
@@ -29,20 +25,19 @@ _chroot_config(){
_prep_chroot() {
if _mount_sysfs "$1" && _mount_pseudos "$1"; then
- mkdir -p "$1/var/tmp/ctworkdir"
- cp -r "${CTCONFDIR}/confdir" "$1/var/tmp/ctworkdir/"
- cp "/usr/local/controller/cchroot.sh" "$1/var/tmp/ctworkdir/cchroot"
+ mkdir -p "$1/$2"
+
+ cp -r "${CTCONFDIR}"/confdir/system_configs/* "$1/$2/"
+ cp "/usr/local/controller/cchroot.sh" "$1/$2/"
+ cp "/usr/local/controller/cchroot_functions.sh" "$1/$2/"
_init_chroot "$@"
else
+ echo -e "[\e[33m*\e[0m] Failed initiating chroot functions"
_sys_config=1
export _sys_config
fi
}
- if _unmount "$1"; then
- _prep_chroot "$@"
- else
- _sys_config=1
- export _sys_config
- fi
-} \ No newline at end of file
+ echo -e "[\e[34m*\e[0m] Initiating chroot"
+ _prep_chroot "$@"
+}
diff --git a/config.d/controller/modules/functions/ct_fetch.sh b/config.d/controller/modules/functions/ct_fetch.sh
index 631ea9d..fcdf6cb 100755
--- a/config.d/controller/modules/functions/ct_fetch.sh
+++ b/config.d/controller/modules/functions/ct_fetch.sh
@@ -7,18 +7,18 @@ _mount_sysfs() {
_unmount "$1"
fi
- echo "Using fsck on ${SYSDEV}"
+ echo -e "[\e[34m*\e[0m] Using fsck on ${SYSDEV}"
if fsck -y "${SYSDEV}" >/dev/null 2>&1; then
- echo "Filesystem looks healthy"
+ echo -e "[\e[32m*\e[0m] Filesystem looks healthy"
_fscheck=0
else
- echo "Filesystem appears corrupted"
- echo "Attempting to repair"
+ echo -e "[\e[33m*\e[0m] Filesystem appears corrupted"
+ echo -e "[\e[34m*\e[0m] Attempting to repair"
if fsck -yf "${SYSDEV}"; then
- echo "Repair was successful"
+ echo -e "[\e[32m*\e[0m] Repair was successful"
_fscheck=0
else
- echo "Automatic repair failed"
+ echo -e "[\e[31m*\e[0m] Automatic repair failed"
_fscheck=1
fi
fi
@@ -29,12 +29,12 @@ _mount_sysfs() {
unset _fscheck
- echo "Attempting to mount ${SYSDEV} at $1"
+ echo -e "[\e[34m*\e[0m] Attempting to mount ${SYSDEV} at $1"
if eval mount -t "${SYSFS}" -o rw -L "SYSFS" "$1"; then
- echo "Mounted successfully"
+ echo -e "[\e[32m*\e[0m] Mounted successfully"
return 0
else
- echo "Failed mounting"
+ echo -e "[\e[31m*\e[0m] Failed mounting"
return 1
fi
}
@@ -51,9 +51,29 @@ _fetch_version() {
# FETCH NEW CONFIG.D DIRECTORY
_fetch_confd() {
- if rsync -aAPhrqc "${_ser_user}@${_ctserver}:${_conf_dir}/" "${CTCONFDIR}/confdir/" --delete; then
- _ctflag_confd=0
+ echo -e "[\e[34m*\e[0m] Syncing confdir from server"
+ if [[ -n "$(rsync -aAPhrcn "${_ser_user}@${_ctserver}:${_conf_dir}/controller/modules/files/" "${CTCONFDIR}/confdir/" --delete | sed '/receiving incremental file list/d')" ]]; then
+ if rsync -aAPhrqc "${_ser_user}@${_ctserver}:${_conf_dir}/controller/modules/files/" "${CTCONFDIR}/confdir/" --delete; then
+ echo -e "[\e[32m*\e[0m] Sync was successful"
+ echo -e "[\e[34m*\e[0m] Syncing new confdir to storage"
+
+ mount -t "${BOOTFS}" -o rw "${BOOTDEV}" "/mnt/log"
+
+ if rsync -aAPhqrc "${CTCONFDIR}/confdir" "/mnt/log/" --delete; then
+ echo -e "[\e[32m*\e[0m] Synced"
+ sync;sync
+ else
+ echo -e "[\e[33m*\e[0m] Failed"
+ fi
+
+ umount -l "/mnt/log"
+
+ _ctflag_confd=0
+ else
+ _ctflag_confd=1
+ fi
else
+ echo -e "[\e[35m*\e[0m] No changes detected"
_ctflag_confd=1
fi
export _ctflag_confd
@@ -72,16 +92,16 @@ _check_version() {
_ctflag_sysfetch=1
fi
else
- echo "Remote version does not matches local"
+ echo -e "[\e[33m*\e[0m] Remote version does not matches local"
_ctflag_sysfetch=0
fi
else
- echo "Remote version matches the local"
+ echo -e "[\e[35m*\e[0m] Remote version matches the local"
_ctflag_sysfetch=1
fi
elif [[ ! -e "/mnt/workdir/var/lib/gse/version" ]]; then
- echo "System is corrupted"
- _call_backup_switch
+ echo -e "[\e[31m*\e[0m] System is corrupted"
+ _ctflag_sysfetch=9
fi
export _ctflag_sysfetch
fi
@@ -94,15 +114,15 @@ _fetch_new_sys() {
if scp "${_ser_user}@${_ctserver}:${_dist_dir}/${_sys_archive}" "$1/"; then
scp "${_ser_user}@${_ctserver}:${_dist_dir}/${_sys_archive}.md5sum" "$1/"
- scp "${_ser_user}@${_ctserver}:${_dist_dir}/${_sys_archive}.sig" "$1/"
- echo "New system was fetched successfully"
+ #scp "${_ser_user}@${_ctserver}:${_dist_dir}/${_sys_archive}.sig" "$1/"
+ echo -e "[\e[32m*\e[0m] New system was fetched successfully"
_ctflag_fetch=0
else
- echo "Fetching new system FAILED"
+ echo -e "[\e[31m*\e[0m] Fetching new system FAILED"
_ctflag_fetch=1
fi
else
- echo "Failed mounting ${SYSDEV} to $1"
+ echo -e "[\e[31m*\e[0m] Failed mounting ${SYSDEV} to $1"
_ctflag_fetch=1
fi
export _ctflag_fetch
@@ -160,23 +180,23 @@ _verify_target() {
_restricted() {
if _check_last; then
- echo "Origin verified"
+ echo -e "[\e[35m*\e[0m] Origin verified"
_md5_check "$1"
else
if [[ ! -e "${CTSCRIPTS}/gpg/gpg_pub" ]]; then
- echo "No gpg key found!"
+ echo -e "[\e[33m*\e[0m] No gpg key found!"
_md5_check "$1"
elif [[ -e "${CTSCRIPTS}/gpg/gpg_pub" ]]; then
- echo "Failed to verify the authentication of the image"
+ echo -e "[\e[31m*\e[0m] Failed to verify the authentication of the image"
_ctflag_verify=1
fi
fi
}
if _md5_check "$1"; then
- echo "Integrity verified"
+ echo -e "[\e[35m*\e[0m] Integrity verified"
else
- echo "Integrity check failed"
+ echo -e "[\e[33m*\e[0m] Integrity check failed"
fi
export _ctflag_verify
}
@@ -184,13 +204,16 @@ _verify_target() {
_extract_sys() {
(
cd "$1"
- echo "Extracting system tarball..."
+ _e_report_back "Extracting system tarball..."
if tar xvjpf "$2" --xattrs --numeric-owner >/dev/null; then
- echo "Extracted"
+ echo -e "[\e[32m*\e[0m] Extracted"
echo "PASS" > "/tmp/verify.info"
else
- echo "An error occured"
+ echo -e "[\e[31m*\e[0m] An error occured"
echo "FAILED" > "/tmp/verify.info"
fi
)
}
+
+
+
diff --git a/config.d/controller/modules/functions/ct_netf.sh b/config.d/controller/modules/functions/ct_netf.sh
index 0b0b726..b0a1660 100755
--- a/config.d/controller/modules/functions/ct_netf.sh
+++ b/config.d/controller/modules/functions/ct_netf.sh
@@ -34,10 +34,10 @@ _server_exp() {
# POPULATE THE ABOVE TWO ARRAYS
while read -r s; do
- echo "Checking $s"
+ _e_report_back "Checking $s"
# DROP AN ENTRY IF PING FAILS
if ping -c 1 "$s" >/dev/null 2>&1; then
- echo "Connection for $s is true"
+ echo -e "[\e[32m*\e[0m] Connection for $s is true"
# GET AVERAGE LETENCY FROM 3 PING ACTIONS ON THE ENTRY
avms=$(ping -c 3 "$s" | tail -1 | awk -F '/' '{print $5}')
if [[ -n "${avms}" ]]; then
@@ -47,13 +47,13 @@ _server_exp() {
_act_ser_ar+=("${avms}")
else
# SKIP ENTRY
- echo "Could not get average value for $i"
- echo "Rejecting this entry"
+ echo -e "[\e[33m*\e[0m] Could not get average value for $i"
+ _e_report_back "Rejecting this entry"
fi
else
# SKIP ENTRY
- echo "Connection with $s could not be established"
- echo "Rejecting this entry"
+ echo -e "[\e[33m*\e[0m] Connection with $s could not be established"
+ echo -e "[\e[33m*\e[0m] Rejecting this entry"
fi
done < $(grep "server" "${CTCONFDIR}/sources/sources.conf" | sed '/^#/ d' | sed '/^\s*$/d' | awk -F ':' '{print $2}')
@@ -74,7 +74,7 @@ _server_exp() {
done
# THE ACTIVE SERVER _ACT_SER IS THE ENTRY WHICH HAD THE LOWEST MS FROM THE 1:1 MS ARRAY
- echo "Most effective server is: ${_act_ser} with average ms: ${_min_ms}"
+ _o_report_back "Most effective server is: ${_act_ser} with average ms: ${_min_ms}"
_ctserver="${_act_ser}"
export _ctserver
@@ -86,7 +86,7 @@ _server_exp() {
unset avms
}
- echo "Selecting server..."
+ echo -e "[\e[34m*\e[0m] Selecting server..."
if [[ -e "/usr/bin/netselect" ]]; then
_ser_tmp=()
@@ -99,7 +99,7 @@ _server_exp() {
for i in $(netselect -v -t2 -s10 "${_ser_tmp[@]}" | awk -F ' ' '{print $2}'); do
_ser_list+=("$i")
- echo "$i"
+ _e_report_back "$i"
done
unset _ser_tmp
@@ -116,7 +116,7 @@ _check_net() {
else
if grep -q "net:0" "/usr/local/unet/udent_flag"; then
# RE-SOURCE THE CUSTOM NET SCRIPT AND CHECK AGAIN
- echo "Re-sourcing the custom net script"
+ echo -e "[\e[33m*\e[0m] Re-sourcing the custom net script"
source "/usr/local/unet/unet.sh"
_tmp_net_ct=0
while true; do
@@ -143,4 +143,7 @@ _check_net() {
return 1
fi
fi
-} \ No newline at end of file
+}
+
+
+
diff --git a/config.d/controller/modules/functions/ct_newsys.sh b/config.d/controller/modules/functions/ct_newsys.sh
index 5e8bd53..5ffa5d1 100755
--- a/config.d/controller/modules/functions/ct_newsys.sh
+++ b/config.d/controller/modules/functions/ct_newsys.sh
@@ -34,4 +34,7 @@ _remake_dev() {
_ctflag_remake=1
fi
export _ctflag_remake
-} \ No newline at end of file
+}
+
+
+
diff --git a/config.d/controller/modules/functions/ct_prelim.sh b/config.d/controller/modules/functions/ct_prelim.sh
index 4db040b..107e677 100755
--- a/config.d/controller/modules/functions/ct_prelim.sh
+++ b/config.d/controller/modules/functions/ct_prelim.sh
@@ -6,8 +6,14 @@ die() {
}
_call_backup_switch() {
- _ctflag_switch=0
- export _ctflag_switch
+ if [[ "${_ctflag_bconf}" != 0 && "${_ctflag_setup}" != 0 && "${_ctflag_setup}" != 1 ]]; then
+ _ctflag_switch=0
+ export _ctflag_switch
+ else
+ echo -e "[\e[31m*\e[0m] Switch to backup is called but there is no backup"
+ _rescue_shell "Switch to backup is called but there is no backup"
+ # exit 1
+ fi
}
_gpg_import() {
@@ -42,7 +48,56 @@ _bsu_dfs() {
BACKUPFS="$(blkid | grep "LABEL=\"BACKUPFS\"" | awk -F ' ' '{print $4}' | awk -F '=' '{print $2}' | sed 's/\"//g')"
export BACKUPFS
+ BOOTFS="$(blkid "${BOOTDEV}" | awk -F ' ' '{print $4}' | sed 's/TYPE=//g' | sed 's/"//g')"
+ USERDATAFS="$(blkid "${USERDATADEV}" | awk -F ' ' '{print $4}' | sed 's/TYPE=//g' | sed 's/"//g')"
+ export BOOTFS
+ export USERDATAFS
+
_server_version="$(cat "${CTCONFDIR}/version")"
+
+ if [[ -n "${BOOTFS}" ]]; then
+ mkdir -p "/mnt/log"
+ mount -t "${BOOTFS}" -o rw "${BOOTDEV}" "/mnt/log"
+
+ if [[ -e "/mnt/log/confdir" ]]; then
+ echo -e "[\e[34m*\e[0m] Updating confdir from local storage"
+
+ if rsync -aAPrhqc "/mnt/log/confdir" "${CTCONFDIR}/" --delete; then
+ sync;sync
+ echo -e "[\e[32m*\e[0m] Updated"
+ else
+ echo -e "[\e[31m*\e[0m] Failed"
+ fi
+ fi
+
+ umount -l "/mnt/log"
+ else
+ echo -e "[\e[33m*\e[0m] WARNING: BOOTFS has not been defined"
+ fi
+
+ if [[ -n "${USERDATAFS}" ]]; then
+ : # TBU
+ else
+ echo -e "[\e[33m*\e[0m] WARNING: USERDATAFS has not been defined"
+ fi
+}
+
+_unmount_all_targets() {
+ _unmount "/mnt/workdir"
+ _unmount "/mnt/bfs"
+ _unmount "/mnt/rfs"
+}
+
+_e_report_back() {
+ echo -e "\e[33m$*\e[0m" 1>&2
+}
+
+_o_report_back() {
+ echo -e "\e[34m$*\e[0m" 1>&2
+}
+
+pass() {
+ echo -e "[\e[34m$@\e[0m]"
}
# CHECK IF LABELS EXIST
@@ -90,18 +145,18 @@ _mount_target() {
_unmount "$1"
fi
- echo "Using fsck on $2"
+ echo -e "[\e[34m*\e[0m] Using fsck on $2"
if fsck -y "$2" >/dev/null 2>&1; then
- echo "Filesystem looks healthy"
+ echo -e "[\e[32m*\e[0m] Filesystem looks healthy"
_fscheck=0
else
- echo "Filesystem appears corrupted"
- echo "Attempting to repair"
+ echo -e "[\e[33m*\e[0m] Filesystem appears corrupted"
+ echo -e "[\e[34m*\e[0m] Attempting to repair"
if fsck -yf "$2"; then
- echo "Repair was successful"
+ echo -e "[\e[32m*\e[0m] Repair was successful"
_fscheck=0
else
- echo "Automatic repair failed"
+ echo -e "[\e[31m*\e[0m] Automatic repair failed"
_fscheck=1
fi
fi
@@ -112,12 +167,12 @@ _mount_target() {
unset _fscheck
- echo "Attempting to mount $3 at $1"
+ echo -e "[\e[34m*\e[0m] Attempting to mount $3 at $1"
if eval mount -t "$2" -o rw -L "$3" "$1"; then
- echo "Mounted successfully"
+ echo -e "[\e[32m*\e[0m] Mounted successfully"
return 0
else
- echo "Failed mounting"
+ echo -e "[\e[31m*\e[0m] Failed mounting"
return 1
fi
}
@@ -194,14 +249,17 @@ _check_rbfs() {
unset _ctflag_setup
if [[ "${_rfs_check}" == 1 && "${_bfs_check}" == 1 ]]; then
- echo "Neither one of SYSFS or BACKUPFS appear to host a root system"
+ echo -e "[\e[33m*\e[0m] Neither one of SYSFS or BACKUPFS appear to host a root system"
_ctflag_setup=0
elif [[ "${_rfs_check}" == 1 && "${_bfs_check}" == 0 ]]; then
- echo "SYSFS appears to be missing"
+ echo -e "[\e[33m*\e[0m] SYSFS appears to be missing"
_ctflag_setup=1
elif [[ "${_rfs_check}" == 0 && "${_bfs_check}" == 1 ]]; then
- echo "BACKUPFS is missing, fixing..."
+ echo -e "[\e[33m*\e[0m] BACKUPFS is missing, fixing..."
_ctflag_setup=2
+ else
+ echo -e "[\e[34m*\e[0m] Both SYSFS and BACKUPFS appear to host a root system"
+ _ctflag_setup=3
fi
export _ctflag_setup
@@ -235,17 +293,20 @@ _unset_ct() {
unset _ctflag_verify
unset _ctflag_remake
unset _ctflag_confd
+ unset _sys_config
+ unset _sys_revert
+ unset _check_sysver
}
# INTERACTIVE FUNCTION
# DISABLED BY DEFAULT, PROBABLY WILL BE REMOVED
_question() {
for i in "$@"; do
- [[ "$i" ]] && echo "$i"
+ [[ "$i" ]] && _e_report_back "$i"
done
while true; do
- echo "Answer: Y/N "
+ _e_report_back "Answer: Y/N "
read -rp "Input :: <= " ANS
case "${ANS}" in
[yY])
@@ -280,8 +341,8 @@ _rescue_shell() {
echo "$i"
done
- echo "Do you wish to call shell function and fix the issues manually?"
- echo "Answer Y/N "
+ _e_report_back "Do you wish to call shell function and fix the issues manually?"
+ _e_report_back "Answer Y/N "
read -rp "Input :: <= " YN
case "$YN" in
[yY])
@@ -297,9 +358,9 @@ _rescue_shell() {
subshell_loop() {
while true; do
_shell
- echo "If you fixed the issue, say CONTINUE proceed"
- echo "You can answer SHELL to open shell again"
- echo "Answer? CONTINUE/SHELL: "
+ _e_report_back "If you fixed the issue, say CONTINUE proceed"
+ _e_report_back "You can answer SHELL to open shell again"
+ _e_report_back "Answer? CONTINUE/SHELL: "
read -rp "Input :: <= " AANS
case "${AANS}" in
CONTINUE )
@@ -345,7 +406,7 @@ _unmount() {
fi
if [[ "$k" -ge 20 ]]; then
- echo "Could not unmount target $1"
+ echo -e "[\e[31m*\e[0m] Could not unmount target $1"
return 1
fi
sleep 0.1
@@ -355,4 +416,6 @@ _unmount() {
return 0
fi
-} \ No newline at end of file
+}
+
+