From 8c1c38f962b87bbf631e8e0d97962b8cc27ab69b Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Thu, 21 May 2020 21:42:37 -0500 Subject: [PATCH] TABS --- gravity-sync.sh | 197 +++++++++++++++++++++++++----------------------- 1 file changed, 102 insertions(+), 95 deletions(-) diff --git a/gravity-sync.sh b/gravity-sync.sh index 47afa99..e7eaa68 100755 --- a/gravity-sync.sh +++ b/gravity-sync.sh @@ -1,7 +1,7 @@ #!/bin/bash # Gravity Sync by vmstan -VERSION='1.1.5' +VERSION='1.1.6' # 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 @@ -71,106 +71,113 @@ fi echo -e "${CYAN}Evaluating $0 script arguments${NC}" case $# in - 0) - echo -e "${RED}Failure${NC}: ${GRAVITY_FI} replication direction required" - echo "Usage: $0 {pull|push}" - echo -e "> ${YELLOW}Pull${NC} will copy the ${GRAVITY_FI} configuration on $REMOTE_HOST to this server" - echo -e "> ${YELLOW}Push${NC} will force any changes made on this server to the primary" - echo -e "No changes have been made to the system" + + 0) + echo -e "${RED}Failure${NC}: ${GRAVITY_FI} replication direction required" + echo "Usage: $0 {pull|push}" + echo -e "> ${YELLOW}Pull${NC} will copy the ${GRAVITY_FI} configuration on $REMOTE_HOST to this server" + echo -e "> ${YELLOW}Push${NC} will force any changes made on this server to the primary" + echo -e "No changes have been made to the system" exit 1 ;; - 1) - 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}" - 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}" - break;; - No ) - echo "No changes have been made to the system" - exit;; - esac - done - exit - ;; - version) - echo -e "${PURPLE}Info:${NC} Gravity Sync ${VERSION}" - echo -e "No changes have been made to the system" - exit - ;; - - update) - echo -e "${GREEN}Success:${NC} Update Requested" - # echo -e "${PURPLE}Info:${NC} Gravity Sync ${VERSION}" - # echo -e "${YELLOW}UPDATING REQUIRES ORIGINAL INSTALL VIA GIT${NC}" - echo -e "Are you sure you want to update?" - select yn in "Yes" "No"; do - case $yn in - Yes ) - git pull - break;; - No ) - echo "No changes have been made to the system" - exit;; - esac - done - exit - ;; - - logs) - echo -e "${GREEN}Success:${NC} Logs Requested" - echo -e "These are the last three valid PULL timestamps" - tail -n 3 ${SYNCING_LOG} - ;; + 1) + 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}" + 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 + exit + ;; + + version) + echo -e "${PURPLE}Info:${NC} Gravity Sync ${VERSION}" + echo -e "No changes have been made to the system" + exit + ;; + + update) + echo -e "${GREEN}Success:${NC} Update Requested" + # echo -e "${PURPLE}Info:${NC} Gravity Sync ${VERSION}" + # echo -e "${YELLOW}UPDATING REQUIRES ORIGINAL INSTALL VIA GIT${NC}" + echo -e "Are you sure you want to update?" + select yn in "Yes" "No"; do + case $yn in + Yes ) + git pull + exit + ;; + + No ) + echo "No changes have been made to the system" + exit + ;; + esac + done + exit + ;; + + logs) + echo -e "${GREEN}Success:${NC} Logs Requested" + echo -e "These are the last three valid PULL timestamps" + tail -n 3 ${SYNCING_LOG} + ;; + + *) + echo -e "${RED}'$1' is not a valid argument${NC}" + echo "Usage: $0 {pull|push}" + exit 2 + ;; + esac + ;; *) - echo -e "${RED}'$1' is not a valid argument${NC}" - echo "Usage: $0 {pull|push}" - exit 2 - ;; - esac - ;; - *) echo -e "${RED}Too many arguments provided ($#)${NC}" echo "Usage: $0 {pull|push}" exit 3 - ;; + ;; esac \ No newline at end of file