From 5eeb162150ffc9e0ce5238dfffd95e67bce48ddf Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Thu, 16 Jul 2020 13:42:42 -0500 Subject: [PATCH] 2.1.6 beta 2 (#67) * select different files for restore * star trek reference * Log backup jobs * color restore * ping avoid and custom ssh prompts * z variable * or * [] * new method for defaults * variables matter * or this? * making it specific * adv conf: add ROOT_CHECK_AVOID for container. (#64) * adv conf: add ROOT_CHECK_AVOID for container. import_gs only once at start * allow parameters for automation option Co-authored-by: Michael Stanclift * Post PR cleanup * Thanks for fbourqui * readjusts import_gs Co-authored-by: Michael Stanclift Co-authored-by: fbourqui --- ADVANCED.md | 21 +++++++++++++++- CHANGELOG.md | 4 +++ gravity-sync.conf.example | 1 + gravity-sync.sh | 53 +++++++++++++++++++++++++++++++-------- 4 files changed, 68 insertions(+), 11 deletions(-) diff --git a/ADVANCED.md b/ADVANCED.md index 2f6d3ae..ca4a138 100644 --- a/ADVANCED.md +++ b/ADVANCED.md @@ -169,6 +169,11 @@ The `./gravity-sync.sh config` function will attempt to ping the remote host to Default setting in Gravity Sync is 0, change to 1 to skip this network test. +#### `ROOT_CHECK_AVOID=''` +At execution, Gravity Sync will check that it's deployed with it's own user (not running as root), but for a container deployment this is not necessary. + +Default setting in Gravity Sync is 0, change to 1 to skip this root user test. + #### `BACKUP_RETAIN=''` The `./gravity-sync.sh backup` function will retain a defined number of days worth of `gravity.db` and `custom.list` backups. @@ -216,9 +221,23 @@ If you prefer to still use cron but modify your settings by hand, using the entr ```bash crontab -e -*/30 * * * * /bin/bash /home/USER/gravity-sync/gravity-sync.sh > /home/USER/gravity-sync/gravity-sync.cron +*/15 * * * * /bin/bash /home/USER/gravity-sync/gravity-sync.sh > /home/USER/gravity-sync/gravity-sync.cron +0 23 * * * /bin/bash /home/USER//gravity-sync/gravity-sync.sh backup >/dev/null 2>&1 ``` +### Automating Automation + +To automate the deployment of automation option you can call it with 2 parameters: +- First interval in minutes to run sync [0-30], +- Second the hour to run backup [0-24] + +(0 will disable the cron entry) + +For example: +`./gravity-sync.sh automate 15 23` + +Will configure automation of the sync function every 15 minutes and of a backup at 23:00. + ## Reference Architectures The designation of primary and secondary is purely at your discretion. The doesn't matter if you're using an HA process like keepalived to present a single DNS IP address to clients, or handing out two DNS resolvers via DHCP. Generally it is expected that the two (or more) Pi-hole(s) will be at the same phyiscal location, or at least on the same internal networks. It should also be possible to to replicate to a secondary Pi-hole across networks, either over a VPN or open-Internet, with the approprate firewall/NAT configuration. diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c1ec65..405ebe8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Skipping a few digits because what does it really matter? #### 2.1.6 - Adds prompts during `./gravity-sync.sh configure` to allow custom SSH port and enable PING avoidance. +- Adds `ROOT_CHECK_AVOID` variable to advanced configuration options, to help facilitate running Gravity Sync with container installations of Pi-hole. (PR [#64](https://github.com/vmstan/gravity-sync/pull/64)) +- Adds the ability to automate automation. :mind_blown_emoji: Please see the ADVANCED.md document for more information. (PR [#64](https://github.com/vmstan/gravity-sync/pull/64)) + +(Thanks to [@fbourqui](https://github.com/fbourqui) for this contributions to this release.) ## 2.0 ### The Smart Release diff --git a/gravity-sync.conf.example b/gravity-sync.conf.example index 1e55653..c340201 100644 --- a/gravity-sync.conf.example +++ b/gravity-sync.conf.example @@ -33,5 +33,6 @@ REMOTE_PASS='' # SKIP_CUSTOM='' # DATE_OUTPUT='' # PING_AVOID='' +# ROOT_CHECK_AVOID='' # BACKUP_RETAIN='' \ No newline at end of file diff --git a/gravity-sync.sh b/gravity-sync.sh index 06bf34a..9b5f4e5 100755 --- a/gravity-sync.sh +++ b/gravity-sync.sh @@ -31,6 +31,7 @@ VERIFY_PASS='0' # replace in gravity-sync.conf to overwrite SKIP_CUSTOM='0' # replace in gravity-sync.conf to overwrite DATE_OUTPUT='0' # replace in gravity-sync.conf to overwrite PING_AVOID='0' # replace in gravity-sync.conf to overwrite +ROOT_CHECK_AVOID='0' # replace in gravity-sync.conf to overwrite # Backup Customization BACKUP_RETAIN='7' # replace in gravity-sync.conf to overwrite @@ -1624,9 +1625,14 @@ function task_automate { MESSAGE="Configuring Hourly Smart Sync" echo_info - MESSAGE="Sync Frequency in Minutes (1-30) or 0 to Disable" - echo_need - read INPUT_AUTO_FREQ + 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 @@ -1660,9 +1666,14 @@ function task_automate { MESSAGE="Configuring Daily Backup Frequency" echo_info - MESSAGE="Hour of Day to Backup (1-24) or 0 to Disable" - echo_need - read INPUT_AUTO_BACKUP + 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 @@ -1820,8 +1831,9 @@ function task_compare { TASKTYPE='COMPARE' MESSAGE="${MESSAGE}: ${TASKTYPE} Requested" echo_good - + import_gs + validate_gs_folders validate_ph_folders validate_os_sshpass @@ -1971,7 +1983,10 @@ function root_check { MESSAGE="Evaluating Arguments" echo_stat - root_check + if [ "${ROOT_CHECK_AVOID}" != "1" ] + then + root_check + fi case $# in @@ -2023,7 +2038,7 @@ case $# in TASKTYPE='PULL' MESSAGE="${MESSAGE}: ${TASKTYPE} Requested" echo_good - + import_gs validate_gs_folders validate_ph_folders @@ -2037,7 +2052,7 @@ case $# in TASKTYPE='PUSH' MESSAGE="${MESSAGE}: ${TASKTYPE} Requested" echo_good - + import_gs validate_gs_folders validate_ph_folders @@ -2125,6 +2140,24 @@ case $# in ;; esac ;; + + 2) + case $1 in + automate) + task_automate + ;; + + esac + ;; + + 3) + case $1 in + automate) + task_automate $2 $3 + ;; + + esac + ;; *) task_invalid