@ -85,7 +85,7 @@ generate_gravity_database() {
# Copy data from old to new database file and swap them
gravity_swap_databases( ) {
local str copyGravity
local str copyGravity oldAvail
str = "Building tree"
echo -ne " ${ INFO } ${ str } ... "
@ -102,22 +102,6 @@ gravity_swap_databases() {
str = "Swapping databases"
echo -ne " ${ INFO } ${ str } ... "
# Gravity copying SQL script
copyGravity = " $( cat " ${ gravityDBcopy } " ) "
if [ [ " ${ gravityDBfile } " != " ${ gravityDBfile_default } " ] ] ; then
# Replace default gravity script location by custom location
copyGravity = " ${ copyGravity // " ${ gravityDBfile_default } " / " ${ gravityDBfile } " } "
fi
output = $( { sqlite3 " ${ gravityTEMPfile } " <<< " ${ copyGravity } " ; } 2>& 1 )
status = " $? "
if [ [ " ${ status } " -ne 0 ] ] ; then
echo -e " \\n ${ CROSS } Unable to copy data from ${ gravityDBfile } to ${ gravityTEMPfile } \\n ${ output } "
return 1
fi
echo -e " ${ OVER } ${ TICK } ${ str } "
# Swap databases and remove or conditionally rename old database
# Number of available blocks on disk
availableBlocks = $( stat -f --format "%a" " ${ gravityDIR } " )
@ -125,13 +109,19 @@ gravity_swap_databases() {
gravityBlocks = $( stat --format "%b" ${ gravityDBfile } )
# Only keep the old database if available disk space is at least twice the size of the existing gravity.db.
# Better be safe than sorry...
oldAvail = false
if [ " ${ availableBlocks } " -gt " $(( gravityBlocks * 2 )) " ] && [ -f " ${ gravityDBfile } " ] ; then
echo -e " ${ TICK } The old database remains available. "
oldAvail = true
mv " ${ gravityDBfile } " " ${ gravityOLDfile } "
else
rm " ${ gravityDBfile } "
fi
mv " ${ gravityTEMPfile } " " ${ gravityDBfile } "
echo -e " ${ OVER } ${ TICK } ${ str } "
if [ oldAvail ] ; then
echo -e " ${ TICK } The old database remains available. "
fi
}
# Update timestamp when the gravity table was last updated successfully
@ -475,9 +465,28 @@ gravity_DownloadBlocklists() {
echo ""
done
str = "Creating new gravity databases"
echo -ne " ${ INFO } ${ str } ... "
# Gravity copying SQL script
copyGravity = " $( cat " ${ gravityDBcopy } " ) "
if [ [ " ${ gravityDBfile } " != " ${ gravityDBfile_default } " ] ] ; then
# Replace default gravity script location by custom location
copyGravity = " ${ copyGravity // " ${ gravityDBfile_default } " / " ${ gravityDBfile } " } "
fi
output = $( { pihole-FTL sqlite3 " ${ gravityTEMPfile } " <<< " ${ copyGravity } " ; } 2>& 1 )
status = " $? "
if [ [ " ${ status } " -ne 0 ] ] ; then
echo -e " \\n ${ CROSS } Unable to copy data from ${ gravityDBfile } to ${ gravityTEMPfile } \\n ${ output } "
return 1
fi
echo -e " ${ OVER } ${ TICK } ${ str } "
str = "Storing downloaded domains in new gravity database"
echo -ne " ${ INFO } ${ str } ... "
output = $( { printf ".timeout 30000\\n.mode csv\\n.import \"%s\" gravity\\n" " ${ target } " | sqlite3 " ${ gravityTEMPfile } " ; } 2>& 1 )
output = $( { printf ".timeout 30000\\n.mode csv\\n.import \"%s\" gravity\\n" " ${ target } " | pihole-FTL sqlite3 " ${ gravityTEMPfile } " ; } 2>& 1 )
status = " $? "
if [ [ " ${ status } " -ne 0 ] ] ; then