Moving each status type to a function

This commit is contained in:
Michael Stanclift 2020-05-28 16:21:10 -05:00
parent d369aceb5a
commit e08022cfe1
2 changed files with 65 additions and 27 deletions

View File

@ -126,13 +126,13 @@ Gravity Sync will validate that the `sshpass` utility is installed on your syste
Save. Keep calm, carry on. Save. Keep calm, carry on.
## Execution ## Execution
Now test the script. You can run a comparison between the two which will be non-distruptive and see if everything has been configured correctly. Now, test Gravity Sync. You can run a comparison between primary and secondary databases, which will be non-distruptive, and see if everything has been configured correctly.
```bash ```bash
./gravity-sync.sh compare ./gravity-sync.sh compare
``` ```
Assuming Gravity Sync runs successfully, it'll indicate if there are changes pending between the two databases. If not, I suggest making a subtle change to a whitelist/blacklist on your primary PH, such as changing a description field or disabling a whitelist item, and then running `./gravity-sync.sh compare` again to validate your installation is working correctly. Assuming Gravity Sync runs successfully, it will indicate if there are changes pending between the two databases. If not, make a subtle change to a whitelist/blacklist on your primary PH, such as changing a description field or disabling a whitelist item, and then running `./gravity-sync.sh compare` again to validate your installation is working correctly.
### The Pull Function ### The Pull Function
@ -142,7 +142,7 @@ The Gravity Sync Pull, is the standard method of sync operation, and will not pr
./gravity-sync.sh pull ./gravity-sync.sh pull
``` ```
If the execution completes, you will now have overwritten your running gravity.db on the secondary PH after creating a copy of the running database (`gravity.db.backup`) in the `backup` subfolder located with your script. Gravity Sync will also keep a copy of the last sync'd gravity.db from the master, in the `backup` folder identified as `gravity.db.pull` for future use. If the execution completes, you will now have overwritten your running gravity.db on the secondary PH after creating a copy of the running database (`gravity.db.backup`) in the `backup` subfolder located with your script. Gravity Sync will also keep a copy of the last sync'd gravity.db from the primary (in the `backup` folder identified as `gravity.db.pull`) for future use.
Finally, a file called `gravity-sync.log` will be created in the `gravity-sync` folder along side the script with the date the script was last executed appended to the bottom. Finally, a file called `gravity-sync.log` will be created in the `gravity-sync` folder along side the script with the date the script was last executed appended to the bottom.
@ -224,4 +224,6 @@ chmod +x gravity-sync.sh
- If you use a non-standard SSH port to connect to your primary Pi-hole, you can add `SSH_PORT='123'` to the bottom of your `gravity-sync.conf` file. (Subsitute 123 for your non-standard port.) This will overwrite the `SSH_PORT=22` at the top of the script as it is imported later in the execution. - If you use a non-standard SSH port to connect to your primary Pi-hole, you can add `SSH_PORT='123'` to the bottom of your `gravity-sync.conf` file. (Subsitute 123 for your non-standard port.) This will overwrite the `SSH_PORT=22` at the top of the script as it is imported later in the execution.
- If you'd like to know what version of the script you have running by running `./gravity-sync.sh version` - If you'd like to know what version of the script you have running by running `./gravity-sync.sh version`
- If the update script fails, make sure you did your original deployment via `git clone` and not a manual install. - If the update script fails, make sure you did your original deployment via `git clone` and not a manual install.
- If it doesn't kick off, you can manually execute a `git pull` while in the `gravity-sync` directory. - If it doesn't kick off, you can manually execute a `git pull` while in the `gravity-sync` directory.
If all else fails, delete the entire `gravity-sync` folder from your system and re-deploy. This will have no impact on your replicated databases.

View File

@ -73,12 +73,12 @@ function import_gs {
error_validate error_validate
MESSAGE="Using ${REMOTE_USER}@${REMOTE_HOST}" MESSAGE="Using ${REMOTE_USER}@${REMOTE_HOST}"
echo -e "${INFO} ${MESSAGE}" echo_info
else else
echo -e "\r${FAIL} ${MESSAGE}" echo -e "\r${FAIL} ${MESSAGE}"
MESSAGE="${CONFIG_FILE} Missing" MESSAGE="${CONFIG_FILE} Missing"
echo -e "${INFO} ${MESSAGE}" echo_info
TASKTYPE='CONFIG' TASKTYPE='CONFIG'
config_generate config_generate
@ -93,7 +93,7 @@ function update_gs {
# logs_export # dumps log prior to execution because script stops after successful pull # logs_export # dumps log prior to execution because script stops after successful pull
MESSAGE="Requires GitHub Installation" MESSAGE="Requires GitHub Installation"
echo -e "${INFO} ${MESSAGE}" echo_info
git reset --hard git reset --hard
git pull git pull
exit exit
@ -105,7 +105,7 @@ function beta_gs {
# logs_export # dumps log prior to execution because script stops after successful pull # logs_export # dumps log prior to execution because script stops after successful pull
MESSAGE="Requires GitHub Installation" MESSAGE="Requires GitHub Installation"
echo -e "${INFO} ${MESSAGE}" echo_info
git reset --hard git reset --hard
git fetch origin git fetch origin
git pull origin development git pull origin development
@ -117,10 +117,13 @@ function beta_gs {
function pull_gs { function pull_gs {
TASKTYPE='PULL' TASKTYPE='PULL'
echo -e "${INFO} ${TASKTYPE} Requested" MESSAGE="${TASKTYPE} Requested"
echo_info
md5_compare md5_compare
echo -e "${INFO} ${TASKTYPE} Commencing" MESSAGE="${TASKTYPE} Starting"
echo_info
MESSAGE="Backing Up ${GRAVITY_FI} on $HOSTNAME" MESSAGE="Backing Up ${GRAVITY_FI} on $HOSTNAME"
echo -en "${STAT} ${MESSAGE}" echo -en "${STAT} ${MESSAGE}"
@ -176,7 +179,7 @@ function pull_gs {
fi fi
MESSAGE="Inverting Tachyon Pulse" MESSAGE="Inverting Tachyon Pulse"
echo -e "${INFO} ${MESSAGE}" echo_info
sleep 1 sleep 1
MESSAGE="Updating FTLDNS Configuration" MESSAGE="Updating FTLDNS Configuration"
@ -226,7 +229,7 @@ function push_gs {
error_validate error_validate
MESSAGE="Contacting Borg Collective" MESSAGE="Contacting Borg Collective"
echo -e "${INFO} ${MESSAGE}" echo_info
sleep 1 sleep 1
MESSAGE="Updating FTLDNS Configuration" MESSAGE="Updating FTLDNS Configuration"
@ -343,7 +346,7 @@ function validate_ph_folders {
## Validate SSHPASS ## Validate SSHPASS
function validate_os_sshpass { function validate_os_sshpass {
MESSAGE="Checking SSH Configuration" MESSAGE="Checking SSH Configuration"
echo -e "${INFO} ${MESSAGE}" echo_info
if hash sshpass 2>/dev/null if hash sshpass 2>/dev/null
then then
@ -367,7 +370,7 @@ function validate_os_sshpass {
MESSAGE="Using SSH Key-Pair Authentication" MESSAGE="Using SSH Key-Pair Authentication"
fi fi
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="Testing SSH Connection" MESSAGE="Testing SSH Connection"
echo -en "${STAT} ${MESSAGE}" echo -en "${STAT} ${MESSAGE}"
@ -437,7 +440,7 @@ function config_generate {
if hash sshpass 2>/dev/null if hash sshpass 2>/dev/null
then then
MESSAGE="SSHPASS Utility Detected" MESSAGE="SSHPASS Utility Detected"
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="Do you want to configure password based SSH authentication?" MESSAGE="Do you want to configure password based SSH authentication?"
echo -e "${WARN} ${MESSAGE}" echo -e "${WARN} ${MESSAGE}"
@ -455,10 +458,10 @@ function config_generate {
else else
MESSAGE="SSHPASS Not Installed" MESSAGE="SSHPASS Not Installed"
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="Defaulting to SSH Key-Pair Authentication" MESSAGE="Defaulting to SSH Key-Pair Authentication"
echo -e "${INFO} ${MESSAGE}" echo_info
fi fi
if [ -z $INPUT_REMOTE_PASS ] if [ -z $INPUT_REMOTE_PASS ]
@ -466,10 +469,10 @@ function config_generate {
if [ -f $HOME/${SSH_PKIF} ] if [ -f $HOME/${SSH_PKIF} ]
then then
MESSAGE="Using Existing ~/${SSH_PKIF}" MESSAGE="Using Existing ~/${SSH_PKIF}"
echo -e "${INFO} ${MESSAGE}" echo_info
else else
MESSAGE="Generating ~/${SSH_PKIF}" MESSAGE="Generating ~/${SSH_PKIF}"
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="Accept All Defaults" MESSAGE="Accept All Defaults"
echo -e "${WARN} ${MESSAGE}" echo -e "${WARN} ${MESSAGE}"
@ -495,7 +498,7 @@ function config_generate {
if [ -f $HOME/${SSH_PKIF} ] if [ -f $HOME/${SSH_PKIF} ]
then then
MESSAGE="Registering Key-Pair on ${REMOTE_HOST}" MESSAGE="Registering Key-Pair on ${REMOTE_HOST}"
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="Enter ${REMOTE_USER}@${REMOTE_HOST} Password Below" MESSAGE="Enter ${REMOTE_USER}@${REMOTE_HOST} Password Below"
echo -e "${NEED} ${MESSAGE}" echo -e "${NEED} ${MESSAGE}"
@ -558,7 +561,7 @@ function exit_nochange {
function exit_withchange { function exit_withchange {
SCRIPT_END=$SECONDS SCRIPT_END=$SECONDS
MESSAGE="${PROGRAM} ${TASKTYPE} Completed in $((SCRIPT_END-SCRIPT_START)) seconds" MESSAGE="${PROGRAM} ${TASKTYPE} Completed in $((SCRIPT_END-SCRIPT_START)) seconds"
echo -e "${INFO} ${MESSAGE}" echo_info
exit 0 exit 0
} }
@ -605,14 +608,14 @@ function task_automate {
if [ ${CRON_CHECK} == 1 ] if [ ${CRON_CHECK} == 1 ]
then then
MESSAGE="Automation Task Already Exists" MESSAGE="Automation Task Already Exists"
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="Use 'crontab -e' to manually remove/edit" MESSAGE="Use 'crontab -e' to manually remove/edit"
echo -e "${INFO} ${MESSAGE}" echo_info
exit_nochange exit_nochange
fi fi
MESSAGE="Set Automation Frequency Per Hour" MESSAGE="Set Automation Frequency Per Hour"
echo -e "${INFO} ${MESSAGE}" echo_info
MESSAGE="1 = Every 60 Minutes" MESSAGE="1 = Every 60 Minutes"
echo -e "++++++ ${MESSAGE}" echo -e "++++++ ${MESSAGE}"
@ -658,6 +661,39 @@ function task_automate {
exit_withchange exit_withchange
} }
# Echo Stack
## Informative
function echo_info {
echo -e "${INFO} ${MESSAGE}"
}
## Warning
function echo_warn {
echo -e "${WARN} ${MESSAGE}"
}
## Executing
function echo_stat {
echo -en "${STAT} ${MESSAGE}"
}
## Success
function echo_good {
echo -e "\r${GOOD} ${MESSAGE}"
}
## Failure
function echo_fail {
echo -e "\r${FAIL} ${MESSAGE}"
}
## Request
function echo_need {
echo -en "${NEED} ${MESSAGE}: "
}
# SCRIPT EXECUTION ########################### # SCRIPT EXECUTION ###########################
SCRIPT_START=$SECONDS SCRIPT_START=$SECONDS
@ -679,7 +715,7 @@ case $# in
import_gs import_gs
MESSAGE="Validating Folder Configuration" MESSAGE="Validating Folder Configuration"
echo -e "${INFO} ${MESSAGE}" echo_info
validate_gs_folders validate_gs_folders
validate_ph_folders validate_ph_folders
validate_os_sshpass validate_os_sshpass
@ -734,7 +770,7 @@ case $# in
echo -e "\r${GOOD} ${MESSAGE}" echo -e "\r${GOOD} ${MESSAGE}"
MESSAGE="Logs Requested" MESSAGE="Logs Requested"
echo -e "${INFO} ${MESSAGE}" echo_info
logs_gs logs_gs
;; ;;
@ -770,7 +806,7 @@ case $# in
else else
MESSAGE="${CONFIG_FILE} Missing" MESSAGE="${CONFIG_FILE} Missing"
echo -e "${INFO} ${MESSAGE}" echo_info
config_generate config_generate
fi fi