diff --git a/pihole-sync b/pihole-sync index 032e7ca..c3c3f1a 100755 --- a/pihole-sync +++ b/pihole-sync @@ -54,9 +54,17 @@ localdomains_list='02-local-domains.conf' # Force sudo if not running with root privileges SUDO='' -if [ "$EUID" -ne 0 ] - then SUDO='sudo' -fi +if [ -d "/opt/docker-pi-hole/etc-pihole" ]; then + if [ "$EUID" -ne 0 ]; then + SUDO='sudo docker exec -it pihole' + else + SUDO='docker exec -it pihole' + fi +else { + if [ "$EUID" -ne 0 ] + then SUDO='sudo' + fi +} # FUNCTIONS push_initialize () { @@ -64,24 +72,24 @@ push_initialize () { cd $pihole_dir || exit # Verify Custom and CNAME lists exist - $SUDO touch $custom_list - $SUDO touch $dnsmasq_dir/$cname_list - $SUDO touch $dnsmasq_dir/$localdomains_list + touch $custom_list + touch $dnsmasq_dir/$cname_list + touch $dnsmasq_dir/$localdomains_list # Copy local Custom and CNAME lists to local Git repo - $SUDO cp $custom_list $personal_git_dir - $SUDO cp $dnsmasq_dir/$cname_list $personal_git_dir - $SUDO cp $dnsmasq_dir/$localdomains_list $personal_git_dir + cp $custom_list $personal_git_dir + cp $dnsmasq_dir/$cname_list $personal_git_dir + cp $dnsmasq_dir/$localdomains_list $personal_git_dir # Go to local Git repo directory cd $personal_git_dir || exit # Export Ad and Domain lists from Gravity database - $SUDO sqlite3 $gravity_db -header -csv "SELECT * FROM adlist" >$ad_list - $SUDO sqlite3 $gravity_db -header -csv "SELECT * FROM domainlist" >$domain_list + sqlite3 $gravity_db -header -csv "SELECT * FROM adlist" >$ad_list + sqlite3 $gravity_db -header -csv "SELECT * FROM domainlist" >$domain_list # Add all lists to local Git repo - $SUDO git add . + git add . echo "Local Pi-hole initialized in Push mode and local lists were added to local Git repo. Run 'pihole-cloudsync --push' to push to remote Git repo."; } pull_initialize () { @@ -89,25 +97,25 @@ pull_initialize () { cd $personal_git_dir || exit # Update local Git repo from remote Git repo - $SUDO git remote update > /dev/null + git remote update > /dev/null # 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 + git fetch --all -q + git reset --hard origin/master -q # Stop DNS server $SUDO service pihole-FTL stop # Overwrite local files - $SUDO cp $custom_list $pihole_dir - $SUDO cp $cname_list $dnsmasq_dir - $SUDO cp $localdomains_list $dnsmasq_dir + cp $custom_list $pihole_dir + cp $cname_list $dnsmasq_dir + cp $localdomains_list $dnsmasq_dir # Overwrite local database tables - $SUDO sqlite3 $gravity_db "DROP TABLE adlist;" - $SUDO sqlite3 $gravity_db -header -csv ".import adlist.csv adlist" - $SUDO sqlite3 $gravity_db "DROP TABLE domainlist;" - $SUDO sqlite3 $gravity_db -header -csv ".import domainlist.csv domainlist" + sqlite3 $gravity_db "DROP TABLE adlist;" + sqlite3 $gravity_db -header -csv ".import adlist.csv adlist" + sqlite3 $gravity_db "DROP TABLE domainlist;" + sqlite3 $gravity_db -header -csv ".import domainlist.csv domainlist" # Restart Pi-hole to pick up changes $SUDO pihole -g @@ -121,28 +129,28 @@ push () { cd $pihole_dir || exit # Copy local Custom and CNAME lists to local Git repo - $SUDO cp $custom_list $personal_git_dir - $SUDO cp $dnsmasq_dir/$cname_list $personal_git_dir - $SUDO cp $dnsmasq_dir/$localdomains_list $personal_git_dir + cp $custom_list $personal_git_dir + cp $dnsmasq_dir/$cname_list $personal_git_dir + cp $dnsmasq_dir/$localdomains_list $personal_git_dir # Go to local Git repo directory cd $personal_git_dir || exit # Export Ad and Domain lists from Gravity database - $SUDO sqlite3 $gravity_db -header -csv "SELECT * FROM adlist" >$ad_list - $SUDO sqlite3 $gravity_db -header -csv "SELECT * FROM domainlist" >$domain_list + sqlite3 $gravity_db -header -csv "SELECT * FROM adlist" >$ad_list + sqlite3 $gravity_db -header -csv "SELECT * FROM domainlist" >$domain_list # Compare local files to remote Git repo - $SUDO git remote update > /dev/null + git remote update > /dev/null # If local files are different than remote, update remote Git repo - CHANGED=$($SUDO git --work-tree=$personal_git_dir status --porcelain) + CHANGED=$(git --work-tree=$personal_git_dir status --porcelain) if [ -n "${CHANGED}" ]; then echo 'Local Pi-hole lists are different than remote Git repo. Updating remote repo...'; rightnow=$(date +"%B %e, %Y %l:%M%p") # Remove -q option if you don't want to run in "quiet" mode - $SUDO git commit -a -m "Updated $rightnow" -q - $SUDO git push -q + git commit -a -m "Updated $rightnow" -q + git push -q echo 'Done!'; exit 0 else @@ -156,22 +164,22 @@ pull () { cd $personal_git_dir || exit # Update local Git repo from remote Git repo - $SUDO git remote update > /dev/null - CHANGED=$($SUDO git log HEAD..origin/master --oneline) + git remote update > /dev/null + CHANGED=$(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/master -q + git fetch --all -q + git reset --hard origin/master -q $SUDO service pihole-FTL stop - $SUDO cp $custom_list $pihole_dir - $SUDO cp $cname_list $dnsmasq_dir - $SUDO cp $localdomains_list $dnsmasq_dir - $SUDO sqlite3 $gravity_db "DROP TABLE adlist;" - $SUDO sqlite3 $gravity_db -header -csv ".import adlist.csv adlist" - $SUDO sqlite3 $gravity_db "DROP TABLE domainlist;" - $SUDO sqlite3 $gravity_db -header -csv ".import domainlist.csv domainlist" - $SUDO pihole -g + cp $custom_list $pihole_dir + cp $cname_list $dnsmasq_dir + cp $localdomains_list $dnsmasq_dir + sqlite3 $gravity_db "DROP TABLE adlist;" + sqlite3 $gravity_db -header -csv ".import adlist.csv adlist" + sqlite3 $gravity_db "DROP TABLE domainlist;" + sqlite3 $gravity_db -header -csv ".import domainlist.csv domainlist" + $SUDO pihole -g echo 'Done!'; exit 0 else