diff --git a/CHANGELOG.md b/CHANGELOG.md
index e325c7c..7020a99 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -59,6 +59,15 @@ You can now use a standard Pi-hole install as your primary, or your secondary. Y
+#### 3.1.1
+
+- Corrected an error where Docker exec commands would not run correctly on some distributions.
+
+#### 3.1.2
+
+- Fix variable missing quotes error in configuration screen.
+- Convert all bash files from mix of tabs and spaces to 4 space indentation.
+
## 3.0
### The Breakout Release
diff --git a/README.md b/README.md
index ca84766..8712d24 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
What is better than a [Pi-hole](https://github.com/pi-hole/pi-hole) blocking ads via DNS on your network? That's right, **two** Pi-hole blocking ads on your network!
diff --git a/VERSION b/VERSION
index 50e47c8..6ebad14 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.1.1
\ No newline at end of file
+3.1.2
\ No newline at end of file
diff --git a/gravity-sync.sh b/gravity-sync.sh
index 8585459..5592c7f 100755
--- a/gravity-sync.sh
+++ b/gravity-sync.sh
@@ -3,7 +3,7 @@ SCRIPT_START=$SECONDS
# GRAVITY SYNC BY VMSTAN #####################
PROGRAM='Gravity Sync'
-VERSION='3.1.1'
+VERSION='3.1.2'
# For documentation or downloading updates visit https://github.com/vmstan/gravity-sync
# Requires Pi-Hole 5.x or higher already be installed, for help visit https://pi-hole.net
@@ -107,81 +107,84 @@ source ${LOCAL_FOLDR}/includes/gs-exit.sh
# SCRIPT EXECUTION ###########################
case $# in
- 0)
- start_gs
- task_smart ;;
- 1)
- case $1 in
- smart|sync)
- start_gs
- task_smart ;;
- pull)
- start_gs
- task_pull ;;
- push)
- start_gs
- task_push ;;
- restore)
- start_gs
- task_restore ;;
- version)
- start_gs_noconfig
- task_version ;;
- update|upgrade)
- start_gs_noconfig
- task_update ;;
- dev|devmode|development|develop)
- start_gs_noconfig
- task_devmode ;;
- logs|log)
- start_gs
- task_logs ;;
- compare)
- start_gs
- task_compare ;;
- cron)
- start_gs
- task_cron ;;
- config|configure)
- start_gs_noconfig
- task_configure ;;
- auto|automate)
- start_gs
- task_automate ;;
- backup)
- start_gs
- task_backup ;;
- purge)
- start_gs
- task_purge ;;
- sudo)
- start_gs
- task_sudo ;;
- *)
- start_gs
- task_invalid ;;
- esac
- ;;
-
- 2)
- case $1 in
- auto|automate)
- start_gs
- task_automate ;;
- esac
- ;;
-
- 3)
- case $1 in
- auto|automate)
- start_gs
- task_automate $2 $3 ;;
- esac
- ;;
-
- *)
- start_gs
- task_invalid ;;
+ 0)
+ start_gs
+ task_smart ;;
+ 1)
+ case $1 in
+ smart|sync)
+ start_gs
+ task_smart ;;
+ pull)
+ start_gs
+ task_pull ;;
+ push)
+ start_gs
+ task_push ;;
+ restore)
+ start_gs
+ task_restore ;;
+ version)
+ start_gs_noconfig
+ task_version ;;
+ update|upgrade)
+ start_gs_noconfig
+ task_update ;;
+ dev|devmode|development|develop)
+ start_gs_noconfig
+ task_devmode ;;
+ logs|log)
+ start_gs
+ task_logs ;;
+ compare)
+ start_gs
+ task_compare ;;
+ cron)
+ start_gs
+ task_cron ;;
+ config|configure)
+ start_gs_noconfig
+ task_configure ;;
+ auto|automate)
+ start_gs
+ task_automate ;;
+ backup)
+ start_gs
+ task_backup ;;
+ purge)
+ start_gs
+ task_purge ;;
+ sudo)
+ start_gs
+ task_sudo ;;
+ info)
+ start_gs
+ task_info ;;
+ *)
+ start_gs
+ task_invalid ;;
+ esac
+ ;;
+
+ 2)
+ case $1 in
+ auto|automate)
+ start_gs
+ task_automate ;;
+ esac
+ ;;
+
+ 3)
+ case $1 in
+ auto|automate)
+ start_gs
+ task_automate $2 $3 ;;
+ esac
+ ;;
+
+ *)
+ start_gs
+ task_invalid ;;
esac
# END OF SCRIPT ##############################
\ No newline at end of file
diff --git a/includes/gs-automate.sh b/includes/gs-automate.sh
index a10746e..a5299ef 100644
--- a/includes/gs-automate.sh
+++ b/includes/gs-automate.sh
@@ -6,109 +6,109 @@
## Automate Task
function task_automate {
- TASKTYPE='AUTOMATE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- CRON_EXIST='0'
- CRON_CHECK=$(crontab -l | grep -q "${GS_FILENAME}" && echo '1' || echo '0')
- if [ ${CRON_CHECK} == 1 ]
- then
- MESSAGE="Automation Task Already Exists"
- echo_info
- CRON_EXIST='1'
- fi
-
- MESSAGE="Configuring Hourly Smart Sync"
- echo_info
-
- if [[ $1 =~ ^[0-9][0-9]?$ ]]
- then
- INPUT_AUTO_FREQ=$1
- else
- MESSAGE="Sync Frequency in Minutes (1-30) or 0 to Disable"
- echo_need
- read INPUT_AUTO_FREQ
- fi
-
- if [ $INPUT_AUTO_FREQ -gt 30 ]
- then
- MESSAGE="Invalid Frequency Range"
- echo_fail
- exit_nochange
- elif [ $INPUT_AUTO_FREQ -lt 1 ]
- then
- if [ $CRON_EXIST == 1 ]
- then
- clear_cron
-
- MESSAGE="Sync Automation Disabled"
- echo_warn
- else
- MESSAGE="No Sync Automation Scheduled"
- echo_warn
- fi
- else
- if [ $CRON_EXIST == 1 ]
- then
- clear_cron
- fi
-
- MESSAGE="Saving New Sync Automation"
- echo_stat
- (crontab -l 2>/dev/null; echo "*/${INPUT_AUTO_FREQ} * * * * ${BASH_PATH} ${LOCAL_FOLDR}/${GS_FILENAME} smart > ${LOG_PATH}/${CRONJOB_LOG}") | crontab -
- error_validate
- fi
-
- MESSAGE="Configuring Daily Backup Frequency"
- echo_info
-
- if [[ $2 =~ ^[0-9][0-9]?$ ]]
- then
- INPUT_AUTO_BACKUP=$2
- else
- MESSAGE="Hour of Day to Backup (1-24) or 0 to Disable"
- echo_need
- read INPUT_AUTO_BACKUP
- fi
-
- if [ $INPUT_AUTO_BACKUP -gt 24 ]
- then
- MESSAGE="Invalid Frequency Range"
- echo_fail
- exit_nochange
- elif [ $INPUT_AUTO_BACKUP -lt 1 ]
- then
- MESSAGE="No Backup Automation Scheduled"
- echo_warn
- else
- MESSAGE="Saving New Backup Automation"
- echo_stat
- (crontab -l 2>/dev/null; echo "0 ${INPUT_AUTO_BACKUP} * * * ${BASH_PATH} ${LOCAL_FOLDR}/${GS_FILENAME} backup >/dev/null 2>&1") | crontab -
- error_validate
- fi
-
- exit_withchange
+ TASKTYPE='AUTOMATE'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ CRON_EXIST='0'
+ CRON_CHECK=$(crontab -l | grep -q "${GS_FILENAME}" && echo '1' || echo '0')
+ if [ ${CRON_CHECK} == 1 ]
+ then
+ MESSAGE="Automation Task Already Exists"
+ echo_info
+ CRON_EXIST='1'
+ fi
+
+ MESSAGE="Configuring Hourly Smart Sync"
+ echo_info
+
+ if [[ $1 =~ ^[0-9][0-9]?$ ]]
+ then
+ INPUT_AUTO_FREQ=$1
+ else
+ MESSAGE="Sync Frequency in Minutes (1-30) or 0 to Disable"
+ echo_need
+ read INPUT_AUTO_FREQ
+ fi
+
+ if [ $INPUT_AUTO_FREQ -gt 30 ]
+ then
+ MESSAGE="Invalid Frequency Range"
+ echo_fail
+ exit_nochange
+ elif [ $INPUT_AUTO_FREQ -lt 1 ]
+ then
+ if [ $CRON_EXIST == 1 ]
+ then
+ clear_cron
+
+ MESSAGE="Sync Automation Disabled"
+ echo_warn
+ else
+ MESSAGE="No Sync Automation Scheduled"
+ echo_warn
+ fi
+ else
+ if [ $CRON_EXIST == 1 ]
+ then
+ clear_cron
+ fi
+
+ MESSAGE="Saving New Sync Automation"
+ echo_stat
+ (crontab -l 2>/dev/null; echo "*/${INPUT_AUTO_FREQ} * * * * ${BASH_PATH} ${LOCAL_FOLDR}/${GS_FILENAME} smart > ${LOG_PATH}/${CRONJOB_LOG}") | crontab -
+ error_validate
+ fi
+
+ MESSAGE="Configuring Daily Backup Frequency"
+ echo_info
+
+ if [[ $2 =~ ^[0-9][0-9]?$ ]]
+ then
+ INPUT_AUTO_BACKUP=$2
+ else
+ MESSAGE="Hour of Day to Backup (1-24) or 0 to Disable"
+ echo_need
+ read INPUT_AUTO_BACKUP
+ fi
+
+ if [ $INPUT_AUTO_BACKUP -gt 24 ]
+ then
+ MESSAGE="Invalid Frequency Range"
+ echo_fail
+ exit_nochange
+ elif [ $INPUT_AUTO_BACKUP -lt 1 ]
+ then
+ MESSAGE="No Backup Automation Scheduled"
+ echo_warn
+ else
+ MESSAGE="Saving New Backup Automation"
+ echo_stat
+ (crontab -l 2>/dev/null; echo "0 ${INPUT_AUTO_BACKUP} * * * ${BASH_PATH} ${LOCAL_FOLDR}/${GS_FILENAME} backup >/dev/null 2>&1") | crontab -
+ error_validate
+ fi
+
+ exit_withchange
}
## Clear Existing Automation Settings
function clear_cron {
- MESSAGE="Removing Existing Automation"
- echo_stat
-
- crontab -l > cronjob-old.tmp
- sed "/${GS_FILENAME}/d" cronjob-old.tmp > cronjob-new.tmp
- crontab cronjob-new.tmp 2>/dev/null
- error_validate
- rm cronjob-old.tmp
- rm cronjob-new.tmp
+ MESSAGE="Removing Existing Automation"
+ echo_stat
+
+ crontab -l > cronjob-old.tmp
+ sed "/${GS_FILENAME}/d" cronjob-old.tmp > cronjob-new.tmp
+ crontab cronjob-new.tmp 2>/dev/null
+ error_validate
+ rm cronjob-old.tmp
+ rm cronjob-new.tmp
}
## Cron Task
function task_cron {
- TASKTYPE='CRON'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- show_crontab
+ TASKTYPE='CRON'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ show_crontab
}
\ No newline at end of file
diff --git a/includes/gs-backup.sh b/includes/gs-backup.sh
index 4987606..e72a24a 100644
--- a/includes/gs-backup.sh
+++ b/includes/gs-backup.sh
@@ -6,70 +6,70 @@
## Backup Task
function task_backup {
- TASKTYPE='BACKUP'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- backup_settime
- backup_local_gravity
- backup_local_custom
- backup_cleanup
-
- logs_export
- exit_withchange
+ TASKTYPE='BACKUP'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ backup_settime
+ backup_local_gravity
+ backup_local_custom
+ backup_cleanup
+
+ logs_export
+ exit_withchange
}
function backup_settime {
- BACKUPTIMESTAMP=$(date +%F-%H%M%S)
+ BACKUPTIMESTAMP=$(date +%F-%H%M%S)
}
function backup_local_gravity {
- MESSAGE="Performing Backup of Local ${GRAVITY_FI}"
- echo_stat
-
- sqlite3 ${PIHOLE_DIR}/${GRAVITY_FI} ".backup '${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup'"
- error_validate
+ MESSAGE="Performing Backup of Local ${GRAVITY_FI}"
+ echo_stat
+
+ sqlite3 ${PIHOLE_DIR}/${GRAVITY_FI} ".backup '${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup'"
+ error_validate
}
function backup_local_custom {
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
- then
- MESSAGE="Performing Backup Up Local ${CUSTOM_DNS}"
- echo_stat
-
- cp ${PIHOLE_DIR}/${CUSTOM_DNS} ${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CUSTOM_DNS}.backup
- error_validate
- fi
- fi
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
+ then
+ MESSAGE="Performing Backup Up Local ${CUSTOM_DNS}"
+ echo_stat
+
+ cp ${PIHOLE_DIR}/${CUSTOM_DNS} ${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CUSTOM_DNS}.backup
+ error_validate
+ fi
+ fi
}
function backup_remote_gravity {
- MESSAGE="Performing Backup of Remote ${GRAVITY_FI}"
- echo_stat
-
- CMD_TIMEOUT='60'
- CMD_REQUESTED="sudo sqlite3 ${RIHOLE_DIR}/${GRAVITY_FI} \".backup '${RIHOLE_DIR}/${GRAVITY_FI}.backup'\""
- create_sshcmd
+ MESSAGE="Performing Backup of Remote ${GRAVITY_FI}"
+ echo_stat
+
+ CMD_TIMEOUT='60'
+ CMD_REQUESTED="sudo sqlite3 ${RIHOLE_DIR}/${GRAVITY_FI} \".backup '${RIHOLE_DIR}/${GRAVITY_FI}.backup'\""
+ create_sshcmd
}
function backup_remote_custom {
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- MESSAGE="Performing Backup of Remote ${CUSTOM_DNS}"
- echo_stat
-
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo cp ${RIHOLE_DIR}/${CUSTOM_DNS} ${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
- create_sshcmd
- fi
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ MESSAGE="Performing Backup of Remote ${CUSTOM_DNS}"
+ echo_stat
+
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo cp ${RIHOLE_DIR}/${CUSTOM_DNS} ${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
+ create_sshcmd
+ fi
}
function backup_cleanup {
- MESSAGE="Cleaning Up Old Backups"
- echo_stat
-
- find ${LOCAL_FOLDR}/${BACKUP_FOLD}/$(date +%Y)*.backup -mtime +${BACKUP_RETAIN} -type f -delete
- error_validate
+ MESSAGE="Cleaning Up Old Backups"
+ echo_stat
+
+ find ${LOCAL_FOLDR}/${BACKUP_FOLD}/$(date +%Y)*.backup -mtime +${BACKUP_RETAIN} -type f -delete
+ error_validate
}
\ No newline at end of file
diff --git a/includes/gs-colors.sh b/includes/gs-colors.sh
index 36e5a2f..b593e42 100644
--- a/includes/gs-colors.sh
+++ b/includes/gs-colors.sh
@@ -25,30 +25,30 @@ NEED="[${BLUE}?${NC}]"
## Echo Stack
### Informative
function echo_info {
- echo -e "${INFO} ${YELLOW}${MESSAGE}${NC}"
+ echo -e "${INFO} ${YELLOW}${MESSAGE}${NC}"
}
### Warning
function echo_warn {
- echo -e "${WARN} ${PURPLE}${MESSAGE}${NC}"
+ echo -e "${WARN} ${PURPLE}${MESSAGE}${NC}"
}
### Executing
function echo_stat {
- echo -en "${STAT} ${MESSAGE}"
-}
+ echo -en "${STAT} ${MESSAGE}"
+}
### Success
function echo_good {
- echo -e "\r${GOOD} ${MESSAGE}"
+ echo -e "\r${GOOD} ${MESSAGE}"
}
### Failure
function echo_fail {
- echo -e "\r${FAIL} ${MESSAGE}"
+ echo -e "\r${FAIL} ${MESSAGE}"
}
### Request
function echo_need {
- echo -en "${NEED} ${MESSAGE}: "
+ echo -en "${NEED} ${MESSAGE}: "
}
\ No newline at end of file
diff --git a/includes/gs-compare.sh b/includes/gs-compare.sh
index dba1f7d..7fb4017 100644
--- a/includes/gs-compare.sh
+++ b/includes/gs-compare.sh
@@ -1,15 +1,15 @@
## Compare Task
function task_compare {
- TASKTYPE='COMPARE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- show_target
- validate_gs_folders
- validate_ph_folders
- validate_os_sshpass
-
- previous_md5
- md5_compare
- exit_withchange
+ TASKTYPE='COMPARE'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ show_target
+ validate_gs_folders
+ validate_ph_folders
+ validate_os_sshpass
+
+ previous_md5
+ md5_compare
+ exit_withchange
}
\ No newline at end of file
diff --git a/includes/gs-config.sh b/includes/gs-config.sh
index f66c659..550105d 100644
--- a/includes/gs-config.sh
+++ b/includes/gs-config.sh
@@ -6,346 +6,346 @@
## Configure Task
function task_configure {
- TASKTYPE='CONFIGURE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- if [ -f ${LOCAL_FOLDR}/${CONFIG_FILE} ]
- then
- config_delete
- else
- config_generate
- fi
+ TASKTYPE='CONFIGURE'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ if [ -f ${LOCAL_FOLDR}/${CONFIG_FILE} ]
+ then
+ config_delete
+ else
+ config_generate
+ fi
- # backup_settime
- # backup_local_gravity
- # backup_local_custom
- # backup_cleanup
-
- create_alias
-
- exit_withchange
+ # backup_settime
+ # backup_local_gravity
+ # backup_local_custom
+ # backup_cleanup
+
+ create_alias
+
+ exit_withchange
}
## Generate New Configuration
function config_generate {
- # detect_ssh
-
- MESSAGE="Creating New ${CONFIG_FILE} from Template"
- echo_stat
- cp ${LOCAL_FOLDR}/${CONFIG_FILE}.example ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
-
- docker_detect
- if [ "${DOCKERREADY}" == "1" ]
- then
- MESSAGE="Advanced Configuration Required"
- echo_info
- advanced_config_generate
- else
- MESSAGE="Use Advanced Installation Options? (Leave blank for default 'No')"
- echo_need
- read INPUT_ADVANCED_INSTALL
- INPUT_ADVANCED_INSTALL="${INPUT_ADVANCED_INSTALL:-N}"
-
- if [ "${INPUT_ADVANCED_INSTALL}" != "N" ]
- then
- MESSAGE="Advanced Configuration Selected"
- echo_info
-
- advanced_config_generate
- fi
- fi
-
- MESSAGE="Standard Settings"
- echo_info
+ # detect_ssh
+
+ MESSAGE="Creating New ${CONFIG_FILE} from Template"
+ echo_stat
+ cp ${LOCAL_FOLDR}/${CONFIG_FILE}.example ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+
+ docker_detect
+ if [ "${DOCKERREADY}" == "1" ]
+ then
+ MESSAGE="Advanced Configuration Required"
+ echo_info
+ advanced_config_generate
+ else
+ MESSAGE="Use Advanced Installation Options? (Leave blank for default 'No')"
+ echo_need
+ read INPUT_ADVANCED_INSTALL
+ INPUT_ADVANCED_INSTALL="${INPUT_ADVANCED_INSTALL:-N}"
+
+ if [ "${INPUT_ADVANCED_INSTALL}" != "N" ]
+ then
+ MESSAGE="Advanced Configuration Selected"
+ echo_info
+
+ advanced_config_generate
+ fi
+ fi
+
+ MESSAGE="Standard Settings"
+ echo_info
- MESSAGE="Primary Pi-hole Address (IP or DNS)"
- echo_need
- read INPUT_REMOTE_HOST
+ MESSAGE="Primary Pi-hole Address (IP or DNS)"
+ echo_need
+ read INPUT_REMOTE_HOST
- if [ "${PING_AVOID}" != "1" ]
- then
- MESSAGE="Testing Network Connection (ICMP)"
- echo_stat
- ping -c 3 ${INPUT_REMOTE_HOST} >/dev/null 2>&1
- error_validate
- else
- MESSAGE="Bypassing Network Testing (ICMP)"
- echo_warn
- fi
-
- MESSAGE="SSH User for ${INPUT_REMOTE_HOST}"
- echo_need
- read INPUT_REMOTE_USER
-
- MESSAGE="Saving Host to ${CONFIG_FILE}"
- echo_stat
- sed -i "/REMOTE_HOST='192.168.1.10'/c\REMOTE_HOST='${INPUT_REMOTE_HOST}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
-
- MESSAGE="Saving User to ${CONFIG_FILE}"
- echo_stat
- sed -i "/REMOTE_USER='pi'/c\REMOTE_USER='${INPUT_REMOTE_USER}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
+ if [ "${PING_AVOID}" != "1" ]
+ then
+ MESSAGE="Testing Network Connection (ICMP)"
+ echo_stat
+ ping -c 3 ${INPUT_REMOTE_HOST} >/dev/null 2>&1
+ error_validate
+ else
+ MESSAGE="Bypassing Network Testing (ICMP)"
+ echo_warn
+ fi
+
+ MESSAGE="SSH User for ${INPUT_REMOTE_HOST}"
+ echo_need
+ read INPUT_REMOTE_USER
+
+ MESSAGE="Saving Host to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/REMOTE_HOST='192.168.1.10'/c\REMOTE_HOST='${INPUT_REMOTE_HOST}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+
+ MESSAGE="Saving User to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/REMOTE_USER='pi'/c\REMOTE_USER='${INPUT_REMOTE_USER}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
- generate_sshkey
-
- MESSAGE="Importing New ${CONFIG_FILE}"
- echo_stat
- source ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
+ generate_sshkey
+
+ MESSAGE="Importing New ${CONFIG_FILE}"
+ echo_stat
+ source ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
- export_sshkey
-
- # MESSAGE="Testing Configuration"
- # echo_info
+ export_sshkey
+
+ # MESSAGE="Testing Configuration"
+ # echo_info
- # validate_os_sshpass
- # validate_sqlite3
+ # validate_os_sshpass
+ # validate_sqlite3
- # detect_remotersync
+ # detect_remotersync
}
## Advanced Configuration Options
function advanced_config_generate {
- MESSAGE="Local Pi-hole in Docker Container? (Leave blank for default 'No')"
- echo_need
- read INPUT_PH_IN_TYPE
- INPUT_PH_IN_TYPE="${INPUT_PH_IN_TYPE:-N}"
-
- if [ "${INPUT_PH_IN_TYPE}" != "N" ]
- then
- MESSAGE="Saving Local Docker Setting to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# PH_IN_TYPE=''/c\PH_IN_TYPE='docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
-
- MESSAGE="Local Docker Container Name? (Leave blank for default 'pihole')"
- echo_need
- read INPUT_DOCKER_CON
- INPUT_DOCKER_CON="${INPUT_DOCKER_CON:-pihole}"
-
- if [ "${INPUT_DOCKER_CON}" != "pihole" ]
- then
- MESSAGE="Saving Local Container Name to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# DOCKER_CON=''/c\DOCKER_CON='${INPUT_DOCKER_CON}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
- MESSAGE="Local Pi-hole 'etc' Volume Path? (Required, no trailing slash)"
- echo_need
- read INPUT_PIHOLE_DIR
-
- if [ "${INPUT_PIHOLE_DIR}" != "" ]
- then
- MESSAGE="Saving Local Pi-hole Volume to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# PIHOLE_DIR=''/c\PIHOLE_DIR='${INPUT_PIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- SKIP_PIHOLE_DIR="1"
- else
- MESSAGE="This setting is required!"
- echo_warn
- exit_withchanges
- fi
-
- MESSAGE="Saving Local Volume Ownership to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# FILE_OWNER=''/c\FILE_OWNER='named:docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
- MESSAGE="Remote Pi-hole in Docker Container? (Leave blank for default 'No')"
- echo_need
- read INPUT_RH_IN_TYPE
- INPUT_RH_IN_TYPE="${INPUT_RH_IN_TYPE:-N}"
-
- if [ "${INPUT_RH_IN_TYPE}" != "N" ]
- then
- MESSAGE="Saving Remote Docker Setting to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# RH_IN_TYPE=''/c\RH_IN_TYPE='docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
-
- MESSAGE="Remote Docker Container Name? (Leave blank for default 'pihole')"
- echo_need
- read INPUT_ROCKER_CON
- INPUT_ROCKER_CON="${INPUT_ROCKER_CON:-pihole}"
-
- if [ "${INPUT_ROCKER_CON}" != "pihole" ]
- then
- MESSAGE="Saving Remote Container Name to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# ROCKER_CON=''/c\ROCKER_CON='${INPUT_ROCKER_CON}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
- MESSAGE="Remote Pi-hole 'etc' Volume Path? (Required, no trailing slash)"
- echo_need
- read INPUT_RIHOLE_DIR
-
- if [ "${INPUT_RIHOLE_DIR}" != "" ]
- then
- MESSAGE="Saving Remote Pi-hole Volume to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# RIHOLE_DIR=''/c\RIHOLE_DIR='${INPUT_RIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- SKIP_RIHOLE_DIR="1"
- else
- MESSAGE="This setting is required!"
- echo_warn
- exit_withchanges
- fi
-
- MESSAGE="Saving Remote Volume Ownership to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# RILE_OWNER=''/c\RILE_OWNER='named:docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
-
- if [ $SKIP_PIHOLE_DIR != "1" ]
- then
- MESSAGE="Local Pi-hole Settings Directory Path? (Leave blank for default '/etc/pihole')"
- echo_need
- read INPUT_PIHOLE_DIR
- INPUT_PIHOLE_DIR="${INPUT_PIHOLE_DIR:-/etc/pihole}"
-
- if [ "${INPUT_PIHOLE_DIR}" != "/etc/pihole" ]
- then
- MESSAGE="Saving Local Pi-hole Settings Directory Path to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# PIHOLE_DIR=''/c\PIHOLE_DIR='${INPUT_PIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
- fi
-
- if [ "$SKIP_RIHOLE_DIR" != "1" ]
- then
- MESSAGE="Remote Pi-hole Settings Directory Path? (Leave blank for default '/etc/pihole')"
- echo_need
- read INPUT_RIHOLE_DIR
- INPUT_RIHOLE_DIR="${INPUT_RIHOLE_DIR:-/etc/pihole}"
-
- if [ "${INPUT_RIHOLE_DIR}" != "/etc/pihole" ]
- then
- MESSAGE="Saving Remote Pi-hole Settings Directory Path to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# RIHOLE_DIR=''/c\RIHOLE_DIR='${INPUT_RIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
- fi
-
- MESSAGE="Use Custom SSH Port? (Leave blank for default '22')"
- echo_need
- read INPUT_SSH_PORT
- INPUT_SSH_PORT="${INPUT_SSH_PORT:-22}"
- SSH_PORT="${INPUT_SSH_PORT}"
-
- if [ "${INPUT_SSH_PORT}" != "22" ]
- then
- MESSAGE="Saving Custom SSH Port to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# SSH_PORT=''/c\SSH_PORT='${INPUT_SSH_PORT}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
- MESSAGE="Enable ICMP Check? (Leave blank for default 'Yes')"
- echo_need
- read INPUT_PING_AVOID
- INPUT_PING_AVOID="${INPUT_PING_AVOID:-Y}"
-
- if [ "${INPUT_PING_AVOID}" != "Y" ]
- then
- MESSAGE="Saving ICMP Avoidance to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# PING_AVOID=''/c\PING_AVOID='1'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- PING_AVOID=1
- fi
-
- MESSAGE="Use Custom SSH PKIF Location? (Leave blank for default '.ssh/id_rsa')"
- echo_need
- read INPUT_CUSTOM_PKIF
- INPUT_CUSTOM_PKIF="${INPUT_CUSTOM_PKIF:-.ssh/id_rsa}"
-
- if [ "${INPUT_CUSTOM_PKIF}" != ".ssh/id_rsa" ]
- then
- MESSAGE="Saving Custom PKIF to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# SSH_PKIF=''/c\SSH_PKIF='${INPUT_CUSTOM_PKIF}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
- MESSAGE="Enable Replicate 'Local DNS Records' Feature? (Leave blank for default 'Yes')"
- echo_need
- read INPUT_SKIP_CUSTOM
- INPUT_SKIP_CUSTOM="${INPUT_SKIP_CUSTOM:-Y}"
-
- if [ "${INPUT_SKIP_CUSTOM}" != "Y" ]
- then
- MESSAGE="Saving Local DNS Preference to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# SKIP_CUSTOM=''/c\SKIP_CUSTOM='1'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
-
- MESSAGE="Change Backup Retention in Days? (Leave blank for default '7')"
- echo_need
- read INPUT_BACKUP_RETAIN
- INPUT_BACKUP_RETAIN="${INPUT_BACKUP_RETAIN:-7}"
-
- if [ "${INPUT_BACKUP_RETAIN}" != "7" ]
- then
- MESSAGE="Saving Backup Retention to ${CONFIG_FILE}"
- echo_stat
- sed -i "/# BACKUP_RETAIN=''/c\BACKUP_RETAIN='1'" ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
- fi
+ MESSAGE="Local Pi-hole in Docker Container? (Leave blank for default 'No')"
+ echo_need
+ read INPUT_PH_IN_TYPE
+ INPUT_PH_IN_TYPE="${INPUT_PH_IN_TYPE:-N}"
+
+ if [ "${INPUT_PH_IN_TYPE}" != "N" ]
+ then
+ MESSAGE="Saving Local Docker Setting to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# PH_IN_TYPE=''/c\PH_IN_TYPE='docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+
+ MESSAGE="Local Docker Container Name? (Leave blank for default 'pihole')"
+ echo_need
+ read INPUT_DOCKER_CON
+ INPUT_DOCKER_CON="${INPUT_DOCKER_CON:-pihole}"
+
+ if [ "${INPUT_DOCKER_CON}" != "pihole" ]
+ then
+ MESSAGE="Saving Local Container Name to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# DOCKER_CON=''/c\DOCKER_CON='${INPUT_DOCKER_CON}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+ MESSAGE="Local Pi-hole 'etc' Volume Path? (Required, no trailing slash)"
+ echo_need
+ read INPUT_PIHOLE_DIR
+
+ if [ "${INPUT_PIHOLE_DIR}" != "" ]
+ then
+ MESSAGE="Saving Local Pi-hole Volume to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# PIHOLE_DIR=''/c\PIHOLE_DIR='${INPUT_PIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ SKIP_PIHOLE_DIR="1"
+ else
+ MESSAGE="This setting is required!"
+ echo_warn
+ exit_withchanges
+ fi
+
+ MESSAGE="Saving Local Volume Ownership to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# FILE_OWNER=''/c\FILE_OWNER='named:docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+ MESSAGE="Remote Pi-hole in Docker Container? (Leave blank for default 'No')"
+ echo_need
+ read INPUT_RH_IN_TYPE
+ INPUT_RH_IN_TYPE="${INPUT_RH_IN_TYPE:-N}"
+
+ if [ "${INPUT_RH_IN_TYPE}" != "N" ]
+ then
+ MESSAGE="Saving Remote Docker Setting to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# RH_IN_TYPE=''/c\RH_IN_TYPE='docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+
+ MESSAGE="Remote Docker Container Name? (Leave blank for default 'pihole')"
+ echo_need
+ read INPUT_ROCKER_CON
+ INPUT_ROCKER_CON="${INPUT_ROCKER_CON:-pihole}"
+
+ if [ "${INPUT_ROCKER_CON}" != "pihole" ]
+ then
+ MESSAGE="Saving Remote Container Name to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# ROCKER_CON=''/c\ROCKER_CON='${INPUT_ROCKER_CON}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+ MESSAGE="Remote Pi-hole 'etc' Volume Path? (Required, no trailing slash)"
+ echo_need
+ read INPUT_RIHOLE_DIR
+
+ if [ "${INPUT_RIHOLE_DIR}" != "" ]
+ then
+ MESSAGE="Saving Remote Pi-hole Volume to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# RIHOLE_DIR=''/c\RIHOLE_DIR='${INPUT_RIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ SKIP_RIHOLE_DIR="1"
+ else
+ MESSAGE="This setting is required!"
+ echo_warn
+ exit_withchanges
+ fi
+
+ MESSAGE="Saving Remote Volume Ownership to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# RILE_OWNER=''/c\RILE_OWNER='named:docker'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+
+ if [ "$SKIP_PIHOLE_DIR" != "1" ]
+ then
+ MESSAGE="Local Pi-hole Settings Directory Path? (Leave blank for default '/etc/pihole')"
+ echo_need
+ read INPUT_PIHOLE_DIR
+ INPUT_PIHOLE_DIR="${INPUT_PIHOLE_DIR:-/etc/pihole}"
+
+ if [ "${INPUT_PIHOLE_DIR}" != "/etc/pihole" ]
+ then
+ MESSAGE="Saving Local Pi-hole Settings Directory Path to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# PIHOLE_DIR=''/c\PIHOLE_DIR='${INPUT_PIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+ fi
+
+ if [ "$SKIP_RIHOLE_DIR" != "1" ]
+ then
+ MESSAGE="Remote Pi-hole Settings Directory Path? (Leave blank for default '/etc/pihole')"
+ echo_need
+ read INPUT_RIHOLE_DIR
+ INPUT_RIHOLE_DIR="${INPUT_RIHOLE_DIR:-/etc/pihole}"
+
+ if [ "${INPUT_RIHOLE_DIR}" != "/etc/pihole" ]
+ then
+ MESSAGE="Saving Remote Pi-hole Settings Directory Path to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# RIHOLE_DIR=''/c\RIHOLE_DIR='${INPUT_RIHOLE_DIR}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+ fi
+
+ MESSAGE="Use Custom SSH Port? (Leave blank for default '22')"
+ echo_need
+ read INPUT_SSH_PORT
+ INPUT_SSH_PORT="${INPUT_SSH_PORT:-22}"
+ SSH_PORT="${INPUT_SSH_PORT}"
+
+ if [ "${INPUT_SSH_PORT}" != "22" ]
+ then
+ MESSAGE="Saving Custom SSH Port to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# SSH_PORT=''/c\SSH_PORT='${INPUT_SSH_PORT}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+ MESSAGE="Enable ICMP Check? (Leave blank for default 'Yes')"
+ echo_need
+ read INPUT_PING_AVOID
+ INPUT_PING_AVOID="${INPUT_PING_AVOID:-Y}"
+
+ if [ "${INPUT_PING_AVOID}" != "Y" ]
+ then
+ MESSAGE="Saving ICMP Avoidance to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# PING_AVOID=''/c\PING_AVOID='1'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ PING_AVOID=1
+ fi
+
+ MESSAGE="Use Custom SSH PKIF Location? (Leave blank for default '.ssh/id_rsa')"
+ echo_need
+ read INPUT_CUSTOM_PKIF
+ INPUT_CUSTOM_PKIF="${INPUT_CUSTOM_PKIF:-.ssh/id_rsa}"
+
+ if [ "${INPUT_CUSTOM_PKIF}" != ".ssh/id_rsa" ]
+ then
+ MESSAGE="Saving Custom PKIF to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# SSH_PKIF=''/c\SSH_PKIF='${INPUT_CUSTOM_PKIF}'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+ MESSAGE="Enable Replicate 'Local DNS Records' Feature? (Leave blank for default 'Yes')"
+ echo_need
+ read INPUT_SKIP_CUSTOM
+ INPUT_SKIP_CUSTOM="${INPUT_SKIP_CUSTOM:-Y}"
+
+ if [ "${INPUT_SKIP_CUSTOM}" != "Y" ]
+ then
+ MESSAGE="Saving Local DNS Preference to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# SKIP_CUSTOM=''/c\SKIP_CUSTOM='1'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
+
+ MESSAGE="Change Backup Retention in Days? (Leave blank for default '7')"
+ echo_need
+ read INPUT_BACKUP_RETAIN
+ INPUT_BACKUP_RETAIN="${INPUT_BACKUP_RETAIN:-7}"
+
+ if [ "${INPUT_BACKUP_RETAIN}" != "7" ]
+ then
+ MESSAGE="Saving Backup Retention to ${CONFIG_FILE}"
+ echo_stat
+ sed -i "/# BACKUP_RETAIN=''/c\BACKUP_RETAIN='1'" ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+ fi
}
## Delete Existing Configuration
function config_delete {
- source ${LOCAL_FOLDR}/${CONFIG_FILE}
- MESSAGE="Configuration File Exists"
- echo_warn
-
- echo -e "========================================================"
- cat ${LOCAL_FOLDR}/${CONFIG_FILE}
- echo -e "========================================================"
-
- MESSAGE="Are you sure you want to erase this configuration?"
- echo_warn
+ source ${LOCAL_FOLDR}/${CONFIG_FILE}
+ MESSAGE="Configuration File Exists"
+ echo_warn
+
+ echo -e "========================================================"
+ cat ${LOCAL_FOLDR}/${CONFIG_FILE}
+ echo -e "========================================================"
+
+ MESSAGE="Are you sure you want to erase this configuration?"
+ echo_warn
- intent_validate
+ intent_validate
- MESSAGE="Erasing Existing Configuration"
- echo_stat
- rm -f ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
+ MESSAGE="Erasing Existing Configuration"
+ echo_stat
+ rm -f ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
- config_generate
+ config_generate
}
## Detect Docker
function docker_detect {
- if hash docker 2>/dev/null
- then
- FTLCHECK=$(sudo docker container ls | grep 'pihole/pihole')
- if [ "$FTLCHECK" != "" ]
- then
- DOCKERREADY="1"
- fi
- fi
+ if hash docker 2>/dev/null
+ then
+ FTLCHECK=$(sudo docker container ls | grep 'pihole/pihole')
+ if [ "$FTLCHECK" != "" ]
+ then
+ DOCKERREADY="1"
+ fi
+ fi
}
## Create Bash Alias
function create_alias {
- MESSAGE="Creating Bash Alias"
- echo_stat
-
- echo -e "alias gravity-sync='${GS_FILEPATH}'" | sudo tee -a /etc/bash.bashrc > /dev/null
- error_validate
+ MESSAGE="Creating Bash Alias"
+ echo_stat
+
+ echo -e "alias gravity-sync='${GS_FILEPATH}'" | sudo tee -a /etc/bash.bashrc > /dev/null
+ error_validate
}
\ No newline at end of file
diff --git a/includes/gs-core.sh b/includes/gs-core.sh
index 6abad37..b98ed33 100644
--- a/includes/gs-core.sh
+++ b/includes/gs-core.sh
@@ -6,87 +6,87 @@
## Import Settings
function import_gs {
- MESSAGE="Importing ${CONFIG_FILE} Settings"
- echo -en "${STAT} $MESSAGE"
- if [ -f ${LOCAL_FOLDR}/${CONFIG_FILE} ]
- then
- source ${LOCAL_FOLDR}/${CONFIG_FILE}
- error_validate
-
- # MESSAGE="Targeting ${REMOTE_USER}@${REMOTE_HOST}"
- # echo_info
-
- # detect_ssh
- else
- echo_fail
-
- MESSAGE="${CONFIG_FILE} Missing"
- echo_info
-
- TASKTYPE='CONFIG'
- config_generate
- fi
+ MESSAGE="Importing ${CONFIG_FILE} Settings"
+ echo -en "${STAT} $MESSAGE"
+ if [ -f ${LOCAL_FOLDR}/${CONFIG_FILE} ]
+ then
+ source ${LOCAL_FOLDR}/${CONFIG_FILE}
+ error_validate
+
+ # MESSAGE="Targeting ${REMOTE_USER}@${REMOTE_HOST}"
+ # echo_info
+
+ # detect_ssh
+ else
+ echo_fail
+
+ MESSAGE="${CONFIG_FILE} Missing"
+ echo_info
+
+ TASKTYPE='CONFIG'
+ config_generate
+ fi
}
## Invalid Tasks
function task_invalid {
- echo_fail
- list_gs_arguments
+ echo_fail
+ list_gs_arguments
}
## Error Validation
function error_validate {
- if [ "$?" != "0" ]
- then
- echo_fail
- exit 1
- else
- echo_good
- fi
+ if [ "$?" != "0" ]
+ then
+ echo_fail
+ exit 1
+ else
+ echo_good
+ fi
}
function ph_type {
- if [ "$PH_IN_TYPE" == "default" ]
- then
- PH_EXEC="${PIHOLE_BIN}"
- elif [ "$PH_IN_TYPE" == "docker" ]
- then
- PH_EXEC="${DOCKER_BIN} exec ${DOCKER_CON} pihole"
- fi
-
- if [ "$RH_IN_TYPE" == "default" ]
- then
- RH_EXEC="${RIHOLE_BIN}"
- elif [ "$RH_IN_TYPE" == "docker" ]
- then
- RH_EXEC="${ROCKER_BIN} exec ${DOCKER_CON} pihole"
- fi
+ if [ "$PH_IN_TYPE" == "default" ]
+ then
+ PH_EXEC="${PIHOLE_BIN}"
+ elif [ "$PH_IN_TYPE" == "docker" ]
+ then
+ PH_EXEC="${DOCKER_BIN} exec ${DOCKER_CON} pihole"
+ fi
+
+ if [ "$RH_IN_TYPE" == "default" ]
+ then
+ RH_EXEC="${RIHOLE_BIN}"
+ elif [ "$RH_IN_TYPE" == "docker" ]
+ then
+ RH_EXEC="${ROCKER_BIN} exec ${DOCKER_CON} pihole"
+ fi
}
# Standard Output
function start_gs {
- MESSAGE="${PROGRAM} ${VERSION} Executing"
- echo_info
- cd ${LOCAL_FOLDR}
-
- import_gs
- ph_type
-
- MESSAGE="Evaluating Arguments"
- echo_stat
-
- if [ "${ROOT_CHECK_AVOID}" != "1" ]
- then
- new_root_check
- fi
+ MESSAGE="${PROGRAM} ${VERSION} Executing"
+ echo_info
+ cd ${LOCAL_FOLDR}
+
+ import_gs
+ ph_type
+
+ MESSAGE="Evaluating Arguments"
+ echo_stat
+
+ if [ "${ROOT_CHECK_AVOID}" != "1" ]
+ then
+ new_root_check
+ fi
}
# Standard Output No Config
function start_gs_noconfig {
- MESSAGE="${PROGRAM} ${VERSION} Executing"
- echo_info
- cd ${LOCAL_FOLDR}
-
- MESSAGE="Evaluating Arguments"
- echo_stat
+ MESSAGE="${PROGRAM} ${VERSION} Executing"
+ echo_info
+ cd ${LOCAL_FOLDR}
+
+ MESSAGE="Evaluating Arguments"
+ echo_stat
}
\ No newline at end of file
diff --git a/includes/gs-exit.sh b/includes/gs-exit.sh
index 52198d5..e4fcf44 100644
--- a/includes/gs-exit.sh
+++ b/includes/gs-exit.sh
@@ -6,43 +6,43 @@
## No Changes Made
function exit_nochange {
- SCRIPT_END=$SECONDS
- MESSAGE="${PROGRAM} ${TASKTYPE} Aborting ($((SCRIPT_END-SCRIPT_START)) seconds)"
- echo_info
- exit 0
+ SCRIPT_END=$SECONDS
+ MESSAGE="${PROGRAM} ${TASKTYPE} Aborting ($((SCRIPT_END-SCRIPT_START)) seconds)"
+ echo_info
+ exit 0
}
## Changes Made
function exit_withchange {
- SCRIPT_END=$SECONDS
- MESSAGE="${PROGRAM} ${TASKTYPE} Completed ($((SCRIPT_END-SCRIPT_START)) seconds)"
- echo_info
- exit 0
+ SCRIPT_END=$SECONDS
+ MESSAGE="${PROGRAM} ${TASKTYPE} Completed ($((SCRIPT_END-SCRIPT_START)) seconds)"
+ echo_info
+ exit 0
}
## List GS Arguments
function list_gs_arguments {
- echo -e "Usage: $0 [options]"
- echo -e "Example: '$0 pull'"
- echo -e ""
- echo -e "Setup Options:"
- echo -e " ${YELLOW}config${NC} Create a new ${CONFIG_FILE} file"
- echo -e " ${YELLOW}automate${NC} Add a scheduled pull task to crontab"
- echo -e " ${YELLOW}update${NC} Update ${PROGRAM} to the latest version"
- echo -e " ${YELLOW}version${NC} Display installed version of ${PROGRAM}"
- echo -e " ${YELLOW}sudo${NC} Configure passwordless sudo for current user"
- echo -e ""
- echo -e "Replication Options:"
- echo -e " ${YELLOW}smart${NC} Detect changes on each side and bring them together"
- echo -e " ${YELLOW}pull${NC} Force remote configuration changes to this server"
- echo -e " ${YELLOW}push${NC} Force local configuration made on this server back"
- echo -e " ${YELLOW}restore${NC} Restore the ${GRAVITY_FI} on this server"
- echo -e " ${YELLOW}backup${NC} Backup the ${GRAVITY_FI} on this server"
- echo -e " ${YELLOW}compare${NC} Just check for differences"
- echo -e ""
- echo -e "Debug Options:"
- echo -e " ${YELLOW}logs${NC} Show recent successful replication jobs"
- echo -e " ${YELLOW}cron${NC} Display output of last crontab execution"
- echo -e ""
- exit_nochange
+ echo -e "Usage: $0 [options]"
+ echo -e "Example: '$0 pull'"
+ echo -e ""
+ echo -e "Setup Options:"
+ echo -e " ${YELLOW}config${NC} Create a new ${CONFIG_FILE} file"
+ echo -e " ${YELLOW}automate${NC} Add a scheduled pull task to crontab"
+ echo -e " ${YELLOW}update${NC} Update ${PROGRAM} to the latest version"
+ echo -e " ${YELLOW}version${NC} Display installed version of ${PROGRAM}"
+ echo -e " ${YELLOW}sudo${NC} Configure passwordless sudo for current user"
+ echo -e ""
+ echo -e "Replication Options:"
+ echo -e " ${YELLOW}smart${NC} Detect changes on each side and bring them together"
+ echo -e " ${YELLOW}pull${NC} Force remote configuration changes to this server"
+ echo -e " ${YELLOW}push${NC} Force local configuration made on this server back"
+ echo -e " ${YELLOW}restore${NC} Restore the ${GRAVITY_FI} on this server"
+ echo -e " ${YELLOW}backup${NC} Backup the ${GRAVITY_FI} on this server"
+ echo -e " ${YELLOW}compare${NC} Just check for differences"
+ echo -e ""
+ echo -e "Debug Options:"
+ echo -e " ${YELLOW}logs${NC} Show recent successful replication jobs"
+ echo -e " ${YELLOW}cron${NC} Display output of last crontab execution"
+ echo -e ""
+ exit_nochange
}
\ No newline at end of file
diff --git a/includes/gs-hashing.sh b/includes/gs-hashing.sh
index 8eed765..c3ff50d 100644
--- a/includes/gs-hashing.sh
+++ b/includes/gs-hashing.sh
@@ -6,143 +6,143 @@
## Validate Sync Required
function md5_compare {
- HASHMARK='0'
-
- MESSAGE="Analyzing ${GRAVITY_FI} on ${REMOTE_HOST}"
- echo_stat
- primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//')
- error_validate
-
- MESSAGE="Analyzing ${GRAVITY_FI} on $HOSTNAME"
- echo_stat
- secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//')
- error_validate
-
- if [ "$primaryDBMD5" == "$last_primaryDBMD5" ] && [ "$secondDBMD5" == "$last_secondDBMD5" ]
- then
- HASHMARK=$((HASHMARK+0))
- else
- MESSAGE="Differenced ${GRAVITY_FI} Detected"
- echo_warn
- HASHMARK=$((HASHMARK+1))
- fi
-
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
- then
- if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
- then
- REMOTE_CUSTOM_DNS="1"
- MESSAGE="Analyzing ${CUSTOM_DNS} on ${REMOTE_HOST}"
- echo_stat
-
- primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'")
- error_validate
-
- MESSAGE="Analyzing ${CUSTOM_DNS} on $HOSTNAME"
- echo_stat
- secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//')
- error_validate
-
- if [ "$primaryCLMD5" == "$last_primaryCLMD5" ] && [ "$secondCLMD5" == "$last_secondCLMD5" ]
- then
- HASHMARK=$((HASHMARK+0))
- else
- MESSAGE="Differenced ${CUSTOM_DNS} Detected"
- echo_warn
- HASHMARK=$((HASHMARK+1))
- fi
- else
- MESSAGE="No ${CUSTOM_DNS} Detected on ${REMOTE_HOST}"
- echo_info
- fi
- else
- if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
- then
- REMOTE_CUSTOM_DNS="1"
- MESSAGE="${REMOTE_HOST} has ${CUSTOM_DNS}"
- HASHMARK=$((HASHMARK+1))
- echo_info
- fi
- MESSAGE="No ${CUSTOM_DNS} Detected on $HOSTNAME"
- echo_info
- fi
- fi
-
- if [ "$HASHMARK" != "0" ]
- then
- MESSAGE="Replication Required"
- echo_warn
- HASHMARK=$((HASHMARK+0))
- else
- MESSAGE="No Replication Required"
- echo_info
- exit_nochange
- fi
+ HASHMARK='0'
+
+ MESSAGE="Analyzing ${GRAVITY_FI} on ${REMOTE_HOST}"
+ echo_stat
+ primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//')
+ error_validate
+
+ MESSAGE="Analyzing ${GRAVITY_FI} on $HOSTNAME"
+ echo_stat
+ secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//')
+ error_validate
+
+ if [ "$primaryDBMD5" == "$last_primaryDBMD5" ] && [ "$secondDBMD5" == "$last_secondDBMD5" ]
+ then
+ HASHMARK=$((HASHMARK+0))
+ else
+ MESSAGE="Differenced ${GRAVITY_FI} Detected"
+ echo_warn
+ HASHMARK=$((HASHMARK+1))
+ fi
+
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
+ then
+ if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
+ then
+ REMOTE_CUSTOM_DNS="1"
+ MESSAGE="Analyzing ${CUSTOM_DNS} on ${REMOTE_HOST}"
+ echo_stat
+
+ primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'")
+ error_validate
+
+ MESSAGE="Analyzing ${CUSTOM_DNS} on $HOSTNAME"
+ echo_stat
+ secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//')
+ error_validate
+
+ if [ "$primaryCLMD5" == "$last_primaryCLMD5" ] && [ "$secondCLMD5" == "$last_secondCLMD5" ]
+ then
+ HASHMARK=$((HASHMARK+0))
+ else
+ MESSAGE="Differenced ${CUSTOM_DNS} Detected"
+ echo_warn
+ HASHMARK=$((HASHMARK+1))
+ fi
+ else
+ MESSAGE="No ${CUSTOM_DNS} Detected on ${REMOTE_HOST}"
+ echo_info
+ fi
+ else
+ if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
+ then
+ REMOTE_CUSTOM_DNS="1"
+ MESSAGE="${REMOTE_HOST} has ${CUSTOM_DNS}"
+ HASHMARK=$((HASHMARK+1))
+ echo_info
+ fi
+ MESSAGE="No ${CUSTOM_DNS} Detected on $HOSTNAME"
+ echo_info
+ fi
+ fi
+
+ if [ "$HASHMARK" != "0" ]
+ then
+ MESSAGE="Replication Required"
+ echo_warn
+ HASHMARK=$((HASHMARK+0))
+ else
+ MESSAGE="No Replication Required"
+ echo_info
+ exit_nochange
+ fi
}
function previous_md5 {
- if [ -f "${LOG_PATH}/${HISTORY_MD5}" ]
- then
- last_primaryDBMD5=$(sed "1q;d" ${LOG_PATH}/${HISTORY_MD5})
- last_secondDBMD5=$(sed "2q;d" ${LOG_PATH}/${HISTORY_MD5})
- last_primaryCLMD5=$(sed "3q;d" ${LOG_PATH}/${HISTORY_MD5})
- last_secondCLMD5=$(sed "4q;d" ${LOG_PATH}/${HISTORY_MD5})
- else
- last_primaryDBMD5="0"
- last_secondDBMD5="0"
- last_primaryCLMD5="0"
- last_secondCLMD5="0"
- fi
+ if [ -f "${LOG_PATH}/${HISTORY_MD5}" ]
+ then
+ last_primaryDBMD5=$(sed "1q;d" ${LOG_PATH}/${HISTORY_MD5})
+ last_secondDBMD5=$(sed "2q;d" ${LOG_PATH}/${HISTORY_MD5})
+ last_primaryCLMD5=$(sed "3q;d" ${LOG_PATH}/${HISTORY_MD5})
+ last_secondCLMD5=$(sed "4q;d" ${LOG_PATH}/${HISTORY_MD5})
+ else
+ last_primaryDBMD5="0"
+ last_secondDBMD5="0"
+ last_primaryCLMD5="0"
+ last_secondCLMD5="0"
+ fi
}
function md5_recheck {
- MESSAGE="Performing Replicator Diagnostics"
- echo_info
-
- HASHMARK='0'
-
- MESSAGE="Reanalyzing ${GRAVITY_FI} on ${REMOTE_HOST}"
- echo_stat
- primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//')
- error_validate
-
- MESSAGE="Reanalyzing ${GRAVITY_FI} on $HOSTNAME"
- echo_stat
- secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//')
- error_validate
-
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
- then
- if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
- then
- REMOTE_CUSTOM_DNS="1"
- MESSAGE="Reanalyzing ${CUSTOM_DNS} on ${REMOTE_HOST}"
- echo_stat
-
- primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'")
- error_validate
-
- MESSAGE="Reanalyzing ${CUSTOM_DNS} on $HOSTNAME"
- echo_stat
- secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//')
- error_validate
- else
- MESSAGE="No ${CUSTOM_DNS} Detected on ${REMOTE_HOST}"
- echo_info
- fi
- else
- if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
- then
- REMOTE_CUSTOM_DNS="1"
- MESSAGE="${REMOTE_HOST} has ${CUSTOM_DNS}"
- echo_info
- fi
- MESSAGE="No ${CUSTOM_DNS} Detected on $HOSTNAME"
- echo_info
- fi
- fi
+ MESSAGE="Performing Replicator Diagnostics"
+ echo_info
+
+ HASHMARK='0'
+
+ MESSAGE="Reanalyzing ${GRAVITY_FI} on ${REMOTE_HOST}"
+ echo_stat
+ primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//')
+ error_validate
+
+ MESSAGE="Reanalyzing ${GRAVITY_FI} on $HOSTNAME"
+ echo_stat
+ secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//')
+ error_validate
+
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
+ then
+ if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
+ then
+ REMOTE_CUSTOM_DNS="1"
+ MESSAGE="Reanalyzing ${CUSTOM_DNS} on ${REMOTE_HOST}"
+ echo_stat
+
+ primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'")
+ error_validate
+
+ MESSAGE="Reanalyzing ${CUSTOM_DNS} on $HOSTNAME"
+ echo_stat
+ secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//')
+ error_validate
+ else
+ MESSAGE="No ${CUSTOM_DNS} Detected on ${REMOTE_HOST}"
+ echo_info
+ fi
+ else
+ if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
+ then
+ REMOTE_CUSTOM_DNS="1"
+ MESSAGE="${REMOTE_HOST} has ${CUSTOM_DNS}"
+ echo_info
+ fi
+ MESSAGE="No ${CUSTOM_DNS} Detected on $HOSTNAME"
+ echo_info
+ fi
+ fi
}
\ No newline at end of file
diff --git a/includes/gs-intent.sh b/includes/gs-intent.sh
index 399b2be..dd0286c 100644
--- a/includes/gs-intent.sh
+++ b/includes/gs-intent.sh
@@ -6,36 +6,36 @@
## Validate Intent
function intent_validate {
- if [ "$VERIFY_PASS" == "0" ]
- then
- PHASER=$((( RANDOM % 4 ) + 1 ))
- if [ "$PHASER" = "1" ]
- then
- INTENT="FIRE PHOTON TORPEDOS"
- elif [ "$PHASER" = "2" ]
- then
- INTENT="FIRE ALL PHASERS"
- elif [ "$PHASER" = "3" ]
- then
- INTENT="EJECT THE WARPCORE"
- elif [ "$PHASER" = "4" ]
- then
- INTENT="ENGAGE TRACTOR BEAM"
- fi
-
- MESSAGE="Type ${INTENT} to Confirm"
- echo_need
-
- read INPUT_INTENT
-
- if [ "${INPUT_INTENT}" != "${INTENT}" ]
- then
- MESSAGE="${TASKTYPE} Aborted"
- echo_info
- exit_nochange
- fi
- else
- MESSAGE="Verification Bypassed"
- echo_warn
- fi
+ if [ "$VERIFY_PASS" == "0" ]
+ then
+ PHASER=$((( RANDOM % 4 ) + 1 ))
+ if [ "$PHASER" = "1" ]
+ then
+ INTENT="FIRE PHOTON TORPEDOS"
+ elif [ "$PHASER" = "2" ]
+ then
+ INTENT="FIRE ALL PHASERS"
+ elif [ "$PHASER" = "3" ]
+ then
+ INTENT="EJECT THE WARPCORE"
+ elif [ "$PHASER" = "4" ]
+ then
+ INTENT="ENGAGE TRACTOR BEAM"
+ fi
+
+ MESSAGE="Type ${INTENT} to Confirm"
+ echo_need
+
+ read INPUT_INTENT
+
+ if [ "${INPUT_INTENT}" != "${INTENT}" ]
+ then
+ MESSAGE="${TASKTYPE} Aborted"
+ echo_info
+ exit_nochange
+ fi
+ else
+ MESSAGE="Verification Bypassed"
+ echo_warn
+ fi
}
\ No newline at end of file
diff --git a/includes/gs-logging.sh b/includes/gs-logging.sh
index 5d20b4d..e598921 100644
--- a/includes/gs-logging.sh
+++ b/includes/gs-logging.sh
@@ -6,89 +6,89 @@
## Logs Task
function task_logs {
- TASKTYPE='LOGS'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- logs_gs
+ TASKTYPE='LOGS'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ logs_gs
}
## Core Logging
### Write Logs Out
function logs_export {
- if [ "${TASKTYPE}" != "BACKUP" ]
- then
- MESSAGE="Saving File Hashes"
- echo_stat
- rm -f ${LOG_PATH}/${HISTORY_MD5}
- echo -e ${primaryDBMD5} >> ${LOG_PATH}/${HISTORY_MD5}
- echo -e ${secondDBMD5} >> ${LOG_PATH}/${HISTORY_MD5}
- echo -e ${primaryCLMD5} >> ${LOG_PATH}/${HISTORY_MD5}
- echo -e ${secondCLMD5} >> ${LOG_PATH}/${HISTORY_MD5}
- error_validate
- fi
-
- MESSAGE="Logging Successful ${TASKTYPE}"
- echo_stat
- echo -e $(date) "[${TASKTYPE}]" >> ${LOG_PATH}/${SYNCING_LOG}
- error_validate
+ if [ "${TASKTYPE}" != "BACKUP" ]
+ then
+ MESSAGE="Saving File Hashes"
+ echo_stat
+ rm -f ${LOG_PATH}/${HISTORY_MD5}
+ echo -e ${primaryDBMD5} >> ${LOG_PATH}/${HISTORY_MD5}
+ echo -e ${secondDBMD5} >> ${LOG_PATH}/${HISTORY_MD5}
+ echo -e ${primaryCLMD5} >> ${LOG_PATH}/${HISTORY_MD5}
+ echo -e ${secondCLMD5} >> ${LOG_PATH}/${HISTORY_MD5}
+ error_validate
+ fi
+
+ MESSAGE="Logging Successful ${TASKTYPE}"
+ echo_stat
+ echo -e $(date) "[${TASKTYPE}]" >> ${LOG_PATH}/${SYNCING_LOG}
+ error_validate
}
### Output Sync Logs
function logs_gs {
- MESSAGE="Tailing ${LOG_PATH}/${SYNCING_LOG}"
- echo_info
-
- echo -e "========================================================"
- echo -e "Recent Complete ${YELLOW}SMART${NC} Executions"
- tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep SMART
- echo -e "Recent Complete ${YELLOW}PULL${NC} Executions"
- tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep PULL
- echo -e "Recent Complete ${YELLOW}PUSH${NC} Executions"
- tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep PUSH
- echo -e "Recent Complete ${YELLOW}BACKUP${NC} Executions"
- tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep BACKUP
- echo -e "Recent Complete ${YELLOW}RESTORE${NC} Executions"
- tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep RESTORE
- echo -e "========================================================"
-
- exit_nochange
+ MESSAGE="Tailing ${LOG_PATH}/${SYNCING_LOG}"
+ echo_info
+
+ echo -e "========================================================"
+ echo -e "Recent Complete ${YELLOW}SMART${NC} Executions"
+ tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep SMART
+ echo -e "Recent Complete ${YELLOW}PULL${NC} Executions"
+ tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep PULL
+ echo -e "Recent Complete ${YELLOW}PUSH${NC} Executions"
+ tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep PUSH
+ echo -e "Recent Complete ${YELLOW}BACKUP${NC} Executions"
+ tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep BACKUP
+ echo -e "Recent Complete ${YELLOW}RESTORE${NC} Executions"
+ tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep RESTORE
+ echo -e "========================================================"
+
+ exit_nochange
}
## Crontab Logs
### Core Crontab Logs
function show_crontab {
- MESSAGE="Replaying Last Cronjob"
- echo_stat
-
- if [ -f ${LOG_PATH}/${CRONJOB_LOG} ]
- then
- if [ -s ${LOG_PATH}/${CRONJOB_LOG} ]
- echo_good
-
- MESSAGE="Tailing ${LOG_PATH}/${CRONJOB_LOG}"
- echo_info
-
- echo -e "========================================================"
- date -r ${LOG_PATH}/${CRONJOB_LOG}
- cat ${LOG_PATH}/${CRONJOB_LOG}
- echo -e "========================================================"
-
- exit_nochange
- then
- echo_fail
-
- MESSAGE="${LOG_PATH}/${CRONJOB_LOG} is Empty"
- echo_info
-
- exit_nochange
- fi
- else
- echo_fail
-
- MESSAGE="${LOG_PATH}/${CRONJOB_LOG} is Missing"
- echo_info
-
- exit_nochange
- fi
+ MESSAGE="Replaying Last Cronjob"
+ echo_stat
+
+ if [ -f ${LOG_PATH}/${CRONJOB_LOG} ]
+ then
+ if [ -s ${LOG_PATH}/${CRONJOB_LOG} ]
+ echo_good
+
+ MESSAGE="Tailing ${LOG_PATH}/${CRONJOB_LOG}"
+ echo_info
+
+ echo -e "========================================================"
+ date -r ${LOG_PATH}/${CRONJOB_LOG}
+ cat ${LOG_PATH}/${CRONJOB_LOG}
+ echo -e "========================================================"
+
+ exit_nochange
+ then
+ echo_fail
+
+ MESSAGE="${LOG_PATH}/${CRONJOB_LOG} is Empty"
+ echo_info
+
+ exit_nochange
+ fi
+ else
+ echo_fail
+
+ MESSAGE="${LOG_PATH}/${CRONJOB_LOG} is Missing"
+ echo_info
+
+ exit_nochange
+ fi
}
diff --git a/includes/gs-pull.sh b/includes/gs-pull.sh
index def9d0b..856690f 100644
--- a/includes/gs-pull.sh
+++ b/includes/gs-pull.sh
@@ -9,179 +9,179 @@ function task_pull {
TASKTYPE='PULL'
MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
echo_good
-
+
show_target
validate_gs_folders
validate_ph_folders
validate_sqlite3
validate_os_sshpass
-
+
pull_gs
exit
}
## Pull Gravity
function pull_gs_grav {
-
- backup_local_gravity
- backup_remote_gravity
-
- MESSAGE="Pulling ${GRAVITY_FI} from ${REMOTE_HOST}"
- echo_stat
- RSYNC_REPATH="rsync"
- RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}.backup"
- RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.pull"
- create_rsynccmd
-
- MESSAGE="Replacing ${GRAVITY_FI} on $HOSTNAME"
- echo_stat
- sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.pull ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
-
- if [ "$FILE_OWNER" != "named:docker" ]
- then
- MESSAGE="Validating Settings of ${GRAVITY_FI}"
- echo_stat
-
- GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
- if [ "$GRAVDB_OWN" != "$FILE_OWNER" ]
- then
- MESSAGE="Validating Ownership on ${GRAVITY_FI}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
- else
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
- fi
-
-
- GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
- if [ "$GRAVDB_RWE" != "-rw-rw-r--" ]
- then
- MESSAGE="Validating Permissions on ${GRAVITY_FI}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Permissions on ${GRAVITY_FI}"
- echo_stat
- sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
-
- echo_good
+
+ backup_local_gravity
+ backup_remote_gravity
+
+ MESSAGE="Pulling ${GRAVITY_FI} from ${REMOTE_HOST}"
+ echo_stat
+ RSYNC_REPATH="rsync"
+ RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}.backup"
+ RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.pull"
+ create_rsynccmd
+
+ MESSAGE="Replacing ${GRAVITY_FI} on $HOSTNAME"
+ echo_stat
+ sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.pull ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+
+ if [ "$FILE_OWNER" != "named:docker" ]
+ then
+ MESSAGE="Validating Settings of ${GRAVITY_FI}"
+ echo_stat
+
+ GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
+ if [ "$GRAVDB_OWN" != "$FILE_OWNER" ]
+ then
+ MESSAGE="Validating Ownership on ${GRAVITY_FI}"
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${GRAVITY_FI}"
+ echo_stat
+ sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Continuing Validation of ${GRAVITY_FI}"
+ echo_stat
+ fi
+ else
+ MESSAGE="Setting Ownership on ${GRAVITY_FI}"
+ echo_stat
+ sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+ fi
+
+
+ GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
+ if [ "$GRAVDB_RWE" != "-rw-rw-r--" ]
+ then
+ MESSAGE="Validating Permissions on ${GRAVITY_FI}"
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Permissions on ${GRAVITY_FI}"
+ echo_stat
+ sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Continuing Validation of ${GRAVITY_FI}"
+ echo_stat
+ fi
+
+ echo_good
}
## Pull Custom
function pull_gs_cust {
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- if [ "$REMOTE_CUSTOM_DNS" == "1" ]
- then
- backup_local_custom
- backup_remote_custom
-
- MESSAGE="Pulling ${CUSTOM_DNS} from ${REMOTE_HOST}"
- echo_stat
- RSYNC_REPATH="rsync"
- RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
- RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.pull"
- create_rsynccmd
-
- MESSAGE="Replacing ${CUSTOM_DNS} on $HOSTNAME"
- echo_stat
- sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.pull ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Validating Settings on ${CUSTOM_DNS}"
- echo_stat
-
- CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
- if [ "$CUSTOMLS_OWN" != "rootroot" ]
- then
- MESSAGE="Validating Ownership on ${CUSTOM_DNS}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
-
- CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
- if [ "$CUSTOMLS_RWE" != "-rw-r--r--" ]
- then
- MESSAGE="Validating Permissions on ${CUSTOM_DNS}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
-
- echo_good
- fi
- fi
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ if [ "$REMOTE_CUSTOM_DNS" == "1" ]
+ then
+ backup_local_custom
+ backup_remote_custom
+
+ MESSAGE="Pulling ${CUSTOM_DNS} from ${REMOTE_HOST}"
+ echo_stat
+ RSYNC_REPATH="rsync"
+ RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
+ RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.pull"
+ create_rsynccmd
+
+ MESSAGE="Replacing ${CUSTOM_DNS} on $HOSTNAME"
+ echo_stat
+ sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.pull ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Validating Settings on ${CUSTOM_DNS}"
+ echo_stat
+
+ CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
+ if [ "$CUSTOMLS_OWN" != "rootroot" ]
+ then
+ MESSAGE="Validating Ownership on ${CUSTOM_DNS}"
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
+ echo_stat
+ sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Continuing Validation of ${GRAVITY_FI}"
+ echo_stat
+ fi
+
+ CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
+ if [ "$CUSTOMLS_RWE" != "-rw-r--r--" ]
+ then
+ MESSAGE="Validating Permissions on ${CUSTOM_DNS}"
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
+ echo_stat
+ sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Continuing Validation of ${GRAVITY_FI}"
+ echo_stat
+ fi
+
+ echo_good
+ fi
+ fi
}
## Pull Reload
function pull_gs_reload {
- MESSAGE="Isolating Regeneration Pathways"
- echo_info
- sleep 1
-
- MESSAGE="Updating FTLDNS Configuration"
- echo_stat
- ${PH_EXEC} restartdns reloadlists >/dev/null 2>&1
- error_validate
-
- MESSAGE="Reloading FTLDNS Services"
- echo_stat
- ${PH_EXEC} restartdns >/dev/null 2>&1
- error_validate
+ MESSAGE="Isolating Regeneration Pathways"
+ echo_info
+ sleep 1
+
+ MESSAGE="Updating FTLDNS Configuration"
+ echo_stat
+ ${PH_EXEC} restartdns reloadlists >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Reloading FTLDNS Services"
+ echo_stat
+ ${PH_EXEC} restartdns >/dev/null 2>&1
+ error_validate
}
## Pull Function
function pull_gs {
- previous_md5
- md5_compare
-
- backup_settime
- pull_gs_grav
- pull_gs_cust
- pull_gs_reload
- md5_recheck
-
- logs_export
- exit_withchange
+ previous_md5
+ md5_compare
+
+ backup_settime
+ pull_gs_grav
+ pull_gs_cust
+ pull_gs_reload
+ md5_recheck
+
+ logs_export
+ exit_withchange
}
\ No newline at end of file
diff --git a/includes/gs-purge.sh b/includes/gs-purge.sh
index 0cd00bc..eace19d 100644
--- a/includes/gs-purge.sh
+++ b/includes/gs-purge.sh
@@ -6,73 +6,73 @@
## Purge Task
function task_purge {
- TASKTYPE="THE-PURGE"
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- MESSAGE="THIS WILL RESET YOUR ENTIRE GRAVITY SYNC INSTALLATION"
- echo_warn
- MESSAGE="This will remove:"
- echo_warn
- MESSAGE="- All backups files."
- echo_warn
- MESSAGE="- Your ${CONFIG_FILE} file."
- echo_warn
-
- if [ -f "${LOCAL_FOLDR}/dev" ]
- then
- MESSAGE="- Your development branch updater."
- elif [ -f "${LOCAL_FOLDR}/beta" ]
- then
- MESSAGE="- Your beta branch updater."
- fi
- echo_warn
-
- MESSAGE="- All cronjob/automation tasks."
- echo_warn
- MESSAGE="- All job history/logs."
- echo_warn
- MESSAGE="- Associated SSH id_rsa keys."
- echo_warn
- MESSAGE="This function cannot be undone!"
- echo_warn
-
- MESSAGE="YOU WILL NEED TO REBUILD GRAVITY SYNC AFTER EXECUTION"
- echo_warn
-
- MESSAGE="Pi-hole binaries, configuration and services ARE NOT impacted!"
- echo_info
- MESSAGE="Your device will continue to resolve and block DNS requests,"
- echo_info
- MESSAGE="but your ${GRAVITY_FI} and ${CUSTOM_DNS} WILL NOT sync anymore,"
- echo_info
- MESSAGE="until you reconfigure Gravity Sync on this device."
- echo_info
-
- intent_validate
-
- MESSAGE="Cleaning Gravity Sync Directory"
- echo_stat
-
- git clean -f -X -d >/dev/null 2>&1
- error_validate
-
- clear_cron
-
- MESSAGE="Deleting SSH Key-files"
- echo_stat
-
- rm -f $HOME/${SSH_PKIF} >/dev/null 2>&1
- rm -f $HOME/${SSH_PKIF}.pub >/dev/null 2>&1
- error_validate
-
- MESSAGE="Realigning Dilithium Matrix"
- echo_stat
-
- sleep 1
-
- MESSAGE="Realigning Dilithium Matrix"
- echo_good
-
- update_gs
+ TASKTYPE="THE-PURGE"
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ MESSAGE="THIS WILL RESET YOUR ENTIRE GRAVITY SYNC INSTALLATION"
+ echo_warn
+ MESSAGE="This will remove:"
+ echo_warn
+ MESSAGE="- All backups files."
+ echo_warn
+ MESSAGE="- Your ${CONFIG_FILE} file."
+ echo_warn
+
+ if [ -f "${LOCAL_FOLDR}/dev" ]
+ then
+ MESSAGE="- Your development branch updater."
+ elif [ -f "${LOCAL_FOLDR}/beta" ]
+ then
+ MESSAGE="- Your beta branch updater."
+ fi
+ echo_warn
+
+ MESSAGE="- All cronjob/automation tasks."
+ echo_warn
+ MESSAGE="- All job history/logs."
+ echo_warn
+ MESSAGE="- Associated SSH id_rsa keys."
+ echo_warn
+ MESSAGE="This function cannot be undone!"
+ echo_warn
+
+ MESSAGE="YOU WILL NEED TO REBUILD GRAVITY SYNC AFTER EXECUTION"
+ echo_warn
+
+ MESSAGE="Pi-hole binaries, configuration and services ARE NOT impacted!"
+ echo_info
+ MESSAGE="Your device will continue to resolve and block DNS requests,"
+ echo_info
+ MESSAGE="but your ${GRAVITY_FI} and ${CUSTOM_DNS} WILL NOT sync anymore,"
+ echo_info
+ MESSAGE="until you reconfigure Gravity Sync on this device."
+ echo_info
+
+ intent_validate
+
+ MESSAGE="Cleaning Gravity Sync Directory"
+ echo_stat
+
+ git clean -f -X -d >/dev/null 2>&1
+ error_validate
+
+ clear_cron
+
+ MESSAGE="Deleting SSH Key-files"
+ echo_stat
+
+ rm -f $HOME/${SSH_PKIF} >/dev/null 2>&1
+ rm -f $HOME/${SSH_PKIF}.pub >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Realigning Dilithium Matrix"
+ echo_stat
+
+ sleep 1
+
+ MESSAGE="Realigning Dilithium Matrix"
+ echo_good
+
+ update_gs
}
\ No newline at end of file
diff --git a/includes/gs-push.sh b/includes/gs-push.sh
index 4fccbf1..5d8b373 100644
--- a/includes/gs-push.sh
+++ b/includes/gs-push.sh
@@ -9,119 +9,119 @@ function task_push {
TASKTYPE='PUSH'
MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
echo_good
-
+
show_target
validate_gs_folders
validate_ph_folders
validate_sqlite3
validate_os_sshpass
-
+
push_gs
exit
}
## Push Gravity
function push_gs_grav {
- backup_remote_gravity
- backup_local_gravity
-
- MESSAGE="Copying ${GRAVITY_FI} from ${REMOTE_HOST}"
- echo_stat
- RSYNC_REPATH="rsync"
- RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}.backup"
- RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.push"
- create_rsynccmd
-
- MESSAGE="Pushing ${GRAVITY_FI} to ${REMOTE_HOST}"
- echo_stat
- RSYNC_REPATH="sudo rsync"
- RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup"
- RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}"
- create_rsynccmd
-
- MESSAGE="Setting Permissions on ${GRAVITY_FI}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chmod 664 ${RIHOLE_DIR}/${GRAVITY_FI}"
- create_sshcmd
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chown ${RILE_OWNER} ${RIHOLE_DIR}/${GRAVITY_FI}"
- create_sshcmd
+ backup_remote_gravity
+ backup_local_gravity
+
+ MESSAGE="Copying ${GRAVITY_FI} from ${REMOTE_HOST}"
+ echo_stat
+ RSYNC_REPATH="rsync"
+ RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}.backup"
+ RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.push"
+ create_rsynccmd
+
+ MESSAGE="Pushing ${GRAVITY_FI} to ${REMOTE_HOST}"
+ echo_stat
+ RSYNC_REPATH="sudo rsync"
+ RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup"
+ RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}"
+ create_rsynccmd
+
+ MESSAGE="Setting Permissions on ${GRAVITY_FI}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chmod 664 ${RIHOLE_DIR}/${GRAVITY_FI}"
+ create_sshcmd
+
+ MESSAGE="Setting Ownership on ${GRAVITY_FI}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chown ${RILE_OWNER} ${RIHOLE_DIR}/${GRAVITY_FI}"
+ create_sshcmd
}
## Push Custom
function push_gs_cust {
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- if [ "$REMOTE_CUSTOM_DNS" == "1" ]
- then
- backup_remote_custom
- backup_local_custom
-
- MESSAGE="Copying ${CUSTOM_DNS} from ${REMOTE_HOST}"
- echo_stat
- RSYNC_REPATH="rsync"
- RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
- RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.push"
- create_rsynccmd
-
- MESSAGE="Pushing ${CUSTOM_DNS} to ${REMOTE_HOST}"
- echo_stat
- RSYNC_REPATH="sudo rsync"
- RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CUSTOM_DNS}.backup"
- RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}"
- create_rsynccmd
-
- MESSAGE="Setting Permissions on ${CUSTOM_DNS}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chmod 644 ${RIHOLE_DIR}/${CUSTOM_DNS}"
- create_sshcmd
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chown root:root ${RIHOLE_DIR}/${CUSTOM_DNS}"
- create_sshcmd
- fi
- fi
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ if [ "$REMOTE_CUSTOM_DNS" == "1" ]
+ then
+ backup_remote_custom
+ backup_local_custom
+
+ MESSAGE="Copying ${CUSTOM_DNS} from ${REMOTE_HOST}"
+ echo_stat
+ RSYNC_REPATH="rsync"
+ RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
+ RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.push"
+ create_rsynccmd
+
+ MESSAGE="Pushing ${CUSTOM_DNS} to ${REMOTE_HOST}"
+ echo_stat
+ RSYNC_REPATH="sudo rsync"
+ RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CUSTOM_DNS}.backup"
+ RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}"
+ create_rsynccmd
+
+ MESSAGE="Setting Permissions on ${CUSTOM_DNS}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chmod 644 ${RIHOLE_DIR}/${CUSTOM_DNS}"
+ create_sshcmd
+
+ MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chown root:root ${RIHOLE_DIR}/${CUSTOM_DNS}"
+ create_sshcmd
+ fi
+ fi
}
## Push Reload
function push_gs_reload {
- MESSAGE="Inverting Tachyon Pulses"
- echo_info
- sleep 1
-
- MESSAGE="Updating Remote FTLDNS Configuration"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="${RH_EXEC} restartdns reloadlists"
- create_sshcmd
-
- MESSAGE="Reloading Remote FTLDNS Services"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="${RH_EXEC} restartdns"
- create_sshcmd
+ MESSAGE="Inverting Tachyon Pulses"
+ echo_info
+ sleep 1
+
+ MESSAGE="Updating Remote FTLDNS Configuration"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="${RH_EXEC} restartdns reloadlists"
+ create_sshcmd
+
+ MESSAGE="Reloading Remote FTLDNS Services"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="${RH_EXEC} restartdns"
+ create_sshcmd
}
## Push Function
function push_gs {
- previous_md5
- md5_compare
- backup_settime
-
- intent_validate
-
- push_gs_grav
- push_gs_cust
- push_gs_reload
-
- md5_recheck
- logs_export
- exit_withchange
+ previous_md5
+ md5_compare
+ backup_settime
+
+ intent_validate
+
+ push_gs_grav
+ push_gs_cust
+ push_gs_reload
+
+ md5_recheck
+ logs_export
+ exit_withchange
}
\ No newline at end of file
diff --git a/includes/gs-restore.sh b/includes/gs-restore.sh
index de3558d..bc56125 100644
--- a/includes/gs-restore.sh
+++ b/includes/gs-restore.sh
@@ -9,188 +9,188 @@ function task_restore {
TASKTYPE='RESTORE'
MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
echo_good
-
+
show_target
validate_gs_folders
validate_ph_folders
validate_sqlite3
-
+
restore_gs
exit
}
## Restore Gravity
function restore_gs {
- MESSAGE="This will restore your settings on $HOSTNAME with a previous version!"
- echo_warn
-
- MESSAGE="PREVIOUS BACKUPS AVAILABLE FOR RESTORATION"
- echo_info
- ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${GRAVITY_FI} | colrm 18
-
- MESSAGE="Select backup date to restore ${GRAVITY_FI} from"
- echo_need
- read INPUT_BACKUP_DATE
-
- if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_BACKUP_DATE}-${GRAVITY_FI}.backup ]
- then
- MESSAGE="Backup File Selected"
- else
- MESSAGE="Invalid Request"
- echo_info
-
- exit_nochange
- fi
-
- if [ "$SKIP_CUSTOM" != '1' ]
- then
-
- if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
- then
- ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${CUSTOM_DNS} | colrm 18
-
- MESSAGE="Select backup date to restore ${CUSTOM_DNS} from"
- echo_need
- read INPUT_DNSBACKUP_DATE
-
- if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ]
- then
- MESSAGE="Backup File Selected"
- else
- MESSAGE="Invalid Request"
- echo_info
-
- exit_nochange
- fi
- fi
- fi
-
- MESSAGE="${GRAVITY_FI} from ${INPUT_BACKUP_DATE} Selected"
- echo_info
- MESSAGE="${CUSTOM_DNS} from ${INPUT_DNSBACKUP_DATE} Selected"
- echo_info
-
- intent_validate
-
- MESSAGE="Making Time Warp Calculations"
- echo_info
-
- MESSAGE="Stopping Pi-hole Services"
- echo_stat
-
- sudo service pihole-FTL stop >/dev/null 2>&1
- error_validate
-
- MESSAGE="Restoring ${GRAVITY_FI} on $HOSTNAME"
- echo_stat
- sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_BACKUP_DATE}-${GRAVITY_FI}.backup ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Validating Ownership on ${GRAVITY_FI}"
- echo_stat
-
- GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
- if [ "$GRAVDB_OWN" == "$FILE_OWNER" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
- fi
-
- MESSAGE="Validating Permissions on ${GRAVITY_FI}"
- echo_stat
-
- GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
- if [ "$GRAVDB_RWE" = "-rw-rw-r--" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
- fi
-
- if [ "$SKIP_CUSTOM" != '1' ]
- then
- if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ]
- then
- MESSAGE="Restoring ${CUSTOM_DNS} on $HOSTNAME"
- echo_stat
- sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Validating Ownership on ${CUSTOM_DNS}"
- echo_stat
-
- CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
- if [ "$CUSTOMLS_OWN" == "rootroot" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
- fi
-
- MESSAGE="Validating Permissions on ${CUSTOM_DNS}"
- echo_stat
-
- CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
- if [ "$CUSTOMLS_RWE" == "-rw-r--r--" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
- fi
- fi
- fi
-
- pull_gs_reload
-
- MESSAGE="Do you want to push the restored configuration to the primary Pi-hole? (yes/no)"
- echo_need
- read PUSH_TO_PRIMARY
-
- if [ "${PUSH_TO_PRIMARY}" == "Yes" ] || [ "${PUSH_TO_PRIMARY}" == "yes" ] || [ "${PUSH_TO_PRIMARY}" == "Y" ] || [ "${PUSH_TO_PRIMARY}" == "y" ]
- then
- push_gs
- elif [ "${PUSH_TO_PRIMARY}" == "No" ] || [ "${PUSH_TO_PRIMARY}" == "no" ] || [ "${PUSH_TO_PRIMARY}" == "N" ] || [ "${PUSH_TO_PRIMARY}" == "n" ]
- then
- logs_export
- exit_withchange
- else
- MESSAGE="Invalid Selection - Defaulting No"
- echo_warn
-
- logs_export
- exit_withchange
- fi
+ MESSAGE="This will restore your settings on $HOSTNAME with a previous version!"
+ echo_warn
+
+ MESSAGE="PREVIOUS BACKUPS AVAILABLE FOR RESTORATION"
+ echo_info
+ ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${GRAVITY_FI} | colrm 18
+
+ MESSAGE="Select backup date to restore ${GRAVITY_FI} from"
+ echo_need
+ read INPUT_BACKUP_DATE
+
+ if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_BACKUP_DATE}-${GRAVITY_FI}.backup ]
+ then
+ MESSAGE="Backup File Selected"
+ else
+ MESSAGE="Invalid Request"
+ echo_info
+
+ exit_nochange
+ fi
+
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+
+ if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
+ then
+ ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${CUSTOM_DNS} | colrm 18
+
+ MESSAGE="Select backup date to restore ${CUSTOM_DNS} from"
+ echo_need
+ read INPUT_DNSBACKUP_DATE
+
+ if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ]
+ then
+ MESSAGE="Backup File Selected"
+ else
+ MESSAGE="Invalid Request"
+ echo_info
+
+ exit_nochange
+ fi
+ fi
+ fi
+
+ MESSAGE="${GRAVITY_FI} from ${INPUT_BACKUP_DATE} Selected"
+ echo_info
+ MESSAGE="${CUSTOM_DNS} from ${INPUT_DNSBACKUP_DATE} Selected"
+ echo_info
+
+ intent_validate
+
+ MESSAGE="Making Time Warp Calculations"
+ echo_info
+
+ MESSAGE="Stopping Pi-hole Services"
+ echo_stat
+
+ sudo service pihole-FTL stop >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Restoring ${GRAVITY_FI} on $HOSTNAME"
+ echo_stat
+ sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_BACKUP_DATE}-${GRAVITY_FI}.backup ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Validating Ownership on ${GRAVITY_FI}"
+ echo_stat
+
+ GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
+ if [ "$GRAVDB_OWN" == "$FILE_OWNER" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${GRAVITY_FI}"
+ echo_stat
+ sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+ fi
+
+ MESSAGE="Validating Permissions on ${GRAVITY_FI}"
+ echo_stat
+
+ GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
+ if [ "$GRAVDB_RWE" = "-rw-rw-r--" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${GRAVITY_FI}"
+ echo_stat
+ sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+ fi
+
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+ if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ]
+ then
+ MESSAGE="Restoring ${CUSTOM_DNS} on $HOSTNAME"
+ echo_stat
+ sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+
+ MESSAGE="Validating Ownership on ${CUSTOM_DNS}"
+ echo_stat
+
+ CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
+ if [ "$CUSTOMLS_OWN" == "rootroot" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
+ echo_stat
+ sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+ fi
+
+ MESSAGE="Validating Permissions on ${CUSTOM_DNS}"
+ echo_stat
+
+ CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
+ if [ "$CUSTOMLS_RWE" == "-rw-r--r--" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
+ echo_stat
+ sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+ fi
+ fi
+ fi
+
+ pull_gs_reload
+
+ MESSAGE="Do you want to push the restored configuration to the primary Pi-hole? (yes/no)"
+ echo_need
+ read PUSH_TO_PRIMARY
+
+ if [ "${PUSH_TO_PRIMARY}" == "Yes" ] || [ "${PUSH_TO_PRIMARY}" == "yes" ] || [ "${PUSH_TO_PRIMARY}" == "Y" ] || [ "${PUSH_TO_PRIMARY}" == "y" ]
+ then
+ push_gs
+ elif [ "${PUSH_TO_PRIMARY}" == "No" ] || [ "${PUSH_TO_PRIMARY}" == "no" ] || [ "${PUSH_TO_PRIMARY}" == "N" ] || [ "${PUSH_TO_PRIMARY}" == "n" ]
+ then
+ logs_export
+ exit_withchange
+ else
+ MESSAGE="Invalid Selection - Defaulting No"
+ echo_warn
+
+ logs_export
+ exit_withchange
+ fi
}
\ No newline at end of file
diff --git a/includes/gs-root.sh b/includes/gs-root.sh
index 7c6b1d0..5a02329 100644
--- a/includes/gs-root.sh
+++ b/includes/gs-root.sh
@@ -6,66 +6,66 @@
## Sudo Creation Task
function task_sudo {
- TASKTYPE='SUDO'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- MESSAGE="Creating Sudoer.d Template"
- echo_stat
-
- NEW_SUDO_USER=$(whoami)
- echo -e "${NEW_SUDO_USER} ALL=(ALL) NOPASSWD: ALL" > ${LOCAL_FOLDR}/templates/gs-nopasswd.sudo
- error_validate
-
- MESSAGE="Installing Sudoer.d File"
- echo_stat
-
- sudo install -m 0440 ${LOCAL_FOLDR}/templates/gs-nopasswd.sudo /etc/sudoers.d/gs-nopasswd
- error_validate
-
- exit_withchange
+ TASKTYPE='SUDO'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ MESSAGE="Creating Sudoer.d Template"
+ echo_stat
+
+ NEW_SUDO_USER=$(whoami)
+ echo -e "${NEW_SUDO_USER} ALL=(ALL) NOPASSWD: ALL" > ${LOCAL_FOLDR}/templates/gs-nopasswd.sudo
+ error_validate
+
+ MESSAGE="Installing Sudoer.d File"
+ echo_stat
+
+ sudo install -m 0440 ${LOCAL_FOLDR}/templates/gs-nopasswd.sudo /etc/sudoers.d/gs-nopasswd
+ error_validate
+
+ exit_withchange
}
## Root Check
function root_check {
- if [ ! "$EUID" -ne 0 ]
- then
- TASKTYPE='ROOT'
- MESSAGE="${MESSAGE} ${TASKTYPE}"
- echo_fail
-
- MESSAGE="${PROGRAM} Should Not Run As 'root'"
- echo_warn
-
- exit_nochange
- fi
+ if [ ! "$EUID" -ne 0 ]
+ then
+ TASKTYPE='ROOT'
+ MESSAGE="${MESSAGE} ${TASKTYPE}"
+ echo_fail
+
+ MESSAGE="${PROGRAM} Should Not Run As 'root'"
+ echo_warn
+
+ exit_nochange
+ fi
}
function new_root_check {
- CURRENTUSER=$(whoami)
- if [ ! "$EUID" -ne 0 ]
- then
- LOCALADMIN=""
- else
- # Check Sudo
- SUDOCHECK=$(groups ${CURRENTUSER} | grep -e 'sudo' -e 'wheel')
- if [ "$SUDOCHECK" == "" ]
- then
- LOCALADMIN="nosudo"
- else
- LOCALADMIN="sudo"
- fi
- fi
-
- if [ "$LOCALADMIN" == "nosudo" ]
- then
- TASKTYPE='ROOT'
- MESSAGE="${MESSAGE} ${TASKTYPE}"
- echo_fail
-
- MESSAGE="Insufficent User Rights"
- echo_warn
-
- exit_nochange
- fi
+ CURRENTUSER=$(whoami)
+ if [ ! "$EUID" -ne 0 ]
+ then
+ LOCALADMIN=""
+ else
+ # Check Sudo
+ SUDOCHECK=$(groups ${CURRENTUSER} | grep -e 'sudo' -e 'wheel')
+ if [ "$SUDOCHECK" == "" ]
+ then
+ LOCALADMIN="nosudo"
+ else
+ LOCALADMIN="sudo"
+ fi
+ fi
+
+ if [ "$LOCALADMIN" == "nosudo" ]
+ then
+ TASKTYPE='ROOT'
+ MESSAGE="${MESSAGE} ${TASKTYPE}"
+ echo_fail
+
+ MESSAGE="Insufficent User Rights"
+ echo_warn
+
+ exit_nochange
+ fi
}
\ No newline at end of file
diff --git a/includes/gs-smart.sh b/includes/gs-smart.sh
index ed3a03c..65fa261 100644
--- a/includes/gs-smart.sh
+++ b/includes/gs-smart.sh
@@ -7,150 +7,150 @@
## Smart Task
function task_smart {
TASKTYPE='SMART'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
show_target
validate_gs_folders
validate_ph_folders
validate_sqlite3
validate_os_sshpass
-
+
smart_gs
exit
}
## Smart Sync Function
function smart_gs {
- MESSAGE="Starting ${TASKTYPE} Analysis"
- echo_info
-
- previous_md5
- md5_compare
- backup_settime
-
- PRIDBCHANGE="0"
- SECDBCHANGE="0"
- PRICLCHANGE="0"
- SECCLCHANGE="0"
-
- if [ "${primaryDBMD5}" != "${last_primaryDBMD5}" ]
- then
- PRIDBCHANGE="1"
- fi
-
- if [ "${secondDBMD5}" != "${last_secondDBMD5}" ]
- then
- SECDBCHANGE="1"
- fi
-
- if [ "${PRIDBCHANGE}" == "${SECDBCHANGE}" ]
- then
- if [ "${PRIDBCHANGE}" != "0" ]
- then
- MESSAGE="Both ${GRAVITY_FI} Have Changed"
- echo_warn
-
- PRIDBDATE=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "stat -c %Y ${RIHOLE_DIR}/${GRAVITY_FI}")
- SECDBDATE=$(stat -c %Y ${PIHOLE_DIR}/${GRAVITY_FI})
-
- if (( "$PRIDBDATE" >= "$SECDBDATE" ))
- then
- MESSAGE="Primary ${GRAVITY_FI} Last Changed"
- echo_warn
-
- pull_gs_grav
- PULLRESTART="1"
- else
- MESSAGE="Secondary ${GRAVITY_FI} Last Changed"
- echo_warn
-
- push_gs_grav
- PUSHRESTART="1"
- fi
- fi
- else
- if [ "${PRIDBCHANGE}" != "0" ]
- then
- pull_gs_grav
- PULLRESTART="1"
- elif [ "${SECDBCHANGE}" != "0" ]
- then
- push_gs_grav
- PUSHRESTART="1"
- fi
- fi
-
- if [ "${primaryCLMD5}" != "${last_primaryCLMD5}" ]
- then
- PRICLCHANGE="1"
- fi
-
- if [ "${secondCLMD5}" != "${last_secondCLMD5}" ]
- then
- SECCLCHANGE="1"
- fi
-
- if [ "$SKIP_CUSTOM" != '1' ]
- then
-
- if [ -f "${PIHOLE_DIR}/${CUSTOM_DNS}" ]
- then
-
- if [ "${PRICLCHANGE}" == "${SECCLCHANGE}" ]
- then
- if [ "${PRICLCHANGE}" != "0" ]
- then
- MESSAGE="Both ${CUSTOM_DNS} Have Changed"
- echo_warn
-
- PRICLDATE=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "stat -c %Y ${RIHOLE_DIR}/${CUSTOM_DNS}")
- SECCLDATE=$(stat -c %Y ${PIHOLE_DIR}/${CUSTOM_DNS})
-
- if (( "$PRICLDATE" >= "$SECCLDATE" ))
- then
- MESSAGE="Primary ${CUSTOM_DNS} Last Changed"
- echo_warn
-
- pull_gs_cust
- PULLRESTART="1"
- else
- MESSAGE="Secondary ${CUSTOM_DNS} Last Changed"
- echo_warn
-
- push_gs_cust
- PUSHRESTART="1"
- fi
- fi
- else
- if [ "${PRICLCHANGE}" != "0" ]
- then
- pull_gs_cust
- PULLRESTART="1"
- elif [ "${SECCLCHANGE}" != "0" ]
- then
- push_gs_cust
- PUSHRESTART="1"
- fi
- fi
- else
- pull_gs_cust
- PULLRESTART="1"
- fi
- fi
-
- if [ "$PULLRESTART" == "1" ]
- then
- pull_gs_reload
- fi
-
- if [ "$PUSHRESTART" == "1" ]
- then
- push_gs_reload
- fi
-
- md5_recheck
-
- logs_export
- exit_withchange
+ MESSAGE="Starting ${TASKTYPE} Analysis"
+ echo_info
+
+ previous_md5
+ md5_compare
+ backup_settime
+
+ PRIDBCHANGE="0"
+ SECDBCHANGE="0"
+ PRICLCHANGE="0"
+ SECCLCHANGE="0"
+
+ if [ "${primaryDBMD5}" != "${last_primaryDBMD5}" ]
+ then
+ PRIDBCHANGE="1"
+ fi
+
+ if [ "${secondDBMD5}" != "${last_secondDBMD5}" ]
+ then
+ SECDBCHANGE="1"
+ fi
+
+ if [ "${PRIDBCHANGE}" == "${SECDBCHANGE}" ]
+ then
+ if [ "${PRIDBCHANGE}" != "0" ]
+ then
+ MESSAGE="Both ${GRAVITY_FI} Have Changed"
+ echo_warn
+
+ PRIDBDATE=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "stat -c %Y ${RIHOLE_DIR}/${GRAVITY_FI}")
+ SECDBDATE=$(stat -c %Y ${PIHOLE_DIR}/${GRAVITY_FI})
+
+ if (( "$PRIDBDATE" >= "$SECDBDATE" ))
+ then
+ MESSAGE="Primary ${GRAVITY_FI} Last Changed"
+ echo_warn
+
+ pull_gs_grav
+ PULLRESTART="1"
+ else
+ MESSAGE="Secondary ${GRAVITY_FI} Last Changed"
+ echo_warn
+
+ push_gs_grav
+ PUSHRESTART="1"
+ fi
+ fi
+ else
+ if [ "${PRIDBCHANGE}" != "0" ]
+ then
+ pull_gs_grav
+ PULLRESTART="1"
+ elif [ "${SECDBCHANGE}" != "0" ]
+ then
+ push_gs_grav
+ PUSHRESTART="1"
+ fi
+ fi
+
+ if [ "${primaryCLMD5}" != "${last_primaryCLMD5}" ]
+ then
+ PRICLCHANGE="1"
+ fi
+
+ if [ "${secondCLMD5}" != "${last_secondCLMD5}" ]
+ then
+ SECCLCHANGE="1"
+ fi
+
+ if [ "$SKIP_CUSTOM" != '1' ]
+ then
+
+ if [ -f "${PIHOLE_DIR}/${CUSTOM_DNS}" ]
+ then
+
+ if [ "${PRICLCHANGE}" == "${SECCLCHANGE}" ]
+ then
+ if [ "${PRICLCHANGE}" != "0" ]
+ then
+ MESSAGE="Both ${CUSTOM_DNS} Have Changed"
+ echo_warn
+
+ PRICLDATE=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "stat -c %Y ${RIHOLE_DIR}/${CUSTOM_DNS}")
+ SECCLDATE=$(stat -c %Y ${PIHOLE_DIR}/${CUSTOM_DNS})
+
+ if (( "$PRICLDATE" >= "$SECCLDATE" ))
+ then
+ MESSAGE="Primary ${CUSTOM_DNS} Last Changed"
+ echo_warn
+
+ pull_gs_cust
+ PULLRESTART="1"
+ else
+ MESSAGE="Secondary ${CUSTOM_DNS} Last Changed"
+ echo_warn
+
+ push_gs_cust
+ PUSHRESTART="1"
+ fi
+ fi
+ else
+ if [ "${PRICLCHANGE}" != "0" ]
+ then
+ pull_gs_cust
+ PULLRESTART="1"
+ elif [ "${SECCLCHANGE}" != "0" ]
+ then
+ push_gs_cust
+ PUSHRESTART="1"
+ fi
+ fi
+ else
+ pull_gs_cust
+ PULLRESTART="1"
+ fi
+ fi
+
+ if [ "$PULLRESTART" == "1" ]
+ then
+ pull_gs_reload
+ fi
+
+ if [ "$PUSHRESTART" == "1" ]
+ then
+ push_gs_reload
+ fi
+
+ md5_recheck
+
+ logs_export
+ exit_withchange
}
\ No newline at end of file
diff --git a/includes/gs-ssh.sh b/includes/gs-ssh.sh
index 324df16..95b9787 100644
--- a/includes/gs-ssh.sh
+++ b/includes/gs-ssh.sh
@@ -6,180 +6,180 @@
## Determine SSH Pathways
function create_sshcmd {
- # if hash ssh 2>/dev/null
- # then
- # if [ -z "$SSHPASSWORD" ]
- # then
- timeout --preserve-status ${CMD_TIMEOUT} ${SSH_CMD} -p ${SSH_PORT} -i $HOME/${SSH_PKIF} -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "${CMD_REQUESTED}"
- error_validate
- # else
- # timeout --preserve-status ${CMD_TIMEOUT} ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "${CMD_REQUESTED}"
- # error_validate
- # fi
- # fi
+ # if hash ssh 2>/dev/null
+ # then
+ # if [ -z "$SSHPASSWORD" ]
+ # then
+ timeout --preserve-status ${CMD_TIMEOUT} ${SSH_CMD} -p ${SSH_PORT} -i $HOME/${SSH_PKIF} -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "${CMD_REQUESTED}"
+ error_validate
+ # else
+ # timeout --preserve-status ${CMD_TIMEOUT} ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "${CMD_REQUESTED}"
+ # error_validate
+ # fi
+ # fi
}
## Determine SSH Pathways
function create_rsynccmd {
- # if hash ssh 2>/dev/null
- # then
- # if [ -z "$SSHPASSWORD" ]
- # then
- rsync --rsync-path="${RSYNC_REPATH}" -e "${SSH_CMD} -p ${SSH_PORT} -i $HOME/${SSH_PKIF}" ${RSYNC_SOURCE} ${RSYNC_TARGET} >/dev/null 2>&1
- error_validate
- # else
- # rsync --rsync-path="${RSYNC_REPATH}" -e "${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i $HOME/${SSH_PKIF}" ${RSYNC_SOURCE} ${RSYNC_TARGET} >/dev/null 2>&1
- # error_validate
- # fi
- # fi
+ # if hash ssh 2>/dev/null
+ # then
+ # if [ -z "$SSHPASSWORD" ]
+ # then
+ rsync --rsync-path="${RSYNC_REPATH}" -e "${SSH_CMD} -p ${SSH_PORT} -i $HOME/${SSH_PKIF}" ${RSYNC_SOURCE} ${RSYNC_TARGET} >/dev/null 2>&1
+ error_validate
+ # else
+ # rsync --rsync-path="${RSYNC_REPATH}" -e "${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i $HOME/${SSH_PKIF}" ${RSYNC_SOURCE} ${RSYNC_TARGET} >/dev/null 2>&1
+ # error_validate
+ # fi
+ # fi
}
## Detect SSH-KEYGEN
function detect_sshkeygen {
- MESSAGE="Validating SSH-KEYGEN install on $HOSTNAME"
- echo_stat
-
- if hash ssh-keygen >/dev/null 2>&1
- then
- echo_good
- else
- echo_fail
- MESSAGE="SSH-KEYGEN is Required"
- echo_info
-
- exit_nochange
- fi
+ MESSAGE="Validating SSH-KEYGEN install on $HOSTNAME"
+ echo_stat
+
+ if hash ssh-keygen >/dev/null 2>&1
+ then
+ echo_good
+ else
+ echo_fail
+ MESSAGE="SSH-KEYGEN is Required"
+ echo_info
+
+ exit_nochange
+ fi
}
function generate_sshkey {
- if [ -z $INPUT_REMOTE_PASS ]
- then
- if [ -f $HOME/${SSH_PKIF} ]
- then
- MESSAGE="Using Existing ~/${SSH_PKIF}"
- echo_info
- else
- if hash ssh-keygen >/dev/null 2>&1
- then
- MESSAGE="Generating ~/${SSH_PKIF} (SSH-KEYGEN)"
- echo_stat
-
- ssh-keygen -q -P "" -t rsa -f $HOME/${SSH_PKIF} >/dev/null 2>&1
- error_validate
- else
- MESSAGE="No SSH Key Generator Located"
- echo_warn
- exit_nochange
- fi
- fi
- fi
+ if [ -z $INPUT_REMOTE_PASS ]
+ then
+ if [ -f $HOME/${SSH_PKIF} ]
+ then
+ MESSAGE="Using Existing ~/${SSH_PKIF}"
+ echo_info
+ else
+ if hash ssh-keygen >/dev/null 2>&1
+ then
+ MESSAGE="Generating ~/${SSH_PKIF} (SSH-KEYGEN)"
+ echo_stat
+
+ ssh-keygen -q -P "" -t rsa -f $HOME/${SSH_PKIF} >/dev/null 2>&1
+ error_validate
+ else
+ MESSAGE="No SSH Key Generator Located"
+ echo_warn
+ exit_nochange
+ fi
+ fi
+ fi
}
function export_sshkey {
- if [ -z $REMOTE_PASS ]
- then
- if [ -f $HOME/${SSH_PKIF} ]
- then
- MESSAGE="Registering Key-Pair on ${REMOTE_HOST}"
- echo_info
-
- ssh-copy-id -f -p ${SSH_PORT} -i $HOME/${SSH_PKIF}.pub ${REMOTE_USER}@${REMOTE_HOST}
- else
- MESSAGE="Error Registering Key-Pair"
- echo_warn
- fi
- fi
+ if [ -z $REMOTE_PASS ]
+ then
+ if [ -f $HOME/${SSH_PKIF} ]
+ then
+ MESSAGE="Registering Key-Pair on ${REMOTE_HOST}"
+ echo_info
+
+ ssh-copy-id -f -p ${SSH_PORT} -i $HOME/${SSH_PKIF}.pub ${REMOTE_USER}@${REMOTE_HOST}
+ else
+ MESSAGE="Error Registering Key-Pair"
+ echo_warn
+ fi
+ fi
}
## Detect SSH & RSYNC
function detect_ssh {
- MESSAGE="Validating SSH Client on $HOSTNAME"
- echo_stat
-
- if hash ssh 2>/dev/null
- then
- MESSAGE="${MESSAGE} (OpenSSH)"
- echo_good
- SSH_CMD='ssh'
- elif hash dbclient 2>/dev/null
- then
- MESSAGE="${MESSAGE} (Dropbear)"
- echo_fail
-
- MESSAGE="Dropbear not supported in GS ${VERSION}"
- echo_info
- exit_nochange
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
- MESSAGE="Installing SSH Client with ${PKG_MANAGER}"
- echo_stat
-
- ${PKG_INSTALL} ssh-client >/dev/null 2>&1
- error_validate
- fi
-
- MESSAGE="Validating RSYNC Installed on $HOSTNAME"
- echo_stat
-
- if hash rsync 2>/dev/null
- then
- echo_good
- else
- echo_fail
- MESSAGE="RSYNC is Required"
- echo_warn
-
- distro_check
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Installing RSYNC with ${PKG_MANAGER}"
- echo_stat
- ${PKG_INSTALL} rsync >/dev/null 2>&1
- error_validate
- fi
+ MESSAGE="Validating SSH Client on $HOSTNAME"
+ echo_stat
+
+ if hash ssh 2>/dev/null
+ then
+ MESSAGE="${MESSAGE} (OpenSSH)"
+ echo_good
+ SSH_CMD='ssh'
+ elif hash dbclient 2>/dev/null
+ then
+ MESSAGE="${MESSAGE} (Dropbear)"
+ echo_fail
+
+ MESSAGE="Dropbear not supported in GS ${VERSION}"
+ echo_info
+ exit_nochange
+ else
+ echo_fail
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+ MESSAGE="Installing SSH Client with ${PKG_MANAGER}"
+ echo_stat
+
+ ${PKG_INSTALL} ssh-client >/dev/null 2>&1
+ error_validate
+ fi
+
+ MESSAGE="Validating RSYNC Installed on $HOSTNAME"
+ echo_stat
+
+ if hash rsync 2>/dev/null
+ then
+ echo_good
+ else
+ echo_fail
+ MESSAGE="RSYNC is Required"
+ echo_warn
+
+ distro_check
+
+ MESSAGE="Attempting to Compensate"
+ echo_warn
+
+ MESSAGE="Installing RSYNC with ${PKG_MANAGER}"
+ echo_stat
+ ${PKG_INSTALL} rsync >/dev/null 2>&1
+ error_validate
+ fi
}
function detect_remotersync {
- MESSAGE="Creating Test File on ${REMOTE_HOST}"
- echo_stat
-
- CMD_TIMEOUT='15'
- CMD_REQUESTED="touch ~/gs.test"
- create_sshcmd
-
- MESSAGE="If pull test fails ensure RSYNC is installed on ${REMOTE_HOST}"
- echo_warn
-
- MESSAGE="Pulling Test File to $HOSTNAME"
- echo_stat
-
- RSYNC_REPATH="rsync"
- RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:~/gs.test"
- RSYNC_TARGET="${LOCAL_FOLDR}/gs.test"
- create_rsynccmd
-
- MESSAGE="Cleaning Up Local Test File"
- echo_stat
-
- rm ${LOCAL_FOLDR}/gs.test
- error_validate
-
- MESSAGE="Cleaning Up Remote Test File"
- echo_stat
-
- CMD_TIMEOUT='15'
- CMD_REQUESTED="rm ~/gs.test"
- create_sshcmd
+ MESSAGE="Creating Test File on ${REMOTE_HOST}"
+ echo_stat
+
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="touch ~/gs.test"
+ create_sshcmd
+
+ MESSAGE="If pull test fails ensure RSYNC is installed on ${REMOTE_HOST}"
+ echo_warn
+
+ MESSAGE="Pulling Test File to $HOSTNAME"
+ echo_stat
+
+ RSYNC_REPATH="rsync"
+ RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:~/gs.test"
+ RSYNC_TARGET="${LOCAL_FOLDR}/gs.test"
+ create_rsynccmd
+
+ MESSAGE="Cleaning Up Local Test File"
+ echo_stat
+
+ rm ${LOCAL_FOLDR}/gs.test
+ error_validate
+
+ MESSAGE="Cleaning Up Remote Test File"
+ echo_stat
+
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="rm ~/gs.test"
+ create_sshcmd
}
function show_target {
- MESSAGE="Targeting ${REMOTE_USER}@${REMOTE_HOST}"
- echo_info
-
- detect_ssh
+ MESSAGE="Targeting ${REMOTE_USER}@${REMOTE_HOST}"
+ echo_info
+
+ detect_ssh
}
\ No newline at end of file
diff --git a/includes/gs-update.sh b/includes/gs-update.sh
index be3a4e9..d01f04a 100644
--- a/includes/gs-update.sh
+++ b/includes/gs-update.sh
@@ -6,142 +6,174 @@
## Master Branch
function update_gs {
- if [ -f "${LOCAL_FOLDR}/dev" ]
- then
- source ${LOCAL_FOLDR}/dev
- else
- BRANCH='origin/master'
- fi
-
- if [ "$BRANCH" != "origin/master" ]
- then
- MESSAGE="Pulling from ${BRANCH}"
- echo_info
- fi
-
- GIT_CHECK=$(git status | awk '{print $1}')
- if [ "$GIT_CHECK" == "fatal:" ]
- then
- MESSAGE="Requires GitHub Installation"
- echo_warn
- exit_nochange
- else
- MESSAGE="Updating Cache"
- echo_stat
- git fetch --all >/dev/null 2>&1
- error_validate
- MESSAGE="Applying Update"
- echo_stat
- git reset --hard ${BRANCH} >/dev/null 2>&1
- error_validate
- fi
+ if [ -f "${LOCAL_FOLDR}/dev" ]
+ then
+ source ${LOCAL_FOLDR}/dev
+ else
+ BRANCH='origin/master'
+ fi
+
+ if [ "$BRANCH" != "origin/master" ]
+ then
+ MESSAGE="Pulling from ${BRANCH}"
+ echo_info
+ fi
+
+ GIT_CHECK=$(git status | awk '{print $1}')
+ if [ "$GIT_CHECK" == "fatal:" ]
+ then
+ MESSAGE="Requires GitHub Installation"
+ echo_warn
+ exit_nochange
+ else
+ MESSAGE="Updating Cache"
+ echo_stat
+ git fetch --all >/dev/null 2>&1
+ error_validate
+ MESSAGE="Applying Update"
+ echo_stat
+ git reset --hard ${BRANCH} >/dev/null 2>&1
+ error_validate
+ fi
}
## Show Version
function show_version {
- echo -e "========================================================"
- MESSAGE="${BOLD}${PROGRAM}${NC} by ${CYAN}@vmstan${NC}"
- echo_info
+ echo -e "========================================================"
+ MESSAGE="${BOLD}${PROGRAM}${NC} by ${CYAN}@vmstan${NC}"
+ echo_info
+
+ MESSAGE="${BLUE}https://github.com/vmstan/gravity-sync${NC}"
+ echo_info
+
+ if [ -f ${LOCAL_FOLDR}/dev ]
+ then
+ DEVVERSION="dev"
+ elif [ -f ${LOCAL_FOLDR}/beta ]
+ then
+ DEVVERSION="beta"
+ else
+ DEVVERSION=""
+ fi
+
+ MESSAGE="Running Version: ${GREEN}${VERSION}${NC} ${DEVVERSION}"
+ echo_info
+
+ GITVERSION=$(curl -sf https://raw.githubusercontent.com/vmstan/gravity-sync/master/VERSION)
+ if [ -z "$GITVERSION" ]
+ then
+ MESSAGE="Latest Version: ${RED}Unknown${NC}"
+ else
+ if [ "$GITVERSION" != "$VERSION" ]
+ then
+ MESSAGE="Update Available: ${PURPLE}${GITVERSION}${NC}"
+ else
+ MESSAGE="Latest Version: ${GREEN}${GITVERSION}${NC}"
+ fi
+ fi
+ echo_info
+ echo -e "========================================================"
+}
- MESSAGE="${BLUE}https://github.com/vmstan/gravity-sync${NC}"
- echo_info
-
- if [ -f ${LOCAL_FOLDR}/dev ]
- then
- DEVVERSION="dev"
- elif [ -f ${LOCAL_FOLDR}/beta ]
- then
- DEVVERSION="beta"
- else
- DEVVERSION=""
- fi
-
- MESSAGE="Running Version: ${GREEN}${VERSION}${NC} ${DEVVERSION}"
- echo_info
-
- GITVERSION=$(curl -sf https://raw.githubusercontent.com/vmstan/gravity-sync/master/VERSION)
- if [ -z "$GITVERSION" ]
- then
- MESSAGE="Latest Version: ${RED}Unknown${NC}"
- else
- if [ "$GITVERSION" != "$VERSION" ]
- then
- MESSAGE="Update Available: ${PURPLE}${GITVERSION}${NC}"
- else
- MESSAGE="Latest Version: ${GREEN}${GITVERSION}${NC}"
- fi
- fi
- echo_info
- echo -e "========================================================"
+function show_info() {
+ echo -e "========================================================"
+ echo -e "${YELLOW}Local Pi-hole Settings${NC}"
+ echo -e "Local Pi-hole Type: ${PH_IN_TYPE}"
+ echo -e "Local Pi-hole Config Directory: ${PIHOLE_DIR}"
+ echo -e "Local Pi-hole Binary Directory: ${PIHOLE_BIN}"
+ echo -e "Local Docker Binary Directory: ${DOCKER_BIN}"
+ echo -e "Local File Owner Settings: ${DOCKER_BIN}"
+ echo -e "Local Docker Container Name: ${DOCKER_CON}"
+ echo -e ""
+ echo -e "${YELLOW}Remote Pi-hole Settings${NC}"
+ echo -e "Remote Pi-hole Type: ${RH_IN_TYPE}"
+ echo -e "Remote Pi-hole Config Directory: ${RIHOLE_DIR}"
+ echo -e "Remote Pi-hole Binary Directory: ${RIHOLE_BIN}"
+ echo -e "Remote Docker Binary Directory: ${DOCKER_BIN}"
+ echo -e "Remote File Owner Settings: ${DOCKER_BIN}"
+ echo -e "Remote Docker Container Name: ${DOCKER_CON}"
+ echo -e "========================================================"
}
## Devmode Task
function task_devmode {
- TASKTYPE='DEV'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- if [ -f ${LOCAL_FOLDR}/dev ]
- then
- MESSAGE="Disabling ${TASKTYPE}"
- echo_stat
- rm -f ${LOCAL_FOLDR}/dev
- error_validate
- elif [ -f ${LOCAL_FOLDR}/beta ]
- then
- MESSAGE="Disabling BETA"
- echo_stat
- rm -f ${LOCAL_FOLDR}/beta
- error_validate
-
- MESSAGE="Enabling ${TASKTYPE}"
- echo_stat
- touch ${LOCAL_FOLDR}/dev
- error_validate
- else
- MESSAGE="Enabling ${TASKTYPE}"
- echo_stat
- touch ${LOCAL_FOLDR}/dev
- error_validate
-
- MESSAGE="Updating Cache"
- echo_stat
- git fetch --all >/dev/null 2>&1
- error_validate
-
- git branch -r
-
- MESSAGE="Select Branch to Update Against"
- echo_need
- read INPUT_BRANCH
-
- echo -e "BRANCH='${INPUT_BRANCH}'" >> ${LOCAL_FOLDR}/dev
- fi
-
- update_gs
-
- exit_withchange
+ TASKTYPE='DEV'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ if [ -f ${LOCAL_FOLDR}/dev ]
+ then
+ MESSAGE="Disabling ${TASKTYPE}"
+ echo_stat
+ rm -f ${LOCAL_FOLDR}/dev
+ error_validate
+ elif [ -f ${LOCAL_FOLDR}/beta ]
+ then
+ MESSAGE="Disabling BETA"
+ echo_stat
+ rm -f ${LOCAL_FOLDR}/beta
+ error_validate
+
+ MESSAGE="Enabling ${TASKTYPE}"
+ echo_stat
+ touch ${LOCAL_FOLDR}/dev
+ error_validate
+ else
+ MESSAGE="Enabling ${TASKTYPE}"
+ echo_stat
+ touch ${LOCAL_FOLDR}/dev
+ error_validate
+
+ MESSAGE="Updating Cache"
+ echo_stat
+ git fetch --all >/dev/null 2>&1
+ error_validate
+
+ git branch -r
+
+ MESSAGE="Select Branch to Update Against"
+ echo_need
+ read INPUT_BRANCH
+
+ echo -e "BRANCH='${INPUT_BRANCH}'" >> ${LOCAL_FOLDR}/dev
+ fi
+
+ update_gs
+
+ exit_withchange
}
## Update Task
function task_update {
- TASKTYPE='UPDATE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
-
- dbclient_warning
-
- update_gs
-
- exit_withchange
+ TASKTYPE='UPDATE'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ dbclient_warning
+
+ update_gs
+
+ exit_withchange
}
## Version Task
function task_version {
- TASKTYPE='VERSION'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
- echo_good
+ TASKTYPE='VERSION'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ show_version
+ exit_nochange
+}
- show_version
- exit_nochange
+## Info Task
+
+function task_info() {
+ TASKTYPE='INFO'
+ MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ echo_good
+
+ show_info
+
+ exit_nochange
}
\ No newline at end of file
diff --git a/includes/gs-validate.sh b/includes/gs-validate.sh
index fb4810f..516f4b3 100644
--- a/includes/gs-validate.sh
+++ b/includes/gs-validate.sh
@@ -6,156 +6,156 @@
## Validate GS Folders
function validate_gs_folders {
- MESSAGE="Validating ${PROGRAM} Folders on $HOSTNAME"
- echo_stat
- if [ ! -d ${LOCAL_FOLDR} ]
- then
- MESSAGE="Unable to Validate ${PROGRAM} Folders on $HOSTNAME"
- echo_fail
- exit_nochange
- fi
-
- if [ ! -d ${LOCAL_FOLDR}/${BACKUP_FOLD} ]
- then
- MESSAGE="Unable to Validate ${PROGRAM} Backup Folder on $HOSTNAME"
- echo_fail
- exit_nochange
- fi
- echo_good
+ MESSAGE="Validating ${PROGRAM} Folders on $HOSTNAME"
+ echo_stat
+ if [ ! -d ${LOCAL_FOLDR} ]
+ then
+ MESSAGE="Unable to Validate ${PROGRAM} Folders on $HOSTNAME"
+ echo_fail
+ exit_nochange
+ fi
+
+ if [ ! -d ${LOCAL_FOLDR}/${BACKUP_FOLD} ]
+ then
+ MESSAGE="Unable to Validate ${PROGRAM} Backup Folder on $HOSTNAME"
+ echo_fail
+ exit_nochange
+ fi
+ echo_good
}
## Validate Pi-hole Folders
function validate_ph_folders {
- MESSAGE="Validating Pi-hole Configuration"
- echo_stat
-
- if [ "$PH_IN_TYPE" == "default" ]
- then
- if [ ! -f ${PIHOLE_BIN} ]
- then
- MESSAGE="Unable to Validate that Pi-Hole is Installed"
- echo_fail
- exit_nochange
- fi
- elif [ "$PH_IN_TYPE" == "docker" ]
- then
- FTLCHECK=$(sudo docker container ls | grep 'pihole/pihole')
- if [ "$FTLCHECK" == "" ]
- then
- MESSAGE="Unable to Validate that Pi-Hole is Installed"
- echo_fail
- exit_nochange
- fi
- fi
-
- if [ ! -d ${PIHOLE_DIR} ]
- then
- MESSAGE="Unable to Validate Pi-Hole Configuration Directory"
- echo_fail
- exit_nochange
- fi
- echo_good
+ MESSAGE="Validating Pi-hole Configuration"
+ echo_stat
+
+ if [ "$PH_IN_TYPE" == "default" ]
+ then
+ if [ ! -f ${PIHOLE_BIN} ]
+ then
+ MESSAGE="Unable to Validate that Pi-Hole is Installed"
+ echo_fail
+ exit_nochange
+ fi
+ elif [ "$PH_IN_TYPE" == "docker" ]
+ then
+ FTLCHECK=$(sudo docker container ls | grep 'pihole/pihole')
+ if [ "$FTLCHECK" == "" ]
+ then
+ MESSAGE="Unable to Validate that Pi-Hole is Installed"
+ echo_fail
+ exit_nochange
+ fi
+ fi
+
+ if [ ! -d ${PIHOLE_DIR} ]
+ then
+ MESSAGE="Unable to Validate Pi-Hole Configuration Directory"
+ echo_fail
+ exit_nochange
+ fi
+ echo_good
}
## Validate SQLite3
function validate_sqlite3 {
- MESSAGE="Validating SQLITE Installed on $HOSTNAME"
- echo_stat
- if hash sqlite3 2>/dev/null
- then
- # MESSAGE="SQLITE3 Utility Detected"
- echo_good
- else
- MESSAGE="Unable to Validate SQLITE Install on $HOSTNAME"
- echo_warn
-
- MESSAGE="Installing SQLLITE3 with ${PKG_MANAGER}"
- echo_stat
-
- ${PKG_INSTALL} sqllite3 >/dev/null 2>&1
- error_validate
- fi
+ MESSAGE="Validating SQLITE Installed on $HOSTNAME"
+ echo_stat
+ if hash sqlite3 2>/dev/null
+ then
+ # MESSAGE="SQLITE3 Utility Detected"
+ echo_good
+ else
+ MESSAGE="Unable to Validate SQLITE Install on $HOSTNAME"
+ echo_warn
+
+ MESSAGE="Installing SQLLITE3 with ${PKG_MANAGER}"
+ echo_stat
+
+ ${PKG_INSTALL} sqllite3 >/dev/null 2>&1
+ error_validate
+ fi
}
## Validate SSHPASS
function validate_os_sshpass {
- # SSHPASSWORD=''
-
- # if hash sshpass 2>/dev/null
+ # SSHPASSWORD=''
+
+ # if hash sshpass 2>/dev/null
# then
- # MESSAGE="SSHPASS Utility Detected"
- # echo_warn
- # if [ -z "$REMOTE_PASS" ]
- # then
- # MESSAGE="Using SSH Key-Pair Authentication"
- # echo_info
- # else
- # MESSAGE="Testing Authentication Options"
- # echo_stat
-
- # timeout 5 ssh -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'exit' >/dev/null 2>&1
- # if [ "$?" != "0" ]
- # then
- # SSHPASSWORD="sshpass -p ${REMOTE_PASS}"
- # MESSAGE="Using SSH Password Authentication"
- # echo_warn
- # else
- # MESSAGE="Valid Key-Pair Detected ${NC}(${RED}Password Ignored${NC})"
- # echo_info
- # fi
- # fi
+ # MESSAGE="SSHPASS Utility Detected"
+ # echo_warn
+ # if [ -z "$REMOTE_PASS" ]
+ # then
+ # MESSAGE="Using SSH Key-Pair Authentication"
+ # echo_info
+ # else
+ # MESSAGE="Testing Authentication Options"
+ # echo_stat
+
+ # timeout 5 ssh -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'exit' >/dev/null 2>&1
+ # if [ "$?" != "0" ]
+ # then
+ # SSHPASSWORD="sshpass -p ${REMOTE_PASS}"
+ # MESSAGE="Using SSH Password Authentication"
+ # echo_warn
+ # else
+ # MESSAGE="Valid Key-Pair Detected ${NC}(${RED}Password Ignored${NC})"
+ # echo_info
+ # fi
+ # fi
# else
# SSHPASSWORD=''
- # MESSAGE="Using SSH Key-Pair Authentication"
- # echo_info
+ # MESSAGE="Using SSH Key-Pair Authentication"
+ # echo_info
# fi
-
- MESSAGE="Validating Connection to ${REMOTE_HOST}"
- echo_stat
-
- CMD_TIMEOUT='5'
- CMD_REQUESTED="exit"
- create_sshcmd
-
+
+ MESSAGE="Validating Connection to ${REMOTE_HOST}"
+ echo_stat
+
+ CMD_TIMEOUT='5'
+ CMD_REQUESTED="exit"
+ create_sshcmd
+
}
## Detect Package Manager
-function distro_check {
- if hash apt-get 2>/dev/null
- then
- PKG_MANAGER="apt-get"
- PKG_INSTALL="sudo apt-get --yes --no-install-recommends --quiet install"
- elif hash rpm 2>/dev/null
- then
- if hash dnf 2>/dev/null
- then
- PKG_MANAGER="dnf"
- elif hash yum 2>/dev/null
- then
- PKG_MANAGER="yum"
- else
- MESSAGE="Unable to find OS Package Manager"
- echo_info
- exit_nochange
- fi
- PKG_INSTALL="sudo ${PKG_MANAGER} install -y"
- else
- MESSAGE="Unable to find OS Package Manager"
- echo_info
- exit_nochange
- fi
+function distro_check {
+ if hash apt-get 2>/dev/null
+ then
+ PKG_MANAGER="apt-get"
+ PKG_INSTALL="sudo apt-get --yes --no-install-recommends --quiet install"
+ elif hash rpm 2>/dev/null
+ then
+ if hash dnf 2>/dev/null
+ then
+ PKG_MANAGER="dnf"
+ elif hash yum 2>/dev/null
+ then
+ PKG_MANAGER="yum"
+ else
+ MESSAGE="Unable to find OS Package Manager"
+ echo_info
+ exit_nochange
+ fi
+ PKG_INSTALL="sudo ${PKG_MANAGER} install -y"
+ else
+ MESSAGE="Unable to find OS Package Manager"
+ echo_info
+ exit_nochange
+ fi
}
## Dropbear Warning
function dbclient_warning {
- if hash dbclient 2>/dev/null
- then
- if hash ssh 2>/dev/null
- then
- NOEMPTYBASHIF="1"
- else
- MESSAGE="Dropbear support has been deprecated - please convert to OpenSSH"
- echo_warn
- fi
- fi
+ if hash dbclient 2>/dev/null
+ then
+ if hash ssh 2>/dev/null
+ then
+ NOEMPTYBASHIF="1"
+ else
+ MESSAGE="Dropbear support has been deprecated - please convert to OpenSSH"
+ echo_warn
+ fi
+ fi
}
\ No newline at end of file
diff --git a/prep/gs-install.sh b/prep/gs-install.sh
index 0d53fce..9131c22 100644
--- a/prep/gs-install.sh
+++ b/prep/gs-install.sh
@@ -33,7 +33,7 @@ echo -e "========================================================"
# Check Root
echo -e "[${YELLOW}i${NC}] ${YELLOW}Validating System Authorization${NC}"
if [ ! "$EUID" -ne 0 ]
-then
+then
echo -e "[${GREEN}✓${NC}] Current User (${CURRENTUSER}) is ROOT"
LOCALADMIN="root"
else
@@ -208,24 +208,24 @@ else
echo -e "${CURRENTUSER} ALL=(ALL) NOPASSWD: ALL" > /tmp/gs-nopasswd.sudo
sudo install -m 0440 /tmp/gs-nopasswd.sudo /etc/sudoers.d/gs-nopasswd
fi
-
- if [ "$GS_INSTALL" != "secondary" ]
- then
- echo -e "[${YELLOW}i${NC}] Gravity Sync Preperation Complete"
- echo -e "[${YELLOW}i${NC}] Execute on Installer on Secondary"
- echo -e "[${YELLOW}i${NC}] Check Documentation for Instructions"
- echo -e "[${YELLOW}i${NC}] Installation Exiting (without changes)"
- else
- echo -e "[${BLUE}>${NC}] Creating Gravity Sync Directories"
- git clone https://github.com/vmstan/gravity-sync.git
- echo -e "[${BLUE}>${NC}] Starting Gravity Sync Configuration"
- echo -e "========================================================"
- ./gravity-sync/gravity-sync.sh configure <&1
- # echo -e "[${YELLOW}i${NC}] This host is now prepared to configure Gravity Sync!"
- # echo -e "[${YELLOW}i${NC}] Please run './gravity-sync configure' from $HOME/gravity-sync"
- # echo -e "[${YELLOW}i${NC}] Visit https://github.com/vmstan/gravity-sync for more instructions."
- fi
-
+
+ if [ "$GS_INSTALL" != "secondary" ]
+ then
+ echo -e "[${YELLOW}i${NC}] Gravity Sync Preperation Complete"
+ echo -e "[${YELLOW}i${NC}] Execute on Installer on Secondary"
+ echo -e "[${YELLOW}i${NC}] Check Documentation for Instructions"
+ echo -e "[${YELLOW}i${NC}] Installation Exiting (without changes)"
+ else
+ echo -e "[${BLUE}>${NC}] Creating Gravity Sync Directories"
+ git clone https://github.com/vmstan/gravity-sync.git
+ echo -e "[${BLUE}>${NC}] Starting Gravity Sync Configuration"
+ echo -e "========================================================"
+ ./gravity-sync/gravity-sync.sh configure <&1
+ # echo -e "[${YELLOW}i${NC}] This host is now prepared to configure Gravity Sync!"
+ # echo -e "[${YELLOW}i${NC}] Please run './gravity-sync configure' from $HOME/gravity-sync"
+ # echo -e "[${YELLOW}i${NC}] Visit https://github.com/vmstan/gravity-sync for more instructions."
+ fi
+
fi
exit
\ No newline at end of file