From 223884f571140e0449ae38cbc90a412bc2308a69 Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Fri, 22 May 2020 10:32:02 -0500 Subject: [PATCH] Moving more routines into functions --- gravity-sync.sh | 92 ++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/gravity-sync.sh b/gravity-sync.sh index fb21a00..2611b31 100755 --- a/gravity-sync.sh +++ b/gravity-sync.sh @@ -1,7 +1,7 @@ #!/bin/bash # Gravity Sync by vmstan -VERSION='1.1.7' +VERSION='1.2.0' # Must execute from a location in the home folder of the user who own's it (ex: /home/pi/gravity-sync) # Configure certificate based SSH authentication between the Pihole HA nodes - it does not use passwords @@ -52,7 +52,53 @@ function update_gs { git pull } +function pull_gs { + echo -e "${CYAN}Copying ${GRAVITY_FI} from remote server ${REMOTE_HOST}${NC}" + rsync -v --progress -e 'ssh -p 22' ${REMOTE_USER}@${REMOTE_HOST}:${PIHOLE_DIR}/${GRAVITY_FI} ~/${LOCAL_FOLDR}/${GRAVITY_FI} + echo -e "${CYAN}Backing up the running ${GRAVITY_FI} on this server${NC}" + sudo mv -v ${PIHOLE_DIR}/${GRAVITY_FI} ${PIHOLE_DIR}/${GRAVITY_FI}.backup + echo -e "${CYAN}Replacing the ${GRAVITY_FI} configuration on this server${NC}" + sudo cp -v ~/${LOCAL_FOLDR}/${GRAVITY_FI} ${PIHOLE_DIR} + sudo chmod 644 ${PIHOLE_DIR}/${GRAVITY_FI} + sudo chown pihole:pihole ${PIHOLE_DIR}/${GRAVITY_FI} + echo -e "${GRAVITY_FI} ownership and file permissions reset" + echo -e "${CYAN}Reloading FTLDNS with configuration from new ${GRAVITY_FI}${NC}" + pihole restartdns reloadlists + pihole restartdns + echo -e "${CYAN}Retaining additional copy of remote ${GRAVITY_FI}${NC}" + mv -v ~/${LOCAL_FOLDR}/${GRAVITY_FI} ~/${LOCAL_FOLDR}/${GRAVITY_FI}.last + date >> ~/${LOCAL_FOLDR}/${SYNCING_LOG} + echo -e "${GREEN}gravity.db pull completed${NC}" +} +function push_gs { + echo -e "${YELLOW}WARNING: DATA LOSS IS POSSIBLE${NC}" + echo -e "This will send the running ${GRAVITY_FI} from this server to your primary Pihole" + echo -e "No backup copies are made on the primary Pihole before or after executing this command!" + echo -e "Are you sure you want to overwrite the primary node configuration on ${REMOTE_HOST}?" + select yn in "Yes" "No"; do + case $yn in + Yes ) + echo "Replacing gravity.db on primary" + echo -e "${CYAN}Copying local ${GRAVITY_FI} to ${REMOTE_HOST}${NC}" + rsync --rsync-path="sudo rsync" -v --progress -e 'ssh -p 22' ${PIHOLE_DIR}/${GRAVITY_FI} ${REMOTE_USER}@${REMOTE_HOST}:${PIHOLE_DIR}/${GRAVITY_FI} + echo -e "${CYAN}Applying permissions to remote gravity.db${NC}" + ssh ${REMOTE_USER}@${REMOTE_HOST} "sudo chmod 644 ${PIHOLE_DIR}/${GRAVITY_FI}" + ssh ${REMOTE_USER}@${REMOTE_HOST} "sudo chown pihole:pihole ${PIHOLE_DIR}/${GRAVITY_FI}" + echo -e "${CYAN}Reloading configuration on remote FTLDNS${NC}" + ssh ${REMOTE_USER}@${REMOTE_HOST} 'pihole restartdns reloadlists' + ssh ${REMOTE_USER}@${REMOTE_HOST} 'pihole restartdns' + echo -e "${GREEN}gravity.db push completed${NC}" + exit + ;; + + No ) + echo "No changes have been made to the system" + exit + ;; + esac + done +} ############################################## @@ -96,53 +142,13 @@ case $# in case $1 in pull) echo -e "${GREEN}Success${NC}: Pull Requested" - echo -e "${CYAN}Copying ${GRAVITY_FI} from remote server ${REMOTE_HOST}${NC}" - rsync -v --progress -e 'ssh -p 22' ${REMOTE_USER}@${REMOTE_HOST}:${PIHOLE_DIR}/${GRAVITY_FI} ~/${LOCAL_FOLDR}/${GRAVITY_FI} - echo -e "${CYAN}Backing up the running ${GRAVITY_FI} on this server${NC}" - sudo mv -v ${PIHOLE_DIR}/${GRAVITY_FI} ${PIHOLE_DIR}/${GRAVITY_FI}.backup - echo -e "${CYAN}Replacing the ${GRAVITY_FI} configuration on this server${NC}" - sudo cp -v ~/${LOCAL_FOLDR}/${GRAVITY_FI} ${PIHOLE_DIR} - sudo chmod 644 ${PIHOLE_DIR}/${GRAVITY_FI} - sudo chown pihole:pihole ${PIHOLE_DIR}/${GRAVITY_FI} - echo -e "${GRAVITY_FI} ownership and file permissions reset" - echo -e "${CYAN}Reloading FTLDNS with configuration from new ${GRAVITY_FI}${NC}" - pihole restartdns reloadlists - pihole restartdns - echo -e "${CYAN}Retaining additional copy of remote ${GRAVITY_FI}${NC}" - mv -v ~/${LOCAL_FOLDR}/${GRAVITY_FI} ~/${LOCAL_FOLDR}/${GRAVITY_FI}.last - date >> ~/${LOCAL_FOLDR}/${SYNCING_LOG} - echo -e "${GREEN}gravity.db pull completed${NC}" + pull_gs exit ;; push) echo -e "${GREEN}Success${NC}: Push Requested" - echo -e "${YELLOW}WARNING: DATA LOSS IS POSSIBLE${NC}" - echo -e "This will send the running ${GRAVITY_FI} from this server to your primary Pihole" - echo -e "No backup copies are made on the primary Pihole before or after executing this command!" - echo -e "Are you sure you want to overwrite the primary node configuration on ${REMOTE_HOST}?" - select yn in "Yes" "No"; do - case $yn in - Yes ) - echo "Replacing gravity.db on primary" - echo -e "${CYAN}Copying local ${GRAVITY_FI} to ${REMOTE_HOST}${NC}" - rsync --rsync-path="sudo rsync" -v --progress -e 'ssh -p 22' ${PIHOLE_DIR}/${GRAVITY_FI} ${REMOTE_USER}@${REMOTE_HOST}:${PIHOLE_DIR}/${GRAVITY_FI} - echo -e "${CYAN}Applying permissions to remote gravity.db${NC}" - ssh ${REMOTE_USER}@${REMOTE_HOST} "sudo chmod 644 ${PIHOLE_DIR}/${GRAVITY_FI}" - ssh ${REMOTE_USER}@${REMOTE_HOST} "sudo chown pihole:pihole ${PIHOLE_DIR}/${GRAVITY_FI}" - echo -e "${CYAN}Reloading configuration on remote FTLDNS${NC}" - ssh ${REMOTE_USER}@${REMOTE_HOST} 'pihole restartdns reloadlists' - ssh ${REMOTE_USER}@${REMOTE_HOST} 'pihole restartdns' - echo -e "${GREEN}gravity.db push completed${NC}" - exit - ;; - - No ) - echo "No changes have been made to the system" - exit - ;; - esac - done + push_gs exit ;;