From aa704a2e0e5644e8f188a55f31bc514293275ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Mon, 1 Jul 2024 21:07:09 +0200 Subject: [PATCH 1/6] Add pytest-clarity to test environment to improve error log output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- test/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/requirements.txt b/test/requirements.txt index 557d6497..f68261de 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -3,4 +3,4 @@ pytest == 8.2.2 pytest-xdist == 3.6.1 pytest-testinfra == 10.1.1 tox == 4.15.1 - +pytest-clarity == 1.0.1 From 6b1d0e09d1786c27c273ad1d172d664c7ade6fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Tue, 2 Jul 2024 08:23:48 +0200 Subject: [PATCH 2/6] Set column width to 120 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- test/tox.centos_9.ini | 2 ++ test/tox.debian_10.ini | 2 ++ test/tox.debian_11.ini | 2 ++ test/tox.debian_12.ini | 2 ++ test/tox.fedora_39.ini | 2 ++ test/tox.fedora_40.ini | 2 ++ test/tox.ubuntu_20.ini | 2 ++ test/tox.ubuntu_22.ini | 2 ++ test/tox.ubuntu_23.ini | 2 ++ test/tox.ubuntu_24.ini | 2 ++ 10 files changed, 20 insertions(+) diff --git a/test/tox.centos_9.ini b/test/tox.centos_9.ini index 4c51aefa..81dd0bd2 100644 --- a/test/tox.centos_9.ini +++ b/test/tox.centos_9.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _centos_9.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py ./test_centos_fedora_common_support.py diff --git a/test/tox.debian_10.ini b/test/tox.debian_10.ini index f107300f..9995a852 100644 --- a/test/tox.debian_10.ini +++ b/test/tox.debian_10.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _debian_10.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py diff --git a/test/tox.debian_11.ini b/test/tox.debian_11.ini index c38a15fb..a8909d46 100644 --- a/test/tox.debian_11.ini +++ b/test/tox.debian_11.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _debian_11.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py diff --git a/test/tox.debian_12.ini b/test/tox.debian_12.ini index ee70e8bd..707e8710 100644 --- a/test/tox.debian_12.ini +++ b/test/tox.debian_12.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _debian_12.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py diff --git a/test/tox.fedora_39.ini b/test/tox.fedora_39.ini index 5c8557c9..aaa6b30e 100644 --- a/test/tox.fedora_39.ini +++ b/test/tox.fedora_39.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _fedora_39.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py ./test_centos_fedora_common_support.py diff --git a/test/tox.fedora_40.ini b/test/tox.fedora_40.ini index 149630d7..462c5ff1 100644 --- a/test/tox.fedora_40.ini +++ b/test/tox.fedora_40.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _fedora_40.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py ./test_centos_fedora_common_support.py diff --git a/test/tox.ubuntu_20.ini b/test/tox.ubuntu_20.ini index 49a6153e..bcfb1d2a 100644 --- a/test/tox.ubuntu_20.ini +++ b/test/tox.ubuntu_20.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _ubuntu_20.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py diff --git a/test/tox.ubuntu_22.ini b/test/tox.ubuntu_22.ini index 8014d6d6..c8e71abb 100644 --- a/test/tox.ubuntu_22.ini +++ b/test/tox.ubuntu_22.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _ubuntu_22.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py diff --git a/test/tox.ubuntu_23.ini b/test/tox.ubuntu_23.ini index 767ed9ef..f0a32a68 100644 --- a/test/tox.ubuntu_23.ini +++ b/test/tox.ubuntu_23.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _ubuntu_23.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py diff --git a/test/tox.ubuntu_24.ini b/test/tox.ubuntu_24.ini index dbd278d6..5b7e77a9 100644 --- a/test/tox.ubuntu_24.ini +++ b/test/tox.ubuntu_24.ini @@ -4,5 +4,7 @@ envlist = py3 [testenv:py3] allowlist_externals = docker deps = -rrequirements.txt +setenv = + COLUMNS=120 commands = docker buildx build --load --progress plain -f _ubuntu_24.Dockerfile -t pytest_pihole:test_container ../ pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py From ddc289ca3e66e7739a63d1e91a7d42606157eb23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Tue, 2 Jul 2024 20:45:34 +0200 Subject: [PATCH 3/6] Fix Dockerfile syntax ENV legacy warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- test/_centos_9.Dockerfile | 10 +++++----- test/_debian_10.Dockerfile | 10 +++++----- test/_debian_11.Dockerfile | 10 +++++----- test/_debian_12.Dockerfile | 10 +++++----- test/_fedora_39.Dockerfile | 10 +++++----- test/_fedora_40.Dockerfile | 10 +++++----- test/_ubuntu_20.Dockerfile | 11 +++++------ test/_ubuntu_22.Dockerfile | 10 +++++----- test/_ubuntu_23.Dockerfile | 10 +++++----- test/_ubuntu_24.Dockerfile | 10 +++++----- 10 files changed, 50 insertions(+), 51 deletions(-) diff --git a/test/_centos_9.Dockerfile b/test/_centos_9.Dockerfile index 6ccd18b6..2e3d055a 100644 --- a/test/_centos_9.Dockerfile +++ b/test/_centos_9.Dockerfile @@ -1,18 +1,18 @@ FROM quay.io/centos/centos:stream9 RUN yum install -y --allowerasing curl git initscripts -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_debian_10.Dockerfile b/test/_debian_10.Dockerfile index 3b177cc8..dc813ac2 100644 --- a/test/_debian_10.Dockerfile +++ b/test/_debian_10.Dockerfile @@ -1,17 +1,17 @@ FROM buildpack-deps:buster-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_debian_11.Dockerfile b/test/_debian_11.Dockerfile index 58c67e0f..cb7d27cc 100644 --- a/test/_debian_11.Dockerfile +++ b/test/_debian_11.Dockerfile @@ -1,17 +1,17 @@ FROM buildpack-deps:bullseye-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_debian_12.Dockerfile b/test/_debian_12.Dockerfile index a762fee0..50d709b1 100644 --- a/test/_debian_12.Dockerfile +++ b/test/_debian_12.Dockerfile @@ -1,17 +1,17 @@ FROM buildpack-deps:bookworm-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_fedora_39.Dockerfile b/test/_fedora_39.Dockerfile index 1727a3aa..1d3dbc63 100644 --- a/test/_fedora_39.Dockerfile +++ b/test/_fedora_39.Dockerfile @@ -1,18 +1,18 @@ FROM fedora:39 RUN dnf install -y git initscripts -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_fedora_40.Dockerfile b/test/_fedora_40.Dockerfile index 6d00072f..e4879c92 100644 --- a/test/_fedora_40.Dockerfile +++ b/test/_fedora_40.Dockerfile @@ -1,18 +1,18 @@ FROM fedora:40 RUN dnf install -y git initscripts -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_ubuntu_20.Dockerfile b/test/_ubuntu_20.Dockerfile index c63f883a..64d4f415 100644 --- a/test/_ubuntu_20.Dockerfile +++ b/test/_ubuntu_20.Dockerfile @@ -1,18 +1,17 @@ FROM buildpack-deps:focal-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR -ENV DEBIAN_FRONTEND=noninteractive +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_ubuntu_22.Dockerfile b/test/_ubuntu_22.Dockerfile index d44518b4..34faa361 100644 --- a/test/_ubuntu_22.Dockerfile +++ b/test/_ubuntu_22.Dockerfile @@ -1,18 +1,18 @@ FROM buildpack-deps:jammy-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR ENV DEBIAN_FRONTEND=noninteractive RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_ubuntu_23.Dockerfile b/test/_ubuntu_23.Dockerfile index f9b3910b..ea0ad245 100644 --- a/test/_ubuntu_23.Dockerfile +++ b/test/_ubuntu_23.Dockerfile @@ -1,18 +1,18 @@ FROM buildpack-deps:lunar-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR ENV DEBIAN_FRONTEND=noninteractive RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ diff --git a/test/_ubuntu_24.Dockerfile b/test/_ubuntu_24.Dockerfile index 2b048361..4d581cd3 100644 --- a/test/_ubuntu_24.Dockerfile +++ b/test/_ubuntu_24.Dockerfile @@ -1,18 +1,18 @@ FROM buildpack-deps:24.04-scm -ENV GITDIR /etc/.pihole -ENV SCRIPTDIR /opt/pihole +ENV GITDIR=/etc/.pihole +ENV SCRIPTDIR=/opt/pihole RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole ADD . $GITDIR RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/ -ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR ENV DEBIAN_FRONTEND=noninteractive RUN true && \ chmod +x $SCRIPTDIR/* -ENV SKIP_INSTALL true -ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net +ENV SKIP_INSTALL=true +ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net #sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \ From fafd47ba75a95b6c663af811f0407b818ee7dcb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Tue, 2 Jul 2024 20:52:44 +0200 Subject: [PATCH 4/6] Please editorconfig-checker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- .github/workflows/stale.yml | 1 - .../Scripts/database_migration/gravity-db.sh | 284 +++++++++--------- .../database_migration/gravity/1_to_2.sql | 6 +- .../database_migration/gravity/2_to_3.sql | 24 +- .../database_migration/gravity/3_to_4.sql | 20 +- .../database_migration/gravity/4_to_5.sql | 16 +- .../database_migration/gravity/5_to_6.sql | 1 - .../database_migration/gravity/7_to_8.sql | 12 +- advanced/Templates/gravity.db.sql | 100 +++--- advanced/Templates/logrotate | 48 +-- advanced/bash-completion/pihole | 94 +++--- manpages/pihole.8 | 2 +- 12 files changed, 303 insertions(+), 305 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 2218ea02..2a7831af 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -45,4 +45,3 @@ jobs: run: gh issue edit ${{ github.event.issue.number }} --remove-label ${{ env.stale_label }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - diff --git a/advanced/Scripts/database_migration/gravity-db.sh b/advanced/Scripts/database_migration/gravity-db.sh index e99f1df2..8f84e2b0 100755 --- a/advanced/Scripts/database_migration/gravity-db.sh +++ b/advanced/Scripts/database_migration/gravity-db.sh @@ -13,150 +13,150 @@ readonly scriptPath="/etc/.pihole/advanced/Scripts/database_migration/gravity" upgrade_gravityDB(){ - local database piholeDir auditFile version - database="${1}" - piholeDir="${2}" - auditFile="${piholeDir}/auditlog.list" + local database piholeDir auditFile version + database="${1}" + piholeDir="${2}" + auditFile="${piholeDir}/auditlog.list" - # Exit early if the database does not exist (e.g. in CI tests) - if [[ ! -f "${database}" ]]; then - return - fi + # Exit early if the database does not exist (e.g. in CI tests) + if [[ ! -f "${database}" ]]; then + return + fi - # Get database version - version="$(pihole-FTL sqlite3 -ni "${database}" "SELECT \"value\" FROM \"info\" WHERE \"property\" = 'version';")" + # Get database version + version="$(pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/1_to_2.sql" - version=2 + 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" + pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${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" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/7_to_8.sql" - version=8 - fi - if [[ "$version" == "8" ]]; then - # This migration fixes some issues that were introduced - # in the previous migration script. - echo -e " ${INFO} Upgrading gravity database from version 8 to 9" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/8_to_9.sql" - version=9 - fi - if [[ "$version" == "9" ]]; then - # This migration drops unused tables and creates triggers to remove - # obsolete groups assignments when the linked items are deleted - echo -e " ${INFO} Upgrading gravity database from version 9 to 10" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/9_to_10.sql" - version=10 - fi - if [[ "$version" == "10" ]]; then - # This adds timestamp and an optional comment field to the client table - # These fields are only temporary and will be replaces by the columns - # defined in gravity.db.sql during gravity swapping. We add them here - # to keep the copying process generic (needs the same columns in both the - # source and the destination databases). - echo -e " ${INFO} Upgrading gravity database from version 10 to 11" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/10_to_11.sql" - version=11 - fi - if [[ "$version" == "11" ]]; then - # Rename group 0 from "Unassociated" to "Default" - echo -e " ${INFO} Upgrading gravity database from version 11 to 12" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/11_to_12.sql" - version=12 - fi - if [[ "$version" == "12" ]]; then - # Add column date_updated to adlist table - echo -e " ${INFO} Upgrading gravity database from version 12 to 13" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/12_to_13.sql" - version=13 - fi - if [[ "$version" == "13" ]]; then - # Add columns number and status to adlist table - echo -e " ${INFO} Upgrading gravity database from version 13 to 14" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/13_to_14.sql" - version=14 - fi - if [[ "$version" == "14" ]]; then - # Changes the vw_adlist created in 5_to_6 - echo -e " ${INFO} Upgrading gravity database from version 14 to 15" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/14_to_15.sql" - version=15 - fi - if [[ "$version" == "15" ]]; then - # Add column abp_entries to adlist table - echo -e " ${INFO} Upgrading gravity database from version 15 to 16" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/15_to_16.sql" - version=16 - fi - if [[ "$version" == "16" ]]; then - # Add antigravity table - # Add column type to adlist table (to support adlist types) - echo -e " ${INFO} Upgrading gravity database from version 16 to 17" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/16_to_17.sql" - version=17 - fi - if [[ "$version" == "17" ]]; then - # Add adlist.id to vw_gravity and vw_antigravity - echo -e " ${INFO} Upgrading gravity database from version 17 to 18" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/17_to_18.sql" - version=18 - fi - if [[ "$version" == "18" ]]; then - # Modify DELETE triggers to delete BEFORE instead of AFTER to prevent - # foreign key constraint violations - echo -e " ${INFO} Upgrading gravity database from version 18 to 19" - pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/18_to_19.sql" - version=19 - fi + # 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" + pihole-FTL sqlite3 -ni "${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" + pihole-FTL sqlite3 -ni "${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" + pihole-FTL sqlite3 -ni "${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" + pihole-FTL sqlite3 -ni "${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" + pihole-FTL sqlite3 -ni "${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" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/7_to_8.sql" + version=8 + fi + if [[ "$version" == "8" ]]; then + # This migration fixes some issues that were introduced + # in the previous migration script. + echo -e " ${INFO} Upgrading gravity database from version 8 to 9" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/8_to_9.sql" + version=9 + fi + if [[ "$version" == "9" ]]; then + # This migration drops unused tables and creates triggers to remove + # obsolete groups assignments when the linked items are deleted + echo -e " ${INFO} Upgrading gravity database from version 9 to 10" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/9_to_10.sql" + version=10 + fi + if [[ "$version" == "10" ]]; then + # This adds timestamp and an optional comment field to the client table + # These fields are only temporary and will be replaces by the columns + # defined in gravity.db.sql during gravity swapping. We add them here + # to keep the copying process generic (needs the same columns in both the + # source and the destination databases). + echo -e " ${INFO} Upgrading gravity database from version 10 to 11" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/10_to_11.sql" + version=11 + fi + if [[ "$version" == "11" ]]; then + # Rename group 0 from "Unassociated" to "Default" + echo -e " ${INFO} Upgrading gravity database from version 11 to 12" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/11_to_12.sql" + version=12 + fi + if [[ "$version" == "12" ]]; then + # Add column date_updated to adlist table + echo -e " ${INFO} Upgrading gravity database from version 12 to 13" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/12_to_13.sql" + version=13 + fi + if [[ "$version" == "13" ]]; then + # Add columns number and status to adlist table + echo -e " ${INFO} Upgrading gravity database from version 13 to 14" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/13_to_14.sql" + version=14 + fi + if [[ "$version" == "14" ]]; then + # Changes the vw_adlist created in 5_to_6 + echo -e " ${INFO} Upgrading gravity database from version 14 to 15" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/14_to_15.sql" + version=15 + fi + if [[ "$version" == "15" ]]; then + # Add column abp_entries to adlist table + echo -e " ${INFO} Upgrading gravity database from version 15 to 16" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/15_to_16.sql" + version=16 + fi + if [[ "$version" == "16" ]]; then + # Add antigravity table + # Add column type to adlist table (to support adlist types) + echo -e " ${INFO} Upgrading gravity database from version 16 to 17" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/16_to_17.sql" + version=17 + fi + if [[ "$version" == "17" ]]; then + # Add adlist.id to vw_gravity and vw_antigravity + echo -e " ${INFO} Upgrading gravity database from version 17 to 18" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/17_to_18.sql" + version=18 + fi + if [[ "$version" == "18" ]]; then + # Modify DELETE triggers to delete BEFORE instead of AFTER to prevent + # foreign key constraint violations + echo -e " ${INFO} Upgrading gravity database from version 18 to 19" + pihole-FTL sqlite3 -ni "${database}" < "${scriptPath}/18_to_19.sql" + version=19 + fi } diff --git a/advanced/Scripts/database_migration/gravity/1_to_2.sql b/advanced/Scripts/database_migration/gravity/1_to_2.sql index 6d57a6fe..ef445cc6 100644 --- a/advanced/Scripts/database_migration/gravity/1_to_2.sql +++ b/advanced/Scripts/database_migration/gravity/1_to_2.sql @@ -4,9 +4,9 @@ BEGIN TRANSACTION; CREATE TABLE domain_audit ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - domain TEXT UNIQUE NOT NULL, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)) + id INTEGER PRIMARY KEY AUTOINCREMENT, + domain TEXT UNIQUE NOT NULL, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)) ); UPDATE info SET value = 2 WHERE property = 'version'; diff --git a/advanced/Scripts/database_migration/gravity/2_to_3.sql b/advanced/Scripts/database_migration/gravity/2_to_3.sql index fd7c24d2..9ade340a 100644 --- a/advanced/Scripts/database_migration/gravity/2_to_3.sql +++ b/advanced/Scripts/database_migration/gravity/2_to_3.sql @@ -8,9 +8,9 @@ ALTER TABLE regex RENAME TO regex_blacklist; CREATE TABLE regex_blacklist_by_group ( - regex_blacklist_id INTEGER NOT NULL REFERENCES regex_blacklist (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (regex_blacklist_id, group_id) + regex_blacklist_id INTEGER NOT NULL REFERENCES regex_blacklist (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (regex_blacklist_id, group_id) ); INSERT INTO regex_blacklist_by_group SELECT * FROM regex_by_group; @@ -32,19 +32,19 @@ CREATE TRIGGER tr_regex_blacklist_update AFTER UPDATE ON regex_blacklist CREATE TABLE regex_whitelist ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - domain TEXT UNIQUE NOT NULL, - enabled BOOLEAN NOT NULL DEFAULT 1, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - comment TEXT + id INTEGER PRIMARY KEY AUTOINCREMENT, + domain TEXT UNIQUE NOT NULL, + enabled BOOLEAN NOT NULL DEFAULT 1, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + comment TEXT ); CREATE TABLE regex_whitelist_by_group ( - regex_whitelist_id INTEGER NOT NULL REFERENCES regex_whitelist (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (regex_whitelist_id, group_id) + regex_whitelist_id INTEGER NOT NULL REFERENCES regex_whitelist (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (regex_whitelist_id, group_id) ); CREATE VIEW vw_regex_whitelist AS SELECT DISTINCT domain diff --git a/advanced/Scripts/database_migration/gravity/3_to_4.sql b/advanced/Scripts/database_migration/gravity/3_to_4.sql index 05231f72..2b3d0a79 100644 --- a/advanced/Scripts/database_migration/gravity/3_to_4.sql +++ b/advanced/Scripts/database_migration/gravity/3_to_4.sql @@ -6,13 +6,13 @@ BEGIN TRANSACTION; CREATE TABLE domainlist ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - type INTEGER NOT NULL DEFAULT 0, - domain TEXT UNIQUE NOT NULL, - enabled BOOLEAN NOT NULL DEFAULT 1, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - comment TEXT + id INTEGER PRIMARY KEY AUTOINCREMENT, + type INTEGER NOT NULL DEFAULT 0, + domain TEXT UNIQUE NOT NULL, + enabled BOOLEAN NOT NULL DEFAULT 1, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + comment TEXT ); ALTER TABLE whitelist ADD COLUMN type INTEGER; @@ -41,9 +41,9 @@ DROP TABLE regex_whitelist_by_group; DROP TABLE regex_blacklist_by_group; CREATE TABLE domainlist_by_group ( - domainlist_id INTEGER NOT NULL REFERENCES domainlist (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (domainlist_id, group_id) + domainlist_id INTEGER NOT NULL REFERENCES domainlist (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (domainlist_id, group_id) ); DROP TRIGGER tr_whitelist_update; diff --git a/advanced/Scripts/database_migration/gravity/4_to_5.sql b/advanced/Scripts/database_migration/gravity/4_to_5.sql index 4ae9f980..1436c69d 100644 --- a/advanced/Scripts/database_migration/gravity/4_to_5.sql +++ b/advanced/Scripts/database_migration/gravity/4_to_5.sql @@ -7,9 +7,9 @@ BEGIN TRANSACTION; DROP TABLE gravity; CREATE TABLE gravity ( - domain TEXT NOT NULL, - adlist_id INTEGER NOT NULL REFERENCES adlist (id), - PRIMARY KEY(domain, adlist_id) + domain TEXT NOT NULL, + adlist_id INTEGER NOT NULL REFERENCES adlist (id), + PRIMARY KEY(domain, adlist_id) ); DROP VIEW vw_gravity; @@ -22,15 +22,15 @@ CREATE VIEW vw_gravity AS SELECT domain, adlist_by_group.group_id AS group_id CREATE TABLE client ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - ip TEXT NOL NULL UNIQUE + id INTEGER PRIMARY KEY AUTOINCREMENT, + ip TEXT NOL NULL UNIQUE ); CREATE TABLE client_by_group ( - client_id INTEGER NOT NULL REFERENCES client (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (client_id, group_id) + client_id INTEGER NOT NULL REFERENCES client (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (client_id, group_id) ); UPDATE info SET value = 5 WHERE property = 'version'; diff --git a/advanced/Scripts/database_migration/gravity/5_to_6.sql b/advanced/Scripts/database_migration/gravity/5_to_6.sql index d2bb3145..a058156a 100644 --- a/advanced/Scripts/database_migration/gravity/5_to_6.sql +++ b/advanced/Scripts/database_migration/gravity/5_to_6.sql @@ -15,4 +15,3 @@ CREATE VIEW vw_adlist AS SELECT DISTINCT address, adlist.id AS id UPDATE info SET value = 6 WHERE property = 'version'; COMMIT; - diff --git a/advanced/Scripts/database_migration/gravity/7_to_8.sql b/advanced/Scripts/database_migration/gravity/7_to_8.sql index ccf0c148..c6a5b35b 100644 --- a/advanced/Scripts/database_migration/gravity/7_to_8.sql +++ b/advanced/Scripts/database_migration/gravity/7_to_8.sql @@ -8,12 +8,12 @@ ALTER TABLE "group" RENAME TO "group__"; CREATE TABLE "group" ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - enabled BOOLEAN NOT NULL DEFAULT 1, - name TEXT UNIQUE NOT NULL, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - description TEXT + id INTEGER PRIMARY KEY AUTOINCREMENT, + enabled BOOLEAN NOT NULL DEFAULT 1, + name TEXT UNIQUE NOT NULL, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + description TEXT ); CREATE TRIGGER tr_group_update AFTER UPDATE ON "group" diff --git a/advanced/Templates/gravity.db.sql b/advanced/Templates/gravity.db.sql index 42060443..9782a044 100644 --- a/advanced/Templates/gravity.db.sql +++ b/advanced/Templates/gravity.db.sql @@ -3,99 +3,99 @@ BEGIN TRANSACTION; CREATE TABLE "group" ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - enabled BOOLEAN NOT NULL DEFAULT 1, - name TEXT UNIQUE NOT NULL, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - description TEXT + id INTEGER PRIMARY KEY AUTOINCREMENT, + enabled BOOLEAN NOT NULL DEFAULT 1, + name TEXT UNIQUE NOT NULL, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + description TEXT ); INSERT INTO "group" (id,enabled,name,description) VALUES (0,1,'Default','The default group'); CREATE TABLE domainlist ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - type INTEGER NOT NULL DEFAULT 0, - domain TEXT NOT NULL, - enabled BOOLEAN NOT NULL DEFAULT 1, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - comment TEXT, - UNIQUE(domain, type) + id INTEGER PRIMARY KEY AUTOINCREMENT, + type INTEGER NOT NULL DEFAULT 0, + domain TEXT NOT NULL, + enabled BOOLEAN NOT NULL DEFAULT 1, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + comment TEXT, + UNIQUE(domain, type) ); CREATE TABLE adlist ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - address TEXT NOT NULL, - enabled BOOLEAN NOT NULL DEFAULT 1, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - comment TEXT, - date_updated INTEGER, - number INTEGER NOT NULL DEFAULT 0, - invalid_domains INTEGER NOT NULL DEFAULT 0, - status INTEGER NOT NULL DEFAULT 0, - abp_entries INTEGER NOT NULL DEFAULT 0, - type INTEGER NOT NULL DEFAULT 0, - UNIQUE(address, type) + id INTEGER PRIMARY KEY AUTOINCREMENT, + address TEXT NOT NULL, + enabled BOOLEAN NOT NULL DEFAULT 1, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + comment TEXT, + date_updated INTEGER, + number INTEGER NOT NULL DEFAULT 0, + invalid_domains INTEGER NOT NULL DEFAULT 0, + status INTEGER NOT NULL DEFAULT 0, + abp_entries INTEGER NOT NULL DEFAULT 0, + type INTEGER NOT NULL DEFAULT 0, + UNIQUE(address, type) ); CREATE TABLE adlist_by_group ( - adlist_id INTEGER NOT NULL REFERENCES adlist (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (adlist_id, group_id) + adlist_id INTEGER NOT NULL REFERENCES adlist (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (adlist_id, group_id) ); CREATE TABLE gravity ( - domain TEXT NOT NULL, - adlist_id INTEGER NOT NULL REFERENCES adlist (id) + domain TEXT NOT NULL, + adlist_id INTEGER NOT NULL REFERENCES adlist (id) ); CREATE TABLE antigravity ( - domain TEXT NOT NULL, - adlist_id INTEGER NOT NULL REFERENCES adlist (id) + domain TEXT NOT NULL, + adlist_id INTEGER NOT NULL REFERENCES adlist (id) ); CREATE TABLE info ( - property TEXT PRIMARY KEY, - value TEXT NOT NULL + property TEXT PRIMARY KEY, + value TEXT NOT NULL ); INSERT INTO "info" VALUES('version','18'); CREATE TABLE domain_audit ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - domain TEXT UNIQUE NOT NULL, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)) + id INTEGER PRIMARY KEY AUTOINCREMENT, + domain TEXT UNIQUE NOT NULL, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)) ); CREATE TABLE domainlist_by_group ( - domainlist_id INTEGER NOT NULL REFERENCES domainlist (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (domainlist_id, group_id) + domainlist_id INTEGER NOT NULL REFERENCES domainlist (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (domainlist_id, group_id) ); CREATE TABLE client ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - ip TEXT NOT NULL UNIQUE, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - comment TEXT + id INTEGER PRIMARY KEY AUTOINCREMENT, + ip TEXT NOT NULL UNIQUE, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + comment TEXT ); CREATE TABLE client_by_group ( - client_id INTEGER NOT NULL REFERENCES client (id), - group_id INTEGER NOT NULL REFERENCES "group" (id), - PRIMARY KEY (client_id, group_id) + client_id INTEGER NOT NULL REFERENCES client (id), + group_id INTEGER NOT NULL REFERENCES "group" (id), + PRIMARY KEY (client_id, group_id) ); CREATE TRIGGER tr_adlist_update AFTER UPDATE OF address,enabled,comment ON adlist diff --git a/advanced/Templates/logrotate b/advanced/Templates/logrotate index 5f609e0f..9e52776b 100644 --- a/advanced/Templates/logrotate +++ b/advanced/Templates/logrotate @@ -1,32 +1,32 @@ /var/log/pihole/pihole.log { - # su # - daily - copytruncate - rotate 5 - compress - delaycompress - notifempty - nomail + # su # + daily + copytruncate + rotate 5 + compress + delaycompress + notifempty + nomail } /var/log/pihole/FTL.log { - # su # - weekly - copytruncate - rotate 3 - compress - delaycompress - notifempty - nomail + # su # + weekly + copytruncate + rotate 3 + compress + delaycompress + notifempty + nomail } /var/log/pihole/webserver.log { - # su # - weekly - copytruncate - rotate 3 - compress - delaycompress - notifempty - nomail + # su # + weekly + copytruncate + rotate 3 + compress + delaycompress + notifempty + nomail } diff --git a/advanced/bash-completion/pihole b/advanced/bash-completion/pihole index 89e02d2f..c2b58c6e 100644 --- a/advanced/bash-completion/pihole +++ b/advanced/bash-completion/pihole @@ -1,51 +1,51 @@ _pihole() { - local cur prev opts opts_checkout opts_debug opts_logging opts_query opts_update opts_version - COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" - prev2="${COMP_WORDS[COMP_CWORD-2]}" + local cur prev opts opts_checkout opts_debug opts_logging opts_query opts_update opts_version + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + prev2="${COMP_WORDS[COMP_CWORD-2]}" - case "${prev}" in - "pihole") - opts="blacklist checkout debug disable enable flush help logging query reconfigure regex restartdns status tail uninstall updateGravity updatePihole version wildcard whitelist arpflush" - COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) - ;; - "whitelist"|"blacklist"|"wildcard"|"regex") - opts_lists="\--delmode \--noreload \--quiet \--list \--nuke" - COMPREPLY=( $(compgen -W "${opts_lists}" -- ${cur}) ) - ;; - "checkout") - opts_checkout="core ftl web master dev" - COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) ) - ;; - "debug") - opts_debug="-a" - COMPREPLY=( $(compgen -W "${opts_debug}" -- ${cur}) ) - ;; - "logging") - opts_logging="on off 'off noflush'" - COMPREPLY=( $(compgen -W "${opts_logging}" -- ${cur}) ) - ;; - "query") - opts_query="--partial --all" - COMPREPLY=( $(compgen -W "${opts_query}" -- ${cur}) ) - ;; - "updatePihole"|"-up") - opts_update="--check-only" - COMPREPLY=( $(compgen -W "${opts_update}" -- ${cur}) ) - ;; - "core"|"admin"|"ftl") - if [[ "$prev2" == "checkout" ]]; then - opts_checkout="master dev" - COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) ) - else - return 1 - fi - ;; - *) - return 1 - ;; - esac - return 0 + case "${prev}" in + "pihole") + opts="blacklist checkout debug disable enable flush help logging query reconfigure regex restartdns status tail uninstall updateGravity updatePihole version wildcard whitelist arpflush" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + ;; + "whitelist"|"blacklist"|"wildcard"|"regex") + opts_lists="\--delmode \--noreload \--quiet \--list \--nuke" + COMPREPLY=( $(compgen -W "${opts_lists}" -- ${cur}) ) + ;; + "checkout") + opts_checkout="core ftl web master dev" + COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) ) + ;; + "debug") + opts_debug="-a" + COMPREPLY=( $(compgen -W "${opts_debug}" -- ${cur}) ) + ;; + "logging") + opts_logging="on off 'off noflush'" + COMPREPLY=( $(compgen -W "${opts_logging}" -- ${cur}) ) + ;; + "query") + opts_query="--partial --all" + COMPREPLY=( $(compgen -W "${opts_query}" -- ${cur}) ) + ;; + "updatePihole"|"-up") + opts_update="--check-only" + COMPREPLY=( $(compgen -W "${opts_update}" -- ${cur}) ) + ;; + "core"|"admin"|"ftl") + if [[ "$prev2" == "checkout" ]]; then + opts_checkout="master dev" + COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) ) + else + return 1 + fi + ;; + *) + return 1 + ;; + esac + return 0 } complete -F _pihole pihole diff --git a/manpages/pihole.8 b/manpages/pihole.8 index 55bbe6cb..bdc4b744 100644 --- a/manpages/pihole.8 +++ b/manpages/pihole.8 @@ -170,7 +170,7 @@ Available commands and options: Specify whether the Pi-hole log should be used .br - (Logging options): + (Logging options): .br on Enable the Pi-hole log at /var/log/pihole/pihole.log .br From e8802173f5eacad1671997e833bce82f3bff69ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 20:09:24 +0000 Subject: [PATCH 5/6] Bump tox from 4.15.1 to 4.16.0 in /test Bumps [tox](https://github.com/tox-dev/tox) from 4.15.1 to 4.16.0. - [Release notes](https://github.com/tox-dev/tox/releases) - [Changelog](https://github.com/tox-dev/tox/blob/main/docs/changelog.rst) - [Commits](https://github.com/tox-dev/tox/compare/4.15.1...4.16.0) --- updated-dependencies: - dependency-name: tox dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- test/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/requirements.txt b/test/requirements.txt index f68261de..73b9ad6e 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -2,5 +2,5 @@ pyyaml == 6.0.1 pytest == 8.2.2 pytest-xdist == 3.6.1 pytest-testinfra == 10.1.1 -tox == 4.15.1 +tox == 4.16.0 pytest-clarity == 1.0.1 From 6ffb20f09e6a24152e3fe10c2a03b07c8d401d09 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 30 Apr 2024 15:47:57 +0200 Subject: [PATCH 6/6] Add protocol validation when downloading blocklist from URL Signed-off-by: DL6ER --- gravity.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gravity.sh b/gravity.sh index 522d92f5..d1664394 100755 --- a/gravity.sh +++ b/gravity.sh @@ -622,6 +622,12 @@ gravity_DownloadBlocklistFromUrl() { fi fi + # Check for allowed protocols + if [[ $url != "http"* && $url != "https"* && $url != "file"* && $url != "ftp"* && $url != "ftps"* && $url != "sftp"* ]]; then + echo -e "${OVER} ${CROSS} ${str} Invalid protocol specified, ignoring list" + download=false + fi + if [[ "${download}" == true ]]; then # shellcheck disable=SC2086 httpCode=$(curl --connect-timeout ${curl_connect_timeout} -s -L ${compression} ${cmd_ext} ${heisenbergCompensator} -w "%{http_code}" "${url}" -o "${listCurlBuffer}" 2>/dev/null)