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
|
# 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
|
||||||
|
|||||||
Reference in New Issue
Block a user