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
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