Update pihole-sync

This commit is contained in:
2021-05-31 19:57:47 -05:00
parent e78773383c
commit 515a12b358

View File

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