diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e46ba28 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,151 @@ +# The Changelog + +## 1.7 +### The Andrew Release + +**Features** + +- Gravity Sync will now manage the `custom.list` file that contains the "Local DNS Records" function within the Pi-hole interface. +- If you do not want this feature enabled it can be bypassed by adding a `SKIP_CUSTOM='1'` to your .conf file. +- Sync will be trigged during a pull operation if there are changes to either file. + +**Known Issues** + +- No new Star Trek references. + +#### 1.7.1 +- There is a changelog file now. I'm mentioning it in the changelog file. So meta. +- `./gravity-sync.sh version` will check for and alert you for new versions. + +## 1.6 +### The Restorative Release + +**Features** + +- New `./gravity-sync.sh restore` function will bring a previous version of the `gravity.db` back from the dead. +- Changes way that GS prompts for data input and how confirmation prompts are handled. +- Adds ability to override verification of push, restore or config reset, see `.example` file for details. +- Five new Star Trek references. + +**Bug Fixes** +- New functions add consistency in status output. + +## 1.5 +### The Automated Release + +**Features** + +- You can now easily deploy the task automation via crontab by running `./gravity-sync.sh automate` which will simply ask how often you'd like to run the script per hour, and then create the entry for you. +- If you've already configured an entry for this manually with a prior version, the script should detect this and ask that you manually remove it or edit it via crontab -e. I'm hesitant to delete existing entries here, as it could potentially remove something unrelated to Gravity Sync. + +**Bug Fixes** + +- Changes method for pulling development branch updates via the beta function. +- Cleanup of various exit commands. + +## 1.4 +### The Configuration Release + +**Features** +- Adds new `./gravity-sync config` feature to simplify deployment! +- Adds variables for SSH settings. +- Rearranges functions, which impacts nothing. +- All new and exciting code comments. +- No new Star Trek references. + +#### 1.4.1 +- Adds variables for custom log locations to `gravity-sync.conf`, see `.example` file for listing. +### 1.4.2 +- Will prompt to create new `gravity-sync.conf` file when run without an existing configuration. +### 1.4.3 +- Bug fixes around not properly utilizing custom SSH keyfile. + +## 1.3 +### The Comparison Release +1.3 should be called 2.0, but I'll resist that temptation -- so many new enhancements! + +**Features** +- Gravity Sync will now compare remote and local databases and only replicate if it detects a difference. +- Verifies most commands complete before continuing each step to fail more gracefully. +- Additional debugging options such as checking last cronjob output, if configured. +- Much more consistency in how running commands are processed in interactive mode. + +#### 1.3.1 +- Changes [GOOD] to [DONE] in execution output. +- Better validation of initial SSH connection. +- Support for password based authentication using SSHPASS. + +#### 1.3.2 +- MUCH cleaner output, same great features. + +#### 1.3.3 +- Corrected Pihole bin path issue that cause automated sync not to reload services. + +#### 1.3.4 +- Moves backup of local database before initiating remote pull. +- Validates file ownership and permissions before attempting to rewrite. +- Added two Star Trek references. + +## 1.2 +### The Functional Release +- Refactored process to use functions and cleanup process of execution. +- Does not look for permission to update when run. +- Cleanup and expand comments. + +#### 1.2.1 +- Improved logging functions. + +#### 1.2.2 +- Different style for status updates. + +#### 1.2.3 +- Uses a dedicated backup folder for `.backup` and `.last` files. +- Copies db instead of moving to rename and then replacing to be more reliable. +- Even cleaner label status. + +#### 1.2.4 +- Changes `~` to `$HOME`. +- Fixes bug that prevented sync from working when run via crontab. + +#### 1.2.5 +- Push function now does a backup, on the secondary PH, of the primary database, before pushing. + +## 1.1 +### The Pushy Release + +- Seperated main purpose of script into `pull` argument. +- Allow process to reverse back using `push` argument. + +#### 1.1.2 +- First release since move from being just a Gist. +- Just relearning how to use GitHub, minor bug fixes. + +#### 1.1.3 +- Now includes example an configuration file. + +#### 1.1.4 +- Added update script. +- Added version check. + +#### 1.1.5 +- Added ability to view logs with `./gravity-sync.sh logs`. + +#### 1.1.6 +- Code easier to read with proper tabs. + +## 1.0 +### The Initial Release** + +No version control, variables or anything fancy. It only worked if everything was exactly perfect. + +``` +echo 'Copying gravity.db from HA primary' +rsync -e 'ssh -p 22' ubuntu@192.168.7.5:/etc/pihole/gravity.db /home/pi/gravity-sync +echo 'Replacing gravity.db on HA secondary' +sudo cp /home/pi/gravity-sync/gravity.db /etc/pihole/ echo 'Reloading configuration of HA secondary FTLDNS from new gravity.db' +pihole restartdns reload-lists +echo 'Cleaning up things' +mv /home/pi/gravity-sync/gravity.db /home/pi/gravity- sync/gravity.db.last +``` + +For real, that's it. 7 lines. \ No newline at end of file diff --git a/README.md b/README.md index 512b8b8..b91ce73 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,9 @@ Download the latest release from [GitHub](https://github.com/vmstan/gravity-sync ```bash cd ~ -wget https://github.com/vmstan/gravity-sync/archive/v1.7.0.zip -unzip v1.7.0.zip -mv ~/gravity-sync-1.7.0 ~/gravity-sync +wget https://github.com/vmstan/gravity-sync/archive/v1.7.1.zip +unzip v1.7.1.zip +mv ~/gravity-sync-1.7.1 ~/gravity-sync cd gravity-sync ``` diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..081af9a --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.7.1 \ No newline at end of file diff --git a/gravity-sync.sh b/gravity-sync.sh index 0ed3038..2d10018 100755 --- a/gravity-sync.sh +++ b/gravity-sync.sh @@ -2,7 +2,7 @@ # GRAVITY SYNC BY VMSTAN ##################### PROGRAM='Gravity Sync' -VERSION='1.7.0' +VERSION='1.7.1' # Execute from the home folder of the user who owns it (ex: 'cd ~/gravity-sync') # For documentation or downloading updates visit https://github.com/vmstan/gravity-sync @@ -57,6 +57,7 @@ CYAN='\033[0;96m' YELLOW='\033[0;93m' PURPLE='\033[0;95m' BLUE='\033[0;94m' +BOLD='\033[1m' NC='\033[0m' # Message Codes @@ -882,10 +883,33 @@ function list_gs_arguments { exit_nochange } -# Output Version +# Version Control +## Show Version function show_version { - MESSAGE="${PROGRAM} ${VERSION}" + echo -e "========================================================" + MESSAGE="${BOLD}${PROGRAM}${NC} by ${CYAN}@vmstan${NC}" echo_info + + MESSAGE="${BLUE}https://github.com/vmstan/gravity-sync${NC}" + echo_info + + MESSAGE="Running Version: ${GREEN}${VERSION}${NC}" + echo_info + + GITVERSION=$(curl -sf https://raw.githubusercontent.com/vmstan/gravity-sync/development/VERSION) + if [ -z "$GITVERSION" ] + then + MESSAGE="Latest Version: ${RED}Unknown${NC}" + else + if [ "$GITVERSION" != "$VERSION" ] + then + MESSAGE="Upgrade Available: ${YELLOW}${GITVERSION}${NC}" + else + MESSAGE="Latest Version: ${GREEN}${GITVERSION}${NC}" + fi + fi + echo_info + echo -e "========================================================" } # Task Stack