diff --git a/pihole-cloudsync b/pihole-cloudsync index ec24aec..1343791 100755 --- a/pihole-cloudsync +++ b/pihole-cloudsync @@ -67,8 +67,8 @@ DB_DUMP_FILE="db_dump.sql" # Force sudo if not running with root privileges SUDO='' -if [ "$EUID" -ne 0 ]; then - SUDO='sudo' +if [ "$EUID" -ne 0 ]; + then SUDO='sudo' fi # Attempt to detect pihole running in Docker @@ -149,7 +149,12 @@ pull_initialize () { $SUDO cp $cname_list $dnsmasq_dir # Overwrite local database tables - import_tables + $SUDO sqlite3 $gravity_db "DELETE FROM adlist;" + $SUDO sqlite3 $gravity_db -header -csv ".import --skip 1 adlist.csv adlist" + if [ -s domainlist.csv ]; then + $SUDO sqlite3 $gravity_db "DELETE FROM domainlist;" + $SUDO sqlite3 $gravity_db -header -csv ".import --skip 1 domainlist.csv domainlist" + fi # Restart Pi-hole to pick up changes $SUDO ${DOCKER} pihole -g @@ -197,60 +202,69 @@ pull () { # Update local Git repo from remote Git repo $SUDO git remote update > /dev/null - CHANGED=$($SUDO git log HEAD..origin/${git_branch} --oneline) + CHANGED=$($SUDO git log HEAD..origin/master --oneline) if [ -n "${CHANGED}" ]; then - echo 'Remote Git repo is different than local Pi-hole lists. Updating local lists...'; - # Remove -q option if you don't want to run in "quiet" mode - $SUDO git fetch --all -q - $SUDO git reset --hard "origin/${git_branch}" -q - $SUDO ${DOCKER} service pihole-FTL stop - $SUDO cp $custom_list $pihole_dir - $SUDO cp $cname_list $dnsmasq_dir - import_tables - $SUDO ${DOCKER} pihole -g - echo 'Done!'; - exit 0 - else - echo 'Local Pi-hole lists match remote Git repo. No further action required.'; - exit 0 - fi + echo 'Remote Git repo is different than local Pi-hole lists. Updating local lists...'; + # Remove -q option if you don't want to run in "quiet" mode + $SUDO git fetch --all -q + $SUDO git reset --hard origin/master -q + $SUDO service pihole-FTL stop + $SUDO cp $custom_list $pihole_dir + $SUDO cp $cname_list $dnsmasq_dir + $SUDO sqlite3 $gravity_db "DELETE FROM adlist;" + $SUDO sqlite3 $gravity_db -header -csv ".import --skip 1 adlist.csv adlist" + if [ -s domainlist.csv ]; then + $SUDO sqlite3 $gravity_db "DELETE FROM domainlist;" + $SUDO sqlite3 $gravity_db -header -csv ".import --skip 1 domainlist.csv domainlist" + fi + $SUDO pihole -g + echo 'Done!'; + exit 0 + else + echo 'Local Pi-hole lists match remote Git repo. No further action required.'; + exit 0 + fi } ########################################################################### # Check to see whether a command line option was provided -if [ -z "$1" ]; then - echo "Missing command line option. Try --push, --pull, or --help." - exit 1 +if [ -z "$1" ]; + then + echo "Missing command line option. Try --push, --pull, or --help." + exit 1 fi # Determine which action to perform (InitPush, InitPull, Push, Pull, or Help) for arg in "$@"; do # Initialize - adds primary Pi-hole's lists to local Git repo before first push/upload - if [ "$arg" == "--initpush" ]; then - echo "$arg option detected. Initializing local Git repo for Push/Upload."; - push_initialize - exit 0 + if [ "$arg" == "--initpush" ]; + then + echo "$arg option detected. Initializing local Git repo for Push/Upload."; + push_initialize + exit 0 # Initialize - adds primary Pi-hole's lists to local Git repo before first push/upload - elif [ "$arg" == "--initpull" ]; then - echo "$arg option detected. Initializing local Git repo for Pull/Download."; - shift - [ -n "$1" ] && git_branch="$1" - pull_initialize - exit 0 + elif [ "$arg" == "--initpull" ]; + then + echo "$arg option detected. Initializing local Git repo for Pull/Download."; + pull_initialize + exit 0 # Push / Upload - Pushes updated local Pi-hole lists to remote Git repo - elif [ "$arg" == "--push" ] || [ "$arg" == "--upload" ] || [ "$arg" == "--up" ] || [ "$arg" == "-u" ]; then - echo "$arg option detected. Running in Push/Upload mode." - push - exit 0 + elif [ "$arg" == "--push" ] || [ "$arg" == "--upload" ] || [ "$arg" == "--up" ] || [ "$arg" == "-u" ]; + then + echo "$arg option detected. Running in Push/Upload mode." + push + exit 0 # Pull / Download - Pulls updated Pi-hole lists from remote Git repo - elif [ "$arg" == "--pull" ] || [ "$arg" == "--download" ] || [ "$arg" == "--down" ]|| [ "$arg" == "-d" ]; then + elif [ "$arg" == "--pull" ] || [ "$arg" == "--download" ] || [ "$arg" == "--down" ]|| [ "$arg" == "-d" ]; + then echo "$arg option detected. Running in Pull/Download mode." shift [ -n "$1" ] && git_branch="$1" pull exit 0 # Help - Displays help dialog - elif [ "$arg" == "--help" ] || [ "$arg" == "-h" ] || [ "$arg" == "-?" ]; then - cat <<- EOF - Usage: pihole-cloudsync