Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gravity-db.sh « database_migration « Scripts « advanced - github.com/pi-hole/pi-hole.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bc650d3fb89ad6998c4352370d1eccf15b4c9ab7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env bash
# shellcheck disable=SC1090

# Pi-hole: A black hole for Internet advertisements
# (c) 2019 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Updates gravity.db database
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.

readonly scriptPath="/etc/.pihole/advanced/Scripts/database_migration/gravity"

upgrade_gravityDB(){
	local database piholeDir auditFile version
	database="${1}"
	piholeDir="${2}"
	auditFile="${piholeDir}/auditlog.list"

	# Get database version
	version="$(sqlite3 "${database}" "SELECT \"value\" FROM \"info\" WHERE \"property\" = 'version';")"

	if [[ "$version" == "1" ]]; then
		# This migration script upgrades the gravity.db file by
		# adding the domain_audit table
		echo -e "  ${INFO} Upgrading gravity database from version 1 to 2"
		sqlite3 "${database}" < "${scriptPath}/1_to_2.sql"
		version=2

		# Store audit domains in database table
		if [ -e "${auditFile}" ]; then
			echo -e "  ${INFO} Migrating content of ${auditFile} into new database"
			# database_table_from_file is defined in gravity.sh
			database_table_from_file "domain_audit" "${auditFile}"
		fi
	fi
	if [[ "$version" == "2" ]]; then
		# This migration script upgrades the gravity.db file by
		# renaming the regex table to regex_blacklist, and
		# creating a new regex_whitelist table + corresponding linking table and views
		echo -e "  ${INFO} Upgrading gravity database from version 2 to 3"
		sqlite3 "${database}" < "${scriptPath}/2_to_3.sql"
		version=3
	fi
	if [[ "$version" == "3" ]]; then
		# This migration script unifies the formally separated domain
		# lists into a single table with a UNIQUE domain constraint
		echo -e "  ${INFO} Upgrading gravity database from version 3 to 4"
		sqlite3 "${database}" < "${scriptPath}/3_to_4.sql"
		version=4
	fi
	if [[ "$version" == "4" ]]; then
		# This migration script upgrades the gravity and list views
		# implementing necessary changes for per-client blocking
		echo -e "  ${INFO} Upgrading gravity database from version 4 to 5"
		sqlite3 "${database}" < "${scriptPath}/4_to_5.sql"
		version=5
	fi
	if [[ "$version" == "5" ]]; then
		# This migration script upgrades the adlist view
		# to return an ID used in gravity.sh
		echo -e "  ${INFO} Upgrading gravity database from version 5 to 6"
		sqlite3 "${database}" < "${scriptPath}/5_to_6.sql"
		version=6
	fi
	if [[ "$version" == "6" ]]; then
		# This migration script adds a special group with ID 0
		# which is automatically associated to all clients not
		# having their own group assignments
		echo -e "  ${INFO} Upgrading gravity database from version 6 to 7"
		sqlite3 "${database}" < "${scriptPath}/6_to_7.sql"
		version=7
	fi
	if [[ "$version" == "7" ]]; then
		# This migration script recreated the group table
		# to ensure uniqueness on the group name
		# We also add date_added and date_modified columns
		echo -e "  ${INFO} Upgrading gravity database from version 7 to 8"
		sqlite3 "${database}" < "${scriptPath}/7_to_8.sql"
		version=8
	fi
}