Update pihole-sync
This commit is contained in:
94
pihole-sync
94
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
|
||||
|
||||
Reference in New Issue
Block a user