Compare commits

..

2698 Commits

Author SHA1 Message Date
Dan Schaper
6ce527010b Initial work on stubbing for lua.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2021-06-21 10:49:46 -07:00
Adam Warner
761c1cd305 Merge pull request #4175 from ashuio/development
Added docker to README
2021-05-20 18:49:01 +01:00
Ashutosh Verma
6f60555f79 Added install Method 3
Signed-off-by: Ashutosh Verma <mail@ashu.io>
2021-05-20 22:34:19 +05:30
Adam Warner
a51be7d498 Merge pull request #4153 from MichaIng/patch-2
Re-remove wget from dependencies
2021-05-01 00:09:19 +01:00
MichaIng
f3ceebbe06 Re-remove wget from dependencies
The dependency has been removed here: https://github.com/pi-hole/pi-hole/pull/3185
But accidentally re-added here: 982c1b0059 (diff-595630a29a855f6d667a84ca0662042e826bf3ec56322ef61d4a6ef149147d23)

wget is still not used in any Pi-hole script, hence it can be removed safely from dependencies.

Signed-off-by: MichaIng <micha@dietpi.com>
2021-04-30 20:48:12 +02:00
Adam Warner
57d9b96b53 Merge pull request #4143 from pi-hole/version-fullstops
Cosmetic change to pihole -v -c output
2021-04-25 17:47:40 +01:00
Adam Warner
5895690b58 this has been annoying me for months
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2021-04-24 15:38:27 +01:00
DL6ER
d26f8dd665 Merge pull request #4135 from MichaIng/patch-1
Enable PHP8 support for Debian/Ubuntu
2021-04-21 20:19:25 +02:00
MichaIng
2ba350984f Enable PHP8 support for Debian/Ubuntu
Since PHP8.0, the JSON extension is a core PHP extension and hence the php8.0-json package does not exist and is not required:
- https://www.php.net/manual/json.installation.php
- https://packages.debian.org/php8.0-json

Solves: https://discourse.pi-hole.net/t/php-8-packages-not-found/46286

Signed-off-by: MichaIng <micha@dietpi.com>
2021-04-18 15:33:05 +02:00
Dan Schaper
1fb6366c41 Merge pull request #4123 from pi-hole/master
Master v5.3.1 to development
2021-04-14 14:30:30 -07:00
Dan Schaper
4736e03108 Merge pull request #4122 from pi-hole/release/v5.3.1
HotFix release v5.3.1
2021-04-14 14:10:21 -07:00
Dan Schaper
18bedc0493 Merge pull request #4121 from pi-hole/fix/port_hash
Fix port separator in IPv4 address validation code
2021-04-14 13:59:52 -07:00
DL6ER
74948ae5c1 The correct port separator is '#' not ':' in dnsmasq style. This should not have been changed in #4083 in the first place.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-04-14 22:53:12 +02:00
Dan Schaper
9b57f7fa33 Merge pull request #4120 from pi-hole/fix/splashPage
Add missing closing single quote
2021-04-14 13:50:45 -07:00
Dan Schaper
866045968d Add missing closing single quote
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2021-04-14 12:27:36 -07:00
Dan Schaper
f2e0cf8a92 Merge pull request #4117 from pi-hole/master
v5.8 master to dev
2021-04-14 12:24:08 -07:00
Adam Warner
4c39edbeb9 Merge pull request #4113 from pi-hole/release/v5.3
Pi-hole Core v5.3
2021-04-14 19:04:03 +01:00
Adam Warner
b388ac5bb5 Merge pull request from GHSA-3597-244c-wrpj
Add some validation to passed arguments before running the values through `sed`
2021-04-14 18:16:46 +01:00
Adam Warner
7855859726 Merge pull request #4116 from pi-hole/fix/update-readme
Update README
2021-04-14 17:57:47 +01:00
DL6ER
5df7ed2f32 Obtain FTL's PID from the PID file (#4103)
* Try to obtain FTL's PID from the PID file. If this fails, try to identify the main process using pgrep --oldest (instead of relying on pkill finding the right one by itself). This allows the script to work in even when FTL is running inside the memory checker valgrind.

* Rename FTL_PID -> FTL_PID_FILE

* Remove the pgrep fallback after discussions about that it should be more obvious to users if something strange happened to their PID file. Also, simplify the routine using a bashism in the end.

* Shorten if [[ regex ]]

* Use unset instead of emptying the PID variable

Signed-off-by: DL6ER <dl6er@dl6er.de>

Co-authored-by: Dan Schaper <dan.schaper@pi-hole.net>
2021-04-14 09:33:10 -07:00
Dan Schaper
25ded79190 Update README 2021-04-14 09:26:52 -07:00
Adam Warner
d3e00f038b Merge pull request #4004 from pi-hole/fedora_33_support
Fedora 33 Support
2021-04-13 08:41:56 +01:00
bcambl
d5f13018a7 Merge branch 'release/v5.3' into fedora_33_support
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2021-04-12 20:06:11 -06:00
Adam Warner
c6e3805bbb Merge pull request #4083 from jbzdarkid/patch-2
Improve regexes for IPv4 matching
2021-04-12 21:12:20 +01:00
Adam Warner
ea451e3c22 Merge pull request #4095 from jbaez/ft-3896
Fix error trying to access undefined variables on splash page.
2021-04-12 20:41:25 +01:00
DL6ER
b97f890a8c Merge pull request #4086 from pi-hole/fix/GRAVITDB_in_pihole-g
pihole -g should respose GRAVITYDB in pihole-FTL.conf
2021-04-11 05:18:09 +02:00
Jaime Baez
6198165df8 Fix error trying to access undefined variables on splash page.
Signed-off-by: Jaime Baez <j.baezcastillo@gmail.com>
2021-03-26 23:42:11 +01:00
jbzdarkid
8090071eff Update regex to disallow leading zeros
Also updated a comment to point to a non-experimental RFC.

Signed-off-by: jbzdarkid <jbzdarkid@gmail.com>
2021-03-21 16:27:08 -07:00
Joseph Blackman
89c80947df Improve regexes for ipv4 matching
Signed-off-by: jbzdarkid <jbzdarkid@gmail.com>
2021-03-21 16:24:35 -07:00
Adam Warner
b51751e892 Merge pull request #4084 from jbzdarkid/patch-1
Improve comments in basic-install.sh
2021-03-21 23:14:59 +00:00
Adam Warner
45d4ab4c22 Add some validation to passed arguments before running the values through sed
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2021-03-19 18:39:43 +00:00
DL6ER
f536718aaa Use possibly custom gravity.db location in the copying SQL script
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-18 16:46:59 +01:00
DL6ER
f1740da9ff Update gravity path in query.sh
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-18 09:58:19 +01:00
DL6ER
9bdbe88a66 Update gravity path in list.sh
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-18 09:58:19 +01:00
DL6ER
d25240fe9f pihole -g should respose GRAVITYDB in pihole-FTL.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-18 09:00:27 +01:00
jbzdarkid
20b6f9cceb Improve comments in basic-install.sh
Signed-off-by: jbzdarkid <jbzdarkid@gmail.com>
2021-03-17 18:37:18 -07:00
Dan Schaper
f27fd9f899 Merge pull request #3982 from andras-tim/list-fix-same-wildcard-regex
Fix list: User same wildcard regex that the UI use
2021-03-17 11:20:12 -07:00
Dany
13cf0c1288 Aligned pihole logo to center, Fixed responsive issue (#4036)
* Aligned pihole logo to center, Fixed responsive issue

* removed duplicate instance of #splashpage

Signed-off-by: Dany Gauthier <danygauthier57@yahoo.ca>
2021-03-17 11:18:50 -07:00
Adam Warner
ae762574e5 Merge pull request #4070 from pi-hole/fix/pihole-g-r
Fix `pihole -g -r`
2021-03-03 14:43:42 +00:00
DL6ER
126b9ae381 Add missing three new columns to pihole -g -r
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-02 20:08:09 +01:00
DL6ER
57fe3b6621 Merge pull request #3951 from pi-hole/new/gravity_adlist_infos
Store gravity details in gravity.db adlist table
2021-02-28 17:01:19 +01:00
Adam Warner
56fa9714b5 Merge pull request #4010 from mtzfederico/master
Updates lighttpd config to allow a persistent port change on IPv6
2021-02-28 14:42:21 +00:00
Dan Schaper
03a8ca5c1b Merge pull request #4049 from yubiuser/tewak/teleporter_cli
Add hostname to teleporter backup file if called from cli
2021-02-16 08:02:49 -08:00
Christian König
78027bd2bf Add default noname if hostname is empty
Signed-off-by: Christian König <ckoenig@posteo.de>
2021-02-12 20:25:01 +01:00
Christian König
7dc7cbb80e Add hostname to teleporter backup file if called from cli
Signed-off-by: Christian König <ckoenig@posteo.de>
2021-02-11 19:45:32 +01:00
Dan Schaper
debc9a69c5 Merge pull request #4021 from Flashbang007/patch-3
Fix issue with multipe default gateways when running the debug
2021-01-27 08:45:22 -08:00
Alexander Schmitz
1ab193fa9d Update piholeDebug.sh
Signed-off-by: Alexander Schmitz <Flashbang007@gmail.com>
2021-01-27 11:00:43 +01:00
Adam Warner
9ec012289f Merge pull request #4017 from mwoolweaver/patch-2
fix suspected typo in comment
2021-01-26 08:48:05 +00:00
Michael Woolweaver
c42b97ddb2 fix typo in comment
Signed-off-by: Michael Woolweaver <m.woolweaver@icloud.com>
2021-01-26 01:04:37 -06:00
mtzfederico
e5bfafefb9 Moved where external.conf is included
Signed-off-by: mtzfederico <fm@mtzfederico.com>
2021-01-22 15:53:40 -06:00
bcambl
b62495d89e update tests to fedora 33
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2021-01-21 20:20:07 -06:00
bcambl
c6810a0124 touch sysconfig network script when absent
sysconfig network scripts are missing on pure NetworkManager installs.
This commit touches a placeholder to allow the network configuration to
be generated and loaded via NetworkManager.

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2021-01-19 23:06:39 -06:00
Adam Warner
8e7670db41 Merge pull request #4002 from freddii/master
fixed typos
2021-01-19 18:46:55 +00:00
freddii
7c0c30fb0b fixed typos 2021-01-19 19:33:38 +01:00
Adam Warner
cbfb58f7a2 Merge pull request #4000 from pi-hole/release/v5.2.4
Pi-hole Core v5.2.4
2021-01-19 12:29:01 +00:00
Adam Warner
0c45d23c22 Merge pull request #3997 from pi-hole/revert-3537-patch-2
Revert "Further failsafe check for available APT packages"
2021-01-19 08:19:46 +00:00
Dan Schaper
3f8fedfb16 Revert "Further failsafe check for available APT packages" 2021-01-17 11:10:24 -08:00
Adam Warner
cbc3fbdfe6 Merge pull request #3989 from pi-hole/release/v5.2.3
Pi-hole Core v5.2.3
2021-01-15 19:45:55 +00:00
Dan Schaper
020b6b8064 Merge pull request #3987 from pi-hole/fix/GitHubAPI
Use the 'Location:' header only for latest FTL tag API check.
2021-01-13 09:38:09 -08:00
Dan Schaper
523f650157 Use the 'Location:' header only.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2021-01-12 13:42:51 -08:00
Andras Tim
bfee230c79 scripts/list: User same wildcard regex that the UI use
The CLI and the UI should do the same to be able to add/remove the same
records via any supported interface.

Signed-off-by: Andras Tim <andras.tim@gmail.com>
2021-01-11 17:05:17 +01:00
DL6ER
c5ed8f8bed Merge pull request #3537 from MichaIng/patch-2
Further failsafe check for available APT packages
2021-01-07 11:56:52 +01:00
Dan Schaper
66dfa5fc1e Merge pull request #3958 from pi-hole/Fix/centos_stream
Fix release check for centos stream
2021-01-06 10:59:27 -08:00
DL6ER
1791fe22f6 Merge pull request #3912 from mdujava/basic_auth
Fix validation of adlist url
2020-12-31 12:19:32 +01:00
bcambl
a5422dbdf6 fix release check for centos stream
fixes #3947 #3953

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-12-30 19:45:51 -06:00
DL6ER
a2625df5e2 Remove "The list is new" comment because it is superfluous
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-30 11:27:34 +01:00
DL6ER
7507d533ac Merge pull request #3954 from pi-hole/fix/chronometer_connection_reset
Fix connection mechanism between Chronometer and FTL
2020-12-30 11:13:05 +01:00
DL6ER
0944807491 Actually store correct number of domains for the individual lists (and not the sum of the so far collected number of domains)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-29 20:36:49 +01:00
DL6ER
a216848c1d Only update time of last list change when we see a list for the first time or when it really changed content
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-29 20:28:09 +01:00
DL6ER
e033ee6664 Fix connection mechanism between Chronometer and FTL
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-29 10:29:02 +01:00
DL6ER
8c56f54a1e Compare checksum of downloaded list against older checksums to see if the list content changed since the last download
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-29 09:54:25 +01:00
DL6ER
6b33b8b4c0 Store status of downloaded list (downloaded, using cache, some error, ...) and number of (in-)valid domains on this list in the gravity database. This updates the gravity databaes to version 14.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-28 08:08:49 +01:00
DL6ER
ae1a59285d Merge pull request #3943 from yubiuser/fix/whiptail
Change wording in whiptail for adlist selection
2020-12-25 09:05:49 +01:00
Christian König
0d710fc9e3 Change wording in whiptail for adlist selection
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-12-24 21:19:14 +01:00
Adam Warner
eb86a5e3b0 Merge pull request #3937 from yubiuser/remove_malwaredomains
Remove deprecated malwaredomains list
2020-12-24 15:24:48 +00:00
DL6ER
667e938954 Merge pull request #3942 from pi-hole/master
Sync dev with master
2020-12-24 13:33:57 +01:00
Adam Warner
41bdb741b7 Merge pull request #3941 from pi-hole/release/v5.2.2
Pi-hole Core v5.2.2
2020-12-24 11:07:36 +00:00
DL6ER
a139af8184 Merge pull request #3940 from pi-hole/fix/i386-arch
Add fallback for arch detection on i386/x86_64
2020-12-24 08:38:53 +01:00
Dan Schaper
60fa93ab47 Add fallback for arch detection on i386/x86_64
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-12-23 14:59:28 -08:00
Christian König
b4102547ac Remove deprecated malwaredomains list
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-12-21 13:11:59 +01:00
Matej Dujava
ef0bdf6470 Fix validation of adlist url
Already existing regex validation will be used on url after removing @ (in case
its in separating userinfo and host).

Signed-off-by: Matej Dujava <mdujava@kocurkovo.cz>
Fixes: https://github.com/pi-hole/pi-hole/issues/3911
Fixes: 7d19ee1b: validate blocklist URL before adding to the database (#3237)
2020-12-21 12:50:02 +01:00
Adam Warner
87cf9add8c Merge pull request #3934 from mwoolweaver/patch-1
Fix typo found by #3933
2020-12-20 15:31:02 +00:00
Michael Woolweaver
3a05ac27a2 Fix typo found by #3933
Signed-off-by: Michael Woolweaver <m.woolweaver@icloud.com>
2020-12-19 17:37:17 -06:00
MichaIng
eb5661b553 Further failsafe check for available APT packages
- "apt-cache show package" succeeds as well if package is listed as (optional) dependency or conflict by another package, hence is not a 100% reliable measure.
- There is no command which explicitly checks which package/name can be selected by apt-get for install. An install simulation/dry-run is possible as it was before Pi-hole v5.1, or the whole package cache can be scraped, which is still the less time consuming solution.
- Allow to succeed if another package "provides" it, like "php7.3-apcu" provided by "php-apcu" or "awk" provided by "mawk" and "gawk", in which case the non-virtual package is selected automatically by apt-get.

For reference: 066b89fa41

Signed-off-by: MichaIng <micha@dietpi.com>
2020-12-18 23:20:24 +01:00
DL6ER
41479524f8 Merge pull request #3900 from ganto/fix/chrono-non-lte
Fix chronometer output if web interface is not installed
2020-12-12 10:08:05 +01:00
Adam Warner
357b6702ec Update advanced/Scripts/chronometer.sh
Co-authored-by: DL6ER <DL6ER@users.noreply.github.com>
2020-12-11 12:30:52 +00:00
DL6ER
dfe64d9f51 Merge pull request #3909 from onegreydot/fix/gravity_date_updated
Adding comma to the adlist table format
2020-12-10 23:02:22 +01:00
DL6ER
78cdd34992 Merge pull request #3904 from ganto/fix/debug-non-web-2
piholeDebug: Diagnose output if (Web) git directory is not found
2020-12-10 23:00:45 +01:00
DL6ER
16fb914855 Merge pull request #3902 from ganto/fix/debug-non-web
piholeDebug: Fix warning if lighttpd/php are not installed
2020-12-10 23:00:02 +01:00
Reto Gantenbein
20faa1bd1c Update pihole-FTL man-pages (#3883)
Extend latest options and adjust ordering to Web documentation

Ensure that all configuration options currently recognized by FTL 5.3.1
are properly documented in the man page of the configuration file.

Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-10 22:58:07 +01:00
user
922f795fe6 Adding comma to the adlist table format
To account for the Date Updated column in the adlist table adding a comma to the adlist to be imported into the database. This was causing intermittent failures on updates and therefore no domains would be blocked.

Signed-off-by: user <user@fedbrew.home>

 Date:      Sun Dec 6 06:03:30 2020 -0500
 Committer: user <user@fedbrew.home>

 On branch fix/gravity_date_updated
 Your branch and 'origin/fix/gravity_date_updated' have diverged,
 and have 1 and 1 different commits each, respectively.
   (use "git pull" to merge the remote branch into yours)

 Changes to be committed:
	modified:   gravity.sh

Signed-off-by: user <user@fedbrew.home>
2020-12-06 06:08:30 -05:00
Reto Gantenbein
9dc539c98b piholeDebug: More detailed diagnostics if Web interface is not found
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-05 18:46:11 +01:00
Reto Gantenbein
18e4eb460c piholeDebug: Fix version check if lighttpd/php are not installed
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-05 14:11:53 +01:00
Reto Gantenbein
e841347057 Fix chronometer output if web interface is not installed
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-05 02:55:55 +01:00
DL6ER
6deac6dfce Merge pull request #3894 from pi-hole/master
Update development from Core v5.2.1 release
2020-12-02 23:10:43 +01:00
Adam Warner
0d8ece1be2 Merge pull request #3889 from pi-hole/release/v5.2.1
Pi-hole Core release v5.2.1
2020-12-02 21:37:42 +00:00
Adam Warner
8443262214 Merge pull request #3890 from ganto/fix/x86-64-arch
Ensure x86_64 processor architecture is listed as supported
2020-12-02 21:12:18 +00:00
Dan Schaper
6993a24224 Merge pull request #3888 from pi-hole/new/github-actions-test
Migrate from Travis to Github Actions
2020-12-02 13:06:36 -08:00
Adam Warner
d59eab9a6e Merge pull request #3893 from pi-hole/tweak/dontdelete
Exit installer if directory already exists when trying to clone one of our repos into it
2020-12-02 20:51:16 +00:00
Adam Warner
e47eb30a6e Update automated install/basic-install.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-12-02 20:49:07 +00:00
Adam Warner
641951b3a0 add some meaningful outputSigned-off-by: Adam Warner <me@adamwarner.co.uk> 2020-12-02 20:40:51 +00:00
DL6ER
db231ded91 Merge pull request #3892 from pi-hole/fix/debug_strip_comments
Fix debugger stripping content it shouldn't
2020-12-02 21:23:26 +01:00
Adam Warner
61f13a334d Don't delete an existing directory and clone our repo in its place. TODO: Something more robust
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-12-02 20:19:59 +00:00
DL6ER
36937b1913 Strip such lines starting with a #. Do not silently truncate lines if they have a # somewhere in between (like server=127.0.0.1#5353)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-02 20:52:39 +01:00
Reto Gantenbein
d0af1a950b Ensure x86_64 processor architecture is listed as supported
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-02 20:44:11 +01:00
DL6ER
a217c75134 Merge pull request #3882 from pi-hole/tweak/conditional_transforms
Fix processing of CONDITIONAL_FORWARDING_REVERSE
2020-12-01 18:46:54 +01:00
Adam Warner
454c9a411c Update advanced/Scripts/webpage.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Co-authored-by: DL6ER <DL6ER@users.noreply.github.com>
2020-12-01 17:27:36 +00:00
Adam Warner
f44b2f6aa3 Update advanced/Scripts/webpage.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Co-authored-by: DL6ER <DL6ER@users.noreply.github.com>
2020-12-01 17:27:21 +00:00
Adam Warner
d1539335bc appease stickler-ci
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-12-01 10:13:36 +00:00
Adam Warner
44d020a54c Appease codefactor.io
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-12-01 10:09:16 +00:00
Adam Warner
3e73782f0e Remove Travis CI config
Create Github Actions config
Split tox ini into one per supported distro so they can be run seperately

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-12-01 10:02:31 +00:00
Adam Warner
13cb0c1785 Merge pull request #3887 from pi-hole/fix/non-FQDN-checkbox
Fix "Never forward non-FQDNs" checkbox
2020-12-01 09:43:13 +00:00
DL6ER
49810262db When there is a Pi-hole domain set and "Never forward non-FQDNs" is ticked, we add to tell FTL that this domain is purely local and FTL may answer queries from /etc/hosts or DHCP but should never forward queries on that domain to any upstream servers
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-01 09:16:50 +01:00
Adam Warner
58bc98ca44 Update advanced/Scripts/webpage.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-30 22:30:59 +00:00
Adam Warner
4093959d3e Appease stickler
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-30 21:55:07 +00:00
Adam Warner
06c5fe2a89 Set REV_SERVER_CIDR in the else condition if it is not in-addr.arpa
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-30 21:29:54 +00:00
Adam Warner
6cb8f3f403 Add some comments
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-30 21:18:25 +00:00
Adam Warner
e004d27b28 Fix processing of CONDITIONAL_FORWARDING_REVERSE
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-30 18:58:23 +00:00
DL6ER
e432fae956 Merge pull request #3877 from yubiuser/fix/lsof
Add lsof to dependencies for non Debian OS
2020-11-30 11:39:27 +01:00
Christian König
0ecb8bf5e9 Add lsof to dependencies for non Debian OS
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-11-29 21:05:40 +01:00
DL6ER
2c689e8642 Merge pull request #3875 from pi-hole/master
Merge Pi-hole Core v5.2 tag into development
2020-11-29 17:29:06 +01:00
Adam Warner
c2fb907490 Merge pull request #3874 from pi-hole/fix/PIHOLE_DNS_truncation
Don't delete entries including and greater than `PIHOLE_DNS_10` on update/repair
2020-11-29 15:56:30 +00:00
Adam Warner
a8e97257d7 Ensure entries of PIHOLE_DNS_10 and above are not deleted when removing PIHOLE_DNS_1 and PIHOLE_DNS_2
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-29 15:08:46 +00:00
Adam Warner
fee1b8b736 Merge pull request #3867 from pi-hole/release/v5.2
Pi-hole Core v5.2
2020-11-28 19:05:01 +00:00
Adam Warner
f13e0dacde Merge pull request #3866 from pi-hole/revert-3810-patch-5
Revert "Enable DNS forwarding loop detection"
2020-11-28 17:36:44 +00:00
DL6ER
0711f4d63a Revert "Enable DNS forwarding loop detection" 2020-11-28 18:29:32 +01:00
Adam Warner
d2e9a20d96 Merge pull request #3859 from yubiuser/tweak/debug_pihole-FTL_status
Add systemctl status --full --no-pager pihole-FTL.service to the debug log
2020-11-28 16:58:23 +00:00
Adam Warner
40ae29f5bf Merge pull request #3862 from pi-hole/tweak/debugger_message
Include the raw messages from the Pi-hole diagnosis systems in debug logs
2020-11-28 16:51:03 +00:00
Dan Schaper
31909098f8 Merge pull request #3863 from yubiuser/tweak/OpenDNS_decription
Add DNSSEC info to OpenDNS description
2020-11-24 12:42:39 -08:00
Christian König
065e5cb1fe Add DNSSEC to OpenDNS description
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-11-24 21:02:53 +01:00
DL6ER
d4c33e5188 Include the raw messages from the Pi-hole diagnosis systems in debug logs
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-24 16:06:45 +01:00
Christian König
70c48afc04 Add else statement
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-11-24 06:02:18 +01:00
Christian König
ec5183b553 Rename function
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-11-24 05:57:13 +01:00
Christian König
50316ee617 Add systemctl status --full --no-pager pihole-FTL.service to the debug log
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-11-23 21:09:35 +01:00
Adam Warner
c4c8e1e5e1 Merge pull request #3854 from pi-hole/tweak/buildContainersTests
Nothing to see here. I just forgot a page.
2020-11-19 11:08:30 +00:00
Adam Warner
2a82e1fec1 Nothing to see here. I just forgot a page.
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-18 23:29:08 +00:00
Adam Warner
be7bfb2cb4 Merge pull request #3851 from pi-hole/tullo-x86/fix/quad9-missing-upstream
Include secondary upstream DNS for Quad9+Filter+ECS
2020-11-18 23:24:12 +00:00
Adam Warner
8bdcb8ff0d Merge pull request #3849 from pi-hole/tweak/testOsNames
-remove duplicate OS dockerfiles
2020-11-18 22:54:39 +00:00
Adam Warner
541b53229c Include secondary upstream DNS for Quad9+Filter+ECS
Co-authored-by: Daniel Tulleman <github@be-lumino.us>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-18 22:06:03 +00:00
Adam Warner
1c2c10c4a5 Merge pull request #3761 from BastiG/development
read REV_SERVER_CIDR from environment
2020-11-18 21:56:08 +00:00
Adam Warner
e03585e0bb Merge pull request #3810 from deHakkelaar/patch-5
Enable DNS forwarding loop detection
2020-11-18 21:54:30 +00:00
Adam Warner
03b15dae35 Merge pull request #3848 from chubchubsancho/fix/unattended_install
Fix/unattended install
2020-11-18 21:51:44 +00:00
Adam Warner
c64b96e2a8 Merge pull request #3847 from pi-hole/fix/nuke
Add some output to the --nuke command
2020-11-17 09:26:26 +00:00
Adam Warner
cd8120d33f Add some output to the --nuke command
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-16 23:31:35 +00:00
Adam Warner
809e4bdb1d Set max line length for flake8 to be an (arbitary) 120 chars
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-16 23:06:02 +00:00
Adam Warner
f7982dfbe1 -remove duplicate OS dockerfiles
+rename centos->centos_8, centos7 -> centos_7
+update centos/fedora test script

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-11-16 22:39:50 +00:00
Grégory Sanchez
e26472756f Merge branch 'development' into fix/unattended_install 2020-11-16 23:33:07 +01:00
Grégory Sanchez
6826d9f316 fix(basic-install): unattended install should finish without interaction
Fixes: https://github.com/pi-hole/pi-hole/issues/3617

Signed-off-by: Grégory Sanchez <gregory.sanchez@icloud.com>
2020-11-16 23:15:02 +01:00
Adam Warner
bd982c6f94 Merge pull request #3818 from pvogt09/feature/test_all_supported
Add test cases for all supported OS
2020-11-15 20:50:26 +00:00
Adam Warner
bd6ca0ad62 Merge pull request #3825 from yubiuser/tweak/cross
Change icon from cross to [i] for root user check
2020-11-15 20:42:05 +00:00
Adam Warner
be03f29a9e Merge pull request #3827 from hvnsweeting/development
Re-run the script as root instead of piping to bash
2020-11-15 20:39:25 +00:00
Adam Warner
354c6aab8f Merge pull request #3828 from hvnsweeting/fix-dco-link
Fix dco link
2020-11-15 20:38:02 +00:00
Adam Warner
a7c6eaca5f Merge pull request #3843 from yubiuser/tweak/debug_decscription
Be more specific about what pihole -d -a does
2020-11-15 20:15:21 +00:00
Christian König
e7d937c412 Be more specific what pihole -d -a does
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-11-15 20:31:47 +01:00
pvogt09
b375dd2c81 Update test/ubuntu_20.Dockerfile
Co-authored-by: Adam Warner <github@adamwarner.co.uk>
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-11-15 20:13:43 +01:00
Adam Warner
4abd8196ae Merge pull request #3349 from Forceflow/development
Fix for pihole -w --nuke displaying help info even if command is exec…
2020-11-08 16:10:47 +00:00
Viet Hung Nguyen
ae4e41eaaa Re-run the script as root instead of piping to bash
Signed-off-by: Viet Hung Nguyen <hvn@familug.org>
2020-10-30 23:53:31 +07:00
Viet Hung Nguyen
5d2be124a2 Replace the wiki link which now points to this file - a loop
Signed-off-by: Viet Hung Nguyen <hvn@familug.org>
2020-10-30 23:13:14 +07:00
Adam Warner
89d94ac3d1 Merge pull request #3819 from craigmayhew/landing-page-security
Fixed potential security issue with $landPage receiving variables
2020-10-30 11:44:07 +00:00
Christian König
0ae020ef82 Change icon from cross to [i]# for root user check
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-10-29 20:37:08 +01:00
Craig Mayhew
95a28ae125 unset() now also occurs for $splashPage
After some email discussion with Adam, there is a preference to also prevent $splashPage from using variables

Signed-off-by: craigmayhew <craig@mayhew.io>
2020-10-28 18:32:46 +00:00
Craig Mayhew
e5c7549f8f Fixed potential security issue with $landPage receiving variables
Signed-off-by: craigmayhew <craig@mayhew.io>
2020-10-27 14:49:46 +00:00
pvogt09
4386cc4f22 Revert "add test case for installation of dependencies for installer, core and web"
This reverts commit 60a4814ac1.

Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-27 12:44:57 +01:00
pvogt09
cb49ce38f5 fix stickler errors
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-27 12:32:23 +01:00
pvogt09
3128d14d1f update images to versions supported by pi-hole 5
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-27 12:02:57 +01:00
pvogt09
bef9cd3bc2 mock whiptail to add universe repo
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-27 11:35:49 +01:00
pvogt09
60a4814ac1 add test case for installation of dependencies for installer, core and web
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-27 11:35:48 +01:00
pvogt09
fec1595183 add docker containers for debian 9 and 10, ubuntu 16 and 18, fedora 28 and 29
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-27 11:34:27 +01:00
Adam Warner
3e79e0b1ab Merge pull request #3625 from pi-hole/new/tests
Update Test suite
2020-10-26 21:32:48 +00:00
Adam Warner
c80f0766c5 drop debian/fedora container versions to lowest supported
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-26 17:56:17 +00:00
Adam Warner
fb454ebe14 fix stickler complaints
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-23 23:09:07 +01:00
Adam Warner
ee556088b5 Fake OS details in /etc/os-release and confirm install fails
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-23 23:05:41 +01:00
bcambl
660c17814d E128 continuation line under-indented for visual indent
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-10-23 22:20:37 +01:00
bcambl
a7c58e7112 E302 expected 2 blank lines, found 1
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-10-23 22:20:36 +01:00
bcambl
05b6717187 test PHP optin/optout separately for CentOS 7 & 8
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-10-23 22:20:36 +01:00
bcambl
2c461460db test with both centos7 and centos8 images
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-10-23 22:20:36 +01:00
Adam Warner
5aab68ab41 Update test/test_automated_install.py
Co-authored-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-10-23 22:20:36 +01:00
Adam Warner
5648ad6b61 [Experiment] up python to 3.7
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-23 22:20:36 +01:00
Adam Warner
c9edcfa335 add test to check "os_check" works
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-23 22:18:42 +01:00
Adam Warner
33e5735053 Change base images for test containers to latest supported version
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-23 22:18:42 +01:00
deHakkelaar
ad39ba30bd Enable DNS forwarding loop detection
Found below by accident:
```
pi@ph5:~ $ man dnsmasq
[..]
       --dns-loop-detect
              Enable code to detect DNS forwarding loops; ie the  situa‐
              tion  where  a  query  sent  to one of the upstream server
              eventually returns as a new query to the dnsmasq instance.
              The  process  works  by generating TXT queries of the form
              <hex>.test and sending them to each upstream  server.  The
              hex is a UID which encodes the instance of dnsmasq sending
              the query and the upstream server to which it was sent. If
              the  query  returns  to the server which sent it, then the
              upstream server through which it was sent is disabled  and
              this  event  is  logged.  Each  time  the  set of upstream
              servers changes, the test is re-run on all  of  them,  in‐
              cluding ones which were previously disabled.
```
Seems to work just fine if I point my router 10.0.0.1 back to Pi-hole in the WAN DNS settings:
```
pi@ph5:~ $ grep server= -R /etc/dnsmasq.*
/etc/dnsmasq.d/01-pihole.conf:server=9.9.9.10
/etc/dnsmasq.d/01-pihole.conf:server=149.112.112.10
/etc/dnsmasq.d/01-pihole.conf:server=10.0.0.1
/etc/dnsmasq.d/01-pihole.conf:rev-server=10.0.0.0/24,10.0.0.2
/etc/dnsmasq.d/01-pihole.conf:server=/dehakkelaar.nl/10.0.0.2
/etc/dnsmasq.d/01-pihole.conf:server=/use-application-dns.net/
```
```
pi@ph5:~ $ sudo tee /etc/dnsmasq.d/99-my-settings.conf <<< $'dns-loop-detect'
dns-loop-detect
```
```
pi@ph5:~ $ pihole restartdns
  [✓] Restarting DNS server
```
```
pi@ph5:~ $ tail -F /var/log/pihole.log
[..]
Oct 22 18:17:41 dnsmasq[17301]: using nameserver 10.0.0.2#53 for domain dehakkelaar.nl
Oct 22 18:17:41 dnsmasq[17301]: using nameserver 10.0.0.2#53 for domain 0.0.10.in-addr.arpa
Oct 22 18:17:41 dnsmasq[17301]: NOT using nameserver 10.0.0.1#53 - query loop detected
Oct 22 18:17:41 dnsmasq[17301]: using nameserver 149.112.112.10#53
Oct 22 18:17:41 dnsmasq[17301]: using nameserver 9.9.9.10#53
```
2020-10-22 18:54:04 +02:00
DL6ER
50100017a5 Merge pull request #3794 from pi-hole/security/non_FQDNs_locality
Security enhancement for the "never forward non-FQDNs" feature
2020-10-21 21:09:05 +02:00
Adam Warner
de02bcc8a0 Merge pull request #3787 from pi-hole/verdantfire
fixed small grammatical error
2020-10-19 10:53:41 +01:00
DL6ER
83f2e2d85a Merge pull request #3801 from pi-hole/new/armv4_armv5_armv8
Add native ARMv4T, ARMv5TE and ARMv8-A support
2020-10-18 19:53:56 +02:00
DL6ER
01c9bbd3ca Improve processor detection to use the new dedicated ARMv4T, ARMv5TE and ARMv8-A binaries we provide for FTL.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-10-14 20:31:22 +02:00
DL6ER
e93d7ad8ff Merge pull request #3803 from pi-hole/privacylevel
Remove references to privacy level 4 (no longer functional)
2020-10-14 14:05:20 +09:00
Adam Warner
59b0a6af6f Remove references to privacy level 4 (no longer functional)
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-13 23:53:23 +01:00
Dan Schaper
326168509c Merge pull request #3798 from bcambl/debug_firewalld
add FirewallD configuration checks to debug script
2020-10-12 12:37:20 -07:00
bcambl
47aa1644a8 add debug checking for firewalld
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-10-11 22:20:31 -06:00
DL6ER
08a84e51d6 Only add local=/<domain>/ when the "only forward FQDN queries" function is enabled to prevent unintended side-effects of this change
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-10-10 11:23:55 +02:00
DL6ER
d631cd8b04 Security enhancement for the "never forward non-FQDNs" feature. This should prevent all local queries from being forwarded (will show up as blocked by regex) as well as any hostname without a domain (for example one word searches from the address bar in browsers). This fixes #3303
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-10-10 11:01:01 +02:00
Adam Warner
0445559610 Accidentally a number (#3788)
Co-authored-by: MichaIng <micha@dietpi.com>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Co-authored-by: MichaIng <micha@dietpi.com>
2020-10-09 17:24:42 +02:00
MichaIng
615b19c3d6 web server question enhancements (#3225)
+ Do not ask to install the web server, if the web interface has been deselected before.
+ Add additional info, that PHP modules need to be installed manually, when web server is deselected and the web server user needs to be member of the "pihole" group.
+ Consequently use webroot variable instead of /var/www/html

Signed-off-by: MichaIng <micha@dietpi.com>
2020-10-09 16:12:21 +02:00
Adam Warner
948337dd8e Merge pull request #3740 from pi-hole/new/adlist_date_updated
Add date_updated field to adlist table
2020-10-09 14:04:13 +01:00
Adam Warner
fe463f15b3 Merge pull request #3741 from pi-hole/new/debug_scan_dhcp
Discover active DHCP servers during debugger run
2020-10-09 14:00:57 +01:00
Adam Warner
716e981a79 Merge pull request #3776 from yubiuser/tweak/Debug
Print tail of logs in /var/log/lighttpd in debug run as well
2020-10-09 13:50:46 +01:00
verdantfire
b88efd2527 fixed small grammatical error
Co-authored-by: Himanshu Ruhela <himanshuruhela013@gmail.com>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-10-09 13:46:25 +01:00
Christian König
568ebd67ca Update comment
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-10-03 16:17:37 +02:00
Christian König
c628c970ae Print tail of logs in /var/log/lighttpd in debug run as well
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-10-02 21:04:27 +02:00
Adam Warner
fa0815fb1d Merge pull request #3763 from yubiuser/cleanup
Remove traces of previous default adlists
2020-09-28 08:53:08 +01:00
Christian König
e9796d5671 Remove traces of previous default adlists
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-09-28 06:15:46 +02:00
Sebastian Gmeiner
8041bbf443 read REV_SERVER_CIDR from environment
Signed-off-by: Sebastian Gmeiner <sebastian@gmeiners.net>
2020-09-25 15:26:43 +02:00
Adam Warner
d6c4f0696f Merge pull request #3698 from yubiuser/remove/FreeSpaceCheck
Remove check for free disk space and associated variables
2020-09-21 08:47:41 +01:00
DirkJanIT
b88510d89a Add CACHE_SIZE to setupVars (#3170)
* Update 01-pihole.conf

Signed-off-by: DoubleOhmSeven <57564379+DoubleOhmSeven@users.noreply.github.com>

* Update basic-install.sh

Signed-off-by: DoubleOhmSeven <57564379+DoubleOhmSeven@users.noreply.github.com>

Co-authored-by: DoubleOhmSeven <57564379+DoubleOhmSeven@users.noreply.github.com>
2020-09-17 23:13:40 +02:00
Blayne Campbell
4d98e156b6 Merge pull request #3607 from cgzones/selinux
basic-install: document how to continue after SELinux check
2020-09-16 23:54:05 -06:00
DL6ER
5db45aed8b Merge pull request #3178 from jlagermann/wormhole
added instructions for forking and rebase
2020-09-08 22:58:43 +02:00
Dan Schaper
b865fa7c0a Merge pull request #3739 from pi-hole/tweak/remove_gravity_optimization
Remove extra gravity optimization flag
2020-09-07 14:23:54 -07:00
DL6ER
41e899260f Discover active DHCP servers during debugger run
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-07 23:17:50 +02:00
DL6ER
12b9748c43 Fine-tune adlist:adte_modified trigger and don't default new date_updated column to now but use NULL instead
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-07 21:11:57 +02:00
DL6ER
4fd412d7c3 Add date_updated field in adlist table set when a list changes.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-07 20:59:23 +02:00
DL6ER
aa7c3b6852 Remove gravity optimization. Further investigations have shown that it is useless because the standard gravity run already produces an optimal database.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-07 20:50:11 +02:00
Adam Warner
17ed5398e6 Merge pull request #3737 from michi-zuri/patch-2
Update index.php
2020-09-06 13:00:01 +01:00
Michael Paul Killian
5eabf4255b Sign-off for DCO
Signed-off-by: Michael Paul Killian <spammyreset-github@gmail.com>
2020-09-06 13:53:03 +02:00
Michael Paul Killian
538827397c Update index.php
See #3736
2020-09-06 11:51:33 +02:00
DL6ER
b81cbaa088 Merge pull request #3702 from pi-hole/tweak/os_check_output
Display more meaningful exit message if `dig` command fails during os_check
2020-08-23 16:08:56 +02:00
Adam Warner
e02cf6fac5 further tweaks, plus a spelling mistake correction
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-08-23 14:50:04 +01:00
Adam Warner
b8cd238fa1 Update advanced/Scripts/piholeDebug.sh
Co-authored-by: DL6ER <DL6ER@users.noreply.github.com>
2020-08-23 14:35:02 +01:00
Adam Warner
8e219cb799 Make output more meaningful in case of dig failure.
Include dig return code and response in debug run

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-08-23 10:48:15 +01:00
Christian König
65786ba5d6 Remove check for free disk space and associated variables
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-08-18 20:16:35 +02:00
Adam Warner
42f55f5202 Merge pull request #3688 from pi-hole/tweak/os-check
Tweaks to os_check() Redux
2020-08-17 17:31:58 +01:00
Adam Warner
725f02f442 Merge pull request #3673 from yubiuser/fix/double_check_adlist_not_selected
Revert "fix #3336 by creating adlist file even if no list was selecte…
2020-08-17 17:30:31 +01:00
Dan Schaper
ebdb68a47a display_warning fixes
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-08-15 10:54:31 -07:00
Dan Schaper
623ce1fe18 Tabs and debug.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-08-14 14:37:58 -07:00
Dan Schaper
57e65dd5c0 Use fewer subshells and descriptive variables.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-08-14 11:42:54 -07:00
Adam Warner
bb1a6243d6 Merge pull request #3669 from pi-hole/release/v5.1.2
Release/v5.1.2 to development
2020-08-14 16:28:53 +01:00
Dan Schaper
ad9b981e8b Merge pull request #3678 from yubiuser/fix/brokenVideoLink
Removes broken youtube link
2020-08-11 15:06:49 -07:00
Christian König
5b1eaa7e38 Removes broken youtube link
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-08-11 22:35:33 +02:00
Christian König
5c72ff75d9 Revert "fix #3336 by creating adlist file even if no list was selected by user"
This reverts commit 3c6ea2612d.

Signed-off-by: Christian König <ckoenig@posteo.de>
2020-08-10 23:52:53 +02:00
Dan Schaper
cd4072fbf8 Merge pull request #3665 from scboucher/fix_Pi-hole_temp_unit_default_value
Change default value of temp_unit to 'C'
2020-08-09 17:10:11 -07:00
Adam Warner
6b536b7428 Merge pull request #3564 from pi-hole/release/v5.1.2
Pi-hole Core v5.1.2
2020-08-09 22:22:16 +01:00
Samuel Boucher
d4dd446ba3 Update advanced/Scripts/chronometer.sh
Co-authored-by: Dan Schaper <dan.schaper@pi-hole.net>
Signed-off-by: Samuel Boucher <scboucher@users.noreply.github.com>
2020-08-09 17:12:20 -04:00
Samuel Boucher
8b4921405a Upercase the temp_unit
Signed-off-by: Samuel Boucher <scboucher@users.noreply.github.com>
2020-08-09 15:09:49 -04:00
DL6ER
492a0317b0 Merge pull request #3654 from pi-hole/fix/ipv6_localhost_validator
Allow IPv6 loopback address to be added
2020-08-04 22:21:35 +02:00
DL6ER
b5983a3fc1 Do not require first element to be a hex value at any costs. It may also be a : in the valid address ::1
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-04 22:11:32 +02:00
Adam Warner
4bef49e2eb Merge pull request #3646 from yubiuser/tweak/compression
Check for compression only once and print result
2020-08-03 22:20:37 +01:00
Christian König
27399a762a Check for compression onyl once and print result
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-08-03 22:46:14 +02:00
DL6ER
83ecaa0fc9 Merge pull request #3636 from pi-hole/meta/remove_templates
Remove respository templates.
2020-08-03 20:44:51 +02:00
DL6ER
79ff21a2fe Merge pull request #3641 from pi-hole/new/compressed_curl
Use compression (if available) when downloading the ad lists.
2020-08-02 19:21:16 +02:00
DL6ER
87da9084e6 Use compression (if available) when downloading the ad lists.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-02 16:21:58 +01:00
Dan Schaper
72df833b8e Merge pull request #3639 from nfriend/nfriend-fix-about-pi-hole-link
Update "About Pi-hole" link on "Website Blocked" page
2020-08-01 18:26:24 -07:00
Nathan Friend
5a48478196 Update "About Pi-hole" link
Signed-off-by: Nathan Friend <nathan@gitlab.com>
2020-08-01 20:00:49 -05:00
Dan Schaper
8fa9096508 Remove respository templates.
Use org templates instead.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-08-01 01:34:38 -07:00
DL6ER
319b8eef75 Merge pull request #3527 from MichaIng/patch-1
Add default locations to PATH to assure that all basic commands are available
2020-07-31 18:14:45 +02:00
Aiden Mitchell
7c53b97004 Updating FAQ_HARDWARE_REQUIREMENTS and FAQ_HARDWARE_REQUIREMENTS_PORTS (#3632)
Signed-off-by: Aiden Mitchell <aiden@bcyouthcouncil.ca>

Co-authored-by: Adam Warner <me@adamwarner.co.uk>
2020-07-30 12:57:19 -07:00
Dan Schaper
18fc45c006 Merge pull request #3634 from pi-hole/new/move_travis
.travis.yml is now a stub.
2020-07-30 11:46:37 -07:00
Dan Schaper
fa574cfd08 Set non-master to point to latest.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-07-30 10:05:27 -07:00
Dan Schaper
932cdd3329 Use the .github repository.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-07-30 09:38:50 -07:00
Dan Schaper
dc2781d1f9 .travis.yml is now a stub.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-07-30 09:26:04 -07:00
Adam Warner
48820d181c Merge pull request #3620 from yubiuser/tweak/dig_supportedOS
Report and exit if dig supportedOS returns nothing
2020-07-30 17:00:01 +01:00
Christian Göttsche
51daeaa6ab basic-install: document how to continue after SELinux check
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
2020-07-30 14:50:42 +02:00
Dan Schaper
514dc013df Merge pull request #3597 from yubiuser/tweak/OS_detection
Adds OS and version to output if unsupported OS is detected
2020-07-28 07:42:41 -07:00
Dan Schaper
548ad6375d Merge pull request #3524 from pi-hole/fix/status_checking
Fix pihole status to not rely on a TCP port test
2020-07-28 07:24:34 -07:00
Christian König
6fc7dc28a2 Count elements of array instead
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-28 10:25:57 +02:00
Christian König
b207ceeab2 Report and exit if dig supportedOS returns nothing
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-28 09:51:31 +02:00
Christian König
8380112129 Resolve conflicts
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-28 09:40:45 +02:00
Dan Schaper
dffb58ae8f Merge pull request #3596 from pi-hole/tweak/wherecheck
Wrap entire function in the check for the ENVVAR, add `ns1.pi-hole.net` to `dig` check.
2020-07-27 10:01:14 -07:00
Adam Warner
0ff32c3629 Use ns1.pi-hole.net to resolve versions.pi-hole.net so that we do not see DNS cookie issues
Co-Authored-by: Dan Schaper <dan.schaper@pi-hole.net>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-27 17:44:22 +01:00
Dan Schaper
dfd331c5b7 Merge pull request #3608 from yubiuser/fix/customDNSfile
Create custom.list during install/update if it doesn't exist
2020-07-26 12:51:19 -07:00
Dan Schaper
0a81d687e8 Update automated install/basic-install.sh 2020-07-26 12:31:11 -07:00
Christian König
dfcdfd4b0a Remove empty line
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-26 12:27:55 +02:00
Christian König
ec9f490fcc Remove separate install function, move to installConfigs(), use pihole syntax
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-24 20:32:32 +02:00
Christian König
331502e14c Add variable that got lost
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-23 20:52:21 +02:00
Christian König
18c24d985f Create custom.list during install/update if it doesn't exist
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-23 20:43:12 +02:00
Adam Warner
ddb36c013d it helps if the echo goes variable set goes in the right place
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-22 22:39:03 +01:00
Adam Warner
98dc51869e accidentally missed \\n
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-22 22:30:51 +01:00
Adam Warner
510b646736 change up the verbiage with something that works (tested)
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-22 22:29:38 +01:00
James Lagermann
da6b78f4c5 Merge branch 'development' into wormhole
changed console to bash
clone to fork

Signed-off-by: James Lagermann <james.lagermann@corelight.com>

Update CONTRIBUTING.md

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-07-22 11:32:10 -05:00
DL6ER
61616b8c86 Merge pull request #3599 from pi-hole/fix/gravity_cronjob
Fix for gravity cronjob
2020-07-21 23:11:29 +02:00
James Lagermann
be14000778 added blanks-around-fences to correct lint errors
Signed-off-by: James Lagermann <james.lagermann@corelight.com>
2020-07-21 15:41:50 -05:00
James Lagermann
93c1a62998 Update CONTRIBUTING.md
Co-authored-by: jrschat <54955683+jrschat@users.noreply.github.com>
signed-off-by: James Lagermann <james.lagermann@corelight.com>
2020-07-21 15:41:14 -05:00
DL6ER
527fc3c5cf Also pidof -> pgrep in gravity.sh
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-21 22:03:54 +02:00
DL6ER
8f7f0881c6 Add /usr/sbin to cronjob PATH
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-21 21:21:24 +02:00
DL6ER
17aabf26f7 Also use pkill/pgrep in the FTL service script
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-21 21:21:17 +02:00
DL6ER
6ee6eea1fb Use pkill instead of the somewhat fragile combination of kill + pidof. This solves some issues especially when there are many TCP workers floating around.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-21 21:13:40 +02:00
Adam Warner
ea22774d16 Wrap entire function in the check for the ENVVAR
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-21 18:47:13 +01:00
James Lagermann
5c9fbd7d1f Merge pull request #3 from pi-hole/development
Development
2020-07-20 16:50:17 -05:00
Dan Schaper
b0ea043b6a Merge pull request #3581 from jokajak/patch-1
chore(README.md): Grammar fix
2020-07-20 13:06:29 -07:00
Josh
27366fe9f0 chore(README.md): Grammar fix
Fix small grammar issue in README.md

Signed-off-by: Jokajak <jokajak@gmail.com>
2020-07-20 15:50:27 -04:00
MichaIng
25b873cf7b Add default locations to PATH to assure that all basic commands are available
Signed-off-by: MichaIng <micha@dietpi.com>
2020-07-18 17:30:27 +02:00
Adam Warner
643d2c0f3e add missing port number validation section to valid_ip6
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-16 21:31:45 +01:00
Adam Warner
533e5dddd0 clarify examples in case of unsupported OS
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-16 18:33:53 +01:00
Adam Warner
60f0ab51c9 Merge pull request #3555 from pi-hole/release/v5.1.1
Release/v5.1.1 -> development
2020-07-16 18:29:00 +01:00
Adam Warner
56cd7c4d59 Merge pull request #3549 from pi-hole/release/v5.1.1
Pi-hole core v5.1.1
2020-07-15 23:56:47 +01:00
Adam Warner
f50cff54de *innocent whistling*
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-15 23:49:17 +01:00
Adam Warner
acfb092e4b fix minor bug in 5.1
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-15 23:38:08 +01:00
Adam Warner
e9b039139c Merge pull request #3531 from pi-hole/release/v5.1
Pi-hole Core v5.1
2020-07-15 22:35:12 +01:00
Dan Schaper
e4b2d29552 Merge pull request #3548 from pi-hole/tweak/supportedos.txt
add one
2020-07-15 14:14:32 -07:00
Adam Warner
b4ca13b3ad add one
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-15 22:03:07 +01:00
Adam Warner
b9b7d5f8eb Merge pull request #3547 from pi-hole/fix/debug20.04
fallback to NC if curl fails on uploadgit checkout
2020-07-15 22:01:36 +01:00
Adam Warner
849139176e fallback to NC if curl fails on uploadgit checkout
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-15 21:54:45 +01:00
Adam Warner
ae0d1de188 Merge pull request #3545 from pi-hole/tweak/debugoutput
Add additional information about local debug log location
2020-07-15 21:25:59 +01:00
Adam Warner
b8bba7951f Just one more newline, give it to me.
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-15 20:49:18 +01:00
Adam Warner
76ce5ec66b Add additional information about local debug log location
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-07-15 20:45:02 +01:00
Adam Warner
7b41b99549 Merge pull request #2887 from tlk/fix/reenable
Prevent "pihole disable $timeout" from messing up future state changes
2020-07-15 20:23:33 +01:00
DL6ER
0cc999ea1f Merge pull request #3543 from pi-hole/tweak/readme
Update README.md
2020-07-14 05:36:12 +02:00
Dan Schaper
a99eac9d10 Update README.md
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-07-13 14:29:45 -07:00
DL6ER
e76f0119b4 Merge pull request #3534 from yubiuser/tweak/saveLocation
Use gravity's adlist_id in filename when saving downloaded adlist locally
2020-07-06 15:13:05 +02:00
Adam Warner
a3ae47023f Merge pull request #3533 from pi-hole/release/v5.1
Release/v5.1
2020-07-05 13:38:54 +01:00
Adam Warner
6ff0926f4a Merge pull request #3532 from pi-hole/XhmikosR-patch-1
Fix minor typo
2020-07-05 13:36:41 +01:00
Christian König
73963fecda Use gravity's adlist_id in filename when saving downloaded adlist locally
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-07-05 14:32:33 +02:00
XhmikosR
d8822b70cf Fix minor typo
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-07-05 15:12:02 +03:00
Adam Warner
f50d59fe94 Merge pull request #3425 from XhmikosR/lighttpd
Tweak lighttpd configs
2020-07-02 10:53:56 +01:00
XhmikosR
cf1c1e2e7e Tweak lighttpd configs
* Compress more types
* Add charset=utf-8 in more text types
* Use proper media types
* Add default expire header
* Use consistent indentation

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-07-02 12:28:26 +03:00
Adam Warner
f5a5f68a1a Merge pull request #3403 from XhmikosR/XhmikosR-patch-1
Fix/tweak blocking page
2020-07-02 10:27:16 +01:00
DL6ER
94cd7f59d4 Make verbose output the default.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-01 18:49:31 +02:00
DL6ER
6009e86947 Fix pihole status to not rely on a TCP port test. The current test can fail even when there is no error i case the max. number of TCP workers is reached.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-01 18:39:28 +02:00
Dan Schaper
56e0549c7a Merge pull request #3420 from XhmikosR/XhmikosR-patch-4
Markdown tweaks
2020-06-30 13:20:29 -07:00
Adam Warner
49f099e382 Merge pull request #3510 from pi-hole/fix/ip_validation_setdns
Also validate IPV6 in the `setdns` function
2020-06-25 17:58:55 +01:00
Adam Warner
3205606fc3 Also validate IPV6 in the setdns function
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-23 20:38:18 +01:00
Dan Schaper
3aaf9d89b3 Merge pull request #3260 from pi-hole/new/rev-server
Improve conditional forwarding
2020-06-21 13:26:07 -07:00
DL6ER
2c3aa9ab00 Merge pull request #3491 from pi-hole/fix_ip_address_section
Fix fresh install on dev branch not working
2020-06-21 21:58:36 +02:00
DL6ER
bf392d7a60 Merge pull request #3489 from pi-hole/ip_validation
Improve IP validation function
2020-06-21 21:56:30 +02:00
DL6ER
9bf0f2a161 Reduce handholding when trying to foresee the intentions of the user. The code does now preserve legacy behavior and users can open up the subnet manually if they like.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-21 21:47:30 +02:00
Adam Warner
bbfbf67fcf further simplify the function, per @dl6er's suggestion
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-15 22:52:24 +01:00
Adam Warner
fe30ce10d3 simpler regex suggested by @MichaIng
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-15 21:21:40 +01:00
Dan Schaper
3136d239df Merge pull request #3492 from pi-hole/fix/man-restartdns
Improve man pihole restartdns section
2020-06-15 10:05:05 -07:00
DL6ER
c9350fa76d Improve man pihole restartdns section.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-14 21:59:20 +02:00
Adam Warner
b96ce13085 Merge pull request #3490 from pi-hole/fix_os_check
Fix new os_check
2020-06-14 00:24:33 +01:00
Adam Warner
7ea6d7b92b remove ; so IFS changes don't stick
Co-authored-by: Dan Schaper <dan.schaper@pi-hole.net>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-14 00:17:51 +01:00
Adam Warner
011fa8c6ea fix sticklr complaint
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-13 21:47:00 +01:00
Adam Warner
1ebf0785b6 move dnsutils/bind-utils to installed deps and only check OS is supported after installing installer deps
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-13 21:33:03 +01:00
Adam Warner
0320d85028 Additionally source the install script in webpage.sh to validate IP entered on pihole -a setdns
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-13 20:57:57 +01:00
Adam Warner
95f4c632f7 expand valid_ip to allow for custom ports
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-13 20:30:03 +01:00
Dan Schaper
4b59287683 Merge pull request #3441 from pi-hole/new/os_check
Display warning if unsupported OS is detected
2020-06-05 13:39:39 -07:00
Dan Schaper
5f9dac8d2b Merge pull request #3434 from pi-hole/new/os_detect
Change OS Detection in debug script
2020-06-05 13:38:50 -07:00
Adam Warner
9844a3288f Same change as 03a8cff
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-05 21:06:25 +01:00
Adam Warner
03a8cff55e read > mapfile as suggested by @dschaper
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-05 21:01:53 +01:00
Dan Schaper
c9dd3ee2e9 Merge pull request #3470 from pi-hole/fix/escape_where_should_be_none
Replace possible "\#" by "#" to fix AdminLTE#1427
2020-06-05 12:25:53 -07:00
XhmikosR
52cb389d94 Markdown tweaks
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-06-04 16:19:21 +03:00
DL6ER
2b1bc6a46e Replace possible "\#" by "#". This fixes AdminLTE#1427
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-04 09:32:40 +02:00
DL6ER
6160eb6894 This regex is too complex for bash's own replacement. Add ignore for the shellcheck rule.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-04 09:22:40 +02:00
DL6ER
318ca75269 Merge branch 'development' into new/rev-server 2020-06-04 08:56:08 +02:00
Adam Warner
13a49b0753 Merge pull request #3466 from pi-hole/tweak/improve_unique_domains
Allow certain domain duplicates
2020-06-03 21:41:20 +01:00
Adam Warner
58724a38a9 Improve detection and display of supported/unsupported OS in debug script
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-06-03 17:57:22 +01:00
Adam Warner
8fef35be0f Update README.md
remove dead link to gitter
2020-06-03 16:11:09 +01:00
DL6ER
202ba055ea Change UNIQUEness constraint from (domain) to (domain, type) in the domainlist table. This will allow duplicates which can be associated to different groups.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-02 10:49:35 +02:00
Adam Warner
5488fb0caf Merge pull request #3463 from jesterchen/patch-1
Patch 1
2020-06-01 11:29:17 +01:00
jesterchen
0a47140239 Merge branch 'patch-1' of github.com:jesterchen/pi-hole into patch-1 2020-06-01 12:06:38 +02:00
jesterchen
7248d1a504 Ensure that adlistFile is created before chmodding
If an user installs Pi-hole without selecting any adlists, the installer emits a warning and exits. By touching the file this is prevented.

Signed-off-by: jesterchen <github@jesterweb.de>
2020-06-01 12:06:02 +02:00
jesterchen
7934a9bcb4 Ensure that adlistFile is created before chmodding
If an user installs Pi-hole without selecting any adlists, the installer emits a warning and exits. By touching the file this is prevented.
2020-06-01 12:00:29 +02:00
XhmikosR
d90313fe4d Fix/tweak blocking page
* fix favicon
* add meta charset
* add html lang
* add a page title
* remove unneeded html end tags
* fix viewport tag to allow zooming
* compress the "blocked by Pi-hole" SVG
* remove trailing spaces
* switch to double colon pseudo elements (works from IE9 and newer)
* add missing vendor prefixes
* other minor tweaks
* add `Access-Control-Allow-Origin` header to all font types

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-05-31 15:54:11 +03:00
Dan Schaper
c73001f392 Merge pull request #3412 from XhmikosR/links
Update links
2020-05-30 12:45:15 -07:00
XhmikosR
7579ab178a Update links
* use https when possible
* replace coverage with a link to the docs page in README.md
* remove obsolete affiliate link in README.md

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-05-30 21:50:16 +03:00
Thomas L. Kjeldsen
903808a477 Improved explanation of why this script is needed
Signed-off-by: Thomas L. Kjeldsen <tlk@closureconsulting.com>
2020-05-30 03:14:03 +02:00
Thomas L. Kjeldsen
005da06b3d Use PI_HOLE_BIN_DIR as introduced in PR #2886
Signed-off-by: Thomas L. Kjeldsen <tlk@closureconsulting.com>
2020-05-30 03:13:51 +02:00
Thomas L. Kjeldsen
852f6b95f5 Prevent "pihole disable $timeout" from messing up future state changes
Signed-off-by: Thomas L. Kjeldsen <tlk@closureconsulting.com>
2020-05-30 02:58:27 +02:00
DL6ER
5dc7ec0fa0 Merge pull request #3455 from pi-hole/tweak/FTL_niceness
Add CAP_SYS_NICE to FTL's capabilities
2020-05-28 22:00:49 +02:00
DL6ER
de8976da7a Add CAP_SYS_NICE to FTL's capabilities so it can control its own niceness.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-28 21:18:31 +02:00
Adam Warner
e43450f56e Merge pull request #3451 from pi-hole/its-getting-awful-quiet-in-here
Remove deprecated Disconnect lists from "defaults"
2020-05-27 08:46:32 +01:00
Adam Warner
4f7bb7b811 Remove deprecated Disconnect lists from "defaults"
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-26 21:23:44 +01:00
Adam Warner
01ab82b869 Merge pull request #3446 from pgl/development
Updated gravity.sh to allow semicolons in URLs
2020-05-26 15:26:28 +01:00
Peter Lowe
dd205c55c1 Updated gravity.sh to allow semicolons
Signed-off-by: Peter Lowe <pgl@yoyo.org>
2020-05-26 15:53:10 +02:00
DL6ER
b60ec8a48f Merge pull request #3248 from MichaIng/patch-8
Start pihole-FTL after network
2020-05-25 21:27:27 +02:00
Adam Warner
acf2879057 Address sticklr complaints
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-25 17:49:19 +01:00
DL6ER
27f0fd2372 Merge pull request #3415 from fhriley/reload_privacy
Reload the lists, which will cause the cached privacy level to be upd…
2020-05-25 18:47:44 +02:00
Adam Warner
af1129fc28 Add a check at the top of the script to determine if the script is being run on a supported OS
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-25 17:40:20 +01:00
Adam Warner
ee172cd6e9 Merge pull request #3423 from pi-hole/debug-extras
Debug extras
2020-05-22 07:53:06 +01:00
Adam Warner
d0e250a616 Ensure pihole-FTL.conf is parsed, as well as external.conf for lighttpd, to rule out any custom modifications.
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-21 22:25:00 +01:00
Adam Warner
b2ba55c27b Show details of any remotes on the git repositories
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-21 21:23:26 +01:00
Dan Schaper
3f83c314b6 Merge pull request #3419 from XhmikosR/XhmikosR-patch-3
Remove csslint from Strickler CI
2020-05-21 10:11:53 -07:00
XhmikosR
5094fab491 Remove csslint from Strickler CI
There's only one CSS file and the page where it's used has become obsolete.

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2020-05-21 17:44:32 +03:00
Frank Riley
9d04c517e6 Reload the lists, which will cause the cached privacy level to be updated.
Signed-off-by: Frank Riley <fhriley@gmail.com>
2020-05-20 15:47:53 -07:00
DL6ER
b421e422c2 Merge pull request #3351 from marank/development
Added support for CNAME record add/remove
2020-05-20 09:13:54 +02:00
Adam Warner
60afebfd03 Merge pull request #3406 from pi-hole/tweak/words
Use `toggle` instead of `select`
2020-05-19 07:46:40 +01:00
Adam Warner
414ab53d9a Use toggle instead of select to remove any hint of a doubt that the option already selected by default can be deselected
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-18 22:29:36 +01:00
MichaIng
5c17e41cf1 Start pihole-FTL after network
"$network" on a systemd-driven OS leads to "After=network-online.target" in the generated systemd unit.
This target is no guarantee that all network interfaces have been fully configured, as it depends on the related network services types, but at least it reduces the risk that those have not fully finished their job when pihole-FTL starts. If this is the case, certain issues can occur:
- https://github.com/pi-hole/pi-hole/issues/2924
- https://discourse.pi-hole.net/t/have-to-pihole-restartdns-after-reboot/28772

Runtime files are now consistently created in "/run" instead of "/var/run". The second is a symlink to the first for backwards compatibility but on none-ancient distro versions one should use "/run", systemd even prints a warnings if service files use "/var/run". The service file used "/run" and "/var/run" both, in cases for the same files/directories before, which does not directly cause issues currently, due to the symlink, but is inconsistent at best.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-05-16 13:38:18 +02:00
Adam Warner
5ce8791693 Merge pull request #3388 from pvogt09/fix/no_adlist_selected
fix #3336 by creating adlist file even if no list was selected by user
2020-05-15 23:22:35 +01:00
pvogt09
3c6ea2612d fix #3336 by creating adlist file even if no list was selected by user
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-05-15 17:52:57 +02:00
Dan Schaper
10addc5923 Merge pull request #3218 from JulienOrain/patch-1
fix typo
2020-05-14 09:48:59 -07:00
Dan Schaper
9ee37cb503 Merge pull request #3369 from a-p-o/remove-shop-link
Remove store/shop link from README
2020-05-14 09:46:21 -07:00
Alex Ordonez
e1b1512183 Remove store/shop link from README
According to @dschaper, the store is no longer open:
https://www.reddit.com/r/pihole/comments/cmywyi/pi_hole_store/ew5m33s/

Signed-off-by: Alex Ordonez <me@ordonezalex.com>
2020-05-13 19:24:54 -07:00
Dan Schaper
c76435883b Merge pull request #3360 from dnicolson/fix-github-capitalisation
Fix GitHub capitalisation
2020-05-13 16:56:36 -07:00
Dan Schaper
2ede032de5 Merge pull request #3359 from dnicolson/patch-1
Update documentation links
2020-05-13 16:40:51 -07:00
Dave Nicolson
8dc8c350be Update documentation links
Signed-off-by: Dave Nicolson <david.nicolson@gmail.com>
2020-05-13 13:22:09 +02:00
Dave Nicolson
ab753e88a2 Fix GitHub capitalisation
Signed-off-by: Dave Nicolson <david.nicolson@gmail.com>
2020-05-13 12:55:00 +02:00
Adam Warner
d524f9a73b Merge pull request #3353 from MichaIng/patch-1
Only check SELinux states if "getenforce" command exists
2020-05-13 00:39:32 +01:00
MichaIng
7d79cf5cce Only check SELinux states if "getenforce" command exists
- Currently, if the SELinux config file exists, installed SELinux is assumed.
- But removing e.g. an APT package via "apt-get remove" leaves config files in place, or they could be present for other reasons.
- If the getenforce command is not present but the config file is, currently the installer exists without error message when calling getenforce due to "set -e".
- With this change, the presence of getenforce command is checked first. If it is not present, selinux-utils is not installed, which is a core part of SELinux, pulled in by selinux-basics as well. So it can be assumed that no SELinux is active if this command is missing.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-05-12 23:45:56 +02:00
Adam Warner
be25b4d9c4 Merge pull request #3352 from pi-hole/merge-master-dev
Merge master dev
2020-05-12 22:27:24 +01:00
DL6ER
a1e913de7a Merge pull request #3327 from pi-hole/new/dark
Implement backend support for theming
2020-05-12 23:19:35 +02:00
Adam Warner
9e96ff37de Fix merge conflicts
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-12 22:16:43 +01:00
DL6ER
a9c66c7b45 Implement pihole -a theme option
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-12 23:03:49 +02:00
Matthias Rank
2b9898e9ca Fixed indentation
Signed-off-by: Matthias Rank <development@m-rank.de>
2020-05-12 21:04:30 +02:00
Matthias Rank
0add5eb291 Added support for CNAME record add/remvoe
Signed-off-by: Matthias Rank <development@m-rank.de>
2020-05-12 21:02:29 +02:00
Jeroen Baert
4cf241b42b Fix for pihole -w --nuke displaying help info even if command is executed correctly
Signed-off-by: Jeroen Baert <3607063+Forceflow@users.noreply.github.com>
2020-05-12 19:59:19 +02:00
Adam Warner
1b41a5d59a Merge pull request #3347 from pi-hole/tweak/binary_detection
Minor bugfix for Binary detection
2020-05-12 17:31:29 +01:00
Adam Warner
987ae3810d binary, here, should be l_binary
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-05-11 22:03:33 +01:00
Adam Warner
4d25f69526 Merge pull request #3321 from pi-hole/release/v5.0
Pi-hole core v5.0
2020-05-10 19:07:53 +01:00
DL6ER
e728d7f761 Merge pull request #3318 from pi-hole/tweak/default_group
Rename default group to ... well ... "Default"
2020-05-07 19:24:04 +02:00
DL6ER
7cc35d3b04 Add update to gravity database version 12, renaming the Unassociated group to Default group.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-07 18:01:37 +02:00
DL6ER
78469ee58d Merge pull request #3255 from pi-hole/tweak/emailregex
Enhanced email validation regex
2020-05-06 09:48:26 +02:00
Adam Warner
369288cc48 Update advanced/Scripts/webpage.sh
Co-authored-by: DL6ER <DL6ER@users.noreply.github.com>
2020-05-06 08:40:54 +01:00
Dan Schaper
742d802940 Merge pull request #3027 from XhmikosR/patch-1
Serve JS files with utf-8 charset too
2020-05-05 12:29:27 -07:00
DL6ER
fdaf815f42 Merge pull request #3203 from MichaIng/patch-1
Failsafe checks for available APT package
2020-05-05 10:27:08 +02:00
DL6ER
988b1ff02f Merge pull request #3204 from MichaIng/patch-3
Revert using hardcoded php-intl meta package
2020-05-05 10:24:56 +02:00
Dan Schaper
df13b9c32a Merge pull request #3283 from pi-hole/tweak/remove_firewall_config
Remove configureFirewall function, the call to it, and related tests
2020-05-02 10:06:31 -07:00
Adam Warner
4710963ccf Merge pull request #3312 from subdavis/development
Remove dead code
2020-05-01 16:43:34 +01:00
Brandon Davis
1540e5bfda Remove dead code
Signed-off-by: Brandon Davis <git@subdavis.com>
2020-05-01 07:52:33 -04:00
Dan Schaper
017d405b28 Merge pull request #3307 from pi-hole/tweak/debugger_type_display
Improve debugger database table printing
2020-04-29 11:48:47 -07:00
DL6ER
ddb354f78b Add enable indentation for the domainlist
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-29 06:23:29 +02:00
Dan Schaper
393c7730ec Merge pull request #3299 from pi-hole/tweak/allow_()_in_urls
Allow ( and ) in adlist URLs.
2020-04-28 11:38:08 -07:00
DL6ER
4f0e47e927 Merge pull request #3296 from pi-hole/fix/remove_hostrecord
Remove pihole -a hostrecord
2020-04-28 20:06:49 +02:00
DL6ER
f4965d8493 Merge pull request #3135 from pvogt09/development
Move permission change behind git reset
2020-04-28 19:44:58 +02:00
DL6ER
c0cf8dba87 Merge pull request #3226 from MichaIng/patch-6
Do not add pihole user to web server group
2020-04-28 19:39:55 +02:00
DL6ER
a9136d752a Merge pull request #3246 from pvogt09/fix/user_exists
fixes #3217 by checking for existing pihole group
2020-04-28 19:38:12 +02:00
MichaIng
d7bac21149 Dot not add pihole user to web server group
This is and was never required and the pihole user does in fact not get any additional permissions through that group.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-04-26 15:45:29 +02:00
MichaIng
dc6c53b6a3 Revert using hardcoded php-intl meta package
Using the meta package causes several issues:
- Install on Debian prior to Jessie and Ubuntu prior to Xenial is broken, since those do not serve the meta packages but php5-* packages instead.
- If $phpVer != "php", then multiple conflicting PHP versions can be installed.
- If "${phpVer}-intl" does not pull the correct package, then inherently "${phpVer}-xml" etc are wrong, too. This is theoretically possible, e.g. if PHP7.4 was installed while the webserver uses a concurrently installed PHP7.3 instance. Then the "php" shell command output can differ from what the webserver uses. This theoretical issue would need a different approach to derive $phpVer, not based on the shell command output but by asking the webserver somehow in the first place. But using $phpVer for some modules and hardcoded meta for the others can only lead to inconsistencies and issues.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-04-26 15:44:13 +02:00
MichaIng
86d4c9b1e0 Failsafe checks for available APT package
When checking for available packages in APT repository, running a dry-run install can fail for other reasons, even if the package is available. Currently, in such case, wrong fallback packages are selected: https://github.com/pi-hole/pi-hole/issues/2888
"apt-cache show <pkg>" is a quicker method to check for available packages. This is now done as well to check if the fallbacks are available. If none is found, the installer exits with meaningful error message and exit code.

In rare cases, the APT list files can be missing when the installer is started. E.g. this could be on a fresh system, APT lists could have been moved to RAM or removed as a cleanup step. "apt-cache" calls will then fail, same as dry-run installs were. To assure that current package lists are checked, update the package cache directly after the Ubuntu universe repo has been added, only in the Debian/Ubuntu block. This renders the variable handling in RH/Fedora block obsolete.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-04-26 15:42:43 +02:00
DL6ER
288d487fc0 Allow ( and ) in adlist URLs.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-26 09:33:09 +02:00
pvogt09
462457fe7f Merge branch 'development' into development 2020-04-24 12:09:49 +02:00
DL6ER
20ef5e0264 Show associated group IDs in domains/clients/adlists listing. We get the data through a LEFT JOIN followed by a GROUPing by the left list ID and finialized through a GROUP_CONCATenation.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-24 10:33:46 +02:00
DL6ER
ad5802715e enabled field: Center 0, right-align 1
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-23 15:16:48 +02:00
DL6ER
989bbad37e Remove pihole -a hostrecord
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-23 13:20:15 +02:00
DL6ER
63f6c6a894 Add indentation for enabled and type fields
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-23 10:01:22 +02:00
Adam Warner
d42785a3bf Merge pull request #3271 from pi-hole/tweak/version
Add branch name to pihole -v
2020-04-21 16:07:27 +01:00
DL6ER
401c029dc4 Improve else condition of branch determination
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-21 16:08:32 +02:00
DL6ER
ed9d74593d Merge pull request #3289 from pi-hole/tweak/boldify_uniques
Gravity: Boldify number of unique domains
2020-04-21 10:18:23 +02:00
Adam Warner
9286965ee2 Merge pull request #3287 from pi-hole/tweak/remove-deprecated-list
Remove Deprecated cameleon list
2020-04-21 08:32:24 +01:00
DL6ER
fa57c457f3 Boldify number of unique domains as this is the actually interesting number
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-21 09:10:21 +02:00
DL6ER
0343171703 Add correct displaying for detached HEAD state.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-21 08:54:28 +02:00
DL6ER
176fbaf83b Ask pihole-FTL for the branch it was compiled from instead of trusting the checkout file to be present.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-21 08:51:17 +02:00
Adam Warner
94a4f844a8 Remove deprecated list
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-20 21:31:20 +01:00
Adam Warner
d18a8b1b8a Merge pull request #3205 from MichaIng/patch-5
Reduce apt-get install verbosity
2020-04-19 15:28:48 +01:00
Adam Warner
a37dba2c81 remove configureFirewall function, the call to it, and related tests
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-19 14:52:01 +01:00
Adam Warner
471006676c Merge pull request #3227 from pi-hole/new/CLI_domain_comments
Add option --comment "whatever" for adding comments for new domains through the CLI interface.
2020-04-19 14:39:05 +01:00
Adam Warner
0155d42650 Merge pull request #3252 from yubiuser/patch-1
add [options] for 'pihole restart' to manpage and cli help output
2020-04-19 14:35:24 +01:00
Adam Warner
e80990c27a Merge pull request #3282 from pi-hole/revert-3276-feature/support_for_new_cloudflare_dns_for_families
Revert "- Support for Cloudflare's new DNS for Families"
2020-04-19 14:32:32 +01:00
Adam Warner
e6dcccc7bd Revert "- Added 2 new DNS entries for the new Cloudflare DNS for families, which comes in 2 flavors (#3276)"
This reverts commit 7e1a8c1ceb.
2020-04-18 20:05:54 +01:00
Adam Warner
3cc9ba4ee8 stickler Signed-off-by: Adam Warner <me@adamwarner.co.uk> 2020-04-18 12:57:06 +01:00
Adam Warner
6dc85c3527 Don't display branch name if it is on master.
Prefer cached remote version over github API

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-18 12:51:04 +01:00
Mohammed Swillam
7e1a8c1ceb - Added 2 new DNS entries for the new Cloudflare DNS for families, which comes in 2 flavors (#3276)
1- 1.1.1.2 (No Malware)
2- 1.1.1.3 (No Malware or Adult Content)

This would allow parents to have more control over the safety of their family's network.

Signed-off-by: Mohammed-Swillam <moh.sayed@hotmail.com>
2020-04-18 11:49:01 +01:00
Dan Schaper
4f01daf5bc Merge pull request #3244 from atenart/remove-hosts-file-ads-list
basic_install: remove remaining references to hosts-file.net
2020-04-16 13:33:34 -07:00
Dan Schaper
0f20470a38 Merge pull request #3269 from pi-hole/tweak/hosts-comments
Add support for comments in HOSTS-like files
2020-04-15 11:11:10 -07:00
Adam Warner
851947bbf2 Add branch name to version output
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-13 20:58:46 +01:00
Dan Schaper
413fa94e98 Merge pull request #3263 from mschoettle/fix/broken-blocking-landing-page-v5.0
Fixes broken blocking page and landing page when changing server port or host name (v5.0)
2020-04-10 20:50:26 -07:00
Matthias Schoettle
308eb5eda5 Fixes broken blocking page and landing page when changing server port and/or hostname.
See issues #2195 and #2720.

Signed-off-by: Matthias Schoettle <git@mattsch.com>
2020-04-10 12:29:01 -04:00
DL6ER
093054a1eb Automatically convert legacy IP range to Class C network
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-09 09:49:07 +02:00
DL6ER
4130af0aab Retain rev-server settings when the feature gets disabled.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-09 09:05:50 +02:00
DL6ER
90a5a13197 Convert CONDITIONAL_FORWARDING to REV_SERVER settings. Try to detect intended CIDR range automatically.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-08 15:35:35 +02:00
DL6ER
1632632668 Merge pull request #3259 from pi-hole/update_devel
Update development from release/v5.0
2020-04-08 12:28:29 +02:00
DL6ER
982c1b0059 Merge branch 'release/v5.0' into development
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-08 12:02:53 +02:00
Adam Warner
26f71e4dbe accidentally a space
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-05 12:34:14 +01:00
Adam Warner
b6ac1585ec add regex attribution
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-05 12:29:45 +01:00
Adam Warner
a9b19df4ec expand email validation regex to catch more valid emails see comments on PR #3254
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-04-05 12:28:33 +01:00
yubiuser
d27a565d39 Apply suggestions from code review
Co-Authored-By: DL6ER <DL6ER@users.noreply.github.com>
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-04-05 11:46:41 +02:00
M4x
2de5362adc Sanitize email address in case of security issues (#3254)
* Sanitize email address in case of security issues

Signed-off-by: bash-c <aboultraman@gmail.com>
2020-04-05 10:20:35 +01:00
Christian König
de42669bb7 fix typo in pihole help
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-04-05 08:56:10 +02:00
Christian König
3095fd4dd6 add restart [options] to cli help
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-04-05 08:49:35 +02:00
yubiuser
ebbb7168a4 add [options] for pihole restartdns
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-04-04 22:47:14 +02:00
pvogt09
40ac3e7eb7 remove pihole group during uninstall
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-04-04 19:22:37 +02:00
pvogt09
25c5661c1b fix stickler errors
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-04-03 19:22:30 +02:00
pvogt09
a993b8b34d fixes #3217 by checking for existing pihole group
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-04-03 13:18:32 +02:00
Antoine Tenart
16f664cdb4 basic_install: remove remaining references to hosts-file.net
Commit dc35709a1b ("Remove hosts-file.net from default lists") left a
few references to hosts-file.net. Removes them.

Signed-off-by: Antoine Tenart <antoine.tenart@ack.tf>
2020-04-02 21:23:55 +02:00
DL6ER
a2d2639ee8 Merge pull request #3242 from pi-hole/fix/do_not_flush_neigh_cache
Do not flush neigh cache
2020-04-01 20:50:28 +02:00
DL6ER
d1caad76d8 Do not flush neigh cache as this is known to create a number of issues. The better aproach to this is to manually flush the ARP cache by either restarting or calling "ip neigh flush all".
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-01 17:19:32 +00:00
DL6ER
fff7adfb20 Merge pull request #3236 from pi-hole/PromoFaux-patch-1
Remove hosts-file.net from default lists
2020-03-31 23:23:19 +02:00
Adam Warner
7d19ee1b25 validate blocklist URL before adding to the database (#3237)
Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Co-authored-by: DL6ER <dl6er@dl6er.de>
2020-03-31 21:48:10 +01:00
DL6ER
7b15a88dc4 Strip comments from downloaded lists instead of discarding lines with comments altogether
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-31 18:36:40 +00:00
Adam Warner
dc35709a1b Remove hosts-file.net from default lists 2020-03-31 17:39:21 +01:00
DL6ER
0fad979206 Merge pull request #3230 from pi-hole/fix/remove-19036
Remove 19036 trust anchor
2020-03-27 19:57:41 +01:00
DL6ER
277179f150 Remove 19036 trust anchor, now expired: https://www.icann.org/resources/pages/ksk-rollover
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-27 19:34:41 +01:00
DL6ER
15a9d662ac Add option --comment "whatever" for adding comments for new domains through the CLI interface.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-27 08:45:04 +01:00
Adam Warner
1b35eebad8 Merge pull request #3207 from pi-hole/tweak/resolvconf
Remove resolvconf dependency
2020-03-24 13:11:22 +00:00
Julien Orain
6d4844a0b3 docs(typo): fix typo
Signed-off-by: Julien Orain <julien.orain@gmail.com>
2020-03-18 21:41:54 +01:00
Adam Warner
4994da5170 Update automated install/basic-install.sh 2020-03-12 18:48:40 +00:00
Adam Warner
175d32c5f6 Set nameservers to be that which have been chosen by the user in the whiptail
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-03-11 18:55:43 +00:00
Adam Warner
1481cc583f Don't set nameserver in dhcpcd.conf
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-03-11 18:48:40 +00:00
Adam Warner
dbc54b3063 remove resolvconf dep
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-03-11 18:47:59 +00:00
MichaIng
bb936f4fdb Reduce apt-get install verbosity
The new version of the installer moved from debconf-apt-progress to raw apt-get output on installs to solve issues with interactive config file choices. This lead to a largely increases amount of output lines of the installer. To reduce the apt-get output to a minimum, while sustaining interactive input in case of config files, the "-qq" option can be used, which inherits "--yes": 
- https://manpages.debian.org/buster/apt/apt-get.8.en.html#OPTIONS
- https://manpages.ubuntu.com/manpages/bionic/man8/apt-get.8.html#options

Signed-off-by: MichaIng <micha@dietpi.com>
2020-03-11 11:01:28 +01:00
XhmikosR
7b8611ced0 Assorted typo fixes. (#3126)
* Assorted typo fixes.

Signed-off-by: XhmikosR <xhmikosr@gmail.com>

Co-authored-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-03-08 16:53:14 -07:00
DL6ER
497bfd80a5 Update development from release/v5.0 (#3200)
* Use bash regex instead of awk.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* Fix incorrect type description. (#3201)

Signed-off-by: DL6ER <dl6er@dl6er.de>

Co-authored-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-03-08 16:38:53 -07:00
DL6ER
22ce5c0d70 Fix incorrect type description. (#3201)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-08 16:32:37 -07:00
jnozsc
4a711340ef use py3 instead py2 (#3153)
* use py3 instead py2

Signed-off-by: jnozsc <jnozsc@gmail.com>

* use python 3.6

Signed-off-by: jnozsc <jnozsc@gmail.com>
2020-03-02 23:30:44 -08:00
Dan Schaper
f617ed2f44 Merge pull request #3186 from pi-hole/fix/awkInQuery
Malformed wildcard blocking doesn't crash awk.
2020-03-02 12:39:26 -08:00
Dan Schaper
bf4fada3b7 Don't quote inside backticks, use unquoted variable.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-03-02 09:52:06 -08:00
Dan Schaper
360d0e4e6b Loop through array of lists.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-03-02 08:07:10 -08:00
Dan Schaper
4f390ce801 Use bash regex instead of awk.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-03-02 05:39:21 -08:00
Adam Warner
027b97cbfa Merge pull request #3185 from msamendinger/removewget
Remove wget from PIHOLE_DEPS
2020-03-01 21:15:32 +00:00
msamendinger
d16b472592 Remove wget from PIHOLE_DEPS
All external calls have been moved to curl, wget no longer needed as
dependency

Signed-off-by: msamendinger <git@samendinger.de>
2020-03-01 22:06:37 +01:00
James Lagermann
6e67124770 Merge branch 'development' of https://github.com/pi-hole/pi-hole 2020-02-28 17:16:44 -06:00
Adam Warner
e6bfb0fe17 Merge pull request #3152 from pi-hole/release/v5.0
Update development with latest release/v5.0 changes
2020-02-28 22:50:15 +00:00
Adam Warner
dc8ae4f0ab Merge pull request #3127 from pi-hole/fix/removeFunding
Delete FUNDING.yml
2020-02-28 22:47:20 +00:00
Adam Warner
d2a8b4d2b9 Merge pull request #3180 from pi-hole/release/v4.4
Tidying up
2020-02-28 22:34:41 +00:00
Adam Warner
c07d86b9f9 Merge branch 'release/v5.0' into release/v4.4 2020-02-28 22:24:11 +00:00
Adam Warner
9e490775ff Merge pull request #3166 from pi-hole/release/v4.4
Add use-application-dns.net = NXDOMAIN in ProcessDNSSettings rather t…
2020-02-25 20:59:35 +00:00
Adam Warner
58785020bd Merge pull request #3161 from pi-hole/cherry-pick-4.3.5
cherry pick 4.3.5 into 5.0
2020-02-25 20:42:39 +00:00
DL6ER
1c74b41869 Add use-application-dns.net = NXDOMAIN in ProcessDNSSettings rather than in the template so we can ensure that it will survive config-renewals.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-25 20:41:35 +00:00
Adam Warner
6104d81622 Safeguard against colour output in grep commandadd -i to grep to make search for "Location" case-insensitive
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-24 20:36:45 +00:00
Adam Warner
121c93e822 Merge pull request #3160 from pi-hole/release/v4.3.5
Hotfix 4.3.5
2020-02-24 20:16:54 +00:00
Adam Warner
b4c2bf678f Safeguard against colour output in grep commandadd -i to grep to make search for "Location" case-insensitive
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-24 20:02:48 +00:00
Adam Warner
14944b0283 Merge pull request #3157 from pi-hole/release/v4.3.4
Release v4.3.4
2020-02-24 18:48:03 +00:00
Adam Warner
8ecaaba247 Compare daemons to expected results. (#3158) (#3159)
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

Co-authored-by: Dan Schaper <dan@glacialmagma.com>
2020-02-24 18:00:19 +00:00
Dan Schaper
0fbcc6d8b5 Compare daemons to expected results. (#3158)
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-02-24 17:38:37 +00:00
Adam Warner
707e21b927 :dominik: Detect binary name before calling FTLcheckUpdate in update.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-24 12:10:36 +00:00
DL6ER
f4a1cc6dec Merge pull request #3150 from pi-hole/tweak/database_warnings_inspection
Gravity: Check suitablility of sourced lists
2020-02-24 10:18:00 +01:00
DL6ER
3dd05606ca Call it the received number of domains instead of the imported number as importing does only happen a bit later. Only show the number of invalid domains if there are invalid domains.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-24 07:06:15 +01:00
DL6ER
1e8bfd33f5 Improve output
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-23 22:50:06 +01:00
Adam Warner
545b6605bc 4.3.3 (#3154)
* Backport ee7090b8fc to v4 to prevent failures in FTL download
* update tests to reflect changes to FTL download URL
* backport `tbd` fix

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-23 21:34:12 +00:00
DL6ER
8131b5961c Add comments to the code describing the changes.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-22 15:22:29 +01:00
DL6ER
81d4531e10 Implement performant list checking routine.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-22 13:01:55 +01:00
DL6ER
050e2963c7 Remove redundant code.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-21 22:28:53 +01:00
DL6ER
3c09cd4a3a Experimental output of matching line from shown warnings.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-21 21:47:56 +01:00
DL6ER
839fe32042 Fix issue with missing newline at the end of adlists (#3144)
* Also display non-fatal warnings during the database importing. Previously, we have only show warnings when there were also errors (errors are always fatal).

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Ensure there is always a newline on the last line.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Stickler linting

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* Move sed command into subroutine to avoid code duplication.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Also unify comments.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Also unify comments.

Signed-off-by: DL6ER <dl6er@dl6er.de>

Co-authored-by: Dan Schaper <dan@glacialmagma.com>
2020-02-21 18:56:48 +00:00
Adam Warner
85c15a7167 Merge pull request #3147 from pi-hole/tweak/forcelocalversions
force `updatchecker.sh` run if any of the three components are updated
2020-02-20 18:57:56 +00:00
DL6ER
b73580fa93 Merge pull request #3132 from pi-hole/fix/pihole-tail
Fix pihole -t sed instructions
2020-02-19 19:07:38 +01:00
Adam Warner
4a5f344b09 then
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-19 17:46:45 +00:00
Adam Warner
af95e8c250 force updatchecker.sh run if any of the three components are updated
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-19 17:41:53 +00:00
Adam Warner
ee7090b8fc Merge pull request #3140 from pi-hole/tweak/whocaresaboutthelatesttaganyway
No need to determine the latest tag, we can just go direct.
2020-02-17 21:39:48 +00:00
Adam Warner
7be019ff52 No need to determine the latest tag, we can just go direct
Co-authored-by: Dan Schaper <dan.schaper@pi-hole.net>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-17 21:29:25 +00:00
DL6ER
d14ee26d6a Merge pull request #3139 from pi-hole/fix/count_before_calling_FTL
Fix wrong number of blocking domains shown on the dashboard
2020-02-17 21:32:45 +01:00
DL6ER
52398052e9 Compute number of domains (and store it in the database) BEFORE calling FTL to re-read said value.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-17 21:07:48 +01:00
DL6ER
ddbd57f459 Merge pull request #3131 from pi-hole/tweak/debugger_performance
Tweaks and fixes for the debugger
2020-02-17 06:23:20 +01:00
DL6ER
601f9048cd Merge pull request #3130 from pi-hole/fix/gravity_updated_timestamp
Store gravity update timestamp only after database swapping
2020-02-17 06:07:05 +01:00
Dan Schaper
c5c414a7a2 Stickler Lint - quote to prevent splitting
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-02-16 19:24:05 -08:00
Dan Schaper
bc91be6c08 Merge branch 'tweak/debugger_performance' of https://github.com/pi-hole/pi-hole into tweak/debugger_performance 2020-02-16 17:44:16 -08:00
DL6ER
d0e29ab7b0 Add human-readable output of time of the last gravity run.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-16 17:43:54 -08:00
DL6ER
714a79ffce Migrate debugger to domainlist and add printing of client table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-16 17:43:54 -08:00
DL6ER
cd3ad0bdc7 Show info table instead of counting domains to speed up the debugging process on low-end hardware drastically.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-16 17:43:54 -08:00
DL6ER
a8db753493 Merge pull request #3138 from pi-hole/fix/php-intl
Install php-intl meta package.
2020-02-16 21:51:14 +01:00
DL6ER
75633f0950 Install php-intl and trust the system to install the right extension. We've seen reports that just installing php5-intl or php7-intl isn't sufficient and that we need the meta package as well.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-16 21:24:32 +01:00
Adam Warner
082cfb2f1c Merge pull request #3137 from pi-hole/tweak/apilatest
Change to use API instead of the Location Header
2020-02-16 12:19:31 +00:00
Adam Warner
1072078e26 Change to use API instead of the Location Header
(some trailing whitespace removed)

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2020-02-16 11:47:42 +00:00
pvogt09
b0f1333657 Move permission change behind git reset (like in update_repo()) and remove whitespace at end of line
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2020-02-14 20:43:36 +01:00
DL6ER
f10a151469 Fix pihole -t sed instructions.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-12 21:05:02 +01:00
DL6ER
eadd82761c Add human-readable output of time of the last gravity run.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-12 19:51:40 +01:00
DL6ER
00f4393f48 Merge branch 'release/v5.0' into tweak/debugger_performance 2020-02-12 19:44:56 +01:00
DL6ER
50f6fffbdc Migrate debugger to domainlist and add printing of client table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-12 19:43:55 +01:00
DL6ER
baf5340dc0 Show info table instead of counting domains to speed up the debugging process on low-end hardware drastically.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-12 19:39:12 +01:00
DL6ER
e528903488 Merge pull request #3107 from pi-hole/new/client_comments
Add timestamps and comment fields to clients table
2020-02-12 19:35:01 +01:00
DL6ER
dc2fce8e1d Store gravity update timestamp only after database swapping.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-12 19:26:25 +01:00
Dan Schaper
c4005c4a31 Delete FUNDING.yml
Organization-wide FUNDING now set up.
2020-02-11 09:56:28 -08:00
Adam Warner
0a70bbd255 Merge pull request #3120 from canihavesomecoffee/patch-1
Update Cameleon blacklist url to use https
2020-02-08 17:25:49 +00:00
Willem
c91d9cc0b6 Update Cameleon blacklist url to use https
Switches from http to https for the Cameleon (sysctl.org) blacklist.

Signed-off-by: canihavesomecoffee <canihavesomecoffee@users.noreply.github.com>
2020-02-08 17:06:03 +01:00
DL6ER
8e10c22356 Merge pull request #3106 from pi-hole/fix/group_assignments
DROP and reCREATE TRIGGERs during gravity swapping.
2020-02-07 17:40:34 +01:00
DL6ER
37a44c0773 Merge pull request #3115 from pi-hole/tweak/gravity_count
Store number of distinct gravity domains in database after counting
2020-02-05 23:25:36 +01:00
DL6ER
2a5cf221fa Store number of distinct gravity domains in database after counting.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-02 23:46:33 +01:00
DL6ER
92aa510bda Add timestamps and comment fields to clients. This updates the gravity database to version 11.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-27 10:36:16 +00:00
DL6ER
6b04997fc3 DROP and reCREATE TRIGGERs during gravity swapping.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-27 10:12:05 +00:00
Dan Schaper
e0b3405a4d Merge pull request #3098 from pi-hole/fix/pihole-t
Update blocked strings for pihole -t
2020-01-25 12:27:20 -08:00
DL6ER
10c2dad48a Improve gravity performance (#3100)
* Gravity performance improvements.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Do not move downloaded lists into migration_backup directory.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Do not (strictly) sort domains. Random-leaf access is faster than always-last-leaf access (on average).

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Append instead of overwrite gravity_new collection list.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Rename table gravity_new to gravity_temp to clarify that this is only an intermediate table.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Add timers for each of the calls to compute intense parts. They are to be removed before this finally hits the release/v5.0 branch.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Fix legacy list files import. It currently doesn't work when the gravity database has already been updated to using the single domainlist table.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Simplify database_table_from_file(), remove all to this function for gravity lost downloads.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Update gravity.db.sql to version 10 to have newle created databases already reflect the most recent state.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Create second gravity database and swap them on success. This has a number of advantages such as instantaneous gravity updates (as seen from FTL) and always available gravity blocking. Furthermore, this saves disk space as the old database is removed on completion.

* Add timing output for the database swapping SQLite3 call.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Explicitly generate index as a separate process.

Signed-off-by: DL6ER <dl6er@dl6er.de>

* Remove time measurements.

Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-24 09:39:13 -08:00
Dan Schaper
52e2a2610e Merge pull request #3089 from pi-hole/tweak/gravity_db_10
Add gravity database 9->10 update script
2020-01-24 09:23:34 -08:00
DL6ER
a809624356 Update blocked strings for pihole -t.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-23 19:19:44 +01:00
DL6ER
29f06a4444 Merge pull request #3090 from pi-hole/tweak/debug_group_humanreadable_timestamps
Print human-readable timestamps in the debugger's gravity output
2020-01-20 20:20:51 +01:00
DL6ER
3f9e79f152 Print human-readable timestamps in the debugger's gravity output
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-20 20:13:44 +01:00
DL6ER
633e56e8a9 Add gravity database 9->10 update script.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-20 17:59:24 +01:00
DL6ER
bf01f725f7 Merge pull request #3087 from pi-hole/fix/blocking_page
Remove dead code causing failure from the blocking page
2020-01-19 21:50:41 +01:00
DL6ER
276b191845 Remove dead code causing failure from the blocking page.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-19 21:39:49 +01:00
DL6ER
c7bc58e94b Merge pull request #3082 from pi-hole/tweak/gravity_database_locked
Add timeout to gravity database writing
2020-01-14 20:55:12 +01:00
DL6ER
8f22203d24 Wait 30 seconds for obtaining a database lock instead of immediately failing if the database is busy.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-14 20:02:00 +01:00
DL6ER
782fec841e Merge pull request #3076 from pi-hole/new/intl_domains
Add package php-intl for AdminLTE#1130
2020-01-13 17:19:49 +01:00
DL6ER
cfa909a93d Add package php-intl for AdminLTE#1130.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-12 14:09:14 +01:00
Adam Warner
e0fde41d87 Merge pull request #3066 from pi-hole/centos8_support
Update installer to support CentOS 8
2020-01-05 14:39:24 +00:00
Adam Warner
574f7c1a1f Merge pull request #2962 from bcambl/remove_debconf-apt-progress
Remove debconf apt progress
2020-01-04 16:04:50 +00:00
bcambl
ec8f4050d0 Update installer to support CentOS 8
PHP dependency php-json is now required for both the latest Fedora and CentOS.
Package php-json will now be a default web dependency and removed from PIHOLE_WEB_DEPS when installing on CentOS7.

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-01-02 06:52:23 -06:00
bcambl
60c51886e0 remove unused debian deps (apt-utils debconf)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-01-01 13:24:02 -06:00
bcambl
cbb1461010 add stdout horizontal rule to install_dependent_packages()
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-01-01 13:23:31 -06:00
bcambl
07cc5b501c replace debconf-apt-progress with apt-get in install_dependent_packages()
Removes the need for conditional debconf-apt-progress dependency checking

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-01-01 13:11:41 -06:00
bcambl
ebb1a730c1 remove unused fedora/centos dependency: dialog
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2020-01-01 13:11:41 -06:00
MichaIng
9dff55b212 Installer | Remove "dialog" from Debian/Ubuntu installer deps
+ The installer uses `whiptail`, thus `dialog` is not required.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-01-01 13:11:41 -06:00
DL6ER
8ae03b64d7 Merge pull request #3060 from pi-hole/propsed_8_to_9
Add a new migration script to fix the previous one
2019-12-30 11:58:57 +01:00
DL6ER
bb30c818ab Update database version during migration.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-30 09:21:30 +00:00
Adam Warner
c944f6a320 Add a new migration script to fix the previous one
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-12-29 23:32:31 +00:00
DL6ER
62ec7de963 Merge pull request #3058 from pi-hole/tweak/7_to_8
Don't create trigger with duplicate name until after old table is del…
2019-12-29 23:05:46 +01:00
Adam Warner
aa4c0ff329 Don't create trigger with duplicate name until after old table is deleted
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-12-29 20:35:11 +00:00
DL6ER
37217ece73 Merge pull request #3049 from pi-hole/tweak/unique_group_name
Group table enhancements
2019-12-28 14:19:04 +01:00
DL6ER
28d4f4b142 Merge pull request #3045 from pi-hole/tweak/gravity.db_permissions
Set permissions and ownership of gravity.db on pihole -g
2019-12-28 14:17:50 +01:00
DL6ER
8d5d423adb Merge pull request #3052 from pi-hole/revert/76460f0
Revert "Change the regex used for domain validation"
2019-12-21 13:16:12 +01:00
DL6ER
cda0133dd1 Revert "Change the regex used for domain validation"
This reverts commit 76460f01e9.

Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-21 11:15:18 +00:00
DL6ER
eda7f40fef Reinstall trigger that prevents group zero from being deleted.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-20 00:42:59 +00:00
DL6ER
e589e665a7 Also add date_added and date_modified fields to group table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-20 00:21:25 +00:00
DL6ER
b32b5ad6e9 Update gravity database to version 8. This enforces uniqueness on the group name.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-20 00:09:10 +00:00
DL6ER
e2de199f47 Merge pull request #3037 from pi-hole/new/group_zero
Add special group zero to gravity database
2019-12-18 22:36:43 +01:00
DL6ER
948f4a8827 Ensure permissions and ownership of gravity.db are correctly set on each run of pihole -g. This would have prevented https://github.com/pi-hole/AdminLTE/issues/1077
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-16 09:55:46 +00:00
DL6ER
a1633123aa Merge pull request #3035 from pi-hole/fix/query_gravity
pihole -q should also scan gravity table
2019-12-16 01:45:10 +01:00
DL6ER
2444296348 Again, Mr. Stickler
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-15 11:55:19 +00:00
DL6ER
4be7ebe61f Scan domainlist instead of view to also catch disabled domains.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-15 11:47:53 +00:00
DL6ER
a720fe1789 Add client trigger.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 22:49:21 +00:00
DL6ER
2cec9eaf65 Merge pull request #3033 from pi-hole/fix/duplicates_in_adlists
Remove duplicates from adlists before importing
2019-12-12 21:37:26 +01:00
DL6ER
313f999af4 Merge pull request #3034 from pi-hole/tweak/gravity_url_displaying
Show full URL during gravity download
2019-12-12 21:37:20 +01:00
DL6ER
0b0ec43bf5 Merge pull request #3036 from pi-hole/fix/reload-lists
Improve list reloading
2019-12-12 21:37:09 +01:00
DL6ER
f0439c8d12 Add special group zero to gravity database.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 16:39:02 +00:00
DL6ER
40e8657137 Please Mr. Stickler
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 11:18:46 +00:00
DL6ER
52dd72dfa5 Ensure output is always correct and also display if domain has been found but is disabled
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 11:08:19 +00:00
DL6ER
922ce7359c pihole -q should also scan gravity table
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 10:58:41 +00:00
DL6ER
779fe670f7 Show full URL during gravity download instead of only domain and file
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 10:29:44 +00:00
DL6ER
570a7a5c11 Use sort -u instead of uniq as it is guaranteed to be safe when doing inline file operations.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 10:17:59 +00:00
DL6ER
bd1b004d94 Remove possible duplicates found in lower-quality adlists
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-12 10:13:51 +00:00
DL6ER
5457b2c6ea Merge pull request #2935 from pi-hole/new/internal-blocking
Per-client blocking changes
2019-12-12 09:49:02 +01:00
Adam Warner
02f3316710 Merge pull request #3031 from pi-hole/fix/do_not_force_local_resolver
Do not force nameserver 127.0.0.1 through resolvconf
2019-12-11 22:11:44 +00:00
DL6ER
69a909fc4c On modification of lists, we should send real-time signal 0 instead of SIGHUP. This also preserves the DNS cache of not-blocked domains.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-11 21:47:46 +00:00
Adam Warner
ec09b5843c Merge branch 'development' into fix/do_not_force_local_resolver 2019-12-11 19:09:02 +00:00
Adam Warner
078e7e1686 Merge pull request #3030 from pi-hole/fix/database-service-script
Ensure database permissions are set up correctly by the service script
2019-12-11 19:07:29 +00:00
Adam Warner
d29947ba32 optimise gravity list inserts
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-12-09 22:30:41 +00:00
Adam Warner
1f03faddef shell check recomends
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-12-09 21:35:54 +00:00
Adam Warner
d1bce7e685 Merge pull request #2995 from pi-hole/tweak/NoFurtherThanLatestTag
Don't allow repo to go further than latest tag on master
2019-12-09 20:41:29 +00:00
Dan Schaper
880352ea65 Merge pull request #3013 from Jason-Cooke/patch-2
docs: fix typo
2019-12-09 10:59:04 -08:00
DL6ER
3231e5c3ba Address stickler requests.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-09 16:52:03 +00:00
DL6ER
f482156cca Merge branch 'development' into new/internal-blocking
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-09 16:49:16 +00:00
DL6ER
620e1e9c73 Do not force nameserver 127.0.0.1 through resolvconf in pihole-FTL.service
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-09 12:23:42 +00:00
DL6ER
8a119d72e2 Ensure database permissions are set up correctly by the service script.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-09 12:17:55 +00:00
DL6ER
807a5cfb23 Merge pull request #3015 from pi-hole/tweak/domainlist_table
Unite four domain tables into a single domainlist table.
2019-12-08 16:50:22 +01:00
XhmikosR
54d0b9a1b8 Serve JS files with utf-8 charset too
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2019-12-07 13:48:25 +02:00
Adam Warner
ca7a5bc0fe Merge pull request #3024 from pi-hole/fix/3003
Get binary name in update.sh
2019-12-04 21:23:13 +00:00
DL6ER
0c5185f8ba Also display how many unique domains we have caught in the event horizon.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-04 21:02:46 +00:00
Adam Warner
eaf1244932 :dominik: Detect binary name before calling FTLcheckUpdate in update.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-12-04 20:10:46 +00:00
Adam Warner
7c2bbf840a Merge pull request #2993 from MichaIng/patch-3
Minor installer output enhancements
2019-12-04 18:53:58 +00:00
MichaIng
85673b8273 Print name of chosen upstream DNS as well
Signed-off-by: MichaIng <micha@dietpi.com>
2019-12-04 18:59:25 +01:00
DL6ER
b6cd7b8e3d Use more descriptive names instead of directly using the IDs in list.sh
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-02 17:27:32 +00:00
Adam Warner
869473172c remove _ from regex descibers
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-12-01 12:50:24 +00:00
Adam Warner
63e407cfdc Update advanced/Scripts/list.sh
Co-Authored-By: DL6ER <DL6ER@users.noreply.github.com>
2019-12-01 12:45:22 +00:00
Adam Warner
0251117c77 Update advanced/Scripts/list.sh
Co-Authored-By: DL6ER <DL6ER@users.noreply.github.com>
2019-12-01 12:45:06 +00:00
Adam Warner
44e1455b12 Update advanced/Scripts/list.sh
Co-Authored-By: DL6ER <DL6ER@users.noreply.github.com>
2019-12-01 12:44:48 +00:00
Adam Warner
76460f01e9 Change the regex used for domain validation
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-30 17:45:07 +00:00
Adam Warner
4b8a72fda7 functionise parameter discovery
Rename HandleOther to ValidateDomain
Capital letters on the new functions

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-30 16:26:26 +00:00
Adam Warner
edaee4e962 remove redundant function and comments
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-30 16:02:50 +00:00
Adam Warner
77bfb3fb67 tidy up variable usage in list.sh Remove some that are redundant
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-30 14:18:12 +00:00
Adam Warner
6a881545b0 tweak wording Signed-off-by: Adam Warner <me@adamwarner.co.uk> 2019-11-30 13:25:32 +00:00
Adam Warner
d0de5fda30 Simplify removal of domain from one list when it is requested for another
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-30 13:13:26 +00:00
DL6ER
a1f120b2ff Address stickler's complaint
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-11-30 12:43:07 +00:00
DL6ER
185319d560 Unite four domain tables into a single domainlist table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-11-30 12:33:51 +00:00
DL6ER
5c6dd3f6f4 Merge pull request #2978 from Mograine/patch-1
Add commands to add/remove custom DNS records
2019-11-29 13:25:09 +01:00
Jason Cooke
8e5abc1f15 docs: fix typo 2019-11-29 13:46:05 +13:00
Adam Warner
9248c92b5c Merge pull request #2984 from diginc/development
Adding docker+arm detection & FTL download
2019-11-27 21:25:41 +00:00
Adam Warner
583ea4d17a Merge branch 'development' into development 2019-11-27 21:17:05 +00:00
Adam Warner
edcdf9f619 Merge pull request #3003 from pi-hole/fix/tbd
FTL always determined.
2019-11-27 09:46:17 +00:00
Mograine
c809c34024 Add user feedback
Signed-off-by: Mograine <ghiot.pierre@gmail.com>
2019-11-27 00:28:44 +01:00
DL6ER
037d52104a New command "pihole -g -r" recreates gravity.db based on files backed up in /etc/pihole/migration_update. This is useful to restore a working version of the database when the user destroyed the original database. Also, update gravity.db to version 5 because of a fix we needed to implement.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-11-26 10:58:39 +01:00
Adam Warner
1fb70c977c Merge pull request #3002 from pi-hole/tweak/output-format
add a double space to the beginning of some outputs
2019-11-25 19:41:58 +00:00
Adam Warner
eeb26e3975 Merge pull request #2990 from chrunchyjesus/unix-compliance
make some shebangs comply to posix standard
2019-11-16 12:26:49 +00:00
Adam Warner
12817c09bb (Squashed commits)
Always ensure we have the correct machine arch by storing to/reading from a file rather than depending on global variable that for some reason is not always populated...

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

no need for global variable

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Use a file in the temporary FTL download directory

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

Local binary variable named to l_binary. Disambiguate from global binary.

Allow 'binary' to be shadowed for testing.

Use ./ftlbinary in all operations.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

Revert shadow ability on binary variable.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

Remove unused tests, binary variable can not be overridden.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

This should work here, too

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

binary name is passed through from pihole checkout

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Add comments

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

OK, let's try it this way again

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

we might be getting somewhere.. squash after this I think!

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

This is a test to see if it fixes the aarch64 test (we are definitely squashing these commits

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

fix the rest of the tests

Signed-off-by: Adam Warner <me@adamwarner.co.uk>

Remove trailing whitespace in the files we've touched here

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-15 19:49:09 +00:00
Adam Warner
4840bdb031 add a double space to the beginning of some outputs
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-14 19:06:23 +00:00
Adam Warner
a85e7a2a43 Merge pull request #2999 from pi-hole:fix/api_utf8_encoding
Add php-xml package as new dependency
2019-11-13 19:03:53 +00:00
Mograine
b93628acb3 Merge branch 'development' of https://github.com/Mograine/pi-hole into patch-1 2019-11-13 09:44:48 +01:00
DL6ER
7f7b9d089c Merge pull request #2965 from pi-hole/tweak/BackendChangesForAdlistComments
backend changes to allow comment when adding new adlist
2019-11-12 21:50:19 +01:00
DL6ER
61d233f069 Merge pull request #2964 from bcambl/selinux_enforcing
Exit installation when SELinux in unsupported state
2019-11-12 21:48:15 +01:00
DL6ER
d457d40e0b Add php-xml package as new dependency.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-11-12 20:49:46 +01:00
Adam Warner
6571a63ffa Add --tags to descibe command
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-11 20:36:51 +00:00
Adam Warner
a7e81c8ea0 remove extra space
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-11-11 20:12:31 +00:00
Adam Warner
73d9abae3e And finally, we please stickler
Signed-off-by: Adam Warner <adamw@rner.email>
2019-11-08 20:58:42 +00:00
Adam Warner
c8b9e42649 Please Codefactor.
Signed-off-by: Adam Warner <adamw@rner.email>
2019-11-08 19:18:35 +00:00
Adam Warner
62c00ae1d8 pushd/popd instead of juggling with a variable
Signed-off-by: Adam Warner <adamw@rner.email>
2019-11-08 19:11:55 +00:00
MichaIng
ea67c828cd Minor installer output enhancements
+ Print restart hint after setting IPv4 address on a separate line with [i] prefix to not break text alignment
+ Print final upstream DNS choice as a single printf call and by this fix missing info and linebreak on "Custom" choices.
+ Minor if/then/else code alignment

Signed-off-by: MichaIng <micha@dietpi.com>
2019-11-07 13:59:44 +01:00
chrunchyjesus
476975540a make some shebangs comply to posix standard 2019-11-05 22:33:00 +01:00
Adam Hill
3fbb0ac8dd Adding docker+arm detection & FTL download
Signed-off-by: Adam Hill <adam@diginc.us>
2019-10-29 22:26:46 -05:00
Adam Warner
71903eb27f Add in checks to reset cloned repo to the lastest available release
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-10-28 22:35:01 +00:00
Mograine
193ff38ab3 Allow more precise deletion by passing ip as parameter
Signed-off-by: Mograine <ghiot.pierre@gmail.com>
2019-10-28 13:21:05 +01:00
Pierre Ghiot
bb8dbe9da5 Update 01-pihole.conf
Signed-off-by: Mograine <ghiot.pierre@gmail.com>
2019-10-27 16:55:54 +01:00
Pierre Ghiot
f9d16c2b15 Update webpage.sh
Signed-off-by: Mograine <ghiot.pierre@gmail.com>
2019-10-27 16:55:54 +01:00
Adam Warner
29bad2fe9b Merge pull request #2963 from bcambl/fedora_pkg_check_stdout
Fix dependency check stdout on Fedora/CentOS
2019-10-16 19:57:23 +01:00
Adam Warner
f4aca3f21d Merge pull request #2966 from Asuza/minor-typo
Minor typo
2019-10-16 19:34:56 +01:00
John Krull
c6f9fe3af2 Fix spelling of the word "permitting"
Signed-off-by: John Krull <john.a.krull@gmail.com>
2019-10-15 21:29:55 -05:00
bcambl
612d408034 replace echo with printf in install_dependent_packages()
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-10-14 20:16:40 -06:00
bcambl
a86f578139 replace echo with printf in checkSelinux()
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-10-14 20:06:23 -06:00
Adam Warner
5bac1ad58b backend changes to allow comment when adding new adlist
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-10-14 22:59:58 +01:00
bcambl
cf2b021502 linting: E302 expected 2 blank lines, found 1
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-10-14 13:29:43 -06:00
bcambl
cd9b1fcb8c update tests for SELinux changes
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-10-14 13:02:44 -06:00
bcambl
81ca78e7f4 exit installer if SELinux is enforcing
The Pi-hole project does not ship a custom SELinux policy as the required policy would lower the overall system security.
Users who require SELinux to be enforcing are encouraged to create an custom policy on a case-by-case basis.

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-10-14 12:25:24 -06:00
bcambl
fc0899b2ad fix fedora dependency check/install stdout
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-10-13 14:35:38 -06:00
Adam Warner
2e138eb99f Merge pull request #2954 from pi-hole/reetP-Patch
Update pihole
2019-10-06 19:10:05 +01:00
John Crisp
4f21f67775 Update pihole
Fix spelling typos
2019-10-06 15:09:14 +01:00
DL6ER
d883854aad Use constant for long path.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-10-03 12:12:32 +02:00
DL6ER
756c99653e Merge branch 'development' into new/internal-blocking 2019-10-03 12:01:27 +02:00
Mark Drobnak
3269c63f89 Merge pull request #2948 from pi-hole/fix/restart_lighttpd
Do not create empty regex.list file
2019-09-29 12:27:25 -04:00
DL6ER
149fb0c216 Do not install a blank regex file.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-29 18:03:37 +02:00
DL6ER
d244a018d0 Merge pull request #2944 from pi-hole/fix/vw_gravity_creation_v1
Fix gravity database table creation order
2019-09-26 14:27:05 +02:00
DL6ER
2e0370367c Print when we upgrade gravity database version. This will make possibly failed upgrades easier to debug.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-26 14:02:20 +02:00
DL6ER
3cb4f6d9d4 We cannot create vw_gravity before having created vw_whitelist as the former depends onthe later. This commit changes the order in which the tables are created.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-26 13:50:54 +02:00
Mark Drobnak
ae3b8be4d4 Merge pull request #2938 from pi-hole/release/v4.3.2
Release v4.3.2 merge to development for update.
2019-09-21 20:40:38 -04:00
Adam Warner
61a40c1b43 merge devel into 4.3.2 And Resolve merge conflicts
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-09-22 01:16:44 +01:00
DL6ER
a27c7b1398 regex white- and blacklist views need to be re-created as well as we need the ID for storing internally whether or not we try to match a given regex for a specific client.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-18 20:58:44 +02:00
DL6ER
a71f35d263 Merge pull request #2932 from pi-hole/fix/no-backup-no-error
Fix cross where there is no error
2019-09-17 23:51:46 +02:00
Adam Warner
9a6deb5a1a Fix tests
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-09-17 21:16:49 +01:00
DL6ER
f582344b9a "No default index.lighttpd.html file found... not backing up" is not an error.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-17 21:59:48 +02:00
Dan Schaper
e41c4b5bb6 Merge pull request #2881 from pi-hole/release/v4.3.2
Pi-hole Core v4.3.2
2019-09-15 08:52:21 -07:00
DL6ER
7b48431917 Add client_by_group table like we have for the other lists. It stores associations between individual clients and list groups.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-09 00:03:57 +02:00
Mark Drobnak
847c4f26aa Merge pull request #2916 from pi-hole/fix/disable-firefox-doh
Improve #2915
2019-09-07 17:58:02 -04:00
DL6ER
1f36ec48e3 Add use-application-dns.net = NXDOMAIN in ProcessDNSSettings rather than in the template so we can ensure that it will survive config-renewals.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-07 23:11:20 +02:00
DL6ER
ff08add7c0 Update vw_whitelist and vw_blacklist to return group_id alongside domain so we can filter if the current client wants to get this domain blocked or not.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-07 13:01:36 +02:00
DL6ER
b4131ae817 Merge pull request #2915 from pi-hole/new/disable-firefox-doh
Prevent Firefox from automatically switching over to DNS-over-HTTPS
2019-09-07 12:24:01 +02:00
DL6ER
ffc91a6c81 Update view vw_gravity to only return domains from enabled adlists.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-07 11:17:53 +02:00
DL6ER
525ec8cd01 Signal to Firefox that the local network is unsuitable for DNS-over-HTTPS
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-07 08:44:03 +02:00
Dan Schaper
b209629579 Merge pull request #2909 from pi-hole/fix/domains_in_comment
Print messages only after removing possible matches in comments
2019-09-05 21:30:34 -07:00
DL6ER
a8af2e1837 Store domains without sorting and unifying them first. This allows us to preserve the relationship of the individual domains to the lists they came from.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-04 23:14:29 +02:00
Mark Drobnak
93ecc046ea Merge pull request #2912 from pi-hole/tweak/RemoveAdblockSupport
Remove adblock list style support
2019-09-03 20:51:09 -04:00
Adam Warner
8bef5dc805 remove n from -ne
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-09-03 23:56:23 +01:00
Adam Warner
ad41bcca5a Remove support for adblock style lists to prevent false positives
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-09-03 23:43:11 +01:00
DL6ER
aed2e35bc0 Print messages only after removing possible matches in comments.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-02 22:39:28 +02:00
DL6ER
ab90ff565a Merge pull request #2903 from pi-hole/tweak/store-gravity-timestamp
Store timestamp when the gravity table was last updated successfully
2019-09-01 19:05:46 +02:00
DL6ER
ca8982494b Store timestamp when the gravity table was last updated successfully. This fixes https://github.com/pi-hole/AdminLTE/issues/989
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-09-01 14:42:07 +02:00
DL6ER
a7b44426cd Merge pull request #2838 from pi-hole/new/whitelist-regex-support
Whitelist regex support
2019-09-01 14:23:37 +02:00
Mark Drobnak
e7af42a9f8 Merge pull request #2897 from pi-hole/fix/readOnlyBin
Remove readonly attribute of the PI_HOLE_BIN_DIR declaration in pihole
2019-08-31 14:07:58 -04:00
Dan Schaper
b9fed8fca6 Merge pull request #2891 from niklasea/development
Restore 'pihole -q' hosts format support and improve matching in edge cases
2019-08-30 20:56:52 -07:00
Adam Warner
79b8dac0fa Remove readonly attribute of the PI_HOLE_BIN_DIR declaration in pihole
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-08-30 22:06:14 +01:00
DL6ER
d8eee47ca4 Add dhcp-ignore-names option when enabling DHCP service. We currently remove anything that starts with "dhcp-" to have a clean configuration and removed these lines without noticing when enabling the DHCP server.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-28 22:10:26 -07:00
Niklas Elmose Andersen
a3e32d9a15 Properly escape domain regex
Dots in domain names should not match any character.

Signed-off-by: Niklas Elmose Andersen <mail@niklasea.dk>
2019-08-27 12:13:28 +02:00
Niklas Elmose Andersen
989d1aff60 Restore and improve 'pihole -q' matching
Removes regex lookaround which 'grep -E' does not support.
Restores support for blocklists in hosts format.
Simplifies domain match cleanup logic by eliminating an if-condition.
Improves domain matching by eliminating commented domain names,
eliminating false positives in a few edge cases.

Signed-off-by: Niklas Elmose Andersen <mail@niklasea.dk>
2019-08-26 20:39:56 +02:00
Mark Drobnak
95b2560a08 Merge pull request #2874 from snapsl/tweak/webpage-shellcheck
tweaked webpage.sh
2019-08-26 10:56:38 -04:00
Dan Schaper
76133074d1 Merge pull request #2886 from pi-hole/fix/fullpath
Call 'pihole' with full path in install and cronjobs.
2019-08-25 15:38:19 -07:00
Dan Schaper
4cfe463dfa Add back dropped binary call.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-08-24 04:57:23 -07:00
Dan Schaper
03c65dd0e9 Convert hardcoded /usr/local/bin to variable
Update pihole script with full path to 'pihole'

Variable for webpage.sh 'pihole' call.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-08-24 04:49:14 -07:00
DL6ER
6faddfcd3d Print timestamps in local time zone of the Pi-hole.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-23 10:09:52 +02:00
DL6ER
1820c2c598 Merge branch 'development' into new/whitelist-regex-support
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-22 14:19:51 +02:00
DL6ER
23b688287f Fix indentation in query.sh. No functional change in this commit.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-22 14:12:58 +02:00
DL6ER
42ccc1ef24 Add support for regex whitelist in "pihole -q".
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-22 14:06:42 +02:00
DL6ER
aef7892de6 Add missing hyphens.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-22 13:57:01 +02:00
DL6ER
cc40c18f49 Wrap upgrade script commands in a transaction.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-22 13:54:46 +02:00
DL6ER
b1838512b2 Explicitly select columns (and their order) when listing the databaes tables. Print timestamps translated to strings instead of printing the integer timestamps.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-22 13:39:58 +02:00
Dan Schaper
1c50caa8ca Merge pull request #2882 from pi-hole/fix/FTL-latest-tag-not-found
Fix error when getting latest FTL tag
2019-08-21 15:31:04 -07:00
Mcat12
febdbceab1 Fix error when getting latest FTL tag
The headers containing the latest FTL tag were not properly input to the
command (`<` vs `<<<`). This caused Bash to try and open the file named
after the header string, which does not exist.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 10:03:54 -04:00
Mark Drobnak
597b4bfcca Merge pull request #2873 from pi-hole/fix/pihole_restartdns
Simplify restarting code for "pihole restartdns"
2019-08-21 08:57:44 -04:00
Dan Schaper
5c65006a66 Merge base branch changes
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-08-21 05:20:10 -07:00
David Haguenauer
34727c00c6 Drop indirection from install_dependent_packages
Previously, install_dependent_packages would receive an array variable
name as its single parameter, and would use variable indirection to
access it; this change simplifies that function so that it instead
receives the expanded array.

Signed-off-by: David Haguenauer <ml@kurokatta.org>
2019-08-21 04:41:45 -07:00
Andreas Kurth
352146ef92 Fix pihole manpage to match code.
The dry-run argument to pihole -up is "--check-only", not "--checkonly".

Signed-off-by: Andreas Kurth <github@akurth.de>
2019-08-21 04:39:13 -07:00
Mcat12
b107ae2ab9 Use the filtered IPv6 OpenDNS servers
The ones we were using previously were not filtered. See
https://support.opendns.com/hc/en-us/articles/227986667-Does-OpenDNS-Support-IPv6-

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:39:10 -07:00
Mcat12
d5d1a607ad Fix PKG_REMOVE array usage
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:39:07 -07:00
Mcat12
2594164772 Use an array for PKG_REMOVE
Fixes shellcheck warning.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:39:05 -07:00
Mcat12
209555c42e Fix uninstall causing 403 errors and not removing packages
The 403 lighttpd errors were caused by removing the lighttpd config
directory and not removing lighttpd itself. This caused a subsequent
Pi-hole reinstall to not have all of the required lighttpd config files.

The error while removing packages was caused by combining arguments into
a string instead of listing each argument.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:39:01 -07:00
DL6ER
e27f50b8e5 Try to obtain PID from PIDFILE. If this fails (file does not exist or is empty), fall back to using pidof + awk
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-21 04:38:58 -07:00
DL6ER
484f618685 Use last PID in case pidof returns multiple PIDs for pihole-FTL
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-21 04:38:55 -07:00
Mcat12
da398c3d9c Print an error message if the FTL release metadata download fails
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:38:51 -07:00
Mcat12
4e0ad52001 Fix ShellCheck issue by refactoring a bit
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:38:24 -07:00
Mcat12
c9829dd3e4 Fix pihole -up showing FTL update when network is down
Fixes #1877

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-21 04:38:04 -07:00
Dan Schaper
35cf863f4b Create FUNDING.yml
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-08-21 04:38:01 -07:00
Andreas
c53be459c6 quick fix for when dig also returns a CNAME
Signed-off-by: Andreas <ryrun@online.de>
2019-08-21 04:37:06 -07:00
B. Olausson
ab1ea5a366 This change fixes issue #145 "stty: standard input: Inappropriate ioctl for device ".It checks if a real terminal exist, if not it sets the screen size to a fixed value. This helps to avoid nasty and unnecessary logs when running "pihole -up" via e.g. cron.
Signed-off-by: B. Olausson <contactme@olausson.de>
2019-08-20 14:48:03 -07:00
bcambl
97e11bd94e ensure installation dependencies for FTL tests which rely on /etc/init.d
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-08-20 11:42:12 -07:00
bcambl
10de7f649b add chkconfig to INSTALLER_DEPS (CentOS/Fedora)
chkconfig is a dependency of spawn-fcgi which is a dependency of lighttpd which is installed via PIHOLE_WEB_DEPS in phase 2
adding chkconfig to INSTALLER_DEPS to ensure /etc/init.d is present during the installation prompts (phase 1)

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-08-20 11:42:09 -07:00
bcambl
d793ef1ab8 Merge conflict Fedora Dockerfile for tests pinned to 30
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-08-20 11:40:18 -07:00
Jeroen Baert
d3d45a8776 Fix 404 error when browsing to pi.hole (without /admin) (for fedora)
Signed-off-by: Jeroen Baert <3607063+Forceflow@users.noreply.github.com>
2019-08-20 11:29:20 -07:00
Jeroen Baert
9f86fd0cb4 Fix for 404 error when browsing to pi.hole (without /admin)
Signed-off-by: Jeroen Baert <3607063+Forceflow@users.noreply.github.com>
2019-08-20 11:29:17 -07:00
Mcat12
71d5b42726 Remove the ZeusTracker blocklist from the defaults
It is no longer served. Fixes #2843.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-08-20 11:05:06 -07:00
DL6ER
3e78ed95d4 Fix displaying options for table "group" in the debugger.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-17 15:04:04 +02:00
snapsl
20a839fef5 fixed local declaration before assignment
Signed-off-by: snapsl <chris.baller@gmx.de>
2019-08-15 11:20:55 +02:00
snapsl
b2d8c4374b tweaked code style of webpage.sh
Signed-off-by: snapsl <chris.baller@gmx.de>
2019-08-14 23:28:13 +02:00
DL6ER
251c9fee98 Simplify restarting code for "pihole restartdns". This fixes #2869.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-14 21:14:55 +02:00
Mark Drobnak
9f77810ca8 Merge pull request #2774 from pi-hole/meta/funding
Create FUNDING.yml
2019-08-12 10:30:33 -04:00
DL6ER
dc93462d42 Group table has only two columns
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-06 20:28:00 +02:00
DL6ER
4371c9ba03 Ensure proper permissions are set for gravity.db after creation.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-05 21:20:07 +02:00
DL6ER
6e2e825a5f Rename options "pihole --whiteregex" to "pihole --white-regex" for the sake of readability. The same applied for "whitewild" -> "white-wild"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-05 21:10:52 +02:00
DL6ER
af754e3fc4 Rearrange group tables directly next to the tables they refer to.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-05 21:08:36 +02:00
DL6ER
06860ed5b4 Group tables have only two columns.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-05 21:07:39 +02:00
DL6ER
09190c1735 Only check once for if this is a regex list or not.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-05 21:03:47 +02:00
DL6ER
a95b473417 Rearranage if statements to ensure the proper output is shown for wildcard-style filters.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-08-05 20:56:01 +02:00
Mark Drobnak
56e3565a9e Merge pull request #2865 from ryrun/patch-1
quick fix for when dig also returns a CNAME
2019-08-05 10:58:27 -04:00
Andreas
63230cb72d quick fix for when dig also returns a CNAME
Signed-off-by: ryrun <ryrun@online.de>
2019-08-04 21:21:08 +02:00
Mark Drobnak
f81e57d5b8 Merge pull request #2862 from bolausson/mybranch
Check if TTY exist before we get screen size - Second PR try
2019-07-30 14:58:56 -04:00
B. Olausson
ecd6817aaf This change fixes issue #145 "stty: standard input: Inappropriate ioctl for device ".It checks if a real terminal exist, if not it sets the screen size to a fixed value. This helps to avoid nasty and unnecessary logs when running "pihole -up" via e.g. cron.
Signed-off-by: B. Olausson <contactme@olausson.de>
2019-07-29 19:48:56 +01:00
DL6ER
6f58d58cae Add --whitewild to help texts and man pages.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-22 22:26:27 +02:00
DL6ER
40d0caa70b Add undocumented --whitewild option that does the same --wild does for the whitelist.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-22 21:15:28 +02:00
DL6ER
0692be9bae Fix small mistake in 2->3 upgrade script.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-22 20:59:52 +02:00
DL6ER
0d28dce326 Print group table contents in debug log.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-22 20:18:15 +02:00
DL6ER
96031214c6 Add support for whitelist regex filter management via CLI.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-22 19:36:11 +02:00
Mark Drobnak
3420439f31 Merge pull request #2820 from pi-hole/fix/ftl-update-no-network
Fix pihole -up showing FTL update when network is down
2019-07-20 14:55:48 -04:00
Mark Drobnak
ab3f6dfcc6 Merge pull request #2831 from pi-hole/fix/block-page-adlists
Fix block page errors due to gravity DB and changes to queryAds
2019-07-20 14:55:37 -04:00
Mcat12
3ebd43ebf0 Remove outdated adlists.list check and fix empty adlists error message
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-19 17:39:00 -07:00
Mcat12
38ff343134 Print an error message if the FTL release metadata download fails
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-19 17:35:21 -07:00
Mark Drobnak
6a8d3100d2 Merge pull request #2846 from pi-hole/fix/zeus-dead-adlist
Remove the ZeusTracker blocklist from the defaults
2019-07-18 13:43:57 -04:00
Mcat12
c3ec2e68ad Remove the ZeusTracker blocklist from the defaults
It is no longer served. Fixes #2843.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-12 20:03:36 -07:00
Mark Drobnak
bfe714e985 Merge pull request #2840 from pi-hole/fix/valid_ip-quote-error
Fix error when checking if IP address is valid
2019-07-11 23:06:39 -04:00
Mcat12
1d5755a4c2 Add tests for valid_ip
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-10 21:18:58 -07:00
Mark Drobnak
445127accc Merge pull request #2832 from pi-hole/new/audit_database
Migrate audit list to gravity.db database table
2019-07-10 22:55:48 -04:00
Mcat12
c156af020c Use suggested array creation to fix linter error
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-10 19:52:17 -07:00
Mark Drobnak
fa8751f9ad Fix error when checking if IP address is valid
During install in `valid_ip`, we split up the IP address into octets to verify it is valid (each is <= 255).

This validation was broken in #2743 when a variable usage was quoted where it should have stayed unquoted:
```
./automated install/basic-install.sh: line 942: [[: 192.241.211.120: syntax error: invalid arithmetic operator (error token is ".241.211.120")
```

Due to this error, `127.0.0.1` would be used instead of the requested IP address. Also, this prevented the user from entering a custom DNS server as it would be marked as an invalid IP address.

Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2019-07-10 19:42:51 -07:00
DL6ER
420f60b5c7 Add timeout to migration script (1->2).
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-10 12:02:07 +02:00
DL6ER
65fdbc85d5 Add timeout to migration script (2->3).
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-10 12:01:38 +02:00
DL6ER
87f75c737a Review comments.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-10 12:00:38 +02:00
DL6ER
5ff9052200 Review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-09 11:41:44 +02:00
DL6ER
9641e268ea Merge pull request #2837 from pi-hole/fix/debug-use-FTL-file-locations
Get file locations of FTL files from the config
2019-07-09 07:54:57 +02:00
Mcat12
b154dd5f07 Quote calls to read FTL config
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-08 19:48:50 -07:00
DL6ER
0683842ec3 Fix typo in 2->3 migration script.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-08 21:43:49 +02:00
DL6ER
f5121c64be We should still add the regex lines (initially) to the regex table as the renaming will happen only after the importing.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-08 21:39:30 +02:00
DL6ER
054c7a2c05 Create new table + view regex_whitelist + rename old regex table to regex_blacklist. This updates the gravity.db version to 3.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-08 21:35:31 +02:00
DL6ER
3d3fc2947e Review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-08 19:22:35 +02:00
Mcat12
e8e5d4afda Get file locations of FTL files from the config
Instead of hardcoding the location of certain FTL files (`gravity.db`,
`pihole-FTL.log`), read the configured location from FTL's config. The
default location is used if no custom location has been configured.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-07 18:10:39 -07:00
DL6ER
8382f4d727 Rename table to domain_audit and simplify subroutine addAudit().
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-07 21:21:56 +02:00
DL6ER
be3e198f9a Address linting errors.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-07 10:46:20 +02:00
DL6ER
acc50b709e Only migrate files once (domain and adlist lists druing initial creation of gravity.db auditlog.list on database upgrade from version 1 to 2.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-07 10:33:08 +02:00
Mark Drobnak
5a6763f90d Merge pull request #2833 from bcambl/fedora30_tests
Fedora 30 tests
2019-07-06 19:27:02 -04:00
bcambl
218476fab0 ensure installation dependencies for FTL tests which rely on /etc/init.d
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-07-06 11:06:08 -06:00
bcambl
ec850dc820 add chkconfig to INSTALLER_DEPS (CentOS/Fedora)
chkconfig is a dependency of spawn-fcgi which is a dependency of lighttpd which is installed via PIHOLE_WEB_DEPS in phase 2
adding chkconfig to INSTALLER_DEPS to ensure /etc/init.d is present during the installation prompts (phase 1)

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-07-06 10:58:19 -06:00
bcambl
c48b03584f update Fedora Dockerfile to 30
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-07-06 10:57:57 -06:00
DL6ER
efe8216445 Fix further stickler complaint.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-06 09:45:07 +02:00
DL6ER
0405aaa3da Review comments and fixing stickler complaints.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-06 09:32:41 +02:00
Mark Drobnak
6bb213e56f Merge pull request #2826 from Forceflow/development
Fix for 404 error when browsing to pi.hole (without /admin)
2019-07-05 17:18:50 -04:00
DL6ER
2fb4256f84 Rename table to "auditlist"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-05 16:28:36 +02:00
DL6ER
82476138c1 Instead of calling sqlite3 multiple times within a loop, we use the ability to add multiple rows within one INSERT clause. This is supported since sqlite3 3.7.11 (2012-03-20) and should be available on all systems.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-05 16:09:13 +02:00
DL6ER
5293beeb77 Update audit script to store domains in new database table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-05 14:10:33 +02:00
DL6ER
0c8f5f1221 Remove comment field from audit table
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-05 14:06:05 +02:00
DL6ER
4f4a12bb40 Upgrade database if necessary and store audit domains therein.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-05 14:03:57 +02:00
DL6ER
1dbe6c83c3 Add database upgrading mechanism for adding the audit table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-05 13:54:18 +02:00
Mcat12
2b5033e732 Add missing spaces found by linter
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-04 13:49:39 -07:00
Mcat12
8d9ff550d4 Fix blockpage error if whitelisted, blacklisted, or regex filtered
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-04 13:44:14 -07:00
Mcat12
f1733f9c5d Fetch adlists for the block page from gravity.db
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-07-04 13:11:46 -07:00
Mark Drobnak
92c3c86be4 Merge pull request #2769 from pi-hole/new/arp-flush
Add new "pihole arpflush" command
2019-07-04 14:00:16 -04:00
Mark Drobnak
ada8b53423 Merge pull request #2803 from pi-hole/new/gravity.db_domain_groups
Implement groups for lists
2019-07-04 13:52:52 -04:00
DL6ER
7a1b6fd205 Merge branch 'development' into new/gravity.db_domain_groups 2019-07-03 19:21:55 +02:00
DL6ER
b78cbb98d8 Merge pull request #2830 from mmotti/fix/regexp_query
Fix potential invalid result for pihole -q
2019-07-03 19:16:04 +02:00
MMotti
04abcb71f6 Fix potential invalid result for pihole -q
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-07-03 13:04:57 +01:00
DL6ER
1fe3507bc5 Adlists table was renamed to Adlist. Adapt further places in the code to match the new name.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-03 07:56:10 +02:00
Jeroen Baert
9fedafed15 Fix 404 error when browsing to pi.hole (without /admin) (for fedora)
Signed-off-by: Jeroen Baert <3607063+Forceflow@users.noreply.github.com>
2019-07-03 04:28:44 +02:00
DL6ER
23b3a9a650 Add DISTINCT to the view\'s SELECT queries to avoid domain duplication in case they are enabled in multiple groups at the same time.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-07-01 09:44:20 +02:00
Jeroen Baert
7b2ac25a52 Fix for 404 error when browsing to pi.hole (without /admin)
Signed-off-by: Jeroen Baert <3607063+Forceflow@users.noreply.github.com>
2019-07-01 03:42:02 +02:00
DL6ER
f91421418a Rename adlists -> adlist table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 23:21:10 +02:00
DL6ER
3a14e8b013 Check whitelist_by_group.group_id instead of group.enabled against NULL.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 23:20:13 +02:00
DL6ER
ad97e95f2f Add required name column in group table.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 23:06:15 +02:00
DL6ER
5b01facd73 Fix logix on the views: AND ( OR )
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 20:03:22 +02:00
DL6ER
6fe637b9ee Rename groups -> group
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 19:43:18 +02:00
DL6ER
94d83dbb2d Unify the two group tables into a single "groups" table. This allows managing adlists and domains together.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 19:33:02 +02:00
Mark Drobnak
c9a843b417 Merge pull request #2823 from pi-hole/fix/lighttpd-mime
Update with v4.3.1 changes
2019-06-30 13:27:55 -04:00
Mark Drobnak
b986c5585d Merge pull request #2822 from akurth/development
Fix pihole manpage to match code.
2019-06-30 13:11:20 -04:00
DL6ER
87c115fc86 Change implementation to use linking tables (domain_groups, adlists_groups). This allows adding domains to multiple lists conveniently.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-30 19:04:38 +02:00
Andreas Kurth
acee97916e Fix pihole manpage to match code.
The dry-run argument to pihole -up is "--check-only", not "--checkonly".

Signed-off-by: Andreas Kurth <github@akurth.de>
2019-06-30 08:02:51 +02:00
Mark Drobnak
1a741f696e Merge pull request #2816 from RamSet/hotfix/lighttpdMime
Fix lighttpd mime
2019-06-29 15:45:33 -04:00
Mcat12
37e7cd5211 Fix ShellCheck issue by refactoring a bit
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-28 21:19:07 -07:00
Mcat12
91a2d052a7 Fix pihole -up showing FTL update when network is down
Fixes #1877

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-28 20:49:56 -07:00
Mark Drobnak
06134d3ffc Merge pull request #2817 from pi-hole/tweak/gravity_db_timeout
Add timeout to sqlite3 command
2019-06-27 17:34:34 -04:00
Mark Drobnak
092957c14a Merge pull request #2808 from pi-hole/fix/uninstall
Fix uninstall causing 403 errors and not removing packages
2019-06-27 12:51:07 -04:00
DL6ER
d5e8f1a781 Add 10 seconds timeout to the sqlite3 command that writes tables to the gravity database. This prevents gravity from failing when the database file is locked for a short time.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-26 18:20:36 +02:00
RamSet
b5af125be6 Removed line
Signed-off-by: RamSet <RamSet@gmail.com>
2019-06-25 15:45:01 -06:00
RamSet
ecc49318f0 Fixed MIME related issue present in lighttpd/1.4.53
Signed-off-by: RamSet <RamSet@gmail.com>
2019-06-25 15:45:01 -06:00
Mcat12
974bba4a45 Fix PKG_REMOVE array usage
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-17 16:30:26 -07:00
Mcat12
951732fc1b Use an array for PKG_REMOVE
Fixes shellcheck warning.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-17 16:28:55 -07:00
Mcat12
b6700924b2 Fix uninstall causing 403 errors and not removing packages
The 403 lighttpd errors were caused by removing the lighttpd config
directory and not removing lighttpd itself. This caused a subsequent
Pi-hole reinstall to not have all of the required lighttpd config files.

The error while removing packages was caused by combining arguments into
a string instead of listing each argument.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-17 16:13:31 -07:00
DL6ER
5d43639e93 Merge branch 'development' into new/arp-flush 2019-06-16 20:21:03 +02:00
DL6ER
27e4208631 Merge branch 'development' into new/gravity.db_domain_groups 2019-06-16 20:20:27 +02:00
DL6ER
b505ad22e6 Merge pull request #2806 from pi-hole/fix/fedora-ci-tests
Pin the Fedora test docker container to 29
2019-06-16 20:19:44 +02:00
Mcat12
d67122dffc Pin the Fedora test docker container to 29
The tests are currently failing due to a change in Fedora 30, which we
are not currently supporting.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-16 11:13:23 -07:00
DL6ER
0774c4e5ca vw_gravity should actually filter using vw_whitelist.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-16 18:52:23 +02:00
DL6ER
01850c2128 Automatically recreate standard group after deletion to avoid violating foreign key constraints even if foreign key enforcing is disabled (SQLite's default behavior)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-16 17:15:36 +02:00
DL6ER
cbc210b014 Add adlist_groups and mark group_id columns as NOT NULL.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-16 17:05:33 +02:00
DL6ER
c53ee4202b Add filtering by domain groups to gravity database.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-16 16:50:51 +02:00
DL6ER
f2be12f97b Merge pull request #2796 from pi-hole/tweak/opendns-ipv6
Use the filtered IPv6 OpenDNS servers
2019-06-16 14:56:00 +02:00
DL6ER
6996ffa451 Also flush network_addresses table
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-15 09:15:12 +02:00
DL6ER
435a5fb3ad Add pihole arpflush to man page.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-15 09:12:44 +02:00
DL6ER
4947350ca5 Add arpflush to help and bash autocompletion
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-06-15 09:08:33 +02:00
DL6ER
c1495b0fa8 Merge branch 'development' into new/arp-flush 2019-06-15 09:04:30 +02:00
Mark Drobnak
67dda9c8bb Merge pull request #2790 from mmotti/tidy/query
Small changes to regexp querying
2019-06-13 20:32:42 -04:00
Mcat12
c8987e20c2 Use the filtered IPv6 OpenDNS servers
The ones we were using previously were not filtered. See
https://support.opendns.com/hc/en-us/articles/227986667-Does-OpenDNS-Support-IPv6-

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-06-12 19:13:29 -07:00
MMotti
bcf03647ef Add comment and remove blankspace
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-12 16:02:59 +01:00
MMotti
a9d0690f4d Change the case of some variables
Just for consistency

Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-10 18:50:52 +01:00
MMotti
10fbed50f3 Shellcheck
Suggesting to use parameter expansion but we need to be able to identify the start of each line

Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-10 18:10:25 +01:00
MMotti
785f1fedd9 Tidy regexp queries
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-10 17:52:58 +01:00
Mark Drobnak
b0c5dcf42f Merge pull request #2780 from mmotti/fix/regexp_query
Fix for regexp queries through pihole -q
2019-06-05 13:19:39 -04:00
MMotti
cf21efa103 Minor grammar changes
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-05 14:36:43 +01:00
MMotti
7613e94ef6 Minor tweaks
Mainly for consistency

Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-04 06:06:17 +01:00
MMotti
b49c702f33 Consistency tweak
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-04 00:03:37 +01:00
MMotti
09532638d5 Read from DB instead of regex.list
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-04 00:00:25 +01:00
MMotti
97df6d7415 Stickler fix
Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-03 19:56:10 +01:00
MMotti
54bfaa28c1 Fix for regexp queries through pihole -q
Taking inspiration from: https://github.com/pi-hole/pi-hole/pull/2346

We will use awk to iterate through each regexp and print any that match the domain query.

Signed-off-by: MMotti <matthew.w.motti@gmail.com>
2019-06-03 19:32:59 +01:00
Dan Schaper
a09f92f9cc Create FUNDING.yml
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-05-31 22:12:54 -07:00
Mark Drobnak
afd28fab03 Merge pull request #2767 from pi-hole/fix/multiple_pihole-FTL_PIDs
Improve PID detection in pihole-FTL.service
2019-06-01 01:03:55 -04:00
Mark Drobnak
d92ced6fb6 Merge pull request #2734 from pi-hole/fix/query_black_and_whitelists_database
Query black and whitelists database
2019-06-01 00:55:05 -04:00
DL6ER
ae98fde321 Try to obtain PID from PIDFILE. If this fails (file does not exist or is empty), fall back to using pidof + awk
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-31 09:18:12 +02:00
DL6ER
9ddce88092 Review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-31 08:42:22 +02:00
DL6ER
44f8fcb600 We can print the table name without any extra check as we already returned early in case there are no results.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-31 08:39:18 +02:00
Mark Drobnak
814fdcf9b6 Merge pull request #2768 from pi-hole/fix/dhcp-ignore-names
Add dhcp-ignore-names option when enabling DHCP service
2019-05-30 22:35:52 -04:00
DL6ER
5060605626 Print table name before entering the loop for the sake of simplicity
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-30 21:44:59 +02:00
DL6ER
453ba14cbd Merge pull request #2758 from pi-hole/fix/debug-log-gravity-database
Update debug script with gravity DB changes
2019-05-30 21:37:49 +02:00
DL6ER
285e6fe090 Address lint complaints
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-30 21:32:35 +02:00
DL6ER
c3023fe681 Add new "pihole arpflush" command to flush both the ARP cache as well as the network table in pihole-FTL.db
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-30 21:25:10 +02:00
DL6ER
c5df104a66 Add dhcp-ignore-names option when enabling DHCP service. We currently remove anything that starts with "dhcp-" to have a clean configuration and removed these lines without noticing when enabling the DHCP server.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-30 16:41:37 +02:00
DL6ER
f6213d4f4d Use last PID in case pidof returns multiple PIDs for pihole-FTL
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-30 15:26:27 +02:00
Mark Drobnak
ca2ea388b7 Merge pull request #2763 from chrisys/development
Handle an empty local.list
2019-05-27 16:06:25 -04:00
Chris Crocker-White
69dba022c4 Handle an empty local.list
Handle the case of an empty local.list file which would otherwise prevent the system from starting

Change-type: patch
Signed-off-by: Chris Crocker-White <chriscw@balena.io>
2019-05-27 10:27:28 -07:00
Mcat12
bfb99c361c Note that the gravity size does not include the blacklist entries
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-21 17:12:47 -07:00
Mcat12
5796054305 Increase ID column width to 4
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-20 21:59:18 -07:00
Mcat12
a3e1473ac1 Set explicit column widths to prevent text from getting cut off
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-20 21:33:09 -07:00
Mcat12
7b5fc60e00 Improve table formatting
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-20 21:20:38 -07:00
Mcat12
807ce0af4e Show whitelist, blacklist, and regexlist details
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-20 21:15:22 -07:00
Mcat12
3f05efd60f Add extra newline
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-20 21:02:31 -07:00
Mcat12
03d93aa19a Update debug script with gravity DB changes
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-20 20:58:57 -07:00
DL6ER
cad9386ff6 Merge pull request #2750 from pi-hole/release/v4.3
Update Dev with v4.3 fixes
2019-05-19 19:42:29 +02:00
Dan Schaper
7de6bbca61 Merge branch 'development' into release/v4.3 2019-05-18 13:18:14 -07:00
Mark Drobnak
1d43c0a2fa Merge pull request #2693 from pi-hole/release/v4.3
Pi-hole Core v4.3
2019-05-18 16:08:49 -04:00
Mark Drobnak
c8d32e0dd3 Merge pull request #2743 from haguenau/fix/shellcheck-install-script
Clean up basic install script
2019-05-16 23:22:01 -04:00
David Haguenauer
be3a21ae07 Put quotes at ends of strings
Signed-off-by: David Haguenauer <ml@kurokatta.org>
2019-05-14 15:20:28 -04:00
David Haguenauer
69081a9175 Drop indirection from install_dependent_packages
Previously, install_dependent_packages would receive an array variable
name as its single parameter, and would use variable indirection to
access it; this change simplifies that function so that it instead
receives the expanded array.

Signed-off-by: David Haguenauer <ml@kurokatta.org>
2019-05-14 15:20:28 -04:00
David Haguenauer
ab2f8a0c09 Quote variables in basic-install.sh
This greatly reduces the number of warnings emitted by ShellCheck, and
in turn should make it more likely that errors are caught in the
future.

Signed-off-by: David Haguenauer <ml@kurokatta.org>
2019-05-14 15:20:28 -04:00
Mark Drobnak
b961a501bb Merge pull request #2611 from pi-hole/new/gravitydb
Store blocking domains in a database
2019-05-12 18:46:47 -04:00
Mcat12
8e1bf6e3d4 Merge branch 'development' into new/gravitydb
# Conflicts:
#	advanced/Scripts/list.sh
#	gravity.sh
#	pihole
2019-05-12 15:20:52 -07:00
Mark Drobnak
d6756eb46b Merge pull request #2730 from pvogt09/development
Adds world readable attribute to files created by Pi-hole to circumve…
2019-05-12 15:44:20 -04:00
pvogt09
efbd42f7b5 Moves creation of pihole user before FTL installation
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-12 11:27:25 +02:00
pvogt09
3f90261520 Moves chmod after every creation of ${destination} instead of end of function
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-12 11:25:48 +02:00
Mark Drobnak
ff5894d772 Merge pull request #2744 from pi-hole/fix/cron-job-errors-untagged
Fix for preventing git error message in cron logs
2019-05-11 22:59:32 -04:00
pvogt09
225285cb97 Removes chmod for ${source} and superfluous chmod for ${destination}
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-11 11:14:07 +02:00
mpiederiet
3220e2b978 Fix for preventing git error message in cron logs
Fix to prevent "fatal: No names found, cannot describe anything" git message during scheduled update checks

Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-11 10:57:44 +02:00
DL6ER
54ae458b61 Merge pull request #2733 from pi-hole/fix/debug-curl
Pi-hole Debug - tricorder upload function calls
2019-05-11 10:54:30 +02:00
pvogt09
e076db5a4e Changes ownership of macvendor.db to pihole
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-10 11:19:28 +02:00
pvogt09
a3d2a1062f Makes blocklists world readable
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-10 11:13:19 +02:00
pvogt09
2e6198077d chmod 644 adlists.list
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-09 12:23:44 +02:00
Mark Drobnak
55ab3b2dc7 Merge pull request #2739 from pi-hole/new/stickermule_reflink
README StickerMule URL
2019-05-07 23:26:20 -04:00
Mark Drobnak
bdc8cf2bc8 Merge pull request #2738 from pi-hole/fix/untagged_version_fresh_install
Fix Untagged display on new installs
2019-05-07 23:25:33 -04:00
Dan Schaper
74836bebe4 README StickerMule URL
Change StickerMule reflink to Team Pi-hole link.
2019-05-07 11:10:51 -07:00
DL6ER
95150a5d85 Clone twenty instead of only one commit when installing Pi-hole. This ensures that we clone at least one tagged commit in case we need to push changes to master.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-07 19:42:11 +02:00
pvogt09
4d23b3267f Adds X to chmod for git operations
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-07 10:46:16 +02:00
pvogt09
e19adccd9c Moves chmod for /var/www/html into INSTALL_WEB_SERVER block
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-05 22:34:13 +02:00
pvogt09
a25f331e83 Adds chmod 644 for /var/www and /var/www/html
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-05 09:20:49 +02:00
pvogt09
69c06ba6fe Sets permissions for dnsmaq.conf
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-05 00:32:10 +02:00
DL6ER
8abeb2204b Merge pull request #2735 from pi-hole/fix/gravity-blocked-domain
Fix incorrect adlist query when an adlist is blocked during gravity
2019-05-04 23:14:49 +02:00
Mcat12
ec06fd0ad4 Fix incorrect adlist query when an adlist is blocked during gravity
hosts-file.net was hard-coded as the domain to check instead of the
actual domain.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-05-04 11:35:21 -07:00
DL6ER
a904c183df Use printf to escape domain content. This prevents possible SQL injection issues
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-04 18:25:11 +02:00
DL6ER
5246b3e496 Explicitly escape backslash in ESCAPE clause. This has been suggested by Stickler bot.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-04 13:24:36 +02:00
DL6ER
f80fdd7e83 Improve comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-04 13:19:50 +02:00
DL6ER
6ba58896d2 Simplify code
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-04 13:15:30 +02:00
DL6ER
3aa838bbe4 Implement black- and whitelist searching with SQL statements. We use the ESCAPE clause in the LIKE query as the underscore "_" wildcard matches any single character but we want to suppress this behavior (underscores can be legitimate part of domains)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-04 13:02:14 +02:00
pvogt09
2c3a27e9c7 Replaces cp chmod with install and add read permission to repository files after checkout and pull
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-03 12:27:56 +02:00
Dan Schaper
5532df24e4 Pi-hole Debug - tricorder upload function calls
Fix tricorder upload function calls to use new curl function.
2019-05-03 02:46:27 -07:00
Dan Schaper
b3898b9b2a Merge pull request #2732 from pi-hole/dschaper-patch-1
Update cryptocoin addresses
2019-05-03 02:42:41 -07:00
Dan Schaper
9ce84714cd Update cryptocoin addresses
We no longer have access to the old coinbase account. Updating to new Coinbase Commerce account.
2019-05-02 18:08:10 -07:00
DL6ER
0bc112ce52 Query only those columns we actually use when showing domains on the CLI. Show date of last modification instead of addition date for domains.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-02 17:11:39 +02:00
DL6ER
d46ff1d2d7 Remove UNIQUE on gravity table as the only column is already PRIMARY KEY. Primary keys must contain UNIQUE values, and cannot contain NULL values
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 22:08:30 +02:00
DL6ER
0cfecd31d3 Invert logic to reduce nesting
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 22:07:14 +02:00
DL6ER
008e88b84b Only migrate legacy list files when we create gravity.db in the same gravity run
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 18:04:31 +02:00
DL6ER
2f698904e4 Use PRIMARY KEY instead of NOT NULL also in gravity and info tables
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 18:03:35 +02:00
DL6ER
106f079afc Improve indentation (single tab) in SQLite template
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 17:57:23 +02:00
DL6ER
6c1e3a17f7 Remove NOT NULL constraint on list ids as this is implied by PRIMARY KEY (even though most, if not all, examples on the web still use both attributes at the same time)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 17:54:29 +02:00
DL6ER
540c57f755 Add comment for automigrated list entries
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 17:51:25 +02:00
DL6ER
5e26e8245b Order results of queries to list views by id key
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 17:51:10 +02:00
DL6ER
983117d788 Add id (primary key, autoincrement) field to lists tables
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 17:47:15 +02:00
DL6ER
b372f808dd Fix lint errors
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 17:06:14 +02:00
DL6ER
bc9b623638 Modify query.sh to use the gravity database
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 16:56:16 +02:00
DL6ER
d5781fb110 Fix extra space in front on END statement in CREATE TRIGGER commands
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 16:38:41 +02:00
DL6ER
487718512d Remove DISTINCT attribute from views. They are not needed as the corresponding data is obtained from fields with UNIQUE attribute so duplications are already prevented at domain insertion. The elimination of the duplication check on imort through the views slightly reduces the load during import (I observed about 8 percent time saved on my NanoPi NEO).
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-05-01 16:37:23 +02:00
pvogt09
8a92fb24c4 Incorporates changes requested by @Mcat12
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-05-01 11:20:26 +02:00
pvogt09
5c575e73c7 Adds world readable attribute to files created by Pi-hole to circumvent #2724
Signed-off-by: pvogt09 <50047961+pvogt09@users.noreply.github.com>
2019-04-30 22:41:12 +02:00
DL6ER
2180531a84 Add trigger for automatic updates of the date_modified column and improve formating in the gravity.db template
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-29 19:43:35 +02:00
Mark Drobnak
6812e8880e Merge pull request #2705 from pi-hole/fix/chronometer-refresh-arg
Fix chronometer refresh incorrectly reading the long argument sleep time
2019-04-29 11:43:07 -04:00
DL6ER
a932209143 Set default for date_modified to be the current time
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-29 17:21:59 +02:00
DL6ER
4946b5907b Move migrated files to backup directory instead of deleting them. This has the benefit that gravity.db can be recreated at any time by: 1. deleting gravity.db, 2. copying all files from the migration_backup directory back to /etc/pihole, 3. running pihole -g again.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-28 22:15:47 +02:00
DL6ER
efeba594ae Add support for manipulating adlists from the CLI
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-28 21:39:06 +02:00
Mark Drobnak
b27e4c3dc3 Merge pull request #2725 from pi-hole/fix/get-ip-similar-subnets
Fix getting IP address in the presence of similar subnets
2019-04-28 14:24:47 -04:00
DL6ER
5e1241acd2 Merge branch 'new/gravitydb' of github.com:pi-hole/pi-hole into new/gravitydb 2019-04-28 14:44:34 +02:00
DL6ER
126f7101ff Add (optional) date_modified field and use vw_whitelist view in vw_blacklist
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-28 14:44:03 +02:00
Mcat12
b320e74921 Improve argument handling
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-04-27 14:05:04 -07:00
Mcat12
add5e4ca5e Explicitly allow only -r and --refresh in argument handler
It is already checked, but this make the code explicit.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-04-27 13:39:44 -07:00
Mcat12
466fd79c66 Fix getting IP address in the presence of similar subnets
Change was suggested by @computergeek125 in #2387

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-04-27 12:39:45 -07:00
Mark Drobnak
4596d9a577 Merge branch 'development' into new/gravitydb 2019-04-26 23:40:28 -04:00
DL6ER
b4ae142149 Remove printf escaping (we will realize it differently) and ensure we're using single quotes for strings (although double quotes are possible, too)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 20:54:01 +02:00
DL6ER
3fe43ce1d9 Rely on default value (database provided) for date_added when adding a new domain
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 18:16:04 +02:00
DL6ER
8524aecfed Don't set gravity database permissions
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:56:11 +02:00
DL6ER
e04dc9d2bb Remove sqlitekey variable as the first column of the regex table is now called domain as well
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:44:42 +02:00
DL6ER
3dcb9722d3 Remove global haveSourceUrls variable and just skip downloading and processing adlists if there aren't any to be downloaded
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:39:35 +02:00
DL6ER
bd0215524b Add vw_adlists view which returns only enabled adlists
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:36:00 +02:00
DL6ER
53e3ff2b24 Only add non-empty lines when moving file content into database tables
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:32:05 +02:00
DL6ER
5bb8163674 Change type of whitelist, blacklist, regex, and adlists time column to INTEGER and insert a DEFAULT clause that returns the current Unix time as such an integer
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:26:15 +02:00
DL6ER
a891d64395 We should always exit after displaying a list, even if it is empty
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:13:36 +02:00
DL6ER
6b1d2523e8 Also print datetime a domain was added when listing the domains on the CLI
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:07:16 +02:00
DL6ER
08ee9526ad Review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 17:06:01 +02:00
DL6ER
0efc46260f Use both old and new strings for detecting whether this is a Pi-hole dnsmasq config file
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-26 16:16:30 +02:00
DL6ER
6a01a1257f Merge pull request #2597 from xCh12i5/RegEx-Fix
Solves RegEx issue.
2019-04-25 15:27:35 +02:00
DL6ER
a2a7e80007 Add --web for sending a confirmation string when executed from the web interface. This is necessary as the "Reloading DNS service" message does not always propagate through to the web interface when reloading pihole-FTL takes a while.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 15:01:13 +02:00
DL6ER
cce66a13b6 Fix output in list.sh when adding a domain that is already present in the target list
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 14:54:41 +02:00
DL6ER
43bced7997 Add more comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 12:45:08 +02:00
DL6ER
788cd78321 Reduce code duplication and add special handling of | character as it might appear in regex filter string
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 12:30:38 +02:00
DL6ER
e5d1cb5a2e Rewrite list.sh to operate on database-based lists
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 12:10:42 +02:00
DL6ER
d94bbfca7f Finish migrating gravity.db to using our new gravity database. This removes the --skip-download, --blacklist-only, --whitelist-only, and --wildcard-only options as it is not necessary to run gravity when modifying them from now on (gravity really only builds the gravity database and the local.list file).
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 11:23:06 +02:00
DL6ER
465a39427b Source adlists from gravity database
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 10:46:18 +02:00
DL6ER
2664ac0efc Improve error reporting
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 10:18:37 +02:00
DL6ER
c1277705d8 Copy existing whitelist.txt, blacklist.txt, regex.list, and adlists.list to the database. We remove the files afterwards as the content lives in the database now
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-25 10:14:45 +02:00
DL6ER
61cfd2f9f9 Add adlists table
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 19:48:06 +02:00
DL6ER
ee4dabeca6 Merge branch 'development' into new/gravitydb
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 19:12:19 +02:00
DL6ER
e57d0fb93c Remove the empty templates gravity.list, white.list, black.list. The old source files whitelist.txt, blacklist.txt, and regex.list still exist and need to be removed in a follow-up commit
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 19:05:08 +02:00
DL6ER
ee20164207 Remove detect_pihole_blocking_status() as we can modify the database at any time
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 19:01:31 +02:00
DL6ER
d7ee44960e Remove moving around of the gravity and blacklist files as we do not use them any longer
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 18:57:38 +02:00
DL6ER
c13ebd3a9d Replace Pi-hole ID string with another line we intend to keep
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 18:55:25 +02:00
DL6ER
6594a0a6e7 Fix detection of blocked query in pihole -t
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 18:53:20 +02:00
DL6ER
de44563301 Remove addn-hosts from 01-pihole.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-24 18:51:38 +02:00
DL6ER
e3d9cf0ac1 Merge pull request #2718 from Piskvor/basic-install-package-manager-typo
Show $UPDATE_PKG_CACHE content in error message.
2019-04-24 10:17:23 +02:00
Mark Drobnak
bd572d8843 Merge pull request #2717 from pi-hole/fix/teleporter-extension
Fix teleporter backup file extension
2019-04-23 13:23:43 -04:00
Jan Piskvor Martinec
037737d653 Show $UPDATE_PKG_CACHE content in error message.
Fixes the typo in update_package_cache(), where the error message
 contained the color code twice, instead of the $UPDATE_PKG_CACHE text.

Signed-off-by: Jan Piskvor Martinec <github@piskvor.org>
2019-04-23 16:02:25 +02:00
Mark Drobnak
d2c7c426de Fix teleporter backup file extension
Fixes #2714 

Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2019-04-22 19:43:26 -07:00
Mark Drobnak
1d09c6e47d Merge pull request #2709 from pi-hole/fix/checkout_indentation
Fix pihole checkout indentation
2019-04-16 22:51:01 -04:00
DL6ER
84244b7cd5 Fix indentation in display of branches available during pihole checkout
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-04-16 18:30:04 +02:00
Mcat12
422680ee9f Fix chronometer refresh incorrectly reading the long argument sleep time
`-r` worked, but `--refresh` did not.

Fixes #2703

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-04-14 13:03:25 -07:00
Mark Drobnak
42c7653e99 Merge pull request #2696 from pi-hole/tweak/FTL-privacy-doc-link
Add a link to the documentation on FTL privacy levels during install
2019-04-07 15:12:10 -04:00
Mcat12
78c0c58946 Add a link to the documentation on FTL privacy levels during install
Closes #2695

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-04-07 12:00:43 -07:00
Mark Drobnak
cae61614f4 Merge pull request #2688 from pi-hole/fix/2687
Add Check to `pihole -q -exact` to ensure there is no `#` char preceding a space before the domain
2019-03-28 23:20:41 -04:00
Adam Warner
a7f6c9b3a0 Ignore matches that start # using negative lookbehind
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2019-03-29 00:08:04 +00:00
Mark Drobnak
5950b4bb78 Merge pull request #2646 from pi-hole/fix/FTL_arch_detect_rpm
Don't fail when trying to detect OS architecture on RPM-based systems
2019-03-24 15:23:05 -04:00
DL6ER
817b19888f Merge branch 'development' into fix/FTL_arch_detect_rpm 2019-03-23 08:55:46 +01:00
Mark Drobnak
b64fb578fc Merge pull request #2674 from NiGhTTraX/development
Fix uninstalling lighttpd when it's not installed
2019-03-15 22:11:34 -04:00
Andrei Picus
e9e92368b0 Fix uninstalling lighttpd when it's not installed
Signed-off-by: Andrei Picus <NiGhTTraX@users.noreply.github.com>
2019-03-15 15:05:58 +01:00
Dan Schaper
ffcb173a7f Merge pull request #2672 from pi-hole/fix/test-version-pinning
Pin Python package versions to the versions in the last successful build
2019-03-15 07:04:40 -07:00
Mcat12
b9c9c2797f Pin Python package versions to the versions in the last successful build
The last successful build was
https://travis-ci.org/pi-hole/pi-hole/builds/500825408

When `testinfra` became `2.0.0`, it removed the deprecated features that
the tests currently use.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-03-13 20:14:21 -07:00
Mark Drobnak
204a4e459b Merge pull request #2637 from TheNoim/patch-1
Support pi hole behind a reverse proxy with ssl
2019-03-13 22:12:00 -04:00
DL6ER
0a53e966ea Merge pull request #2659 from pi-hole/tweak/warn_if_FTL_not_on_master
Warn user during update if FTL is on a custom branch
2019-03-03 09:34:11 +01:00
DL6ER
2e17c23333 Don't warn if user is on development as this branch is constantly updated
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-03-02 16:40:59 +01:00
DL6ER
63f3381a2b Warn user if FTL is not on branch master
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-03-02 16:36:49 +01:00
Mark Drobnak
2292720fed Merge pull request #2650 from mmphego/patch-1
Update README.md
2019-03-01 13:19:31 -05:00
Mpho Mphego
b77efa521f Update README.md
Removed the extra double quote.

Signed-off-by: Mpho Mphego <mpho112@gmail.com>
2019-03-01 09:38:36 +02:00
Mpho Mphego
cfe221706b Update README.md
Changed badges from HTML code to markdown for consistency

Signed-off-by: Mpho Mphego <mpho112@gmail.com>
2019-02-27 09:57:23 +02:00
Dan Schaper
54ae9d83b0 Stickler-lints
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-02-23 13:42:15 -08:00
Dan Schaper
293e2a8e80 Merge pull request #2647 from pi-hole/feature/curl_debug
Use `curl` instead of `openssl` for debug upload.
2019-02-23 09:11:02 -08:00
Dan Schaper
71cd6c137b Use curl instead of openssl for transmission of unmodified
log file. We want ansi color codes to be sent.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2019-02-23 04:13:44 -08:00
DL6ER
0e14d11a20 Merge branch 'development' into new/gravitydb 2019-02-22 23:06:17 +01:00
DL6ER
bbc392caeb More review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-22 22:49:02 +01:00
DL6ER
61840edb30 Fill comment field with NULL (default) instead of empty string and use a variable for the timestamp instead of periodically calling date
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-22 22:46:19 +01:00
DL6ER
9867b7fccf Don't fail when trying to detect OS architecture on RPM-based systems
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-22 18:41:01 +01:00
Mark Drobnak
58f198626a Merge pull request #2640 from pi-hole/new/DebugAdditions
Add git status/diff to debug log
2019-02-18 19:28:21 -05:00
Adam Warner
a145f1d931 Be more verbose with debug script output
If output of `git status -s` is non-null display changes
if output of `git diff` is non-null, display diff

Signed-off-by: Adam Warner <adamw@rner.email>
2019-02-18 22:32:53 +00:00
Mark Drobnak
9748f19172 Merge pull request #2639 from pi-hole/hotfix/v4.2.2
Update development from hotfix/v4.2.2
2019-02-18 13:54:08 -05:00
DL6ER
ba1e94d3d9 Merge pull request #2626 from pi-hole/hotfix/v4.2.2
Pi-hole Core v4.2.2
2019-02-18 18:36:13 +01:00
Nils Bergmann
cd9fadbc44 Remove protocol determination
No protocol determination is neede, if you just use double slash.

Signed-off-by: Nils Bergmann <nilsbergmann@noim.io>
2019-02-16 15:32:56 +01:00
Mark Drobnak
062a180a1c Merge pull request #2621 from cryptomilk/development-fix
A bunch of fixes for basic-install.sh
2019-02-10 20:06:26 -05:00
Andreas Schneider
860ec1a7c4 basic_install: Use install for sudoers
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-10 08:45:03 +01:00
DL6ER
5ca1bfc11c Delete /dev/shm/FTL-* files on (re)start of pihole-FTL
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-08 15:00:35 +01:00
Andreas Schneider
2f189cd076 basic_install: There is no pihole group, remove it
Only a user has been created beforehand. Only some distributions create
a group with the same name based on their configuration. We cannot
assume this is always the default.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-08 08:06:12 +01:00
Andreas Schneider
2f0e6a6dda basic_install: Make sure the PI_HOLE_CONFIG_DIR exists
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-08 08:06:12 +01:00
Andreas Schneider
f187b42a98 basic_install: Define webroot globally as a variable
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-08 08:06:02 +01:00
DL6ER
f9250d91a5 Explictly escape the escape.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-06 19:17:13 +01:00
DL6ER
491c828661 Improved code, ensure that gravity.sh passes shellcheck as a whole
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-06 19:09:09 +01:00
DL6ER
644ec36e64 Review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-06 18:57:48 +01:00
Andreas Schneider
838e1b19ec basic_install: Set permissons for PI_HOLE_DASHBOARD_DIR
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-06 10:41:37 +01:00
Andreas Schneider
d5bbb2b640 basic_install: Use a varibale for the pihole dashboard dir
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-06 10:40:47 +01:00
Andreas Schneider
dc91d4b1f9 basic_install: If a static interface is already set up we are done
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2019-02-06 07:50:21 +01:00
DL6ER
9984647ebb After renaming column in regex, it also needs to be renamed in vw_regex
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-05 19:41:11 +01:00
DL6ER
ec5b16ef85 Fix incomplete comment
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-05 19:08:08 +01:00
DL6ER
c3c60e10f1 Rename regex field from domain to filter because this described better what it is
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-05 19:07:12 +01:00
DL6ER
8a2363621d Rename fields from DateAdded to dateadded
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-05 19:06:46 +01:00
DL6ER
dbbf21071b Invert logic to use ENABLED instead of DISABLED. We make sure to set "enabled = 1 WHERE enabled IS NULL" in gravity_store_in_database()
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-05 19:05:11 +01:00
Dan Schaper
e967fe2266 Merge pull request #2612 from pi-hole/hotfix/v4.2.1
Remove user/group from dnsmasq config
2019-02-03 11:36:57 -08:00
Dan Schaper
b5c7657e01 Merge pull request #2614 from pi-hole/hotfix/v4.2.1
Merge v4.2.1 hotfix to dev
2019-02-03 11:36:00 -08:00
Mcat12
680d6e2d31 Merge branch 'release/v4.2' into development
# Conflicts:
#	automated install/basic-install.sh
2019-02-03 11:14:09 -08:00
Mcat12
7a19d24058 Remove user/group from dnsmasq config
In the case that FTL is started under root, dnsmasq changes the user to
pihole due to this setting. The shared memory is created before this
switch, and may cause issues such as failing to delete or reallocate
the shared memory.

These config lines were necessary before dnsmasq became part of FTL, but
now since dnsmasq runs under FTL, we can configure the user/group
through FTL.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-02-03 10:55:18 -08:00
Dan Schaper
995ee41d6b Merge pull request #2600 from pi-hole/release/v4.2
Release v4.2
2019-02-03 08:52:07 -08:00
DL6ER
b2f4385232 Avoid infinity loop if gravity optimization fails
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 17:05:00 +01:00
DL6ER
1f9a7d0b0c Only run VACUUM on "pihole -g -o"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 17:01:38 +01:00
DL6ER
d5feffa117 Do not backup the database
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 16:45:19 +01:00
DL6ER
fc62cf7e2f Only run VACUUM on "full" gravity runs
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 16:45:06 +01:00
DL6ER
93f1859bab Store regex in gravity.db as well
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 15:13:18 +01:00
DL6ER
dcf0a605cf Use views for all tables and set disabled column to false for those tables that support it
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 14:14:14 +01:00
DL6ER
710036adae Add DISABLED field to white- and blacklist defaulting to false. The two views respect the DISABLED fields for both lists.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 13:34:08 +01:00
DL6ER
8a91fe6992 Store domains in gravit tables: gravity, whitelist, blacklist
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 13:21:26 +01:00
DL6ER
09c4c88a6d Create and fill gravity.db during pihole -g
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-03 13:04:31 +01:00
Mark Drobnak
69919ac85c Merge pull request #2610 from pi-hole/fix/dev-shm
Change /var/run/shm to /dev/shm
2019-02-02 13:44:39 -05:00
Mcat12
26f2410fe6 Change /var/run/shm to /dev/shm
The /var directory may not exist (does not exist on Fedora 29), and is
simply a symlink to /dev/shm.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-02-02 10:37:12 -08:00
Adam Warner
d43c32e9e8 Merge pull request #2609 from pi-hole/fix/start-service-ftl-checkout
Fix missed start_service -> restart_service call
2019-02-02 18:27:09 +00:00
Mcat12
5c4ee23795 Fix missed start_service -> restart_service call
start_service was changed to restart_service.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2019-02-02 10:19:44 -08:00
Dan Schaper
fb3d871553 Merge pull request #2602 from pi-hole/fix/download_FTL_earlier
Download FTL earlier in the installer
2019-02-02 06:43:16 -08:00
Adam Warner
ae654730c4 Update automated install/basic-install.sh
Co-Authored-By: DL6ER <DL6ER@users.noreply.github.com>
2019-02-02 08:00:58 +01:00
DL6ER
ec79e86bee We should really use stop_service as it also includes some nice output
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-01 18:06:57 +01:00
DL6ER
e8dabc71af Don't try to start pihole-FTL after it has been installed. This will be done a few moments later when gravity is invoked.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-01 17:54:21 +01:00
DL6ER
9c0de0f731 Try to stop pihole-FTL before and (re)start pihole-FTL after the install command
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-02-01 17:39:12 +01:00
DL6ER
4948862dce Fail hard if FTL binary could not be installed
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-31 20:10:52 +01:00
DL6ER
7479485d45 Add test for the case the binary variable is unset (defaults to "tbd" in this case)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-31 20:00:26 +01:00
Mark Drobnak
1e284f69ea Merge pull request #2587 from pi-hole/new/network-table
Download macvendor database
2019-01-28 20:27:13 -05:00
DL6ER
516ed83638 Add "|| true" to the curl command as a failed download is no show-stopper for the overall install process.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-28 20:48:30 +01:00
Mark Drobnak
26361883b4 Merge pull request #2601 from pi-hole/fix/double_disable_kills_gravity
Prevent double disabling/enabling
2019-01-27 13:54:33 -05:00
DL6ER
d26f2dcb2c Use global binary variable in tests for automated install
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:47:28 +01:00
DL6ER
cc657c0c26 Rename subroutine start_service() to restart_service() because this is what it does
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:37:03 +01:00
DL6ER
d90d7b6927 Call FTL download/installation early on in the installation process.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:36:27 +01:00
DL6ER
de6dc90575 Don't diable pihole-FTL before calling install. root should be able to overwrite the binary in any case. The binary has already been downloaded and hash-verified here so we don't expect any errors in this binary.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:32:33 +01:00
DL6ER
3cdd6204c5 Move dnsmasq disabling and config file rewriting into a dedicated subroutine
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:31:02 +01:00
DL6ER
d996e9c9ee Fix inconsistent handling of binary variable. get_binary_variable() stores the result into a global variable we pass later on as argument to FTLinstall() and define a local variable with the same name. This is fixed by only using the globa variable in all places not. This is still not a very elegant solution but it is also not subject of the current PR.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:28:09 +01:00
DL6ER
a4ba8d4b8f Prevent double disabling/enabling by checking BLOCKING_ENABLED value in setupVars.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-24 09:16:24 +01:00
xch12i5
cd8a423b32 Solves RegEx issue and updates documentation.
Signed-off-by: xch12i5 <40517505+xCh12i5@users.noreply.github.com>
2019-01-20 16:09:25 +01:00
Mark Drobnak
f7ca74cf1d Merge pull request #2598 from pi-hole/fix/remove-norton
Remove Norton DNS
2019-01-19 20:52:37 -05:00
Mark Drobnak
ebba32e1c4 Remove Norton DNS
Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2019-01-19 20:45:19 -05:00
xch12i5
e02da90faa Replaces double quotes by single quotes and updates documentation.
Signed-off-by: xch12i5 <40517505+xCh12i5@users.noreply.github.com>
2019-01-19 17:52:28 +01:00
xch12i5
0de5132e2b Solves RegEx issue.
Signed-off-by: xch12i5 <40517505+xCh12i5@users.noreply.github.com>
2019-01-19 17:07:27 +01:00
Mark Drobnak
7d2507527a Merge pull request #2593 from TheLastProject/feature/standardized-dns-list
Standardize DNS list and write to file for AdminLTE
2019-01-13 11:10:45 -08:00
Sylvia van Os
97decb3a73 Standardize DNS list and write to file for AdminLTE
Signed-off-by: Sylvia van Os <sylvia@hackerchick.me>
2019-01-13 19:38:04 +01:00
DL6ER
f360959efc Download macvendor database from ftl.pi-hole.net when downloading a new FTL binary. Users who want to update the database more frequently than on each FTL release can use the python script from the FTL repository to generate the database themselves. The macvendor database is an optional component so a failing download is no reason to interrupt the installer.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-09 19:26:19 +01:00
Mark Drobnak
465589c0fd Merge pull request #2575 from LudovicRousseau/fix2
Do not ask admin password just for help documentation
2019-01-07 00:07:53 -05:00
Mark Drobnak
9fcf7a2610 Merge pull request #2581 from bcambl/remove_bc_dep
remove unused dependency (bc)
2019-01-04 19:01:31 -05:00
bcambl
3035fbf468 remove unused dependency (bc)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2019-01-04 17:17:42 -06:00
DL6ER
c4c354bc4b Merge pull request #2578 from pi-hole/new/libcap-dev
Add libcap as dependency
2019-01-03 16:08:45 +01:00
DL6ER
c5da1bb952 Add libcap as Fedora dependency
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-03 10:39:46 +01:00
DL6ER
486c41a69a Add Debain dependency libcap2 needed for FTL's capability check on startup
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-03 10:39:10 +01:00
DL6ER
87800a3659 Merge pull request #2570 from pi-hole/tweak/wpad
Add wpad vulnerability fix as suggested by dnsmasq.conf.example
2019-01-03 00:10:31 +01:00
Ludovic Rousseau
d5fbe1b629 Do not ask admin password just for help documentation
It is not a good idea to ask for an admin password just to get the
command documentation.
"pihole -h" should return the arguments documentation with no need to
enter a password.

Without the patch I get:
$ ./pihole -h
Password:

It is easy to reproduce by invalidating the sudo password using
"sudo -k" before running pihole again.

Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2019-01-02 23:54:30 +01:00
Mark Drobnak
a3cee67a61 Merge pull request #2571 from pi-hole/tweak/debug/shm
List content of /var/run/shm in debugger
2019-01-02 15:12:54 -05:00
DL6ER
5ffc8c7443 List content of /var/run/shm in debugger
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-01 17:56:02 +01:00
DL6ER
04fd296ffe Add wpad vulnerability fix as suggested by dnsmasq.conf.example
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-01-01 17:13:43 +01:00
Mark Drobnak
262d5eea22 Merge pull request #2547 from pi-hole/fix/version-command-no-web
Don't show web version in pihole -v output if not installed
2018-12-27 23:20:16 -05:00
Mark Drobnak
ed5869646f Use source instead of dot for setupVars
Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2018-12-27 16:37:10 -05:00
Dan Schaper
b984fc4e0e Merge pull request #2564 from floek/development
Add a blank after printf to avoid 'Command not found' error
2018-12-25 00:12:50 -08:00
Florian Freund
0ef4901e48 Add a blank after printf to avoid 'Command not found' error
> curl -L https://install.pi-hole.net | bash /dev/stdin --i_do_not_follow_recommendations
...
/dev/stdin: Zeile 2449: printf  %b Skipping free disk space verification\n: Command not found.

Signed-off-by: Florian Freund <mail@floek.net>
2018-12-25 09:02:12 +01:00
Dan Schaper
8d85d46c1a Merge pull request #2556 from pi-hole/release/v4.1.1
Release v.4.1.1
2018-12-21 09:06:19 -08:00
bcambl
eca975a370 add sqlite3 dependency for fedora
`sqlite3` is provided by the `sqlite` package on CentOS & Fedora

Signed-off-by: bcambl <blayne@blaynecampbell.com>
(cherry picked from commit 724afc000f)
2018-12-19 10:20:47 -08:00
Mark Drobnak
3bb94d469d Merge pull request #2554 from bcambl/add_sqlite_dep
add sqlite3 dependency for fedora (#2552)
2018-12-18 12:03:26 -05:00
bcambl
724afc000f add sqlite3 dependency for fedora
`sqlite3` is provided by the `sqlite` package on CentOS & Fedora

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-12-17 21:03:54 -06:00
Mcat12
be2d494fcf Don't show web version in pihole -v output if not installed
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-12-12 14:55:09 -05:00
Mark Drobnak
a36734db66 Merge pull request #2543 from pi-hole/fix/privacy-level-4
Add privacy level 4 to all privacy level code
2018-12-10 11:48:25 -05:00
Mcat12
1cad069050 Add privacy level 4 to all privacy level code
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-12-10 10:18:25 -05:00
Mark Drobnak
d24e0a6060 Merge pull request #2540 from pi-hole/release/v4.1
Update development with final v4.1 changes
2018-12-09 22:24:42 -05:00
Jacob Salmela
f65f793a0d Merge pull request #2496 from pi-hole/release/v4.1
Release v4.1
2018-12-09 14:33:58 -06:00
Dan Schaper
f7ad489805 Merge pull request #2504 from bcambl/ifcfg_con_name
configure ifcfg network files by connection name when required
2018-12-08 10:44:45 -08:00
Dan Schaper
62459c4f00 Merge pull request #2532 from pi-hole/update/agent-string-12-2018
Update user agent string
2018-12-06 10:17:49 -08:00
DL6ER
05bd88b4d8 Update agent string: the selected string is the most abundant one on 06 Dec 2018 with a percentage of almost 10%
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-12-06 18:04:17 +01:00
Dan Schaper
0546fff1ce Merge pull request #2531 from pi-hole/fix/duplicate_dont_destroy
Don't `mv` `preEventHorizon`, copy it.
2018-12-06 08:40:02 -08:00
Adam Warner
83f7bd66e6 Don't mv preEventHorizon, copy it.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-12-05 22:29:01 +00:00
bcambl
14ebb2fb93 remove 'System' from NetworkManager connection name
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-12-01 12:08:48 -06:00
Dan Schaper
916b2920be Merge pull request #2525 from pi-hole/release/v4.1
Release/v4.1 to Development
2018-11-29 08:46:05 -08:00
Dan Schaper
a20963889c Merge pull request #2512 from kefnab/development
Added check for universe repo on ubuntu bionic.
2018-11-27 03:35:28 -08:00
Dan Schaper
4b77475807 Merge pull request #2520 from pi-hole/new/rfc4039
Backend changes for DHCPv4 rapid commit support
2018-11-27 03:34:54 -08:00
Dan Schaper
9f672593bc Update advanced/Scripts/webpage.sh
Co-Authored-By: DL6ER <DL6ER@users.noreply.github.com>
2018-11-26 20:01:41 +01:00
DL6ER
a285ae65fb Backend changes for DHCPv4 rapid commit support
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-11-25 08:39:58 +01:00
Dan Schaper
917a0239a9 Merge pull request #2514 from pi-hole/fix/suppress_warnings_initd
Suppress warning if Pi-hole is not used as DHCP server
2018-11-21 13:47:16 -08:00
Clayton Dobbs
3261c2e273 Added check for universe repo on ubuntu bionic with user prompts.
Signed-off-by: Clayton Dobbs <clayton.dobbs@gmail.com>
2018-11-20 21:39:01 -07:00
DL6ER
d0125d5aad Suppress warning if Pi-hole is not used as DHCP server (/etc/pihole/dhcp.leases is not present in this case)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-11-19 17:38:19 +01:00
Dan Schaper
65a3da92f1 Merge pull request #2505 from pi-hole/fix/DNS_with_hash
Account for non-standard ports in DNS server addresses.
2018-11-13 02:53:51 -08:00
Dan Schaper
5c621fa253 Lints
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-12 17:21:34 -08:00
Dan Schaper
f9e71bee0a Account for port, or lack of, in PIHOLE_DNS_1
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-12 17:15:24 -08:00
bcambl
c3804877ed linting: Double quote to prevent globbing and word splitting.
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-11-11 14:48:16 -06:00
Dan Schaper
35e53ab9c7 Merge pull request #2501 from pi-hole/fix/restart-dns-error-on-success
Fix restartDNS returning code 1 even when it worked
2018-11-10 10:10:49 -08:00
Dan Schaper
053987b9e1 Merge pull request #2500 from pi-hole/fix/debug-remove-dnsmasq
Remove dnsmasq checks from debugger
2018-11-10 10:10:05 -08:00
bcambl
c0bc93c7c4 break dhcpcd and ifcfg network configurations into separate functions
- move some logic from setStaticIPv4 to setDHCPCD
- breakout ifcfg configuration into separate function which takes a config path as an argument
- setStaticIPv4 now checks for configs and calls the appropriate function accordingly
- add logic to check ifcfg file by _connection name_ if file is not found by _interface name_

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-11-09 15:20:51 -06:00
Dan Schaper
1f596eb2bc Merge pull request #2502 from pi-hole/release/v4.1
Release/v4.1 backports to development
2018-11-09 12:49:32 -08:00
Mcat12
3f59b51be1 Fix restartDNS returning code 1 even when it worked
If stdout was not a terminal (the `-t 1` check), `restartDNS` would
return code 1 in the success case. This caused the API to fail whenever
it tried to restart the DNS server.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-11-08 22:00:13 -05:00
Mcat12
9d59da8974 Remove dnsmasq checks from debugger
This also fixes an issue where the port checks weren't running
(`compare_port_to_service_assigned`).

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-11-08 21:51:21 -05:00
DL6ER
51218bd1ad Merge pull request #2497 from pi-hole/fix/adlists.list_not_created
Bugfix for #2354
2018-11-08 20:37:28 +01:00
DL6ER
e1c3c53058 Merge branch 'release/v4.1' into fix/adlists.list_not_created 2018-11-08 20:29:07 +01:00
DL6ER
9fa497b056 Merge pull request #2498 from pi-hole/fix/IPv6_string
Change field from digit to string for printf
2018-11-08 20:28:24 +01:00
Dan Schaper
057fbfc2b9 Change field from digit to string for printf
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-08 11:10:09 -08:00
DL6ER
33156071cd Fix literal "choice" being passed to appendToListsFile()
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-11-08 19:43:35 +01:00
Mark Drobnak
bbb759c684 Merge pull request #2477 from bcambl/debug_init_service_check
fix debug service check via sysvinit
2018-11-07 17:50:32 -05:00
Mark Drobnak
f1a7bc9ecd Merge pull request #2481 from pi-hole/revert-2468-lighttpd-conf-enhancements
Revert "lighttpd conf enhancements"
2018-11-07 17:49:25 -05:00
Mark Drobnak
d514608f91 Merge pull request #2492 from pi-hole/fix/IPv4_detection
IPv4 detection improvements.
2018-11-07 17:48:34 -05:00
Dan Schaper
e8c2e26358 Override shellcheck with explanations.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-03 13:39:43 -07:00
Dan Schaper
61c67849d7 Support multiple distributions and release versions in find_IPv4_information().
Add basic sanity check to function, remove unused variable.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-03 13:20:40 -07:00
Mark Drobnak
2cdbb34763 Merge pull request #2488 from pi-hole/feature/command_function
Moved `command -v` calls to function in installer.
2018-11-02 22:16:44 -04:00
Dan Schaper
538ba918c1 Merge pull request #2490 from sadsfae/add_blog_guide_hobohouse
Add hobohouse blog/guide to coverage links.
2018-11-02 13:00:24 -07:00
Will Foster
c330df9700 Add hobohouse blog/guide to coverage links.
This is a link to an updated guide on setting up
Pi-hole on Raspberry Pi.  It also covers using the Tomato
router firmware and running things in a docker container
along with some tips, blocklist recommendations and usage.

Signed-off-by: Will Foster <sadsfae@funcamp.net>
2018-11-02 19:50:39 +00:00
Mark Drobnak
1789a2db29 Merge pull request #2384 from pi-hole/feature/install-privacy-level
Set FTL Privacy Level During Install
2018-11-01 15:16:11 -04:00
Dan Schaper
c270b83341 Use printf instead of echo
Co-Authored-By: Mcat12 <mark.drobnak@gmail.com>
2018-11-01 15:14:26 -04:00
Dan Schaper
02f0788033 Moved command -v calls to function.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-01 12:00:08 -07:00
Dan Schaper
a2ea6e8d47 Merge pull request #2486 from pi-hole/feature/install_printf
Beginning steps to installer overhaul. Echos to Printf test.
2018-11-01 10:16:57 -07:00
Dan Schaper
a986f53134 Merge pull request #2436 from pi-hole/fix/password-read-error
Fix error when reading in new password
2018-11-01 07:05:27 -07:00
Dan Schaper
9d2d45b473 Query php directly for major and minor version id strings.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-11-01 05:59:14 -07:00
Dan Schaper
0c892e6b3a Addressed Stickler ShellCheck lints
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-10-31 14:35:55 -07:00
Dan Schaper
a0fc38d6a2 All terminal echo commands changed to printf.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-10-31 11:14:05 -07:00
Mcat12
28cbf45d1d Add explanatory comment for include_shell
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-10-30 21:52:42 -04:00
Dan Schaper
72829be281 Remove shellcheck overrides
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-10-26 12:14:10 -07:00
Adam Warner
d57f9906bd read -r -a, not read -a -r
Signed-off-by: Adam Warner <adamw@rner.email>
2018-10-26 19:24:43 +01:00
Adam Warner
3d4fea6510 Move -r to before the -p
Signed-off-by: Adam Warner <adamw@rner.email>
2018-10-26 19:17:49 +01:00
Adam Warner
f670644954 Revert "lighttpd conf enhancements" 2018-10-26 19:12:11 +01:00
Mark Drobnak
dd6821814a Merge pull request #2479 from pi-hole/fix/referral-readme
update broken link, add coverage, and fix formatting
2018-10-25 17:09:30 -04:00
Jacob Salmela
f33584511c update broken link, add coverage, and fix formatting
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-10-25 05:58:17 -05:00
bcambl
3ec84553ef fix debug service check via sysvinit
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-10-24 10:06:11 -06:00
Mark Drobnak
a301d4381f Merge pull request #2472 from pi-hole/fix-webpwexpansion
Prevent BASH from expanding Web Password
2018-10-22 22:18:32 -04:00
Mark Drobnak
49b8ad7e94 Merge pull request #2470 from jeremysherriff/patch-1
Silence updateGravity cron job unless errors occur
2018-10-21 14:04:39 -04:00
WaLLy3K
180d29c7b3 Prevent BASH from expanding Web Password
* Resolves issue #2471

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2018-10-21 11:08:22 +11:00
Mark Drobnak
a23ba91681 Merge pull request #2468 from gstrauss/lighttpd-conf-enhancements
lighttpd conf enhancements
2018-10-20 16:43:03 -04:00
jeremysherriff
d986da63a5 Pass gravity exit code back to caller to allow for cron error handling
Signed-off-by: jeremysherriff <jeremysherriff@gmail.com>
2018-10-19 19:10:37 +13:00
jeremysherriff
d3ac8bb6f8 Silence updateGravity job unless errors occur
No need for append/logrotate as we are only interested in the latest output
Signed-off-by: jeremysherriff <jeremysherriff@gmail.com>
2018-10-19 19:10:13 +13:00
Mark Drobnak
f87f3b9199 Merge pull request #2467 from pi-hole/fix/dnsmasq-license
Update dnsmasq config license
2018-10-17 11:56:41 -04:00
Glenn Strauss
67bdcbcf19 lighttpd: slightly more efficient sample config
Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
2018-10-17 06:54:54 -04:00
Glenn Strauss
69b2a5a876 lighttpd: use file glob for optional external.conf
lighttpd 1.4.50 config parse will error if include_shell exits non-zero
and pi-hole sample config: include_shell "cat external.conf 2>/dev/null"
is an error if external.conf does not exist

Replace with: include "external*.conf"
file glob supported since lighttpd 1.4.40 and is not an error if there
is no file which matches the file glob

Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
2018-10-17 06:54:43 -04:00
Mark Drobnak
a79dff3d98 Merge pull request #2466 from pi-hole/readme-newcoverage
Update coverage links
2018-10-16 22:42:34 -04:00
Dan Schaper
c859a23136 Merge pull request #2462 from pi-hole/fix/updatecheck-curl-silent
Use curl -s instead of -q
2018-10-16 18:46:45 -07:00
WaLLy3K
7f92671765 Update dnsmasq config license
* Also updated "separate config" text

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2018-10-17 11:01:28 +11:00
WaLLy3K
ec38105b08 Update coverage links
Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2018-10-17 10:46:56 +11:00
Mark Drobnak
85dceb12a1 Use curl -s instead of -q
See #2416 

Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2018-10-12 23:53:21 -04:00
Mark Drobnak
5126c37c1e Merge pull request #2460 from bcambl/fix_create_pihole_user
fix pihole user creation function
2018-10-12 22:47:56 -04:00
bcambl
e7e03e36de fix pihole user creation function
- fix stdout newlines
 - catch failed user creation

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-10-12 11:05:44 -06:00
Mark Drobnak
13c393fc9d Merge pull request #2451 from pi-hole/fix/2450
fix for #2450
2018-10-07 21:02:39 -04:00
Adam Warner
cc2f375b13 fix for #2450
Signed-off-by: Adam Warner <adamw@rner.email>
2018-10-07 11:51:36 +01:00
Mark Drobnak
49d5109c96 Merge pull request #2446 from AndreasElia/development
Readme grammar fixes
2018-10-02 21:59:35 -04:00
Andreas Elia
e5c8f5e2fa Readme grammar fixes
Signed-off-by: Andreas Elia <andreaselia@live.co.uk>
2018-10-02 17:43:13 +01:00
Mark Drobnak
ff925a7578 Merge pull request #2437 from pi-hole/fix/version-files-overwritten
Append versions (after the first) instead of overwriting in updatecheck
2018-10-01 11:21:29 -04:00
Mark Drobnak
33939a30ea Merge pull request #2347 from Gusher123/patch-1
Don't let one blocklist block an other blocklist
2018-09-30 21:24:45 -04:00
Mark Drobnak
308b296285 Merge pull request #2401 from pi-hole/fix/checkout-readonly
Fix checkout error due to readonly variable
2018-09-30 21:05:11 -04:00
Mcat12
d55012f724 Append versions (after the first) instead of overwriting in updatecheck
Fixes an issue brought up in #2435

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-09-30 20:56:44 -04:00
Mcat12
7c6eecc9c8 Ignore shellcheck warning
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-09-30 18:16:08 -04:00
Mcat12
e4cbf5023a Fix error when reading in new password
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-09-30 18:09:59 -04:00
Mark Drobnak
46356d3027 Merge pull request #2434 from pi-hole/fix/2200
Only check web versions if web interface is installed
2018-09-30 17:57:54 -04:00
Mark Drobnak
958a263437 Merge pull request #2431 from pi-hole/fix/use_PHP_comments_in_pihole-FTL.conf_template
Improve pihole-FTL.conf template
2018-09-30 17:24:36 -04:00
Mark Drobnak
a89ae82270 Merge pull request #2430 from pi-hole/chrono-lc-all
Fix invalid numbers in Chronometer
2018-09-30 17:23:06 -04:00
Mark Drobnak
cedc39bf09 Merge pull request #2426 from mrmajik45/master
Read without -r will mangle backslashes. (Fix)
2018-09-30 17:19:56 -04:00
Adam Warner
0131055ec9 Submission stale, addressing @mcat12's comments
Signed-off-by: Adam Warner <adamw@rner.email>
2018-09-30 20:00:06 +01:00
Adam Warner
0627e68078 Shellcheck is not a fan of sourcing scripts it does not know about. Add Directive to stop shellcheck from checking this.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-09-30 19:45:04 +01:00
Adam Warner
7d78f6314a Source Setupvars file and only check local/remote Web branch/version if the web interface is installed.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-09-30 19:41:04 +01:00
mrmajik45
0f509f4a34 Update piholeDebug.sh 2018-09-28 17:22:31 -04:00
DL6ER
b043000044 Improve template by removing it. PHP cannot digest comments starting in "#" as of v7.0.0
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-09-28 12:08:39 +02:00
DL6ER
c338eab3c6 According to the PHP documentation, PHP 7.0.0+ does not longer recognize hash marks (#) as comments. As FTL has been trained to understand PHP-style (comment lines start with ";") as well, we switch to using them.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-09-28 11:11:30 +02:00
WaLLy3K
24e1dc92ba Resolve issue #2428
Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2018-09-28 10:34:49 +10:00
mrmajik45
00f98543ad read without -r will mangle backslashes. 2018-09-26 10:32:22 -04:00
mrmajik45
8684356b44 read without -r will mangle backslashes. 2018-09-26 10:31:44 -04:00
Mark Drobnak
a89615365e Merge pull request #2410 from stuartskelton/norton_dns_EOL_2018_11_15
Remove Norton Connect Safe as its EOL 2018-11-15
2018-09-10 17:52:09 -04:00
Stuart Skelton
3c36c22ca8 Remove Norton Connect Safe as its EOL 2018-11-15
Signed-off-by: Stuart Skelton <stuarts@broadbean.com>
2018-09-10 22:37:45 +01:00
Mark Drobnak
7a2f5f43f9 Merge pull request #2408 from pi-hole/fix/2299
Only get the first gateway for chronometer
2018-09-09 16:38:05 -04:00
Mark Drobnak
dac27f1f18 Only get the first gateway for chronometer
Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2018-09-09 15:12:48 -04:00
Mark Drobnak
6f276ae4bb Merge pull request #2299 from nullr0ute/net-tools
Use ip route rather than old net-tools route in  chronometer.sh
2018-09-09 15:11:19 -04:00
Mark Drobnak
537e288758 Merge pull request #2407 from pi-hole/fix/lighttpd-external-conf
Fix lighttpd v1.4.50 crashing on startup
2018-09-07 12:55:21 -04:00
Mark Drobnak
3cea1bd423 Fix lighttpd v1.4.50 crashing on startup
It has a bug/regression causing it to fail if external.conf does not exist,
so touch external.conf when installing lighttpd config

Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2018-09-07 12:09:37 -04:00
Mark Drobnak
c976bbcfd2 Fix checkout error due to readonly variable
Signed-off-by: Mark Drobnak <mark.drobnak@gmail.com>
2018-09-01 22:11:45 -04:00
Mark Drobnak
ec29829550 Merge pull request #2388 from Sh4d1/ipv6_brackets
Remove external Ipv6 brackets in servername if any
2018-09-01 19:44:29 -04:00
Mark Drobnak
cf7180af5b Merge pull request #2398 from pi-hole/rpm_distro_checks
WIP: Update RPM distro checks
2018-08-31 12:54:55 -04:00
bcambl
c58e3acc78 add unsupported RPM distro warnings
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-08-31 10:04:52 -06:00
DL6ER
b78aef1e7e Merge pull request #2356 from pi-hole/tweak/reload_on_enable_disable
Change the enable/disable method
2018-08-30 22:37:57 +02:00
DL6ER
f20e4ddf3b Change message for unknown state to something more useful
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-30 22:28:15 +02:00
DL6ER
40656641b6 Merge branch 'development' into tweak/reload_on_enable_disable 2018-08-30 22:26:57 +02:00
bcambl
6f8e8e98bb update centos version check test
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-08-29 22:16:11 -06:00
bcambl
24b4aabae9 allow installer to continue with additional rpm based distros
- FedBerry (Fedora based ARM image)
- Scientific Linux (CentOS based)
- Add prompt to continue installing on unsupported RPM based distros

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-08-29 20:49:06 -06:00
Mark Drobnak
a9c6d79cda Merge pull request #2394 from pi-hole/fix/pihole-FTL_owner_group
Ensure proper unprivileged user if pihole-FTL is started as root
2018-08-29 11:17:39 -04:00
DL6ER
45bf4b02e7 Ensure that when pihole-FTL is launched as user root, it will drop permissions as soon as this is possible. We tell pihole-FTL to change UID/GID to pihole:pihole instead of the default nobody:nogroup. This default causes conflicts with our SQLite3 database. See that corresponding pull request for further details.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-27 16:51:33 +02:00
Mark Drobnak
667c5138cc Merge pull request #2381 from pi-hole/fix/existing_dnsmasq.conf
Improve /etc/dnsmasq.conf handling
2018-08-25 18:55:12 -05:00
Patrik Cyvoct
85cf98888d Merge remote-tracking branch 'origin/development' into ipv6_brackets
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-08-22 09:31:54 +02:00
Patrik Cyvoct
048e5bb9a2 Remove external ipv6 brackets if any in servername
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-08-22 09:11:55 +02:00
DL6ER
b9d47d0dd2 Merge pull request #2378 from pi-hole/fix/pihole-FTL-no-caps
Start pihole-FTL as root if capabilities are not supported by the system
2018-08-21 14:11:24 +02:00
DL6ER
1813c25117 If config file was backed up: Print info message
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-21 13:07:23 +02:00
DL6ER
940c9c3bae Merge pull request #2383 from pi-hole/feature/privacy-level-4
Add support for privacy level 4
2018-08-21 13:03:41 +02:00
Mcat12
5d0d7336ff Echo with newline when setting privacy level
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-08-20 20:21:03 -04:00
Mcat12
6a26a05dbf Fix privacy level whiptail option format
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-08-20 19:40:43 -04:00
Mcat12
c22e94c9c7 Update test to include empty FTL config
The installer ensures that an FTL config will exist, and creates an
empty file if it doesn't.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-08-20 19:33:15 -04:00
Mcat12
4aafa8cf47 Set the FTL privacy level during install
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-08-20 19:20:29 -04:00
Mark Drobnak
9235a11d5f Merge pull request #2382 from pi-hole/tweak/no-extra-logging
Don't use extra query logging
2018-08-20 18:33:42 -04:00
Mcat12
f141b9f778 Add support for privacy level 4
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-08-20 17:36:16 -04:00
DL6ER
1dca1efbc6 Don't use extra query logging
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-20 23:11:23 +02:00
DL6ER
28c6b1393f Backup existing /etc/dnsmasq.conf if present and ensure that /etc/dnsmasq.conf contains only "conf-dir=/etc/dnsmasq.d"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-20 22:52:22 +02:00
DL6ER
6c97b8b875 Merge pull request #2377 from pi-hole/fix/service-touch-leases
Touch dhcp.leases to ensure it exists
2018-08-20 11:24:44 +02:00
DL6ER
ec2426b24d Add clarifying comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-19 19:55:47 +02:00
DL6ER
5cd3b11391 Start pihole-FTL as root if capabilities are not supported by the system
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-19 14:32:19 +02:00
DL6ER
d30b565d98 Touch dhcp.leases to ensure it exists. There are some systems out there where the installer didn't finish on the first run and some users don't have this file being created. Although /etc/pihole should be owned by pihole:pihole, pihole-FTL sometimes fails to open this file and - if this is the case and DHCP is enabled - refuses to start altogether.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-19 13:53:34 +02:00
Mark Drobnak
74008d28a7 Merge pull request #2367 from realtebo/fix-enabling-ftl
Fix to enable pihole-FTL service before starting it
2018-08-16 16:15:46 -04:00
Realtebo
0d1b3cee4f Enable FTL service before starting it
Signed-off-by: Realtebo <mirkotebaldi@yahoo.it>
2018-08-16 17:52:47 +02:00
Realtebo
0b44cb4426 Merge branch 'development' of https://github.com/pi-hole/pi-hole into development 2018-08-16 17:48:35 +02:00
Mark Drobnak
eb8e4496b2 Merge pull request #2354 from realtebo/development
Create adlist file while running unattended setup
2018-08-16 11:26:07 -04:00
Realtebo
30f45d4df7 Merge branch 'development' of https://github.com/pi-hole/pi-hole into development 2018-08-16 16:52:18 +02:00
Mark Drobnak
24e1c78d52 Merge pull request #2358 from pi-hole/fix/restart_FTl_on_logflush
Restart pihole-FTL after log flushing
2018-08-16 10:34:25 -04:00
Mirko Tebaldi
476fecbcf5 Fixed typos as suggestes
Signed-off-by: Realtebo <mirkotebaldi@yahoo.it>
2018-08-14 15:04:42 +02:00
Mirko Tebaldi
327b58fa03 Merge pull request #1 from pi-hole/development
Merge with current main development branch
2018-08-14 14:55:18 +02:00
DL6ER
d3eea9404d Merge pull request #2331 from pi-hole/tweak/improve_FTL_download_errormsg
Improve error message when downloading FTL failed
2018-08-14 13:20:47 +02:00
DL6ER
ca309d3b28 Restart pihole-FTL after log flushing to force reloading history. Fixes #2339
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-14 13:16:17 +02:00
DL6ER
0ebd68f17f Review comments
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-14 09:55:16 +02:00
Mark Drobnak
3696373609 Merge pull request #2345 from pi-hole/NXDOMAIN-tail
Fix colour tail for use with new blocking methods
2018-08-13 15:01:35 -04:00
DL6ER
165affc39b list.sh writes into blacklist.txt not black.list so does not need to account for a possibly changed list location
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 18:53:31 +02:00
DL6ER
f794018e0c Acknowledge temporary file if disabled for "pihole -b" command
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 18:17:14 +02:00
DL6ER
337cc5ca18 BLOCKING -> BLOCKING_ENABLED
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 17:22:10 +02:00
DL6ER
4e4d6b5d1f Adjust "pihole status" command
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 15:02:00 +02:00
DL6ER
b011adc453 Use new setupVars BLOCKING variable to determine which file to update via gravity
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 14:19:59 +02:00
DL6ER
d8abc1d266 Storing BLOCKING=true/false in setupVars.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 13:49:47 +02:00
DL6ER
6cde066edd Have gravity detect the presence of files like gravity.list.bck and update this file if present (assuming blocking is disabled)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-13 13:43:14 +02:00
WaLLy3K
d163e38380 Ensure regex-blocked lines are red
* Add `regex.list` to seds list

Signed-off-by: WaLLy3K <wally3k@pihole.net>
2018-08-13 14:56:38 +10:00
Realtbo
d9195970b7 Create adlist file while running unattended setup
Signed-off-by: Realtebo <mirkotebaldi@yahoo.it>
2018-08-12 23:21:01 +02:00
DL6ER
20b946eae5 Instead of changing the dnsmasq configuration, we replace gravity.list and black.list by empty files for disabling. When pihole-FTL receives SIGHUP, it will clear its cache and reload all configured lists. If the files are empty, blocking will be disabled as no content to be blocked will be imported.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-12 19:31:00 +02:00
DL6ER
c00357663b Reload pihole-FTL instead of restart the entire service on "pihole enable/disable"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-12 19:17:20 +02:00
Gusher123
2feb5f22cc Signed-off-by
This is my commit message

Signed-off-by: Gusher123 <t.siebeling@gmail.com>
2018-08-12 10:05:58 +02:00
Gusher123
f3aee056ad Merge branch 'patch-1' of https://github.com/Gusher123/pi-hole into patch-1 2018-08-12 09:59:34 +02:00
Gusher123
91ff5ca0ca Merge branch 'patch-1' of https://github.com/Gusher123/pi-hole into patch-1
Signed-off-by: Gusher123 <t.siebeling@gmail.com>
2018-08-12 09:58:45 +02:00
Gusher123
4238e36d7f Merge branch 'patch-1' of https://github.com/Gusher123/pi-hole into patch-1 2018-08-12 03:07:07 +02:00
Gusher123
03a9d3bc5b Not hardcoding dns and covering all blockingmodes
Using double brackets

Mode double brackets
2018-08-12 03:05:53 +02:00
Gusher123
fe46dee194 Mode double brackets 2018-08-12 02:06:32 +02:00
Gusher123
1c6c35f861 Using double brackets 2018-08-12 01:50:23 +02:00
Gusher123
926b25fd54 Not hardcoding dns and covering all blockingmodes 2018-08-12 01:15:42 +02:00
Gusher123
e58142b4ac Added comments 2018-08-11 15:14:45 +02:00
Gusher123
3e5c6afaee Don't let one blocklist, block an other
If a blocklist is blocked by an other and 'pihole -g' is run, update the blocked blocklist by useing an alternate dns server (in this case 1.1.1.1) to acquire the IP adres and download the blocklist using the 'curl --resolve' (https://curl.haxx.se/docs/manpage.html#--resolve)
2018-08-11 14:33:33 +02:00
WaLLy3K
a1bf9fad98 Fix colour tail for use with new blocking methods
Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2018-08-11 12:55:18 +10:00
Mark Drobnak
afdc4219d0 Merge pull request #2343 from pi-hole/tweak/audit_log
Add facility to add multiple audit list entries at once and to nuke audit list
2018-08-10 18:06:23 -04:00
DL6ER
94e4ed6644 Add facility to add multiple audit list entries at once and to nuke audit list
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-10 18:22:55 +02:00
Mark Drobnak
ef8aaba014 Merge pull request #2320 from TronPaul/fix/no-tty
set noninteractive during unattended install
2018-08-08 19:28:12 -04:00
Mark Drobnak
d2ae07e69b Merge pull request #2334 from pi-hole/fix/gravity-count-regex
Fix gravity's regex counting logic
2018-08-08 16:22:50 -04:00
DL6ER
760dd01b50 Use grep invert-match
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-07 18:36:06 +02:00
DL6ER
5bf90cb77d Use alternative logic for counting regex file entries, skipping commented out lines
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-07 18:02:01 +02:00
DL6ER
f5c3dc5d9d Improve download error message that is shown when downloading or verifying the binary failed
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-08-07 16:51:58 +02:00
DL6ER
f2b820079a Merge pull request #2329 from pi-hole/tweak/remove-ppc
Remove PowerPC from FTL binaries
2018-08-07 16:02:11 +02:00
WaLLy3K
083024496a Merge pull request #2327 from pi-hole/header-fix
Fix Chronometer heading
2018-08-07 12:29:45 +10:00
Mcat12
e01eea8ba8 Remove PowerPC from FTL binaries
It is no longer built, and may cause 404 errors if it attempts to
download the binary.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-08-06 21:15:16 -04:00
WaLLy3K
eef948d797 Fix header newlines
* Added \\n to each $xxx_ver_str, resolving issue #2325

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2018-08-07 10:45:30 +10:00
DL6ER
8017be7d09 Merge pull request #2322 from pi-hole/release/v4.0
Git Flow - Release/v4.0 merge back to development.
2018-08-06 09:57:28 +02:00
Dan Schaper
5b628a4c77 Merge branch 'development' into release/v4.0 2018-08-05 21:16:19 -07:00
Dan Schaper
ddbdb51d20 Merge pull request #2308 from pi-hole/release/v4.0
Release/v4.0
2018-08-05 10:40:22 -07:00
Mark McGuire
0081a7ca92 set noninteractive during unattended install
Signed-off-by: Mark McGuire <mark.b.mcg@gmail.com>
2018-08-05 10:12:43 -05:00
Dan Schaper
e80ae4906f Merge pull request #2318 from pi-hole/tweak/wildcard-regex-format
Use simpler regex format for wildcards
2018-08-01 01:01:08 -07:00
Mcat12
e4e22fb58e Fix permissive regex
The `\.?` is too permissive, letting in anything that ends in the domain

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-31 22:16:40 -04:00
Mcat12
7086a400e8 Use simpler regex format for wildcards
Use `\.?domain\.com$` instead of `((^)|(\.))domain\.com$`

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-31 21:36:29 -04:00
Mark Drobnak
a25a13fde0 Merge pull request #2317 from pi-hole/fix/parse_pihole-FTL.conf
Add empty pihole-FTL.conf file
2018-07-31 19:51:34 -04:00
Dan Schaper
993beab3b7 Changed wording.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-31 11:14:26 -07:00
Dan Schaper
06875f2cc9 Merge branch 'release/v4.0' into fix/parse_pihole-FTL.conf 2018-07-30 14:32:29 -07:00
Dan Schaper
448fc7231c Installed to /etc/pihole as PI_HOLE_CONFIG_DIR variable.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-30 14:26:07 -07:00
Dan Schaper
d0d030bafc Moved file creation to proper function. Included bash variables for file
location. Set to pihole:pihole ownership with 644 permissions.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-30 14:02:18 -07:00
Dan Schaper
833131e15f Merge pull request #2315 from pi-hole/fix/regex-file-ownership
Allow PHP to edit the regex file if web is installed
2018-07-30 06:36:20 -07:00
Dan Schaper
fb2810557a Allow web user group to access regex.list
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-29 16:09:03 -07:00
Dan Schaper
82a64db42b Merge pull request #2313 from pi-hole/fix/pihole-man-usage
Fix wildcard/regex usage formatting
2018-07-29 15:43:19 -07:00
Mcat12
57af0ba0a4 Use install to make the regex file
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-29 18:26:00 -04:00
Dan Schaper
17c1e64f7e Moved FTL configuration copy in to scripts copy function.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-29 09:06:51 -07:00
Dan Schaper
af13ceac24 Touch file as ${USER} instead of copying template.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-29 08:42:59 -07:00
Dan Schaper
af2ec61965 Convert [] to ()
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-29 08:17:57 -07:00
Mcat12
a55cc55338 Only touch the regex file if it doesn't already exist
The other permission calls will always be run so that the file is in the
expected state after install and repair.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-28 23:07:35 -04:00
Dan Schaper
b2fb3fd35a Merge pull request #2310 from pi-hole/feature/pihole-FTL.conf
Include template pihole-FTL.conf
2018-07-28 20:04:39 -07:00
Dan Schaper
94b7c8eb59 Added header for file. Not using standard Pi-hole copyright header.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-28 19:58:23 -07:00
Dan Schaper
6d671007dd Merge pull request #2314 from pi-hole/fix/ftl-install-error-output
Fix FTL install leaking error output
2018-07-28 19:53:04 -07:00
Mcat12
1a8d5fb4a9 Allow PHP to edit the regex file if installed
Fixes permissions error on the web interface when modifying the regex.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-28 21:57:39 -04:00
Dan Schaper
f90c412b35 nroff checked pihole.8 for formatting. nroff -man pihole.8
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-28 18:28:25 -07:00
Mcat12
c73b5456eb Fix "which" error leaking
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-28 21:12:05 -04:00
Mcat12
3d87398721 Fix check_service_active leaking error output
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-28 20:50:04 -04:00
Mcat12
96681887b8 Fix wildcard/regex usage formatting
Fix whitespace issue and missing backslashes in the regex example.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-28 20:35:15 -04:00
Dan Schaper
f2c675cff6 Formatted pihole-FTL.conf for readability.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-28 16:16:16 -07:00
Dan Schaper
1844bf17a7 Merge pull request #2311 from pi-hole/fix/git-head-flag
Fix wrong git command flag
2018-07-28 10:48:29 -07:00
Mark Drobnak
47b56d6123 Fix wrong git command flag
I could not find documentation on a `--head` flag, but there is a `--heads` flag which does the same thing.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-27 23:27:44 -04:00
Mark Drobnak
814d5f6d6c Merge pull request #2307 from borats/development
Change the word "folder" to "directory" since the pi-hole is intended…
2018-07-27 22:36:20 -04:00
Dan Schaper
512d2dd5f8 Source git repo and not /opt location.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-27 15:47:20 -07:00
Dan Schaper
ad20d5ac1c Remove -t SOURCE and DIRECTORY reversal flag on install.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-27 15:39:37 -07:00
Dan Schaper
b79ff05e29 Move template files to own subdir. Include pihole-FTL.conf in templates.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-27 15:21:25 -07:00
Borats Nolan
32b50f8188 Change the word "folder" to "directory" since the pi-hole is intended to run on rpi with Linux on it.
Signed-off-by: Borats Nolan <borats@i.dont.use.email>
2018-07-28 02:35:39 +10:00
Dan Schaper
a44096a26d Merge pull request #2303 from pi-hole/development
Update release/v4.0 with latest development changes
2018-07-26 22:30:51 -07:00
Dan Schaper
32cf94fc74 Merge pull request #2297 from pi-hole/bugfix/locales
Fixed locale issue, do not parse for string.
2018-07-26 16:44:52 -07:00
Dan Schaper
39e28cd80a Merge pull request #2302 from pi-hole/revert/2282
Revert #2282
2018-07-26 16:38:44 -07:00
Adam Warner
9b1356ad01 Revert #2282
Signed-off-by: Adam Warner <adamw@rner.email>
2018-07-27 00:27:06 +01:00
Peter Robinson
45521b377a Use ip route rather than old net-tools route in chronometer.sh
The only use of net-tools is the use of route in chronometer.sh so
instead use the same method as used in piholeDebug.sh to get the
default gateway so there's no need to depend on net-tools anylonger.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2018-07-26 17:46:51 +01:00
Dan Schaper
46a366635c Fixed locale issue, do not parse for string.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-26 05:30:05 -07:00
Dan Schaper
384b588a2d Merge pull request #2291 from pi-hole/merge/FTLDNS-to-development
Fix merge conflict in #2276
2018-07-24 11:51:56 -07:00
Mcat12
03e5a78d8f Merge remote-tracking branch 'origin/FTLDNS' into development
# Conflicts:
#	advanced/Scripts/piholeDebug.sh
2018-07-22 15:18:26 -04:00
Dan Schaper
e32c76b059 Merge pull request #2289 from pi-hole/feature/space_tab
Adjusting spacing for utility scripts.
2018-07-20 19:23:50 -07:00
Dan Schaper
ba7782f867 Space/Tab piholeDebug.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 15:25:35 -07:00
Dan Schaper
c5091b0e49 Space/Tab wildcard_regex_converter.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 14:00:34 -07:00
Dan Schaper
b54e32f0ca Space/Tab webpage.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:57:15 -07:00
Dan Schaper
328e7738d5 Space/Tab version.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:27:30 -07:00
Dan Schaper
aca359c2e2 Space/Tab updatecheck.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:24:05 -07:00
Dan Schaper
1cd40dc9e5 Space/Tab update.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:22:37 -07:00
Dan Schaper
dc9407281f Space/Tab setupLCD.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:17:10 -07:00
Dan Schaper
8f727c1f35 Space/Tab query.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:13:42 -07:00
Dan Schaper
a08ea28feb Space/Tab piholeLogFlush.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 13:07:54 -07:00
Dan Schaper
c5535dd9a0 Space/Tab piholeCheckout.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 12:54:24 -07:00
Dan Schaper
3519cc5e44 Space/Tab list.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 12:42:11 -07:00
Dan Schaper
d251bbbb05 Space/Tab chronometer.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 12:29:09 -07:00
Dan Schaper
1fc3ec9029 Merge pull request #2287 from pi-hole/feature/clean_comments
Remove empty comment lines in basic-install.sh
2018-07-20 11:37:15 -07:00
Dan Schaper
1877128fc4 Removes empty comment lines in basic-install.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-20 10:38:13 -07:00
Dan Schaper
76c5b4a06b Merge pull request #2118 from pi-hole/fix/debug-shellcheck
fix some shellcheck/stickler compaints in debug script
2018-07-19 05:18:40 -07:00
Mark Drobnak
9cd674b528 Merge pull request #2282 from RamSet/tweak/Port53
Updated port 53 check #2
2018-07-18 22:56:33 -04:00
RamSet
5aea7eb860 corrected function indentation
Signed-off-by: RamSet <RamSet@gmail.com>
2018-07-17 20:46:18 -06:00
Mark Drobnak
ec30df2020 Merge pull request #2277 from bcambl/centos_fedora_fixes
Installer fixes for Fedora & CentOS
2018-07-17 22:06:25 -04:00
RamSet
bb33427c79 fixed parsing error
Signed-off-by: RamSet <RamSet@gmail.com>
2018-07-17 18:09:25 -06:00
RamSet
28a16cebda Addressed lint errors.
Signed-off-by: RamSet <RamSet@gmail.com>
2018-07-17 18:06:32 -06:00
RamSet
49c79405bc changed flag and variable name
Signed-off-by: RamSet <RamSet@gmail.com>
2018-07-17 18:04:50 -06:00
RamSet
3098f32a07 Fixed intentation and corrected comments.
Signed-off-by: RamSet <RamSet@gmail.com>
2018-07-17 17:56:13 -06:00
Dan Schaper
b1e9c05bee Merge pull request #2284 from pi-hole/bugfix/source_webpage
Added missing `.` for sourced file.
2018-07-17 06:38:32 -07:00
Dan Schaper
69e06d89ff Added missing for sourced file.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-07-16 22:36:58 -07:00
RamSet
56b04017e7 Port 53 check updated with 4 spaces.
Signed-off-by: RamSet <RamSet@gmail.com>
2018-07-16 11:29:12 -06:00
RamSet
3af61c031d Merge pull request #1 from pi-hole/development
Development
2018-07-16 11:20:49 -06:00
Dan Schaper
f42a57088f Merge pull request #2280 from rrobgill/development
Add regex option to autocomplete
2018-07-16 09:34:22 -07:00
WaLLy3K
4834452875 Merge pull request #2278 from pi-hole/fix/missing-wildlist-help-and-double-dash
Add back --wild list.sh help and use -- for long params like --regex
2018-07-16 14:55:05 +10:00
Rob Gill
c5b9d99b48 Add regex option to autocomplete
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-07-16 10:50:05 +10:00
Mcat12
f8d4c36f6d Add back --wild list.sh help and use -- for long params like --regex
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-15 18:59:25 -04:00
bcambl
fa9ecbdb81 add php-json to Fedora web deps
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-15 15:41:04 -06:00
bcambl
2bf6b29b8f trigger an install/upgrade of PHP after enabling the Remi repository
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-15 15:40:44 -06:00
Dan Schaper
25812f88f6 Merge pull request #2262 from bcambl/additional_tests
additonal test coverage for installer
2018-07-15 09:03:52 -07:00
Dan Schaper
037989b8e4 Merge pull request #2271 from pi-hole/feature/installer_spacing
Start changes to new code style for repository. Revise basic installer.sh spacing.
2018-07-14 19:55:13 -07:00
Dan Schaper
dbc82cfb6a Merge pull request #2236 from pi-hole/new/regex-lists
Use regex lists instead of wildcards for blocking
2018-07-14 06:10:44 -07:00
Mcat12
941a766aa3 Replace -wild and -regex with --wild and --regex
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-12 21:38:43 -04:00
Mcat12
72be7ad5f0 Don't count commented out regex lines
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-12 21:21:06 -04:00
Mcat12
b2a36f71a0 Fix wildcard description in pihole man page
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-12 21:17:32 -04:00
Adam Hill
6b17620389 Update .travis.yml 2018-07-12 10:24:01 -05:00
Adam Hill
b04195041a Update README.md 2018-07-12 10:22:50 -05:00
Adam Hill
8ca4c66e3c make smarter assertions rathe than largestring not in string
Signed-off-by: Adam Hill <adam@diginc.us>
2018-07-12 00:03:25 -05:00
Adam Hill
449b7bf6e4 reduce the amount of strict not in checks
Signed-off-by: Adam Hill <adam@diginc.us>
2018-07-11 23:25:16 -05:00
Adam Hill
88e4b6390c Tox!
Signed-off-by: Adam Hill <adam@diginc.us>
2018-07-11 23:24:28 -05:00
Dan Schaper
de92bd1884 Merge pull request #2268 from pi-hole/fix/add-back-conditional-forwarding
Add back conditional forwarding to webpage.sh
2018-07-09 18:27:09 -07:00
Mcat12
1b276a74fe Display all lines of a list, even if there is no newline at the end
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 16:03:16 -04:00
bcambl
fff31558a0 assert REMI repository is not installed for Fedora
- fix whiptail mock comments to clarify continue vs cancel

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-08 14:02:31 -06:00
Mcat12
8084c4b2a3 Fix regex period substitution due to switching to bashism
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 15:56:15 -04:00
Mcat12
1ca852191f Fix stickler complaints
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 15:50:05 -04:00
Mcat12
af5fc6547a Fix echoing wrong domain when converting wildcard
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 15:47:18 -04:00
Mcat12
70f2b26c86 Escape periods in wildcard converted regex filters.
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 15:45:06 -04:00
Mcat12
cfd95dbe87 Fix incorrect variable usage
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 15:38:44 -04:00
Mcat12
c5bb404d6a Emulate wildcard blacklisting via -wild and move regex to -regex
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-08 14:37:33 -04:00
bcambl
4c23964964 ensure images are build prior to running tests
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-07 18:43:11 -06:00
bcambl
e4a6dcd35c update travis.yml to run tests in parallel
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-07 17:51:36 -06:00
bcambl
d4addd53ad Add tests for Fedora/CentOS distro_check
- test to ensure installer behavior with unsupported CentOS releases
- test to ensure repository enablement
- test to ensure PHP upgrade opt-in/opt-out behavior

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-07 17:44:05 -06:00
Mcat12
d21298c156 Add back conditional forwarding to webpage.sh
This was accidentally removed in a previous PR.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-07-07 15:23:47 -04:00
Dan Schaper
9dba9fb366 Convert multiline echos to individual echo statements so they don't lead with different amounts of space.
Signed-off-by: Dan Schaper <dan.schaper@pihole.net>
2018-07-06 21:29:20 -07:00
bcambl
09d40679c0 add test for unsupported distro checking
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-06 10:07:43 -06:00
Dan Schaper
a323b126e5 Finished space conversion
Signed-off-by: Dan Schaper <dan.schaper@pihole.net>
2018-07-05 23:47:55 -07:00
bcambl
553aad6ed2 add Fedora container to test matrix
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-05 18:12:39 -06:00
bcambl
5ca2ad6148 move test globals & mock commands to conftest
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-05 18:10:43 -06:00
bcambl
40537e1522 python linting: missing whitespace after ',' (E231)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-03 00:43:24 -06:00
bcambl
064a75b21b python linting: missing whitespace around operator (E225)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-03 00:43:18 -06:00
bcambl
1d3445bc0f python linting: whitespace after '(' and before ')' (E201 & E202)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-03 00:43:09 -06:00
bcambl
79232d02c9 python linting: 'pytest' imported but unused (F401)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-03 00:30:00 -06:00
bcambl
9bd4986781 python linting: whitespace before ':' (E203)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-03 00:21:57 -06:00
bcambl
c3d443aaff python linting: lines > 79 characters (E501)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-03 00:09:56 -06:00
WaLLy3K
b087888f94 Merge pull request #2261 from pi-hole/fix-no-protocol
Treat adlists URLs without a protocol as HTTP
2018-07-03 09:58:29 +10:00
bcambl
da3dfd0998 python linting: missing whitespace after ':' (E231)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-02 15:25:51 -06:00
bcambl
4468d81472 python linting: 2 lines prior to defs (E302)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-07-02 14:54:19 -06:00
WaLLy3K
7ddae8f2eb Treat URLs without a protocol as HTTP
Signed off by WaLLy3K <wally3k@pi-hole.net>
2018-07-02 19:59:22 +10:00
Mark Drobnak
6b2851a671 Merge pull request #2257 from pi-hole/fix/query-process-wildcards
Move processWildcards to query.sh
2018-06-30 22:18:46 -04:00
Mcat12
4763969c8f Move processWildcards to query.sh
Closes #2255

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-30 22:03:53 -04:00
Mark Drobnak
f9b75e486c Merge pull request #2256 from pi-hole/fix/query-lists-variable-substitution
Fix incorrect variable string substitution
2018-06-30 15:56:22 -04:00
Mcat12
f868052062 Fix incorrect variable string substitution
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-30 15:50:43 -04:00
Mcat12
61f0cbe10a Update pihole man page for regex
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-29 23:34:15 -04:00
Mcat12
0f4968d75c Merge remote-tracking branch 'origin/development' into new/regex-lists 2018-06-29 23:12:34 -04:00
Mcat12
3077c22e4f Change help strings from wildcard to regex blacklist
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-29 23:10:49 -04:00
Mcat12
0decc37b5a Appease stickler
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-29 22:55:00 -04:00
Mcat12
4a953b66e0 Make removing regex domains work correctly
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-29 22:51:37 -04:00
Mcat12
8435eeed4d Don't validate regex domains
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-28 23:31:50 -04:00
Mcat12
cffb4de83b Use strict grep instead of regex for duplicates
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-28 23:01:27 -04:00
Mcat12
55175087c4 Set regex file permissions for web access
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-28 22:52:44 -04:00
Dan Schaper
0ddfa8ad10 Merge pull request #2254 from andrewjanke/patch-1
typo fix
2018-06-28 07:34:35 -07:00
Andrew Janke
b74fb3f179 typo fix 2018-06-29 00:28:43 +10:00
bcambl
9d3d33b6a2 add tests for selinux checking
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-06-26 00:09:30 -06:00
Dan Schaper
2abaa60c2e Merge pull request #2249 from pi-hole/revert-2069-fix/nullbyte
Revert "Fix error: /opt/pihole/gravity.sh: 385: Warning: command substitution: ignored null byte in input"
2018-06-25 08:35:09 -07:00
Dan Schaper
d5547f5c7c Revert "Fix error: /opt/pihole/gravity.sh: 385: Warning: command substitution: ignored null byte in input" 2018-06-24 16:06:55 -07:00
Mark Drobnak
061510098c Merge pull request #2246 from pi-hole/fix/debug-simple-gravity-list
Update debug script for simple list format
2018-06-22 22:41:36 -04:00
Mark Drobnak
4fc3546887 Merge pull request #2069 from pi-hole/fix/nullbyte
Fix error: /opt/pihole/gravity.sh: 385: Warning: command substitution: ignored null byte in input
2018-06-20 20:42:24 -04:00
Mcat12
868948509a Split declaration and assignment of random_url
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-20 20:30:42 -04:00
Mark Drobnak
e71492a2b3 Update debug script for simple list format
Gravity is now just a list of domains, not IP addresses and domains separated by a space.

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-06-20 20:29:32 -04:00
Mark Drobnak
c2055f3514 Merge pull request #2240 from pi-hole/tweak/warn_on_tail_if_log_disabled
pihole -t: Warn user if Pi-hole's logging is disabled
2018-06-17 11:23:27 -04:00
DL6ER
2809579dd7 Refine regex filter generation
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-06-17 14:59:21 +02:00
DL6ER
c7afe3e9a4 Please stickler by making clear that the variable regexFile is declared outside of this routine
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-06-17 14:46:26 +02:00
DL6ER
cd026cd865 Add comment where regexList is defined
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-06-17 14:43:33 +02:00
DL6ER
bc705aac03 Add automated wildcard list -> regex filter conversion
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-06-17 14:39:19 +02:00
DL6ER
a7c73036f0 pihole -t: Warn user if Pi-hole's logging is disabled
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-06-17 13:37:41 +02:00
Mark Drobnak
e80d27f273 Merge pull request #2234 from rrobgill/split-query-functions
Fix grep query leak & relocate query
2018-06-15 19:25:32 -04:00
Rob Gill
23adbf9540 remove quotes
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-15 14:45:27 +10:00
Rob Gill
a7347238e6 $adListsList replace filename in text
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-15 14:42:30 +10:00
Rob Gill
bf55666492 Appease stickler.
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 16:29:07 +10:00
Rob Gill
8ab0b0e460 colfile
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 16:25:43 +10:00
Rob Gill
b8e1849cec wildcardlist
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 16:19:07 +10:00
Rob Gill
2255d05664 Remove scanlist(), now in query.sh
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 16:09:49 +10:00
Rob Gill
45a8eda49b Stop grep leak in query
Fix grep error leak from #1805

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 16:08:21 +10:00
Rob Gill
b1207949ac Call query.sh to replace queryFunc()
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 15:49:52 +10:00
Rob Gill
d61fd01d61 Split queryFunc() into query.sh
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-13 15:47:08 +10:00
Mark Drobnak
4d5d3108fb Merge pull request #2231 from alexvy86/patch-1
Remove error text from message when next whitelist request succeeds
2018-06-11 19:41:48 -04:00
Alex Villarreal
e422f4154f Clean error message on successful response
Signed-off-by: Alejandro Villarreal <alex@alexvy86.com>
2018-06-11 12:59:53 -05:00
Mark Drobnak
0651f1bcd4 Merge pull request #2220 from rrobgill/installedphpcheck
Bugfix - Check version of installed php
2018-06-08 23:31:40 -04:00
Rob Gill
11f0ade921 comments
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-09 13:18:36 +10:00
Mark Drobnak
5cab2e1c43 Merge pull request #2224 from rrobgill/bashcompletion
Bashcompletion
2018-06-08 21:45:03 -04:00
Rob Gill
6381bdbf33 don't use major.minor for PHP 5
Signed-off-by: <rrobgill@protonmail.com>
2018-06-09 11:35:30 +10:00
Mark Drobnak
c8bcd4af2d Merge pull request #2004 from pi-hole/tweak/32bitOS_on_64bitCPU
Install 32bit FTL on 32bit OS (even if 64bit architecture is detected)
2018-06-08 20:56:36 -04:00
Rob Gill
cabb06230c --json not --jason
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-09 10:30:04 +10:00
Mcat12
4a75566a3b Merge remote-tracking branch 'origin/development' into tweak/32bitOS_on_64bitCPU 2018-06-08 20:20:57 -04:00
Mark Drobnak
d9c924b472 Merge pull request #2225 from rrobgill/ftlinstall-local-vars
remove duplicate declaration in ftlinstall()
2018-06-06 19:51:06 -04:00
Rob Gill
52aa52c3b1 remove duplicate declaration
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-07 08:19:26 +10:00
DL6ER
d254d6075a First step from wildcards to regex lists for blocking
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-06-06 19:26:56 +02:00
Rob Gill
8004080643 Additional command-line completion
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-06 22:37:43 +10:00
Rob Gill
13878974a6 Merge pull request #4 from pi-hole/development
Development
2018-06-06 14:21:50 +10:00
Mark Drobnak
6689e00e6a Merge pull request #2212 from rrobgill/man-pages
Man page for pilhole-FTL
2018-06-05 21:33:54 -04:00
Mark Drobnak
9b8a108f86 Merge pull request #2221 from pi-hole/tweak/statsnologs
Stats can still be generated without logging, no need for this sentence
2018-06-05 18:39:44 -04:00
Rob Gill
a3569d88c9 Version strings & bash.
Fixed up the version checking. Thanks for your help @dschaper.

No longer uses the version string as returned, but uses the major and minor version numbers extracted from it, against the minimum of 5.5. 

Tested against real install of php 7.0, (and the version check logic separately tested against a variety of artificial version numbers, of multiple digits for both major and minor version. - Lesson learned, I'm never trusting bash again)

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 21:42:42 +10:00
Adam Warner
f2f6b6ede9 stickler complaints
Signed-off-by: Adam Warner <adamw@rner.email>
2018-06-05 09:29:03 +01:00
Adam Warner
7f81cfd45a Stats can still be generated without logging, no need for this sentence
Signed-off-by: Adam Warner <adamw@rner.email>
2018-06-05 09:09:35 +01:00
Rob Gill
13b8e1a2ae quotes.
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 15:09:07 +10:00
Rob Gill
36dbdf955d Update basic-install.sh
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 14:48:24 +10:00
Rob Gill
714b6c98ef codacy
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 14:45:01 +10:00
Rob Gill
7181d7ae6a Left that fi
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 14:30:18 +10:00
Rob Gill
9422d57283 Check version of installed php
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 12:08:27 +10:00
Jacob Salmela
5724cec1e5 Merge pull request #2219 from pi-hole/tweak/readme
Add coverage, remove projects, add Patreon link
2018-06-04 20:12:18 -05:00
Jacob Salmela
35ca54d98f add patreon and adjust affiliate links
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-06-04 20:00:26 -05:00
Jacob Salmela
7398a9ebf9 remove projects that are not compliant with our trademarks
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-06-04 19:59:23 -05:00
Rob Gill
4188fb536e Privacy levels
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 10:25:51 +10:00
Rob Gill
a11e5e2deb dnsmasq
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-05 10:23:23 +10:00
Mark Drobnak
5dd7e8c4d9 Merge pull request #2215 from rrobgill/web-console
Changes to --help text
2018-06-04 18:20:57 -04:00
Rob Gill
40bc390c3b Admin Console -> "Web Interface"
User facing --help text changes
Admin Console --> Web Interface
and additional branch option

Signed-Off-By: Rob Gill <rrobgill@protonmail.com>
2018-06-04 13:34:42 +10:00
Rob Gill
8776348a80 Merge pull request #2 from pi-hole/development
Development
2018-06-04 10:05:58 +10:00
Rob Gill
49fb4421dd Requested changes to manpages - now align with docs.pi-hole.net/ftldns. weird bolding issues fixed
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-04 09:54:53 +10:00
Mark Drobnak
d232f08933 Merge pull request #2208 from pi-hole/tweak/checkout
Don't run the installer when doing ftl checkout, instead just run the…
2018-06-03 14:35:35 -04:00
Dan Schaper
feba4da0b8 Merge pull request #2161 from pi-hole/centos_remi-php7
CentOS install re-worked to provide PHP7 via Remi Repository
2018-06-03 10:54:32 -07:00
Dan Schaper
928d7186b5 Merge pull request #2214 from pi-hole/fix/gravity-comment
Fix gravity_ParseFileIntoDomains Awk comment
2018-06-03 10:52:46 -07:00
Mark Drobnak
3149a95d6a Fix gravity_ParseFileIntoDomains Awk comment
Signed-off-by: Mark Drobnak <newtoncat12@yahoo.com>
2018-06-03 13:33:33 -04:00
Rob Gill
ed7ebfd58d man page for pihole-FTL
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-03 22:15:26 +10:00
Rob Gill
808e310799 Merge pull request #1 from pi-hole/development
Development
2018-06-03 20:54:03 +10:00
Mark Drobnak
23fbb3cf22 Merge pull request #2205 from rrobgill/manual-page
Manual page
2018-06-02 21:11:21 -04:00
Mark Drobnak
c11e643f13 Merge pull request #2207 from rrobgill/service-pihole-FTL-status-(sysV)
Fix service pihole-FTL status (sysV)
2018-06-02 11:23:38 -04:00
Adam Warner
f5541860bc Don't run the installer when doing ftl checkout, instead just run the ftl install functions
Signed-off-by: Adam Warner <adamw@rner.email>
2018-06-02 09:56:08 +01:00
Rob Gill
83ff0055b6 Test and indicate status
This added function tests if pihole-FTL is running when the sysV.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 15:30:51 +10:00
Rob Gill
213f23aaf6 wildcard & space
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 14:46:45 +10:00
Rob Gill
9970f3786f Requested change
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 14:14:55 +10:00
Rob Gill
d01a568b8b Requested changes (also tabs -> spaces)
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 14:13:30 +10:00
Mark Drobnak
e397884e1e Merge pull request #2206 from rrobgill/lighttpd-service-test-cleanup
Lighttpd service test
2018-06-01 22:08:53 -04:00
Rob Gill
ef65bac79b change status from INFO to CROSS
Signed-Off-By: Rob Gill <rrobgill@protonmail.com>
2018-06-02 11:27:35 +10:00
Rob Gill
c0837c726f blank space
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 11:18:13 +10:00
Rob Gill
ce5429aba7 stickler
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 11:02:06 +10:00
Rob Gill
aa191e9202 Update basic-install.sh
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 10:46:07 +10:00
Rob Gill
a8f0283e93 Update basic-install.sh
This hands checking of lighttpd's status over to the existing check_service_active() function.

All other checks of service status within the install script are handled by this function.

Use of existing function:
Avoids duplication of service detection logic.
Uses return code to determine status, thereby avoids parsing text to determine status, and reliance on English language locale to determine activity, (which may also be broken on some systems (# 2204)

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 10:11:11 +10:00
Rob Gill
999e47a26c Remove manual page
Tests for presence of pihole man page.
If it is present, deletes it and runs man-db to rebuild manual database.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 09:50:52 +10:00
Rob Gill
a8103ca22d Manual page install function
Function to install man page.
Verifies that man pages are installed, and correct directory for the pihole manpage is present.
Copies file, and runs man-db to update man page database.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 09:45:04 +10:00
Rob Gill
ef17f4913b Create pihole.8
Linux man page for pihole

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-02 09:39:51 +10:00
Mark Drobnak
1a30043776 Merge pull request #1768 from Al2Klimov/bugfix/install-invalid-user
basic-install.sh: fix "install: invalid user ''"
2018-06-01 19:27:51 -04:00
Mark Drobnak
b7e8b91eec Merge pull request #2196 from rrobgill/uninstall-formatting
Style: uninstall.sh (Tabs to spaces)
2018-06-01 17:27:58 -04:00
Alexander A. Klimov
3be1904653 basic-install.sh: fix "install: invalid user ''"
refs #1767
2018-06-01 10:20:40 +02:00
Rob Gill
cadd0e4244 move code back to correct location
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-01 14:03:13 +10:00
Rob Gill
f35ea9a3ca replace code i missed during merge
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-06-01 11:57:59 +10:00
Rob Gill
0971630e01 Merge branch 'development' into uninstall-formatting 2018-06-01 07:17:02 +10:00
Rob Gill
b60a9fa371 merge (#2)
* remove package_check to avoid situations like #1760

Signed-off-by: Adam Warner <adamw@rner.email>

* Prevent redundant entries in to adlists.list

Grep ${args[3]} and only add if grep -c -eq 0

Signed-off-by: Ryan Knapper <ryanknapper@gmail.com>

* lan to local

Reduced differences.

Signed-off-by: Ryan Knapper <ryanknapper@gmail.com>

* Require exact match

Updated to require an exact match to reduce false-positives, as suggested by DL6ER.

Signed-off-by: Ryan Knapper <ryanknapper@gmail.com>

* fix empty ports on some systems

Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>

* debug user locale; improve function to parse variables and files

Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>

* Split declaration and population for stickler.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* implement dschapers suggestions--better command, less subshells, and finer formatting

Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>

* flip uninstall compatability check

Signed-off-by: bcambl <blayne@blaynecampbell.com>

* Update index.php

Avoiding calling empty() on a function allows this to work under PHP5. Making the check for blocklist generation in this way instead is compatible with both PHP5 and PHP7.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* Update index.php

thanks stickler-ci  .......

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* changes as requested 

changes as requested 

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* oh stickler bot...

accidentally a space

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* linting: Double quote to prevent globbing and word splitting

Signed-off-by: bcambl <blayne@blaynecampbell.com>

* unbind resolved on ubuntu 18.04

Stop systemd-resolved from interfering with dnsmasq/ftl
Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* restore resolvd.conf

If dnsmasq is removed, resolved will need to be restored.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* Update uninstall.sh

Signed-off-by: Rob Gill <rrobgill@protonmail.com>>

* Minor correction for double instance of the word "found".

Signed-off-by: RamSet <RamSet@gmail.com>

* message text

Signed-off-by: Rob Gill <rrobgill@protonmail.com>>

* relocate as function

The check for systemd-resolved DNSStubListener, and disabling as necessary is a new function, called just prior to start_service pihole-FTL.
The check for ubuntu bionic 18.04 specifically is removed.
The check if resolved is enabled is made with check_service_active()
An additional check that the dnsstublistener is enabled is made.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* Regex & case fix

grep & sed regexes  match commented or uncommented

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* Update basic-install.sh

Force reloading of relsolved config where available

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* reload resloved

reload resolved config if possible, restart otherwise

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* user-facing messages

Signed-off-by: Rob Gill <rrobgill@protonmail.com>

* move & clarify comments
2018-06-01 07:14:54 +10:00
Mark Drobnak
ab45360808 Merge pull request #1954 from ryanknapper/adlist.lists
Prevent redundant entries from being added to Adlists.list
2018-05-31 14:58:16 -04:00
Mark Drobnak
8523c0da32 Merge pull request #2180 from rrobgill/resolved/ubuntu-bionic
Disable SystemD's DNS Stub Resolver On Install
2018-05-31 09:32:49 -04:00
Rob Gill
f0dfa4d53d Stickler-bot...
Signed-Off-By: Rob Gill <rrobgill@protonmail.com>
2018-05-31 13:43:49 +10:00
Rob Gill
f2bedddce4 Changes from #2167 converted to spaces
Signed-Off-By: Rob Gill <rrobgill@protonmail.com>
2018-05-31 13:37:52 +10:00
Rob Gill
552138e851 Appease stickler-bot.
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-31 13:24:09 +10:00
Rob Gill
ff71379a8e Convert from two to four space indetation
Signed-Off-By: Rob Gill <rrobgill@protonmail.com>
2018-05-31 13:14:18 +10:00
Mark Drobnak
23a7feeb6e Merge pull request #2167 from pi-hole/uninstall_compat_check
flip uninstall compatability check
2018-05-30 22:13:21 -04:00
Mcat12
34f5db9ed4 Merge branch 'development' into uninstall_compat_check
# Conflicts:
#	automated install/uninstall.sh
2018-05-30 22:08:20 -04:00
Mark Drobnak
9fd70cbdf9 Merge pull request #2057 from pi-hole/fix/debug-empty-ports
debug script: fix empty ports on some systems
2018-05-30 21:48:53 -04:00
Mark Drobnak
87506852d1 Merge pull request #1761 from pi-hole/tweak/Uninstall
Tweak/uninstall
2018-05-30 21:19:59 -04:00
Rob Gill
e6893bc419 Update uninstall.sh
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-29 19:03:00 +10:00
Rob Gill
ebeab06710 Appease Stickler-bot
So... originally no changes were made to the code, but Stickler-bot was unimpressed, so I've followed its suggestions.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-29 18:59:55 +10:00
Rob Gill
1911c3690d Style/Tabs to spaces
uninstall.sh contains a mix of tabs and spaces for indentation in different parts of the file.

Everywhere that used tabs has been converted to spaces, compatible with the indentation style used in basic_install.sh

No code has been altered, only the use of tabs and spaces in indention.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-29 17:59:39 +10:00
Mark Drobnak
3f3254a4df Merge pull request #2176 from rrobgill/php5fix
Fix block page crash on PHP 5.4
2018-05-22 23:21:20 -04:00
Rob Gill
20ccb7b558 move & clarify comments 2018-05-21 08:16:53 +10:00
Rob Gill
8cfe89604a user-facing messages
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-17 07:44:07 +10:00
Rob Gill
15f0ba839f reload resloved
reload resolved config if possible, restart otherwise

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-16 07:35:22 +10:00
Rob Gill
c400b914e5 Update basic-install.sh
Force reloading of relsolved config where available

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-16 07:28:32 +10:00
Rob Gill
a431c829cb Regex & case fix
grep & sed regexes  match commented or uncommented

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-16 07:11:23 +10:00
Rob Gill
25d0e125e5 relocate as function
The check for systemd-resolved DNSStubListener, and disabling as necessary is a new function, called just prior to start_service pihole-FTL.
The check for ubuntu bionic 18.04 specifically is removed.
The check if resolved is enabled is made with check_service_active()
An additional check that the dnsstublistener is enabled is made.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-15 20:23:36 +10:00
Rob Gill
b89a78ce17 message text
Signed-off-by: Rob Gill <rrobgill@protonmail.com>>
2018-05-15 19:42:18 +10:00
Mark Drobnak
f568012b9d Merge pull request #2070 from pi-hole/new/debug-locale
Get user locale when debugging
2018-05-14 16:43:05 -04:00
Adam Warner
328fb70e54 Merge pull request #2182 from RamSet/tweak/removeDoubleFound
Minor correction for double instance of the word "found".
2018-05-14 19:29:57 +01:00
RamSet
2f24e5ceb7 Minor correction for double instance of the word "found".
Signed-off-by: RamSet <RamSet@gmail.com>
2018-05-14 12:21:20 -06:00
Rob Gill
97809277df Update uninstall.sh
Signed-off-by: Rob Gill <rrobgill@protonmail.com>>
2018-05-14 19:50:58 +10:00
Rob Gill
3d3e7a330c restore resolvd.conf
If dnsmasq is removed, resolved will need to be restored.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-14 19:44:23 +10:00
Rob Gill
adf2275018 unbind resolved on ubuntu 18.04
Stop systemd-resolved from interfering with dnsmasq/ftl
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-14 19:38:12 +10:00
bcambl
c1ecfbfe63 linting: Double quote to prevent globbing and word splitting
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-05-12 19:39:17 -06:00
Adam Warner
a7e7680789 Merge pull request #2158 from pi-hole/development
Update FTLDNS from dev
2018-05-12 23:17:43 +01:00
Rob Gill
382c19024f oh stickler bot...
accidentally a space

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-12 10:53:44 +10:00
Rob Gill
9379487942 changes as requested
changes as requested 

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-12 10:49:01 +10:00
Rob Gill
5e99baf7b9 Update index.php
thanks stickler-ci  .......

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-11 14:52:30 +10:00
Rob Gill
31951dae4c Update index.php
Avoiding calling empty() on a function allows this to work under PHP5. Making the check for blocklist generation in this way instead is compatible with both PHP5 and PHP7.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2018-05-11 14:31:42 +10:00
Adam Warner
b1ab7f46e0 Merge pull request #2169 from pi-hole/tweak/customportsDNS
Remove LOCAL_DNS_PORT support
2018-05-10 22:25:29 +01:00
Adam Warner
4e0c7ed5a6 Merge pull request #2163 from pi-hole/fix/supressDnsmasqWarning
Fix for an error message introduced in #2162
2018-05-07 20:44:39 +01:00
DL6ER
2ef76d5e31 Remove LOCAL_DNS_PORT support
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-05-04 22:19:39 +02:00
bcambl
d3dda443cd flip uninstall compatability check
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-05-04 00:02:47 -06:00
bcambl
ec3802c180 add 'which' dependency (missing on Fedora minimal)
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-05-03 23:41:42 -06:00
Adam Warner
76654c7856 Actually check for dnsmasq's existence before attempting to interact with it's service
Signed-off-by: Adam Warner <adamw@rner.email>
2018-05-03 21:16:31 +01:00
Adam Warner
90239bb969 Merge pull request #2162 from pi-hole/fix/ifFtlExists
Don't attempt to download non-existent FTL Binary
2018-05-03 11:07:12 +01:00
Adam Warner
a6e4b0fea5 - Test for existence of remote non-master branch of FTL before attemtping to check for update
- Move some functions from checkout to basic-install
- provide helpful error message on downlaod not existing

Signed-off-by: Adam Warner <adamw@rner.email>
2018-05-01 23:15:26 +01:00
bcambl
8ad37af70e CentOS install re-worked to include PHP7 via Remi repository
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-05-01 00:58:21 -06:00
Mark Drobnak
c102d359f8 Merge pull request #2159 from pi-hole/tweak/removeDnsmasqRefs
Tweak/remove dnsmasq refs
2018-04-30 19:26:59 -04:00
Adam Warner
a07891e3e6 0 is not 1!!
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-30 23:53:51 +01:00
Adam Warner
e946a35b18 Move dnsmasq check into FTLcheckUpdate
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-30 23:50:35 +01:00
Adam Warner
68d7337f98 switch up dnsmasq detection logic
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-30 23:42:41 +01:00
Adam Warner
8b4198fd8d Merge pull request #1835 from Fauxsys/development
Fix for unattended installations #1767 #1768 #1834
2018-04-30 23:06:46 +01:00
Adam Warner
9c795fa40d Merge pull request #2157 from pi-hole/fix/EmptyAdlist
Allow for empty/non existent adlist file
2018-04-30 22:02:34 +01:00
Adam Warner
5f2217a079 Fix for gravity.list not being emptied with an empty/missing adlist file.
Variable output depending on content of /existence of adlist

Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-30 21:56:33 +01:00
Adam Warner
0cda4b7f23 Merge pull request #2123 from pi-hole/new/RemoveDefaultBlocklists
Remove default blocklists from install
2018-04-29 22:06:47 +01:00
Adam Warner
e17e69604c Merge branch 'development' into new/RemoveDefaultBlocklists 2018-04-29 18:40:53 +01:00
Adam Warner
e1bf4d4344 Merge pull request #2155 from pi-hole/tweak/DontStopServices
No need to stop services
2018-04-29 18:38:34 +01:00
Adam Warner
0c8a32b9ae No need to stop services
This causes issues on a `pihole -r reconfigure`

Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-29 18:27:10 +01:00
Adam Warner
d8c60aaae7 Merge pull request #2142 from bcambl/fix_fedora_ip_check
Fix static IP checking on Fedora
2018-04-29 14:36:07 +01:00
Adam Warner
3216d65353 Merge branch 'development' into new/RemoveDefaultBlocklists 2018-04-29 13:39:17 +01:00
Mark Drobnak
0df8d0a4e2 Merge pull request #2153 from MichaIng/patch-1
"INSTALL_WEB" renamed to "INSTALL_WEB_INTERFACE" #2115
2018-04-28 20:17:18 -04:00
MichaIng
43f19034b9 "INSTALL_WEB" renamed to "INSTALL_WEB_INTERFACE" #2115
+ Small fix, as due to PR https://github.com/pi-hole/pi-hole/pull/2115 variable "INSTALL_WEB" was renamed into "INSTALL_WEB_INTERFACE".
2018-04-28 15:17:29 +02:00
Adam Warner
2e6a937240 Merge pull request #2151 from pi-hole/FTLDNS-gravity-simplelists
Update FTLDNS branch
2018-04-25 06:57:49 +01:00
Adam Warner
05d8a7f6be Merge pull request #2147 from pi-hole/fix/borkedUpdate
Restore functionality to `pihole -up` broken in #2115
2018-04-23 21:14:26 +01:00
Adam Warner
ceaf4bc6bc Some extra code made it's way into the dev branch. Not entirely sure how that happened... related to #2115
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-23 20:46:57 +01:00
Adam Warner
f2cc2f433c Merge pull request #2140 from pi-hole/FTLDNS-gravity-simplelists
Use domain list format for black.list and gravity.list
2018-04-23 20:29:32 +01:00
Dan Schaper
858aa6255c Merge pull request #2145 from pi-hole/fix/2115
Add missing `/` to line 1511
2018-04-23 07:19:14 -07:00
bcambl
1d8ea9e869 Fix static IP checking on Fedora
This bug was introduced by #1758 where the CIDR was removed from the static IP check.
The CIDR was acting as a boundary so we need to test for a boundary or a slash character.

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-04-23 06:42:36 -06:00
Adam Warner
8ead0b5483 @fourdee dropped this: /
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-23 11:59:39 +01:00
Fauxsys
72c081cfd6 Fix for unattended installations #1767 #1768 #1834
Removed updatePihole() function and updated if/then statements in installPihole() and main(). Corrected minor typos.

Signed-off-by: Fauxsys <fiber.cipher@gmail.com>
2018-04-23 04:53:57 -04:00
Mark Drobnak
1f701c94a7 Merge pull request #2115 from Fourdee/Install-Web-Server
--disable-install-webserver
2018-04-22 15:56:11 -04:00
Dan
acfc49fd41 Merge branch 'development' into Install-Web-Server 2018-04-22 09:23:11 +01:00
Adam Warner
9c29bd627e fix user blacklisting 2018-04-21 23:55:33 +01:00
DL6ER
d24b141d8b Get rid of numBlocked file, FTLDNS can now determine number of domains thanks to the new lists format
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-21 23:58:42 +02:00
DL6ER
bac9e005ae Generate gravity.list and black.list in simple domain lists format for FTLDNS. Leave local.list in HOSTS format
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-21 23:27:36 +02:00
Daniel (Fourdee)
60bcca54eb Minor
+ indentation
2018-04-21 08:29:21 +01:00
Daniel (Fourdee)
eccea8a911 Minor
+ Fix indentation
+ Stick with case, add "On" to provide INFO print out, although its not
technically required as INSTALL_WEB_SERVER=true is default value.
2018-04-21 08:27:31 +01:00
Mark Drobnak
0833d0d8d5 Merge pull request #2133 from mbologna/patch-1
Fix: add psmisc as dependency
2018-04-20 13:17:46 -04:00
Michele Bologna
55fce489bc Fix: add psmisc as dependency
Debian 9.4 does not install `psmisc` by default and the following error will happen during installation:

```
  [✗] /usr/local/bin/pihole: line 353: killall: command not found
/usr/local/bin/pihole: line 364: killall: command not found
```

This patch adds `psmisc` (that contains `killall`) as dependency

Signed-off-by: Michele Bologna <michele.bologna@gmail.com>
2018-04-19 23:41:23 +02:00
Adam Warner
2ce40c3c07 Merge pull request #2132 from rwky/development
Fixed typo in README
2018-04-19 19:49:29 +01:00
Rowan
255cfb7d62 Fixed typo in README
Signed-off-by: Rowan Wookey <admin@rwky.net>
2018-04-19 19:45:11 +01:00
Adam Warner
8a327be400 Merge pull request #2130 from pi-hole/FTLDNS
Internal FTLDNS -> dev
2018-04-18 22:09:31 +01:00
DL6ER
1cae76b443 Merge pull request #2126 from pi-hole/FTLDNS-recursive-resolver
Add backend changes for supporting a local DNS server
2018-04-18 22:01:43 +02:00
DL6ER
828e8d2ae4 Merge pull request #2040 from pi-hole/FTLDNS
FTLDNS Integration
2018-04-18 20:20:39 +02:00
DL6ER
ce35509a40 Change command to "pihole -a localdnsport X"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-18 17:30:51 +02:00
DL6ER
24b8b4e904 Add backend changes for supporting a local recursive DNS server
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-18 17:12:20 +02:00
Daniel (Fourdee)
c2c1dc7469 Ensuring bot pleasure
https://github.com/pi-hole/pi-hole/pull/2115#pullrequestreview-113066748
2018-04-18 04:38:07 +01:00
Daniel (Fourdee)
47c1071bb8 Minor
+ Add info in regards to disabling web server install:
https://github.com/pi-hole/pi-hole/pull/2115
2018-04-18 04:24:48 +01:00
Daniel (Fourdee)
e401651f09 Update https://github.com/pi-hole/pi-hole/pull/2115
+ Patch existing systems with the new variable changes using
'accountForRefactor'
+ Prompt user to install webserver
2018-04-18 04:11:32 +01:00
Mark Drobnak
1449def040 Merge pull request #2049 from pi-hole/tweak/readme
update donation and affiliate links. also link to trademark guideline…
2018-04-17 20:25:09 -04:00
Dan Schaper
d4d1ec2568 Merge pull request #2124 from pi-hole/development
Internal
2018-04-17 11:54:50 -07:00
Adam Warner
7455ac9bfb Run chooseBlocklists on EVERY reconfigure, not only if the adlist file does not esist.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-17 19:46:36 +01:00
Adam Warner
b6b1dcb275 delete adlists.list if user cancels out of this dialog
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-17 19:35:46 +01:00
Adam Warner
2e4f49a223 Default all to on, change up wording. This commit can be rolled back, it's just an option!
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-17 17:10:53 +01:00
Adam Warner
88d4108f92 - Add new whipstail to choose from example blocklists on new install
- remove adlists.default
- do not copy non-existent adlists.default on run of gravity

Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-17 10:33:06 +01:00
Dan Schaper
c9f3c02cb7 Merge pull request #2027 from ravron/ravron-urls-in-query-strings
Prevent inadvertent blocking of good domains appearing in query strings
2018-04-16 17:31:51 -07:00
Dan Schaper
557372b312 Merge pull request #2119 from pi-hole/new/sticklerCI-extras
add some more linters to stickler
2018-04-15 18:28:00 -07:00
Adam Warner
18b24535fe Lets try the correct name for csslint
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 23:46:52 +01:00
Adam Warner
20e0bca71d add some more linters to stickler
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 23:45:36 +01:00
Adam Warner
6977f655e3 fix a typo
comment out some unused variables, but not deleting them in case there is a plan for them in future...

Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 22:08:55 +01:00
Adam Warner
e6fc9dc75d disable 2016 in two places and declare local variables
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 22:00:14 +01:00
Adam Warner
b57b3f4588 Disable SC2001 for generation of the_os
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 21:36:50 +01:00
Adam Warner
776ae92416 fix some shellcheck/stickler compaints in debug script
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 21:33:10 +01:00
Adam Warner
6ba53c1ac0 Merge branch 'development' into FTLDNS 2018-04-15 20:46:13 +01:00
Adam Warner
699d419c71 Merge pull request #2116 from pi-hole/FTLDNS_UpdateCheck
Check for new updates without actually updating
2018-04-15 20:42:29 +01:00
Mark Drobnak
d4870b3854 Merge pull request #2053 from pi-hole/tweak/debug-logs
Get head and tail of pihole-FTL.log during debug process
2018-04-15 14:23:25 -04:00
Adam Warner
e49a9096a5 accidentally a 'shift'
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 18:46:35 +01:00
Adam Warner
33148ba832 Add help text to pihole command to document new flag
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 18:30:13 +01:00
Adam Warner
bca23dd896 Allow passing of --check-only to update script.
Don't run installer for updating web files, it's handled by getGitFiles.
I think this works...

Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-15 18:25:35 +01:00
Daniel (Fourdee)
3a483a1b20 install_web_server
+ Splits web interface and server into two variables.
+ Option to disable forced install of Lighttpd.
2018-04-15 02:08:16 +01:00
Adam Warner
310d33b8ee Merge dev > FTLDNS fix merge conflicts
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-13 17:01:54 +01:00
Adam Warner
8b5dcc3872 Match change made by 7edab27 to prevent merge conflict
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-13 16:53:57 +01:00
Adam Warner
36d9af10f0 Merge pull request #2108 from LudovicRousseau/fix_No_such_file_or_directory
Fix sed: can't read /etc/pihole/pihole-FTL.conf: No such file or directory
2018-04-13 16:47:59 +01:00
Dan Schaper
0c8fcbc684 Merge pull request #2105 from pi-hole/feature/self_dco
Do not require DCO for Pi-hole Org members with GPG signed commits.
2018-04-13 05:42:04 -07:00
Ludovic Rousseau
7edab27e53 Stylistic change to use an explicit if/then/fi
Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2018-04-13 12:19:55 +02:00
Ludovic Rousseau
9b3531f634 Fix stylistic issue
Expand variable using ${FTLconf}

Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2018-04-13 11:48:34 +02:00
Ludovic Rousseau
d8f85a8981 Avoid a "No such file or directory" error
Check the file /etc/pihole/pihole-FTL.conf exists before trying to use
it.
without the patch I get, each day, in my logs:
sed: can't read /etc/pihole/pihole-FTL.conf: No such file or directory

I use a variable FTLconf to not repeat the file name twice.

Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2018-04-13 11:16:58 +02:00
Ludovic Rousseau
3b229489c2 Fix regex to find DBFILE= from configuration file
The regex ^\s^.DBFILE\s*=\s* does not work to match "DBFILE="
I don't know what the second '^' is used for.

With the change I now have the results:

DBFILE=/foo/bar
-> /foo/bar

  DBFILE=/foo/bar
-> /foo/bar

 # DBFILE=/foo/bar
-> /etc/pihole/pihole-FTL.db

xDBFILE=/foo/bar
-> /etc/pihole/pihole-FTL.db

Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2018-04-13 11:16:50 +02:00
Mark Drobnak
c2fcbbb0c6 Merge pull request #2090 from Razvici/master
Update pihole locahost probe for DNS status
2018-04-12 11:17:33 -04:00
Jacob Salmela
8e82bf69d8 update wallet addresses
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-04-11 20:40:35 -05:00
Jacob Salmela
284f9e3f2f implement mcats request. removed 'the'
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-04-11 20:38:56 -05:00
Jacob Salmela
5ffc3561ed implement dschapers suggestions--better command, less subshells, and finer formatting
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-04-11 20:35:51 -05:00
Dan Schaper
952f1271b4 Do not require DCO for Pi-hole Org members with GPG signed commits.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-04-11 10:13:09 -07:00
Dan Schaper
250b445eee Split declaration and population for stickler.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-04-10 21:37:04 -07:00
Mark Drobnak
331472b592 Merge pull request #1999 from pi-hole/tweak/RedundantInstallCode
adlists.default no longer used. No need to reference it.
2018-04-06 00:17:45 -04:00
DL6ER
82d5afe996 Silence error in log flush subroutine when no pihole-FTL.conf can be found
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-05 22:28:55 +02:00
Razvan Radu
7361d5d3ea Update pihole lolcahost probe for DNS status
Signed-off-by: Razvan Radu <ramset@gmail.com>
2018-04-05 11:14:39 -06:00
DL6ER
6086614274 Add "-l, privacylevel" description to "pihole -a"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-04 18:10:23 +02:00
Adam Warner
6bb4780d32 Merge pull request #2077 from pi-hole/tweak/FTLDNSExperiments
FTLDNS tweaks
2018-04-04 17:00:03 +01:00
Adam Warner
631f5b4848 Change order of updatable components to match the end output
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-04 16:35:11 +01:00
DL6ER
0f17712f6c Merge pull request #2085 from pi-hole/FTLDNS-privacylevels
Backend changes needed to be able to set the privacy level
2018-04-04 14:41:16 +02:00
DL6ER
4941e0f8ad Backend changes needed to be able to set the privacy level
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-04-04 13:12:39 +02:00
Jacob Salmela
fbee18e24d Merge pull request #2056 from pi-hole/release/v3.3.1
Pi-hole core v3.3.1
2018-04-02 19:29:39 -05:00
Adam Warner
f37b2bc7c1 move call to get_binary_name into FTLcheckUpdate() to avoid having to run that first
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-02 23:22:06 +01:00
Adam Warner
56278c6394 Fix shellcheck complaints
Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-02 22:06:36 +01:00
Adam Warner
b1d6c03190 Break out binary name funtion to it's own function
Remove duplicate code. get_binary_name is now in the install script
Add some "version" checking to ftl download when using an alt branch, uses checksum
Greatly simplify update process. Source pihole-FTL version checker from basic-install.sh
Always run install script to finalise changes.
Install script now outputs versions after an update
(This is a Squash of previous work into one commit)

Signed-off-by: Adam Warner <adamw@rner.email>
2018-04-02 21:53:32 +01:00
Mark Drobnak
1200a77b22 Merge pull request #2075 from everettsouthwick/development
Add support for public Cloudflare DNS servers.
2018-04-02 00:03:50 -04:00
Mark Drobnak
bb9a18ef08 Merge pull request #1987 from ryanknapper/patch-1
Proper output for debug CPU detection
2018-04-02 00:00:14 -04:00
Everett Southwick
a8b493cb7d Add support for public Cloudflare DNS servers.
Signed-off-by: Everett Southwick <everett@everettsouthwick.com>
2018-04-01 17:59:16 -05:00
Jacob Salmela
1a275ba184 debug user locale; improve function to parse variables and files
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-04-01 06:40:48 -05:00
Jacob Salmela
187848660c try another fix for #2028
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-31 16:12:29 -05:00
Jacob Salmela
c3f391dc5a maybe fixes #2028 by deleting null bytes
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-31 14:08:48 -05:00
Mark Drobnak
971e6f2664 Merge pull request #2064 from Perflyst/chronometer-1
Add RaspberryPi 3B+ to Chronometer
2018-03-30 17:42:50 -04:00
Mark Drobnak
a1d6ef04ec Merge pull request #1758 from mettacrawler/fix-for-RHELish-ifcfg
basic-install.sh - no CIDR in ifcfg-*
2018-03-30 17:28:52 -04:00
DL6ER
ff47ab12fb Save number of effectively blocked domains in /etc/pihole/numBlocked
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-03-30 21:01:51 +02:00
Dan Schaper
a97e361661 Merge pull request #2061 from dflamand/development
Remove dead link from CONTRIBUTING.md
2018-03-28 20:10:11 -07:00
Dan Schaper
34d84522dd Merge pull request #2054 from theLMGN/patch-1
Link to the admin panel on the splash page.
2018-03-28 20:08:39 -07:00
Perflyst
3390fbf238 Add RaspberryPi 3B+
Signed-off-by: Perflyst <mail@perflyst.de>
2018-03-27 12:23:01 +02:00
Mark Drobnak
98ad1feaeb Merge pull request #2060 from pi-hole/tweak/debug-xheader
add label to x-header so you know which one is being evaluated
2018-03-26 13:23:31 -04:00
Dillon Flamand
37e8a91d5b Remove dead link from CONTRIBUTING.md
Removed a link to a github repo that no longer exists.

Signed-off-by: D. Flamand <dflamand@users.noreply.github.com>
2018-03-25 21:59:35 -07:00
Jacob Salmela
68c27eb2a1 add label to x-header so you know which one is being evaluated
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-25 21:27:40 -05:00
Jacob Salmela
143e75d213 fix empty ports on some systems
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-25 09:39:29 -05:00
DL6ER
295ac49f83 Add capability CAP_NET_RAW to allow pihole-FTL to use RAW sockets for being able to create an ICMPv6 socket for IPv6 handling in the DHCP service
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-03-25 09:58:22 +02:00
Mark Drobnak
d31a498e6c Merge pull request #2031 from pi-hole/tweak/BegonePullApprove
Remove PA YAML file
2018-03-23 22:16:12 -04:00
Adam Warner
2fd88a1c6a Merge branch 'FTLDNS' of github.com:pi-hole/pi-hole into FTLDNS 2018-03-23 22:47:13 +00:00
Adam Warner
fbab930cb1 Allow install script to install FTL instead of the checkout script. Utilises the /etc/pihole/ftlbranch file.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-23 22:46:41 +00:00
Leo MG Nesfield (LMGN)
bfcbd72e4b Link to the admin panel on the splash page. 2018-03-23 16:17:31 +00:00
Jacob Salmela
d9d3caec22 new head tail function and get head tail of pihole-FTL.log instead of just head
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-23 06:56:40 -05:00
Adam Warner
238a56cac3 Remove CreateLogFile function, as this is handled by the FTL service
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-23 10:53:22 +00:00
Adam Warner
51765b1f65 chown pihole log to pihole:pihole, rather than pihole:root
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-23 10:15:40 +00:00
Jacob Salmela
7159ecb632 reduce ping times for faster script completion
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-23 00:11:21 -05:00
Jacob Salmela
11f3425876 update donation and affiliate links. also link to trademark guidelines. update an image. and add a project.
Signed-off-by: Jacob Salmela <jacob.salmela@pi-hole.net>
2018-03-22 23:51:12 -05:00
Mark Drobnak
e131395cce Merge pull request #2037 from justinamcafee/master
Adds FamilyShield DNS server address to the "Choose DNS" screen in installer.
2018-03-21 17:47:24 -04:00
Adam Warner
d26ea2b948 remove trailing whitespace
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-18 00:38:34 +00:00
Adam Warner
5584a9ce5d Merge branch 'development' into FTLDNS 2018-03-18 00:29:08 +00:00
Adam Warner
e2e8b733a8 tidy up function
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-18 00:13:10 +00:00
Adam Warner
f18bf35b20 use systemctl is-enabled to check enabled status of service
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-17 22:56:50 +00:00
Adam Warner
44d8cb77e3 Kill off mask_service function
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-17 22:48:11 +00:00
Adam Warner
fc10e3fcac Merge pull request #2025 from pi-hole/FTLDNSremoveDnsmasq
Disable dnsmasq FTLDNS
2018-03-16 11:27:52 +00:00
Adam Warner
b92ccb2de4 Additionally mask the dnsmasq service on systems with systemctl
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-14 20:01:06 +00:00
justinamcafee
30af6e73be added ;; to line 825
Misformated case. Updated correct case
2018-03-10 17:36:47 -06:00
justinamcafee
2895b9bfb7 Added support for FamilyShield from OpenDNS
With a very minor code change, individuals can now implement restrictions on dangers, disturbing, or otherwise adult oriented content without the need for managed restrictions.
This is a fairly non-invasive change and will benefit users who intend to use VPN for home or small business uses where access to such material may be undesirable.
2018-03-10 17:33:31 -06:00
Adam Warner
84bd86f1ee - Test to see if dnsmasq service is enabled before stopping and disabling it.
- Some formatting tweaks to the `start_service` `stop_`service` `disable_service` and `enable_service` commands

Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-07 23:31:28 +00:00
Adam Warner
7193f40b87 remove libnettle, missed a >/dev/null
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-07 22:23:05 +00:00
Adam Warner
acd69fa4b0 silence push/popd
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-07 22:21:09 +00:00
Adam Warner
71d8f5f96f remove PA YAML file
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-07 22:00:14 +00:00
Adam Warner
856a2096eb Merge pull request #2030 from pi-hole/new/StickFTLCheckoutBranch
Store checked out FTL branch in /etc/pihole/ftlbranch
2018-03-07 21:51:52 +00:00
Adam Warner
76cb129d3c don't forget master and development branches!
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-07 21:48:09 +00:00
Adam Warner
246d5cd587 store checked out FTL branch in /etc/pihole/ftlbranch
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-07 21:41:00 +00:00
Riley Avron
f390671018 Improve scheme matching to avoid inadvertent blocking
Signed-off-by: Riley Avron <riley.avron@gmail.com>
2018-03-06 22:03:56 -08:00
Riley Avron
512ec7fb87 Remove unneeded ifs in awk
Signed-off-by: Riley Avron <riley.avron@gmail.com>
2018-03-06 22:03:43 -08:00
Adam Warner
24219422df Merge branch 'development' into FTLDNSremoveDnsmasq 2018-03-06 20:43:27 +00:00
Adam Warner
aed20cf7c6 Merge pull request #2017 from pi-hole/fix/NoWhitelistGravity
Gravity falls over when there is no whitelist file
2018-03-06 20:39:32 +00:00
Adam Warner
6584933e92 fix stickler complaints
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-06 18:51:02 +00:00
Adam Warner
8cf8da4c78 - Check file /etc/pihole/ftlbranch for current FTL branch, download from github if master, or pi-hole.net if other
- Check if downloaded binary file can resolve queries, if so stop and disable dnsmasq
- Add service_disable function
- Add dependency libcap2-bin on debian to enable setcap. Need to check other distos
-Always download FTL binary if /etc/pihole/ftlbranch does not contain "master"
- Change some strings/variables that reference dnsmasq and change them to pihole/pihole-FTL

Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-06 18:44:57 +00:00
Adam Warner
ad1f210528 As we no longer add source lists to the whitelist by default, gravity falls over on new installs.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-06 18:29:28 +00:00
Adam Warner
cadab61a21 Merge branch 'development' into FTLDNS 2018-03-05 21:33:53 +00:00
Adam Warner
0b87f489d5 Look for pihole-FTL, not dnsmasq!
Signed-off-by: Adam Warner <adamw@rner.email>
2018-03-03 15:59:56 +00:00
Mark Drobnak
e3e5e016d5 Merge pull request #2016 from pi-hole/bugfix/mktemp
Bugfix mktmp > mktemp
2018-03-02 16:03:11 -05:00
Dan Schaper
3425b9a82e Fix mktmp > mktemp
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-03-02 12:28:53 -08:00
Ryan Knapper
5ecfc58e5f Require exact match
Updated to require an exact match to reduce false-positives, as suggested by DL6ER.

Signed-off-by: Ryan Knapper <ryanknapper@gmail.com>
2018-02-28 13:06:07 -05:00
Dan Schaper
6011dd7372 Merge pull request #2000 from pi-hole/fix/FTL_Install
Use pushd/popd and create random temporary directory
2018-02-26 21:55:12 -08:00
DL6ER
7ed45d26c2 Remove " " at some places where they shouldn't be
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-26 17:26:51 +01:00
DL6ER
fcdc85eab8 Remove dnsmasq from dependencies
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-25 23:47:11 +01:00
DL6ER
56a2924a33 Unprivileged processes are subject to full permission checking based on the process's credentials, we have to explicitly allow pihole-FTL to bind to ports < 1024 (port 53 for DNS) and for various advanced network-related operations (to allow for handling DHCP requests)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-25 23:42:26 +01:00
DL6ER
09886a3f11 Add resolveconf config to pihole-FTL.service
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-25 10:11:11 +01:00
DL6ER
e8ec0dc701 Use pihole-FTL resolver in pihole and gravity
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-25 09:34:04 +01:00
Dan Schaper
41d9d57c84 Merge pull request #1996 from pi-hole/fix/AlternativeWhitelistFromWebFix
Specifty `LC_ALL=C` when dealing with sorted lists.
2018-02-24 07:22:44 -08:00
DL6ER
b87bcc8f5f Modifications in pihole-FTL.service for FTLDNS
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-24 13:23:06 +01:00
DL6ER
0541d8f1c5 Try to determine if the user is running a 32bit OS on a 64bit system. If so, download the 32bit binary as we cannot expect the 64bit libraries to be present.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-24 11:13:33 +01:00
Dan Schaper
4606693e62 Use pushd/popd and create random temporary directory to prevent potential backdoor binary injection.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-02-22 20:13:38 -08:00
Adam Warner
e61d8e4fb8 adlists.default no longer used. No need to reference it.
Use --force switch of gravity to force the cache refresh

Signed-off-by: Adam Warner <adamw@rner.email>
2018-02-22 14:45:31 +00:00
Adam Warner
6b4685b333 much more elegant to export LC_ALL at the beginning of the script!
Signed-off-by: Adam Warner <adamw@rner.email>
2018-02-21 11:33:29 +00:00
Adam Warner
d4ac818a0b Specifty LC_ALL=C when dealing with sorted lists.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-02-21 11:23:07 +00:00
Ryan Knapper
c17d95bfed Proper output for debug CPU detection
Inserted "log_write" to properly output CPU detection lines.

Signed-off-by: Ryan Knapper (ryanknapper@gmail.com>
2018-02-19 10:22:28 -05:00
Mark Drobnak
f14184df30 Merge pull request #1982 from LudovicRousseau/master
Create blacklist.txt if not existant
2018-02-18 15:32:01 -05:00
Ludovic Rousseau
47bbea9ba7 Use " " to protect parameter substitution
Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2018-02-18 21:20:04 +01:00
Mark Drobnak
7265935cd4 Merge pull request #1915 from ryanknapper/development
Add conditional forwarding options to webpage.sh
2018-02-18 12:51:46 -05:00
DL6ER
40bda4b3d1 Merge pull request #1981 from pi-hole/fix/always_repair_pihole-FTL.service
Always replace pihole-FTL.service
2018-02-18 17:26:17 +01:00
Ludovic Rousseau
b7891f92a5 Create blacklist.txt if not existant
Closes: https://github.com/pi-hole/pi-hole/issues/1888

Signed-off-by: Ludovic Rousseau <ludovic.rousseau@free.fr>
2018-02-18 14:19:49 +01:00
DL6ER
8b79017d0f Always replace pihole-FTL.service
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-18 13:07:22 +01:00
DL6ER
5465ac9ba0 Merge pull request #1929 from pi-hole/fix/flushDB
pihole -f: Flush database
2018-02-17 17:45:15 +01:00
DL6ER
b8eaa9a527 Use double quotes to precent globbing and word splitting
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-17 13:01:00 +01:00
DL6ER
5d274008db Use possibly user-defined database location when flushing
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-17 12:58:57 +01:00
DL6ER
220e755596 Merge pull request #1973 from pi-hole/tweak/stop-autowhitelisting
Don't auto-whitelist blocking list domains
2018-02-17 12:23:14 +01:00
DL6ER
fc5034696d Don't auto-whitelist blocking list domains
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-02-16 19:42:33 +01:00
DL6ER
4a6f77bc59 Merge pull request #1967 from pi-hole/master
Git flow Pi-hole v3.3
2018-02-15 21:09:22 +01:00
Dan Schaper
1e87850952 Merge pull request #1943 from pi-hole/release/3.3
Pi-hole v3.3
2018-02-14 12:48:40 -08:00
Mark Drobnak
3472241289 Merge pull request #1962 from floek/master
Fixes https://github.com/pi-hole/pi-hole/issues/1772
2018-02-14 13:02:56 -05:00
Florian Freund
a944b6ff79 Fixes https://github.com/pi-hole/pi-hole/issues/1772 2018-02-12 21:28:43 +01:00
Mark Drobnak
6c4741bc61 Merge pull request #1730 from pi-hole/tweak/block-page-no-password
Disable password field on block page if no password is set
2018-02-11 22:15:20 -05:00
Mcat12
8a42ef431b Fix Javascript warning when no password is set
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-02-11 21:49:12 -05:00
Mcat12
2cf1f0e8fc Hide the password input when there is no password
Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2018-02-11 14:07:02 -05:00
Mcat12
55e50eced6 Merge branch 'development' into tweak/block-page-no-password 2018-02-11 13:49:36 -05:00
Adam Warner
30a2923380 Merge pull request #1952 from smopucilowski/fixes
Trivial spelling mistakes in basic-install.sh comments
2018-02-11 10:43:33 +00:00
Ryan Knapper
f2b3752f3d lan to local
Reduced differences.

Signed-off-by: Ryan Knapper <ryanknapper@gmail.com>
2018-02-07 17:08:55 -05:00
Ryan Knapper
36945a67d0 Prevent redundant entries in to adlists.list
Grep ${args[3]} and only add if grep -c -eq 0

Signed-off-by: Ryan Knapper <ryanknapper@gmail.com>
2018-02-07 17:04:10 -05:00
Sebastian Pucilowski
c5a2ca5c98 Trivial spelling mistakes in basic-install.sh comments
Signed-off-by: Sebastian Pucilowski <smopucilowski@gmail.com>
2018-02-07 16:56:21 +11:00
Dan Schaper
9f2ce0e296 Merge pull request #1910 from pi-hole/fix/BinaryFileLineInGravity
Potential fix for #1909
2018-01-28 03:23:19 -08:00
Adam Warner
55e10d8287 replace another grep -F as pointed out by @StarPicard
Signed-off-by: Adam Warner <adamw@rner.email>
2018-01-28 00:50:15 +00:00
Dan Schaper
94c772e1a8 Merge pull request #1936 from theel0ja/patch-fix-typo
Fixed a typo
2018-01-27 04:45:53 -08:00
Elias Ojala
2b6d9c34c9 Fixed a typo
Signed-off-by: Elias Ojala <ojala.s.elias@gmail.com>
2018-01-27 14:36:11 +02:00
Mcat12
1a5c86d32e Revert "Hide password textbox if there is no password"
This reverts commit 009fa2f1b7.
2018-01-23 20:28:43 -05:00
Mcat12
c7219fbdff Merge remote-tracking branch 'origin/development' into tweak/block-page-no-password 2018-01-21 09:09:36 -05:00
DL6ER
4c249a1186 Flush most recent 24 hours from FTL's database
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-21 13:48:13 +01:00
DL6ER
158ea1d43b Add sqlite3 dependency
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-21 11:54:49 +01:00
Mark Drobnak
535b8458d4 Merge pull request #1901 from bcambl/epel_check
Fix epel-release install for CentOS
2018-01-20 14:03:24 -05:00
Dan Schaper
49b3f82675 Merge pull request #1925 from pi-hole/feature/installtweaks
Install log security
2018-01-20 08:59:49 -08:00
Dan Schaper
9543203610 Echo the right location for the log.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-20 08:45:41 -08:00
Dan Schaper
cacfe4d387 Linting changes
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-20 07:39:11 -08:00
Dan Schaper
a7f0137e5f Use more secure installation log process.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-20 05:55:48 -08:00
Dan Schaper
b2eb364a4b Update header
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-20 05:36:28 -08:00
Dan Schaper
bb3b1bc6ba Move ascii berry to after root check, stops the double berry for the sudo refire.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-20 05:13:55 -08:00
Dan Schaper
ae8eb3f177 Merge pull request #1920 from pi-hole/feature/pr_template
Internal - GitHub template edit.
2018-01-20 03:48:51 -08:00
DL6ER
27c7325174 Merge pull request #1918 from pi-hole/tweak/lan
Use "lan" as fallback TLD for DHCP generated domains
2018-01-20 10:29:11 +01:00
DL6ER
8ee3d810b0 Merge pull request #1922 from pi-hole/tweak/logging-noflush
Add "pihole logging off noflush" command
2018-01-20 10:21:23 +01:00
DL6ER
d7dde06552 Add "pihole logging off noflush" command
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-18 17:08:46 +01:00
Dan Schaper
448495a4a3 Remove references to issues.
Modify code blocks to italics and reformat the layout.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-16 14:56:15 -08:00
DL6ER
52cc8e2fcf Use "lan" as fallback TLD for DHCP generated domains
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-16 22:10:27 +01:00
Dan Schaper
fb9cdea008 Merge pull request #1914 from deathbybandaid/development
Update README.md
2018-01-15 11:08:43 -08:00
Adam Warner
6c54bf036c Merge pull request #1913 from pi-hole/tweak/GravityFunctionNames
proposed gravity function renames
2018-01-15 17:51:19 +00:00
Deathbybandaid
657bc4edcd Update README.md
Signed-off-by: deathbybandaid
2018-01-15 08:05:43 -05:00
Deathbybandaid
b75dd5ff73 needed sign-off
Signed-off-by:
2018-01-15 08:04:27 -05:00
ryanknapper
607664c860 Update webpage.sh
Updated webpage.sh to include conditional forwarding options.
2018-01-14 21:01:08 -05:00
Deathbybandaid
094bd49f35 Update README.md 2018-01-14 20:29:20 -05:00
Adam Warner
18fbe60381 Merge pull request #1908 from pi-hole/tweak/RemoveCronPiholeUpdate
If this line is uncommented, it is re-commented on the next update an…
2018-01-14 20:58:58 +00:00
Adam Warner
f1956119fb proposed gravity function renames
Signed-off-by: Adam Warner <adamw@rner.email>
2018-01-14 20:38:39 +00:00
Adam Warner
876170767c Print actual domain instead of grep output of "Binary file /etc/pihole/list.preEventHorizon matches" when a domain with a unicode char is in a source list.
Signed-off-by: Adam Warner <adamw@rner.email>
2018-01-13 16:43:20 +00:00
Dan Schaper
f4f77ec88b Merge pull request #1900 from roots84/patch-1
Update README.md
2018-01-13 05:03:29 -08:00
Stefan
9ba2038702 Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1
Signed-off-by: Stefan <roots84@noreply.users.github.com>
2018-01-12 21:25:09 +01:00
Stefan
b176ba9e80 Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1
Signed-off-by: Stefan <roots84@noreply.users.github.com>
2018-01-12 21:24:39 +01:00
Stefan
cacb47ca7e Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1
Signed-off-by: Stefan <roots84@noreply.users.github.com>
2018-01-12 21:23:36 +01:00
Stefan
500e424fee Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1
Signed-off-by: Stefan <roots84@noreply.users.github.com>
2018-01-12 21:22:43 +01:00
Stefan
f1b02c0cab Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1 2018-01-12 21:21:26 +01:00
Stefan
828302702b Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1
Signed-off-by: Stefan <roots84@users.noreply.github.com>
2018-01-12 21:20:39 +01:00
Stefan
0827d4fe40 Merge branch 'patch-1' of https://github.com/roots84/pi-hole into patch-1 2018-01-12 21:18:30 +01:00
Stefan
ebff965414 Update README.md
Adding DNS-Swapper Project back after it was accidently removed

Signed-off-by: roots84 <stefan.bautz@gmail.com>
2018-01-12 21:17:10 +01:00
Dan Schaper
b45954c560 Merge pull request #1895 from pi-hole/feature/PR_templateDCO
Update PULL_REQUEST_TEMPLATE.md
2018-01-12 08:14:51 -08:00
Adam Warner
80307a3bcd Remove update line from cron
Signed-off-by: Adam Warner <adamw@rner.email>
2018-01-12 15:43:15 +00:00
Adam Warner
e8acb5967b Merge pull request #1904 from vgerak/patch-1
piholeDebug.sh: Correct typo mistake
2018-01-12 15:04:27 +00:00
Vasilis Gerakaris
939806f021 piholeDebug.sh: Correct typo mistake
Signed-off-by: Vasilis Gerakaris <vgerak@gmail.com>

**By submitting this pull request, I confirm the following:** 
`{please fill any appropriate checkboxes, e.g: [X]}`

- [x] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md), as well as this entire template.
- [x] I have made only one major change in my proposed changes.
- [] I have commented my proposed changes within the code.
- [] I have tested my proposed changes, and have included unit tests where possible.
- [] I am willing to help maintain this change if there are issues with it later.
- [x] I give this submission freely and claim no ownership.
- [x] It is compatible with the [EUPL 1.2 license](https://opensource.org/licenses/EUPL-1.1)
- [x] I have squashed any insignificant commits. ([`git rebase`](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html))
2018-01-12 02:17:31 +02:00
bcambl
cc47bf8f6c Fix epel-release install for CentOS
Signed-off-by: bcambl <blayne@blaynecampbell.com>
2018-01-07 22:21:04 -06:00
Stefan
8b80aaebf5 Update README.md
Adding DNS-Swapper Project back after it was accidently removed
2018-01-07 22:54:53 +01:00
DL6ER
8f35ebc0c2 Merge pull request #1897 from pi-hole/fix/webpage.sh_interface_setting
Add fallback interface in DNS settings
2018-01-07 16:56:01 +01:00
DL6ER
793bdd9743 No need for cat | sed here as we source setupVars.conf, so we can use interface="${PIHOLE_INTERFACE}"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-07 14:36:03 +01:00
DL6ER
9d50f52bb2 Add fallback interface for DNS listening behavior in case PIHOLE_INTERFACE is not set in setupVars.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-07 14:34:02 +01:00
Dan Schaper
db62afbb64 Update PULL_REQUEST_TEMPLATE.md
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-06 07:28:26 -08:00
DL6ER
3dc3e8e40e Merge pull request #1885 from pi-hole/new/FTL_Usocket
Create directories /etc/{var,log}/pihole on startup of pihole-FTL
2018-01-04 14:05:18 +01:00
Dan Schaper
c79fc81292 Merge pull request #1891 from pi-hole/feature/DCO_doc
Link to DCO wiki entry.
2018-01-03 16:31:06 -08:00
Dan Schaper
62a6a878d4 Link to DCO wiki entry.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2018-01-03 16:20:57 -08:00
DL6ER
4efb533d2e Create directories /etc/{var,log}/pihole on startup of pihole-FTL and set proper ownership
Signed-off-by: DL6ER <dl6er@dl6er.de>
2018-01-01 11:26:03 +01:00
Mark Drobnak
891473c7fc Merge pull request #1882 from pi-hole/tweak/jetbrains_codestyle
Just ignore the whole .idea directory, execpt for the codeStyles
2017-12-30 15:32:19 -05:00
Dan Schaper
81e8ef5c40 Just ignore the whole .idea directory, execpt for the codeStyles and the
legacy codeStyelSettings.xml.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-12-30 12:23:46 -08:00
Mark Drobnak
e17885088b Merge pull request #1881 from pi-hole/tweak/jetbrains_codestyle
Jetbrains has moved codestyle locations. Development Internal
2017-12-30 14:38:24 -05:00
Dan Schaper
494340fe67 Add other JetBrains stuff to ignore 2017-12-30 10:37:17 -08:00
Dan Schaper
01625dfd49 JetBrains new codestyle storage location 2017-12-30 10:33:41 -08:00
DL6ER
a154f1540f Merge pull request #1778 from loganaden/development
Add secondary quad9 server
2017-12-30 18:19:55 +01:00
DL6ER
5254fc6efe Merge pull request #1880 from pi-hole/fix/chronometer_localhost
Small improvement for Chronometer
2017-12-30 17:51:59 +01:00
DL6ER
afa2e9c2f7 Exchange hard-coded domain "localhost" by hard-coded address "127.0.0.1"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-30 17:44:59 +01:00
DL6ER
a4c8f1a0a4 Merge pull request #1859 from pi-hole/new/extra-logging
Enable dnsmasq's extra logging feature
2017-12-28 22:49:43 +01:00
Mark Drobnak
d5a9a9a2d8 Merge pull request #1878 from pi-hole/tweak/run_updatechecker_after_install
Force update of update checker for new installs
2017-12-28 14:43:28 -05:00
DL6ER
3b8f8fb0ef Merge pull request #1874 from pi-hole/uninitiate
Grammar change in debug script
2017-12-28 18:47:47 +01:00
DL6ER
677033afca Force update of "remote" part in th update checker (may take up to 24hrs for new installs otherwise)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-28 18:41:22 +01:00
Adam Warner
8e0d76b63b initiated -> initialized
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-24 13:26:32 +00:00
Adam Warner
64df41ed90 Merge pull request #1873 from pi-hole/fix/1871
Source setup vars before we attempt to do anything on an update/repair
2017-12-24 13:21:45 +00:00
Adam Warner
442a372142 Merge pull request #1870 from pi-hole/docs/gitsignoff
Add more informative link for Git Signoff
2017-12-24 13:16:37 +00:00
Adam Warner
95e5baa967 Source setup vars before we attempt to do anything on an update/repair
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-24 13:09:45 +00:00
Dan Schaper
b80edfb996 Add more informative link for Git Signoff
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-12-23 17:48:15 -08:00
Mark Drobnak
e06543bd17 Merge pull request #1866 from pi-hole/fix/FTL_branch_version_display
Store fourth entry in versions/branches files
2017-12-23 11:32:57 -05:00
DL6ER
cca8412921 Use "echo -n" to avoid haveing newlines in the files
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-23 11:52:27 +01:00
DL6ER
d15a5ad5c1 Add required documentation in the source code
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-23 00:46:51 +01:00
DL6ER
8ed75dd176 Add extra entry to the end of the saved branches and versions such that PHP's explode() subroutine can correctly disentangle the first three entries and does not get confused by the newline character at the end of the FTL version/branch...
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-23 00:42:41 +01:00
DL6ER
d43ad263ea Merge pull request #1863 from pi-hole/master
Sync with development branch
2017-12-22 22:00:49 +01:00
Jacob Salmela
e602008459 Merge pull request #1856 from pi-hole/release/v3.2.1
Pi-hole core v3.2.1
2017-12-22 14:53:38 -06:00
Dan Schaper
322a18f0e6 Merge pull request #1861 from pi-hole/fix/DNSSEC_trustanchor
Merge `fix/DNSSEC_trustanchor` into `release/3.2.1` again
2017-12-21 11:03:05 -08:00
Dan Schaper
05eb749e66 Merge branch 'release/v3.2.1' into fix/DNSSEC_trustanchor 2017-12-21 11:00:21 -08:00
Dan Schaper
7e8d31a62c Merge pull request #1860 from pi-hole/smarterNotHarder
Merge `smarterNotHarder` into `release/3.2.1` again
2017-12-21 10:59:55 -08:00
Dan Schaper
8ca0582afc Merge branch 'release/v3.2.1' into fix/DNSSEC_trustanchor 2017-12-21 10:56:37 -08:00
Dan Schaper
b9f5fca546 Merge branch 'release/v3.2.1' into smarterNotHarder 2017-12-21 10:53:40 -08:00
DL6ER
5c2dcb5e74 Enable dnsmasq's extra logging feature
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-21 16:42:55 +01:00
DL6ER
3ef4af9326 Merge pull request #1857 from pi-hole/tweak/randomize_updatechecker
Randomize update checker time
2017-12-21 13:28:03 +01:00
DL6ER
f89f7ecd3e Randomize GitHub API update check time
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-21 12:42:47 +01:00
DL6ER
be0c457445 Sleep 30 seconds after reboot to be sure that the system is ready
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-21 12:42:28 +01:00
DL6ER
3c04dbb4ed Update remote version at 17:59 as well as on reboot
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-21 12:33:08 +01:00
DL6ER
cfca367eef Quickly verified in dnsmasq's source code: It has to be "trust-anchor" (with "-")
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-18 21:45:24 -05:00
DL6ER
8a243c5872 Insert also old trust anchor
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-18 21:45:15 -05:00
DL6ER
b30b3f3aeb Update DNSSEC trust anchor
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-18 21:44:34 -05:00
Adam Warner
2d3906450a add back in str local var, and change ticks to info on whitelist lines
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-18 20:14:53 +00:00
Adam Warner
5ecc46d85b Accidentally too many spaces
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-16 14:03:12 +00:00
Adam Warner
ddd6f3dbe5 Grammar changes. Lets not work out programmatically whether we need to pluralise a word. It's not needed.
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-16 13:55:52 +00:00
Adam Warner
f5237db580 Merge pull request #1849 from pi-hole/fix/1826
Remove quotes from the uniqDomains array to actually whitelist the so…
2017-12-16 13:22:44 +00:00
Adam Warner
761fd13a70 Remove quotes from the uniqDomains array to actually whitelist the sources
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-16 13:15:26 +00:00
Mark Drobnak
e3fa06d7ff Merge pull request #1829 from keithbentrup/development
Must send HTTP headers before html
2017-12-13 13:37:32 -05:00
Mark Drobnak
61a76f4493 Merge pull request #1836 from pi-hole/tweak/packageInstall
Change package install notification from CROSS to INFO.
2017-12-13 12:27:47 -05:00
Adam Warner
c5f46702c8 Merge pull request #1840 from pi-hole/revert/GravityParseMethod
Revert parsing method to that of 3.1.4. New Method is allowing illega…
2017-12-12 17:49:36 +00:00
Adam Warner
c24e5cd3f6 :codacy: :codacy2: :codacy3:
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-12 12:45:25 +00:00
Adam Warner
cc3035267f Revert parsing method to that of 3.1.4. New Method is allowing illegal lists through, and that is causing issues such as blocking www.google.com. This method will just throw away invalid list entries.
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-12 12:36:09 +00:00
Dan Schaper
29ee8250e9 Change package install notification from CROSS to TICK.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-12-11 09:45:30 -08:00
Dan Schaper
47ed0b7627 Merge pull request #1830 from pi-hole/ops/stickler
Create .stickler.yml
2017-12-09 18:18:50 -08:00
Dan Schaper
423280cee1 Merge pull request #1817 from jjssoftware/development
pihole.log permissions
2017-12-09 14:15:12 -08:00
Dan Schaper
8c0faa0b9a Create .stickler.yml
Initial stickler yaml file.
2017-12-09 14:08:54 -08:00
Keith Bentrup
45ab2a3d7a send HTTP headers before HTML
Signed-off-by: Keith Bentrup <keith@keithbentrup.com>
2017-12-09 17:03:20 -05:00
Dan Schaper
8804f5c423 Merge pull request #1825 from pi-hole/tweak/updatechecker
Tweak update checker
2017-12-09 13:58:16 -08:00
Dan Schaper
1078aa499c Merge pull request #1812 from pi-hole/fix/resolvconf
Try dig +short if getent hosts fails when running gravity
2017-12-09 13:57:48 -08:00
DL6ER
05d015169c Check for local version and branches every 10 minutes, check for remote versions only once a day
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-12-09 19:00:46 +01:00
Jacob Salmela
6c9e7586d5 Merge pull request #1818 from pi-hole/fix/debug
Use systemctl or service commands in debug script
2017-12-08 19:57:37 -06:00
Jacob Salmela
28bed0041e remove comment
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-12-08 18:29:28 -06:00
Jacob Salmela
6f03e30151 fixes #1537 by checking if systemctl is found
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-12-08 18:23:55 -06:00
Joe
6085d6ffd1 Merge pull request #1 from jjssoftware/jjssoftware-patch-1
Jjssoftware patch 1
2017-12-08 22:38:22 +00:00
Joe
6ecd93d0c9 pihole.log permissions
This change makes pihole more friendly to the non-existence of the pihole.log file. This can help with systems that are configured to mount /var/log as a tmpfs volume. It may also help with systems where the pihole.log file is accidentally/unintentionally removed. 

Further discussion around the details of this change are in https://github.com/pi-hole/pi-hole/issues/1798
2017-12-08 22:25:01 +00:00
Dan Schaper
863ea7294f Merge pull request #1815 from pi-hole/release/3.2
Merge Release 3.2 in to development. GitFlow
2017-12-08 13:06:18 -08:00
Jacob Salmela
af59824819 Merge pull request #1811 from bcambl/nmcli_check
check NetworkManager status prior to using the cli (#1653)
2017-12-08 06:38:42 -06:00
Jacob Salmela
80e17ab721 potentially fixes #1806 by falling back to dig if getent fails
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-12-07 22:38:47 -06:00
bcambl
f89d69b081 check NetworkManager status prior to using the cli (#1653)
Closes #1653

Signed-off-by: bcambl <blayne@blaynecampbell.com>
2017-12-07 21:43:14 -06:00
Jacob Salmela
5ba413569e Merge pull request #1776 from pi-hole/release/3.2
Pi-hole core v3.2
2017-12-06 21:37:10 -06:00
Adam Warner
b3e969f000 Merge pull request #1797 from pi-hole/Ugh/Codacy
Ugh/codacy
2017-12-07 00:49:59 +00:00
Adam Warner
a9a40ca46c Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 23:27:40 +00:00
Adam Warner
79aada0b87 travis didn't like that
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 22:57:05 +00:00
Adam Warner
162a7b56fe force mode is no longer referenced. Regression. Same with domToRemoveList
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 22:42:08 +00:00
Adam Warner
69dc22c10f fix some codacy and intelliJ idea complaints
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 22:31:12 +00:00
Mcat12
9642cda949 Merge pull request #1792 from pi-hole/bugfix/lighttpdEnabled
Add in an extra check to enable lighttpd.
2017-12-06 16:31:26 -05:00
Adam Warner
dd6a9a0b84 supress output of which command on centos/fedora as per https://github.com/pi-hole/pi-hole/pull/1776#discussion_r155156819
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 15:28:58 +00:00
Adam Warner
945dcc6c2b Indent two spaces as per https://github.com/pi-hole/pi-hole/pull/1776#discussion_r155157116
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 15:17:31 +00:00
Adam Warner
f60791ac7c Add dependencies as per https://github.com/pi-hole/pi-hole/pull/1776#discussion_r155149349
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 14:42:01 +00:00
Adam Warner
b64155a165 Add in an extra check to enable lighttpd.
Signed-off-by: Adam Warner <adamw@rner.email>
2017-12-06 14:32:39 +00:00
Mcat12
472f7725c7 Merge pull request #1779 from pi-hole/new/locallists
Add support for local blocking lists
2017-11-28 20:58:00 -05:00
Jacob Salmela
90f01b5fc4 Merge pull request #1780 from pi-hole/fix/spacepasswd
Allow passwords with spaces
2017-11-23 23:42:54 -06:00
Jacob Salmela
20a2daa114 Merge branch 'release/3.2' into fix/spacepasswd 2017-11-23 23:11:17 -06:00
Jacob Salmela
9b6a2c7068 Merge pull request #1769 from pi-hole/tweak/readme
Use GH Pages images & update wording
2017-11-23 23:07:16 -06:00
WaLLy3K
0a4d3ef6e6 Add "sudo bash" to installation instructions
* Running as sudo/root prevents script from being re-downloaded, unintentionally side-stepping manual code review by end user

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-11-23 13:35:51 +11:00
WaLLy3K
2dc1851892 Allow passwords with spaces
e.g: `pihole -a -p "foo bar"`

 Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-11-23 13:17:34 +11:00
Mcat12
8d721d086c Modify indentation 2017-11-21 18:37:38 -05:00
DL6ER
6f0bb30def Improve indentation
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-11-21 20:58:27 +01:00
DL6ER
c54f04ef4c Repair username:password filtering
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-11-21 20:55:47 +01:00
DL6ER
eb83081a5c Clarify error message: File could also have been of zero size
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-11-21 18:36:34 +01:00
DL6ER
8976930e20 Properly detect if local file was successfully downloaded
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-11-21 18:35:58 +01:00
DL6ER
164a81776e Allow to add local lists to gravity using e.g. file:///path/to/my.list in adlists.list
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-11-21 18:30:40 +01:00
Loganaden Velvindron
9c8526db49 Add secondary quad9 server 2017-11-20 22:05:41 +04:00
WaLLy3K
d92f9b4dbd Add separator between FAQ/Requests & Social Media
This is to add emphasis that the first three options should be considered before the social media outlets.

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-11-20 15:59:13 +11:00
Mcat12
1556163fb0 Merge pull request #1774 from mterron/patch-1
Add support for Quad9 secure dns server
2017-11-18 14:06:47 -05:00
Terror
616962200a Update the list size to show all the options 2017-11-17 18:18:13 +13:00
Terror
eb9c44a347 Add support for Quad9 secure dns server
See www.quad9.net
2017-11-17 15:54:04 +13:00
WaLLy3K
f36ac48de0 Use GH Pages images & update wording
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-11-15 13:15:59 +11:00
Jacob Salmela
f63267a7f9 Merge pull request #1757 from Mausy5043/development
Various small fixes
2017-11-11 16:45:16 -06:00
Adam Warner
2c8dcd86e5 remove package_check to avoid situations like #1760
Signed-off-by: Adam Warner <adamw@rner.email>
2017-11-09 20:47:15 +00:00
Jacob Salmela
9631519eb1 Merge pull request #1752 from pi-hole/new/bashupdatechecker
Add bash / cron based update checker for Pi-hole
2017-11-08 20:38:40 -06:00
Jacob Salmela
557d076d2e Merge pull request #1717 from pi-hole/tweak/readme
Update README.md
2017-11-08 20:07:58 -06:00
Jacob Salmela
8a40c91d1a made above the fold focus on the logo and Pi-holes features. fixed typos. wordsmithed
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-11-08 20:03:18 -06:00
DL6ER
90efa3b610 Simplify git subroutines
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-11-08 19:11:41 +01:00
mettacrawler
35dc4800e0 basic-install.sh - no CIDR in ifcfg-*
Do not expect CIDR format IP addresses in /etc/sysconfig/network-scripts/ifcfg-* files as it is not a requirement.
Expect only:
IPADDR=10.10.10.10
Do not expect:
IPADDR=10.10.10.10/24
2017-11-05 15:28:44 -05:00
Mausy5043
ec4e4d3b72 fix indentation 2017-11-05 11:02:04 +01:00
Mausy5043
63312ac4b8 removed duplicate word 2017-11-05 10:18:39 +01:00
Mausy5043
d158a7d51e spelling corrected 2017-11-05 10:16:56 +01:00
Mausy5043
209a2ab3ec grammar corrected (double negative) 2017-11-05 10:05:25 +01:00
Mcat12
009fa2f1b7 Hide password textbox if there is no password 2017-11-01 21:30:14 -04:00
Adam Warner
5221767a70 Merge pull request #1735 from bcambl/debug_selinux
add SELinux checks to debug script
2017-10-30 13:07:36 +00:00
DL6ER
9492ff26c6 Merge pull request #1747 from pi-hole/tweak/gravity_update_time
Randomize gravity update time
2017-10-29 16:34:18 +01:00
DL6ER
06764d0f36 Randomize gravity update time between 03:01 - 04:58 (excluding 04:00)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-29 15:37:39 +01:00
DL6ER
0db76aada0 Silence errors when directory to be checked does not exist (system may have been installed without a web interface!)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-28 15:44:17 +02:00
DL6ER
7362416afb Force an update of the updatechecker after update/install
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-28 15:40:48 +02:00
DL6ER
9be854031f Don't store FTL branch until the next release of FTL which supports returning the branch in an easy way
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-28 13:41:24 +02:00
DL6ER
709851503f Use "pihole-FTL branch" to get FTL's branch
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-28 13:27:12 +02:00
DL6ER
6ca47dc3b3 Add bash / cron based update checker for Pi-hole 2017-10-28 13:20:02 +02:00
DL6ER
d8774901ee Merge pull request #1751 from pi-hole/tweak/FTL_SIGHUP
Send SIGHUP to pihole-FTL when restarting/reloading dnsmasq
2017-10-26 21:43:16 +02:00
Mcat12
8dba2a88e2 Move FTL re-parsing call after dnsmasq restart 2017-10-25 23:07:45 -04:00
DL6ER
2c33c64fae Merge pull request #1750 from pi-hole/fix/chrono-ftl-dbb
Silence non-numeric domains_being_blocked output
2017-10-25 18:19:53 +02:00
DL6ER
b9ae01d819 Send SIGHUP to pihole-FTL when restarting/reloading dnsmasq
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-25 17:46:24 +02:00
WaLLy3K
2390b80359 Silence non-numeric domains_being_blocked output
* Round $cpu_mhz to 1 decimal place
* Remove ".0" from $cpu_freq
* Silence non-numeric domains_being_blocked output
* Use "Core" and "Web" as appropriate

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-25 21:04:43 +11:00
DL6ER
c34c3eb016 Shift randomized time interval from 00:00-01:59 to 02:00-03:59 2017-10-21 15:58:37 +02:00
DL6ER
85d159bdd1 Randomize gravity update time
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-21 15:52:53 +02:00
Adam Warner
da1d2b2c48 Merge pull request #1744 from bcambl/unignore_pullapprove
Unignore pullapprove
2017-10-21 01:02:52 +01:00
WaLLy3K
5f8b0b3c89 Merge pull request #1743 from pi-hole/fix/wildcardrestart
Fix for wildcard not restarting `dnsmasq`
2017-10-20 10:35:24 +00:00
bcambl
0f868f7649 remove un-used DONE variable
(still available via sourced COL_TABLE on line 29)
2017-10-19 22:57:07 -06:00
bcambl
8b0785996e remove .pullapprove.yml from .gitignore
Closes #1535
2017-10-19 22:41:29 -06:00
WaLLy3K
645d8e0ebd Fix issue where wildcarding didn't restart dnsmasq
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-19 17:51:20 +11:00
WaLLy3K
3a3c0befa7 Merge pull request #1734 from pi-hole/fix/query-options
Fix query option handling
2017-10-18 08:23:40 +00:00
WaLLy3K
80c40e6050 Prevent full stop being interpreted as regex
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-16 10:12:27 +11:00
bcambl
31730e7197 add missing colors to COL_TABLE fallback 2017-10-13 09:14:19 -06:00
bcambl
7d76db00ac update 'SELinux not detected' message 2017-10-13 08:58:35 -06:00
bcambl
8aceb8bf53 replace deprecated colors in debug script
- COL_LIGHT_GREEN  -> COL_GREEN
 - COL_LIGHT_RED    -> COL_RED
 - COL_LIGHT_PURPLE -> COL_PURPLE
2017-10-12 23:33:28 -06:00
bcambl
a17d1be7a4 simplify selinux debug variables 2017-10-12 23:24:02 -06:00
bcambl
1e6cc63abe add SELinux checking to debug script 2017-10-12 20:55:14 -06:00
WaLLy3K
3b300a4d6a Fix query option handling
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-13 11:42:49 +11:00
WaLLy3K
3e727c5e5d Merge pull request #1721 from pi-hole/fix/lightyconf
Add comment for include_shell feature
2017-10-11 01:55:05 +00:00
DL6ER
e0edac32c7 Merge pull request #1728 from pi-hole/new/nuke_lists
Add nuclear option to list.sh
2017-10-10 19:12:16 +02:00
WaLLy3K
e4b3bc4209 Minor spacing corrections
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-10 13:17:33 +11:00
WaLLy3K
51b09efceb Fix minor typo
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-09 19:53:45 +11:00
WaLLy3K
2dabacd024 Fix minor typo
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-09 19:53:22 +11:00
WaLLy3K
0613dcc87b Merge pull request #1692 from andofrjando/cors_mixed_content_fix
Fix for bug on block page (#1416) caused by CORS mixed content when behind reverse proxy using SSL
2017-10-09 07:53:33 +00:00
WaLLy3K
d59a2a4cfc Merge pull request #1729 from pi-hole/fix/email-help-argument
Allow emails which include `-h` in them (Fix for #1691)
2017-10-08 12:23:46 +11:00
WaLLy3K
2c091f3a3c Merge branch 'development' into cors_mixed_content_fix 2017-10-08 12:22:14 +11:00
WaLLy3K
cfcdc53185 Merge pull request #1722 from pi-hole/fix/bpfqdn
Improve FQDN Authorized Hosts functionality (Fix for #1416)
2017-10-08 12:19:11 +11:00
WaLLy3K
bd33018660 Shellcheck OR validation
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-08 12:16:05 +11:00
Mcat12
e7589945a2 Disable password field if no password is set
For someone to actually whitelist a domain without a password, more changes will
be needed on the PHP side.
2017-10-07 16:41:30 -04:00
Mcat12
67a5594909 Allow emails which include -h in them
For example, mcat12@pi-hole.net would previously spit out the help message
2017-10-07 16:06:16 -04:00
DL6ER
70ad656af0 Save backup as ".bck~" to prevent reading of the file by dnsmasq
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-07 22:04:14 +02:00
DL6ER
f22b83d379 Create a backup before emptying the list
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-07 17:46:40 +02:00
DL6ER
114f84c948 Add --nuke option to list.sh that can be used e.g. by Teleporter to empty out lists before importing new content
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-10-07 17:29:47 +02:00
WaLLy3K
7875df0d6b Merge pull request #1723 from pi-hole/tweak/bpcss
Ensure Block Page (#1416) matches current style of Web Interface
2017-10-07 14:53:43 +11:00
WaLLy3K
0d286b99d5 Remove placeholder URL 2017-10-06 20:39:01 +11:00
WaLLy3K
e03d4f2de8 Condense features into three main sections
* Core shows a list of common commands, linking to the new Core Function Breakdown wiki article
* Core also now shows the ASCII Vortex
* Web has had its preview image size reduced
* FTL's functions are elaborated upon more
2017-10-06 20:35:54 +11:00
WaLLy3K
7fddce4a1f Use updated vector logo
* Move Codacy/Build/BountySource badges underneath the H1 header
* Use updated vector logo (Matches the new Pi-hole stickers!)
* Tweak wording for Versatile
* Quote `cd` path instead of escaping string
* Order Projects and Coverage in order of publish date
* Use the current published title for Projects/Coverage links
* Change Projects/Coverage links to use HTTPS if the server supports TLS

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-06 18:11:05 +11:00
WaLLy3K
3cd8b7d882 Merge pull request #1724 from pi-hole/fix/removejs
Remove superseded index.js: #1696 #1416
2017-10-04 14:11:52 +11:00
DL6ER
3578a3e311 Merge pull request #1718 from pi-hole/tweak/VPNhostnames
Append ".vpn" TLD for OpenVPN host names
2017-10-03 21:32:36 +02:00
WaLLy3K
a9ad8d67aa Remove superseded index.js
Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-04 01:13:02 +11:00
WaLLy3K
43e1121618 Match current style of Web Interface
* Remove border from about menu

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-04 01:05:44 +11:00
WaLLy3K
97dd1b4cf3 Improve FQDN Authorized Hosts functionality
* Use inverse if statement, instead of IF/ELSE when checking setupVars.conf
* Remove $svFQDN
* Add or elaborate on more comments
* Add $serverName to $authorizedHosts if admin has specified `setenv.add-environment = ("fqdn" => "true")` within lighttpd's external.conf
    * e.g: `$HTTP["host"] == "pihole.domain.com" { setenv.add-environment = ("fqdn" => "true") }`
* Move "No exact results" check to top of exception handling
* Remove unnecessary IF/ELSE when handling $queryAds error

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-10-04 00:46:51 +11:00
WaLLy3K
288635abc9 Add comment for include_shell feature
* Capitalise first letter for Lighttpd
* Fix spacing
* Add comment for include_shell feature
2017-10-03 22:05:06 +11:00
Mcat12
7884423e05 Merge pull request #1719 from 19wolf/patch-1
Update basic-install.sh
2017-10-01 12:51:20 -04:00
Eric Wolf
1615fa63e3 Update basic-install.sh
Fixed comment line 40
2017-09-30 16:34:38 -04:00
DL6ER
39ab1e1ea7 When using the Pi-hole DHCP server, local host names are called "something.local". Thir PR ensures that clients that are connected via VPN are augmented by a similar suffix like "someother.vpn".
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-09-30 13:03:49 +02:00
WaLLy3K
10c048d84a Use "Web Interface" verbiage throughout document
* Also implement other reviewed suggestions
2017-09-30 13:21:29 +10:00
WaLLy3K
a458482e51 Update README.md
* Create consistent style and formatting
* Simplify and/or tweak wording
2017-09-30 00:20:41 +10:00
WaLLy3K
de46dbd56f Ensure domains are consolidated to lower case
* Fix regression caused by #1631
2017-09-27 01:55:17 +10:00
spacedingo
60365ad36a Update gravity.sh 2017-09-26 09:25:47 +04:00
spacedingo
466e6d9b30 Redo pull #1687
Fix for case sensitive duplicate domains
The change (https://github.com/pi-hole/pi-hole/pull/1687) was recently undone.
2017-09-26 05:53:07 +04:00
WaLLy3K
11d48554e3 Merge pull request #1708 from pi-hole/fix/gravityErrors
Place errors on newline
2017-09-25 15:39:26 +10:00
WaLLy3K
b9bcfe36ff Place errors on newline 2017-09-24 11:57:15 +10:00
WaLLy3K
05faa7bdf2 Merge pull request #1707 from pi-hole/fix/tailFunc
Correctly retrieve IPv4/6 addresses for tailFunc()
2017-09-24 10:28:36 +10:00
WaLLy3K
88b1f0ca7f Merge pull request #1702 from pi-hole/fix/activeDomains
Ensure domains files are not deleted upon w/blist
2017-09-24 08:02:47 +10:00
WaLLy3K
f0f7bda2f3 Merge pull request #1704 from celly/lighttpd-hide-files
Exclude files from Web Admin that should not be accessible.
2017-09-23 11:36:03 +10:00
WaLLy3K
664d0ea023 Correctly retrieve IPv4/6 addresses for tailFunc()
* Add comments for readability
* Use `sed -E` for readability
* Move `date` into `sed`
* Use updated colour codes
2017-09-23 11:27:40 +10:00
WaLLy3K
cd7c00ef8e Fix Ctrl-C inadvertently deleting domains files 2017-09-23 10:32:56 +10:00
Celly
3f20981aab Update access rules to block all root '.' files 2017-09-22 09:29:00 -04:00
Celly
f54a812ad5 Update access rules to block all root '.' files 2017-09-22 09:27:43 -04:00
WaLLy3K
aa1d67a4de Merge pull request #1703 from pi-hole/fix/lighttpdEnabled
Fix `LIGHTTPD_ENABLED` dupes in `setupVars.conf`
2017-09-22 19:21:50 +10:00
WaLLy3K
feb2150d9b Fix LIGHTTPD_ENABLED dupes in setupVars.conf
* Fix issue merged [here](fdf2649f2f (diff-689793e68cde6270d074695b71c969afL1488))
2017-09-22 19:14:11 +10:00
WaLLy3K
3aa525b0c0 Ensure domains files are not deleted upon w/blist 2017-09-22 14:17:56 +10:00
andofrjando
6323d5afed Use PHP short echo tag to avoid Codacy expecting an escaping function 2017-09-22 07:15:03 +08:00
Celly
e3e3b4da58 Add in some exclusions form some leaky files in the admin 2017-09-21 17:47:37 -04:00
Adam Warner
a0bd517380 Merge pull request #1694 from pi-hole/fix/qf-opt
Slow query fix & queryFunc optimisation
2017-09-21 20:05:42 +01:00
Adam Warner
4316b15ae2 Merge pull request #1700 from pi-hole/fix/start-ftl
Start and enable FTL prior to running Gravity
2017-09-21 20:00:08 +01:00
Adam Warner
ef1ce7d4d6 Merge pull request #1631 from pi-hole/tweak/gravity
Clean up and optimise Gravity
2017-09-21 19:58:38 +01:00
Adam Warner
a643f40cce Merge pull request #1663 from pi-hole/new/UninstallCleanup
Cleanup uninstall script
2017-09-21 19:56:12 +01:00
WaLLy3K
47099e2855 Ensure resolver test occurs each second
* Ensure that gravity will run the second the resolver is available
* Increase timeout to 120s
2017-09-22 03:56:53 +10:00
WaLLy3K
2deb2bf03f Fix broken whitelist functionality 2017-09-22 02:23:43 +10:00
WaLLy3K
3bb05edb52 Merge pull request #1701 from pi-hole/fix/local-ttl
Decrease `local-ttl` to 2
2017-09-22 01:29:50 +10:00
DL6ER
ee2169dd13 Merge branch 'development' into tweak/gravity 2017-09-21 17:05:30 +02:00
WaLLy3K
11282aaca3 Decrease local-ttl to 2
* Decreasing value should benefit clients when whitelisting blocked sites, [as per this discussion](https://github.com/pi-hole/pi-hole/pull/1698#issuecomment-331134576).
2017-09-21 23:11:44 +10:00
WaLLy3K
909bc92c01 Tweak wording to fit on 80 character screen
* Also move colour after $INFO
2017-09-21 00:22:47 +10:00
WaLLy3K
a6f9272d4b Fix gravity from only parsing one adlist URL
* Redirect `grep` correctly to $sources (instead of using `awk`)
* Redirect $sourceDomains correctly
* Replace use of ${COL_LIGHT_BLUE}
* Add numeric count informing user of unique source domains being whitelisted
2017-09-20 22:25:33 +10:00
WaLLy3K
911596daf8 Start and enable FTL prior to running Gravity 2017-09-20 17:29:11 +10:00
Adam Warner
8d8482d60b <<<$() back to < <()
Signed-off-by: Adam Warner <adamw@rner.email>
2017-09-19 19:02:50 +01:00
WaLLy3K
f3cc8c71c4 Merge pull request #1691 from pi-hole/new/adminemail
Add `pihole -a email` functionality for Block Page contact email
2017-09-19 18:39:37 +10:00
WaLLy3K
f6b3c62b06 Merge pull request #1696 from pi-hole/tweak/removeindexjs
Delete index.js
2017-09-19 18:00:48 +10:00
WaLLy3K
26afe04926 Remove index.js test 2017-09-19 01:04:04 +10:00
WaLLy3K
500a755250 Delete superseded file
* Functionality is reproduced from within the Block Page
2017-09-19 01:03:24 +10:00
WaLLy3K
d02bf258af Improve non-standard list parsing
* Add 504 status (Gateway connection timed out)
* Add text for non-standard list parsing
* Improve adblock parsing
* Ensure adblock exception rules are removed from file
* Ensure "www." is not treated as a URL-format list
* Corrected typo
* Ensure script does not fail if "-f" is used when there are no blocklists generated

Signed off by WaLLy3K <wally3k@pi-hole.net>
2017-09-18 17:36:03 +10:00
WaLLy3K
56990618e9 Prevent Block Page issue
* Block Page expects to see a full stop, otherwise it will throw an unhandled error
2017-09-18 01:12:19 +10:00
WaLLy3K
54a85d3a63 Fix invalid option case
* Ensure `pihole -q doubleclick.com asd` exits with error
2017-09-18 00:58:56 +10:00
WaLLy3K
d56beedd7a Add idn2 dependency 2017-09-18 00:41:53 +10:00
WaLLy3K
c2d3e99ddd Slow query fix & queryFunc optimisation
* Validate modified code using Shellcheck & Strict Bash
* Added and/or elaborated more comments

* scanlist() should exit if /etc/pihole is not available
* Add `export LC_CTYPE=C` to prevent extreme grep slowdown
* Consider "domain.com#comment" an exact match
* Add specialised wildcard searching grep

* Optimise and simplify queryFunc() for readability
* Replace IDN `python` parsing with `idn2`, as `python` is not guaranteed to be available
* Use ${COL_BOLD} when printing filenames
2017-09-18 00:41:26 +10:00
andofrjando
5e48b3f7f7 Fix one mistake where $proto would not be created if $_SERVER['HTTPS'] exists but is not set to on 2017-09-16 11:24:38 +08:00
andofrjando
00d62b3423 This fixes the following bug:
If Pi-Hole is behind a reverse proxy that uses SSL, then the block page will not load resources such as `blockingpage.css` and `jquery.min.js` as the insecure `http://` is hard coded. Browsers will block attempts to load insecure resources if the page is loaded of SSL.
The fix is acheived by checking `$_SERVER['HTTPS']` and setting the variable `$proto` to either `http` or `https`. The harcoded `http` is replaced by the contents of this variable.
2017-09-16 10:24:37 +08:00
WaLLy3K
c957124fad Optimised parsing of domains on IPv6 servers
* Remove WHITELIST_COMMAND
* Place IPv4/IPv6 availability test underneath setupVars.conf source
* Improved clarity on comments
* Define default lookupDomain on local line
* Use `getent hosts` instead of nslookup (faster)
* Make gravity_DNSLookup() function more readable
* Use bold on "Neutrino emissions detected"
* Swap conditionals around on adlists file handling
* Add comments to both gravity_Collapse() `awk`s
* Removed unnecessary "${str}" from gravity_Pull()
* Merge function variables into local line
* Place .phgbp suffice on mktemp, so patternbuffers can be cleaned up all at once in gravity_Cleanup()
* Removed success="false" from $httpCode case, placed empty success var in local
* Reordered $httpCode case numerically because I can
* Provide error if Dnsmasq format list is being parsed
* Remove IPv4 check when determining URL list (too slow on large lists)
* Check ${#sources[@]} to ensure we're checking the number of entries and not the character count
* Define empty plural in local line, removing unnecessary plural=;
* Optimised readability of gravity_Whitelist()
* Removed uninformative "Nothing to blacklist"/"No wildcards used" text
* Optimised parsing of domains into hosts format on IPv6 enabled servers
* Ensure /etc/hostname is non-zero
* Use `: >` instead of `rm` as consistent with the rest of the script
* Ensured that gravity_Cleanup() removes ${localList}.tmp
* Optimised readability of gravity_ParseUserDomains()
* Moved dnsRestart to ${var} case statement, renaming it to dnsRestartType for readability
* Set default $listType to ensure script passes "bash strict mode"
2017-09-15 22:39:17 +10:00
WaLLy3K
28063aa7f7 Add administrative contact address functionality
* Disable shellcheck for SC1090
2017-09-15 00:24:29 +10:00
WaLLy3K
c458e4a93b Merge pull request #1420 from WaLLy3K/new/https
Disable Let's Encrypt HTTPS & shift functions to block page
2017-09-14 20:40:20 +10:00
WaLLy3K
e7ae62ba76 Merge pull request #1416 from WaLLy3K/blockpage2
Block Page 2.0
2017-09-14 20:39:45 +10:00
WaLLy3K
ff5411a93a Add 'Connection Refused' for 000 status
* Shift default dnsRestart value into unset default parameter expansion value
* Change nslookup timeout to 5 seconds 
* Use &> instead of >
* Standardise plural code
* Update some comments
* Add "000" when connection is refused
* Condense adblock detection logic
* Add Dnsmasq format detection and parsing logic
* Removed unnecessary echo
* Add dnsWasOffline variable to ensure that if DNS service has been stopped, that it doesn't start and also get reloaded
2017-09-14 20:23:49 +10:00
WaLLy3K
d3073e5e23 Fix array of unique $sourceDomains 2017-09-14 17:09:52 +10:00
WaLLy3K
34ae4844fa Merge branch 'development' into tweak/gravity 2017-09-14 16:44:14 +10:00
WaLLy3K
8191ec01e5 Gravity Bugfixes
* Merge development OpenVPN code
* Determine which domain to resolve depending on existence of $localList
* Re-add code to remove $localList, preventing duplicate local entries
* Minor shellcheck validation fix
2017-09-14 16:39:30 +10:00
WaLLy3K
4d39ab9753 Allow force-reload to be used when restarting DNS
* Remove duplicate coltable variable definition and source
* Minor comment modifications
* Add "$2" to restartdns
2017-09-14 16:39:25 +10:00
Adam Warner
7a1df15724 Merge pull request #1688 from pi-hole/tweak/customBlockPage
Allow for Custom block page
2017-09-13 18:22:38 +01:00
Adam Warner
42b5574f9b remove no longer needed tests
Signed-off-by: Adam Warner <adamw@rner.email>
2017-09-09 19:41:05 +01:00
Adam Warner
5f4be0de35 adjust lighttpd config depending on whether or not custom.php exists
Signed-off-by: Adam Warner <adamw@rner.email>
2017-09-09 19:30:53 +01:00
Adam Warner
6c605f55f9 always overwrite default blockpage, so that changes can be rolled out
Signed-off-by: Adam Warner <adamw@rner.email>
2017-09-09 19:07:48 +01:00
Adam Warner
774c6e8ac0 Merge branch 'development' into new/UninstallCleanup
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	automated install/uninstall.sh
2017-09-09 18:56:17 +01:00
DL6ER
17be6b860e Merge pull request #1682 from pi-hole/tweak/VPN_hostnames
Add VPN host names to local.list
2017-09-08 22:42:58 +02:00
Adam Warner
474ac4a15d Merge pull request #1581 from pi-hole/sqlite-dependency
Add "php5-sqlite" to dependencies
2017-09-08 21:28:16 +01:00
DL6ER
b8fedf76cd Merge pull request #1572 from pi-hole/gedetil-development
Add web frontend shutdown command
2017-09-08 20:21:20 +02:00
DL6ER
ca88c59d4e Merge pull request #1687 from spacedingo/patch-2
Add ignore-case switch to sort (domains)
2017-09-08 20:17:38 +02:00
Mcat12
d69e62589a Merge branch 'development' into sqlite-dependency 2017-09-08 13:43:26 -04:00
DL6ER
c9d4995900 Update to comply with current development code
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-09-08 19:35:05 +02:00
DL6ER
279e809aaf Use poweroff instead of halt
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-09-08 19:33:06 +02:00
Mcat12
d61857efae Merge branch 'development' into patch-2 2017-09-08 13:32:51 -04:00
DL6ER
0d037e96fb Merge branch 'development' into gedetil-development
Signed-off-by: DL6ER <dl6er@dl6er.de>

Conflicts:
	advanced/Scripts/webpage.sh
2017-09-08 19:32:38 +02:00
Mcat12
6376f9aef4 Merge pull request #1680 from pi-hole/colour-consistency
Colour output consistency
2017-09-08 13:29:55 -04:00
spacedingo
f5a1fa21f7 Add ignore-case switch to sort (domains)
Domains with caps pass off as unique. It is necessary for proper duplicate removal.
Example:
::: /etc/pihole/list.preEventHorizon (2 results)
adsatt.abcnews.starwave.com
Adsatt.ABCNews.starwave.com
2017-09-08 20:36:14 +04:00
DL6ER
4a90dac68e Simplify awk code as the format of ipp.txt is actually fixed (only one entry per line is allowed)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-09-07 19:42:00 +02:00
DL6ER
2624e56de5 Parse /etc/openvpn/ipp.txt (if existing) and add entries to local.list.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2017-09-06 16:54:41 +02:00
Adam Warner
aef54d6694 Merge branch 'development' into new/UninstallCleanup 2017-09-05 20:41:13 +01:00
Adam Warner
e839a7784c Merge branch 'development' into sqlite-dependency 2017-09-05 20:39:45 +01:00
WaLLy3K
bea99abd8d Ensure colour consistency between terminal themes
* Comment file for review-ability
* Add BOLD and UNDERLINE options
* Select most readable colours out of LIGHT/DARK options
* Provide empty variables for `set -u`
* Deprecate unnecessary variables
* Correct colours for TICK/CROSS/DONE
* Escape r twice and add ESC to OVER
2017-09-05 23:28:33 +10:00
WaLLy3K
a5c4ae955a Merge branch 'development' into tweak/gravity 2017-09-03 15:28:41 +10:00
Dan Schaper
d7d53849a3 Merge pull request #1628 from pi-hole/fix/issue-template
Update Issue/PR Template text
2017-09-02 04:55:56 -07:00
WaLLy3K
b354f722be Add link for EUPL
* Also formatted `git rebase` text to be consistent with `git commit --signoff`

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-09-02 21:52:54 +10:00
WaLLy3K
ea1aad9774 Add review suggestions to template 2017-09-01 10:17:08 +10:00
WaLLy3K
817d644795 Merge branch 'development' into fix/issue-template 2017-09-01 10:16:03 +10:00
WaLLy3K
56b8c4bfdb Merge branch 'development' into tweak/gravity 2017-09-01 10:01:41 +10:00
Adam Warner
c65c26b463 Merge branch 'development' into new/UninstallCleanup 2017-08-31 15:36:47 +01:00
WaLLy3K
bf059e5ee8 Merge pull request #1676 from pi-hole/remove-netstat
Replace superseded netstat command
2017-08-31 21:16:11 +10:00
WaLLy3K
15a5f425bf Replace nc with psuedo-device
* Also fix minor conditional style issue
2017-08-31 20:32:02 +10:00
WaLLy3K
3125d24ded Replace superseded netstat command
* Make colfile readonly, and use path of PI_HOLE_SCRIPT_DIR
* Rename piholeStatus function to statusFunc for function name consistency
* Replace superseded netstat command with nc
* Perform addn-hosts check using a single grep subshell
2017-08-31 17:39:41 +10:00
Adam Warner
6b6d105c2f Merge branch 'development' into sqlite-dependency 2017-08-28 10:17:33 +01:00
WaLLy3K
bab44c52ae Merge branch 'development' into blockpage2 2017-08-28 13:30:57 +10:00
WaLLy3K
2f19605750 Merge branch 'development' into fix/issue-template 2017-08-28 13:29:18 +10:00
WaLLy3K
7311db3a63 Change wording to support feature PR's
* Also clarify template suggestion text
* Remove stray '
2017-08-28 13:28:23 +10:00
WaLLy3K
0a00936e99 Update resolver test & added more comments
* Add/update code comments
* Change resolver check to test for pi.hole
* Make resolver check timeout after 10 seconds
* Use > instead of &> where appropriate
* Make resolver check sleep for 30 seconds (effectively waiting up to 50s for dnsmasq to be resolvable)
* Provide confirmation upon success of resolver check availability
* Quotes and Braced remaining variables as appropriate
* Removed duplicate local
2017-08-28 11:36:02 +10:00
WaLLy3K
7cac207c00 Merge branch 'development' into tweak/gravity 2017-08-28 03:11:38 +10:00
WaLLy3K
feb412b02a Merge pull request #1671 from pi-hole/release/3.2
Update development from release/3.2
2017-08-28 03:04:46 +10:00
Adam Warner
199de9ebc0 Merge branch 'development' into new/https 2017-08-27 11:38:30 +01:00
Adam Warner
504ae0193f Merge branch 'development' into blockpage2 2017-08-27 11:23:21 +01:00
WaLLy3K
1ae403b742 Merge pull request #1667 from pi-hole/install-space
Remove erroneous space
2017-08-24 14:00:20 +10:00
Adam Warner
939c99cdbf accidentally an entire group of letters. 2017-08-23 11:48:11 +01:00
WaLLy3K
2f36acae49 Remove errornous space 2017-08-23 11:51:16 +10:00
Adam Warner
e938132c53 accidentally a space
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 21:02:10 +01:00
Adam Warner
1b34286264 verbiage
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 20:33:53 +01:00
Adam Warner
54f4f6d2d7 Add "${INSTALLER_DEPS[@]}" to package array
add `-f` to rm commands so that `set -e` is not kicked

Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 20:23:07 +01:00
Adam Warner
07e5e8e67a need to include PH_TEST="true" so that the install script isn't run when sourcing it.. doh
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 20:03:19 +01:00
Adam Warner
3c25094495 No need to declare PKG_MANAGER, as it's already declared in basic-install
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 19:56:36 +01:00
Adam Warner
95e3a5944d Initial overhaul of uninstall script sourcing distro_check() from basic-install.sh Totally untested as yet...
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 19:53:43 +01:00
Adam Warner
64f29120c8 indent nested function in basic-install.sh
fix dependency in uninstall.sh

Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-17 19:43:07 +01:00
Adam Warner
d92434b1e9 Merge branch 'development' into sqlite-dependency
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	automated install/basic-install.sh
2017-08-16 16:31:47 +01:00
Adam Warner
01cd056bcc Work out correct SQLITE version for php-sqlite
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-16 16:27:50 +01:00
Adam Warner
56f2ea3ec2 Add Fedora/Centos dependency
Signed-off-by: Adam Warner <adamw@rner.email>
2017-08-16 15:56:39 +01:00
Adam Warner
d45695a088 Merge pull request #1643 from pi-hole/tweak/PiholeCheckout
Small tweaks to output of `pihole checkout`
2017-08-04 00:19:46 +01:00
Adam Warner
2ceeac41fe Merge pull request #1648 from pi-hole/branding/DOReadme.md
Branding/DO readme.md
2017-08-02 11:29:31 +01:00
WaLLy3K
cc4ada99d8 Use SIGHUP instead of force-reload 2017-08-01 20:48:43 +10:00
Adam Warner
16d67f55b3 Merge branch 'development' into fix/issue-template 2017-07-29 17:18:16 +01:00
Adam Warner
18b41adbf6 Merge branch 'development' into tweak/gravity 2017-07-29 17:14:39 +01:00
Mcat12
898fdf7a60 Merge pull request #1602 from molikuner/development
Fix URL extension parsing
2017-07-29 11:49:24 -04:00
Adam Warner
78143c2ff4 Merge branch 'development' into blockpage2 2017-07-29 16:44:28 +01:00
Adam Warner
7b1524ad01 Merge branch 'development' into new/https 2017-07-29 16:44:20 +01:00
Adam Warner
5799485b0f Merge branch 'development' into development 2017-07-29 16:29:57 +01:00
Mcat12
9cddb6ca39 Merge branch 'release/3.2' into branding/DOReadme.md 2017-07-29 11:04:10 -04:00
Dan Schaper
defc17ba46 Remove DO from README.md
Preparation for futher infrastructure changes. Will remove the DO slug from README and adjust some wording.
2017-07-28 20:24:27 -07:00
Adam Warner
106d5afba1 Merge pull request #1646 from pi-hole/bugfix/DoubleH
Stop an extra `h` being added to leasetime of DHCP server.
2017-07-28 23:09:00 +01:00
Adam Warner
0a9965292c Additional check to fix any existing cases of "24h" in setupVars.conf automatically.
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-28 19:40:13 +01:00
Adam Warner
4fb66e632f The other h 2017-07-28 16:30:03 +01:00
Adam Warner
5787895794 stop an extra h being added to leasetime of DHCP server. We already storethe h in setupVars.conf
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-28 16:10:13 +01:00
Adam Warner
d90489b31d Include branch we're switching from
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-27 22:21:25 +01:00
Adam Warner
f38912a0c9 - Correctly overwrite ${INFO} boxes with ${CROSS} etc
- Notify user that branch has been changed

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-27 21:33:41 +01:00
WaLLy3K
f24ab8508e WIP cleanup
* Changed supernova/eventHorizon variables to match their purpose
* Add gravity_DNSLookup() function
* Ensure all comments are clear and relevant
* Use && instead of || in gravity_Collapse()
* Renamed existing functions, and placed them in order of script execution
* Use \t instead of literal tab in gravity_ParseFileIntoDomains()
* Replace instances of "truncate" with : > (e.g: gravity_Schwarzschild())
* Ensure correct variables are local'd
* Use phrase "Cleaning up stray matter" when gravity_Cleanup() is called
* Add black/white/wildcard switches for list.sh
* Ensure necessary functions are called when modifying black/white/wildcards

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-27 12:34:35 +10:00
WaLLy3K
2d8fff099f Pass correct options to gravity.sh
* Optimise $validDomain function by using bashism and `grep`
* Add black/white/wildcard variables to pass to Reload()
* Revert reload variable behaviour
* Ensure Reload() function passes correct options to gravity.sh

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-27 12:34:26 +10:00
Adam Warner
dce36d8ded Merge branch 'master' into release/3.2 2017-07-26 19:49:57 +01:00
Mcat12
18d0278279 Merge pull request #1638 from pi-hole/hotfix/CIDR
CIDR hotfix > development
2017-07-26 14:41:03 -04:00
Adam Warner
4e525040f3 Merge branch 'development' into hotfix/CIDR 2017-07-26 18:23:02 +01:00
WaLLy3K
fdf2649f2f Clean up known remaining colour output issues (#1613)
* Print newline on error message

* Output last three lines of error if update fails

* Consistent error messages & housekeeping

* Add shellcheck directive to ignore COL_TABLE
* Quoted and braced variables for codebase consistency
* Escaped newlines correctly
* Made error messages consistent (indenting and wording)
* Removed consecutive echos

* Conditional formatting consistency

* Braced, quoted and used [[ on conditionals

* Fix specific ShellCheck issues

* Fixed issues that could be safely changed without extensive testing

* Update SELinux whiptail behaviour & more

* Colourised some strings
* Fixed multiple line string indenting
* Made output consistent with existing codebase
* Removed sequential echos
* Make SELinux whiptail use "--defaultno", and change text wording

* Add help text for hostrecord, and colourise output

* this should fix the tests...

Signed-off-by: Adam Warner <adamw@rner.email>

* revert changes to `update_package_cache()` to prove tests

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-26 18:00:08 +01:00
Mcat12
b09c660833 Always process DNS and DHCP settings in installer (#1630)
* Always process DNS and DHCP settings in installer

* Make sure dnsmasq config exists before modifying it

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>

* Make sure the dnsmasq config directory exists

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>

* Only remove the DHCP config if it exists (fixes tests, hopefully)

Signed-off-by: Mcat12 <newtoncat12@yahoo.com>
2017-07-26 17:15:23 +01:00
Adam Warner
c02a24cf71 Fix/unbreak development (#1635)
* Always process DNS and DHCP settings in installer

* change where finalExports is called and where LIGHTTPD_ENABLED is set.

Signed-off-by: Adam Warner <adamw@rner.email>

* this may or may not work. If it does, can be functionised to reduce code duping

Signed-off-by: Adam Warner <adamw@rner.email>

* This will fix the tests, but break the patch

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-26 14:34:40 +01:00
Mcat12
a77136bd1d Merge pull request #1600 from pi-hole/tweak/OnlyDownloadFTLNew
Only download FTL if a newer version than currently installed is detected (or if no version is detected)
2017-07-25 22:11:31 -04:00
WaLLy3K
e0eb5eb2b1 Fix queryFunc if adlists URLs have been removed (#1618)
* Fix queryFunc if adlists URLs have been removed

* Allow for -adlists command line switch (where the "s" is a typo)
* Add error message when unable to find associated adlists URL

* Provide PR fix on current dev version

* Add blResult variable for white/black match

* Supporting Block Page queryFunc fixes

* Re-add unmerged lines
2017-07-25 23:07:06 +01:00
WaLLy3K
714fd93292 Provide correct FTL stats (#1619)
* Provide correct FTL stats

* Use the correct lines in the array when displaying FTL stats
* Treat ads_blocked_today/dns_queries_today as currency, like domains_being_blocked is on large screens

* Chronometer Shellcheck validation

* Remove unnecessary \ from CPU usage readout
2017-07-25 23:03:23 +01:00
Adam Warner
a293b5a371 prevent ./automated install/basic-install.sh: line 1886: /usr/bin/pihole-FTL: No such file or directory on new install, or if pihole-FTL is missing for whatever reason.
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-25 22:49:06 +01:00
Adam Warner
1c93868ae1 Adjust wording of echos
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-24 23:22:04 +01:00
WaLLy3K
61ff0452e1 Remove duplicate code
* Make RestartDNS() use `pihole restartdns`

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-24 21:27:12 +10:00
WaLLy3K
406098e55a Speed up refresh time
* Add "--blacklist-only" to only run essential gravity functions
* Pass "--wildcard" option to `gravity.sh` to ensure dnsmasq is restarted

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-24 21:26:39 +10:00
WaLLy3K
a2825be819 Add dnsmasq "force-reload" option
* Made use of $PI_HOLE_SCRIPT_DIR
* Fix #1610 & #1624
* Add "$2" to restartDNS options

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-24 21:25:04 +10:00
WaLLy3K
6830b08723 Clean up and optimise Gravity
* Shellcheck validation
* Made variable names, function names, comments and output clearer to understand
* Quoted and braced variables and conditionals
* Fix adlists.list handling logic, and remove any CR line endings
* Make CP/MV/RM provide user-friendly output upon failure
* Change adlists.list retrieval logic
* Moved and fixed adlists.list domain parsing logic
* Create gravity_ParseFileAsDomains() function to handle parsing of source files
* If no changes to a list is detected, print no output
* Ensure each source blocklist has a final newline
* Format number output as currency
* Make array of adlists domain sources unique to prevent redundant whitelisting
* Merged bash IPv4/IPv6 hosts formatting IF statement into an awk one-liner
* Trap Ctrl-C cancellations and run gravity_Cleanup()
* Use new gravity_Cleanup() function on errors and script completion
* Ensure that dnsmasq uses force-reload when gravity is invoked
* Add --wildcard option to ensure dnsmasq is restarted upon b/wlisting of a wildcard

Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-24 21:24:34 +10:00
WaLLy3K
eead2f059b Add review suggestions to Issue Template
* Use a more relevant link when explaining debug
* Re-add feature request note
2017-07-23 11:06:43 +10:00
WaLLy3K
291c111ce8 Update PR Template text
Signed-off-by: WaLLy3K <wally3k@pi-hole.net>
2017-07-22 15:29:36 +10:00
WaLLy3K
2ccf063dfe Update Issue Template text 2017-07-22 15:15:39 +10:00
WaLLy3K
49aee8b931 Fixed development branch check 2017-07-19 12:26:00 +10:00
WaLLy3K
f2a3b557c8 Updated Block Page to work with queryFunc output 2017-07-19 00:15:59 +10:00
Adam Warner
b0eceddcec Merge pull request #1617 from pi-hole/hotfix/CIDR
Hotfix/cidr (Pi-hole 3.1.1)
2017-07-18 09:39:20 +01:00
Adam Warner
0a062d26e6 Merge pull request #1611 from pi-hole/developmentNew
Sort out Merge conflicts with master
2017-07-17 14:49:55 +01:00
Adam Warner
20b2dd6b19 Merge pull request #1567 from pi-hole/tweak/checkout_FTL
Add pihole checkout ftl
2017-07-17 14:38:30 +01:00
Adam Warner
83592a5e70 Put '"'s in the right place
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-17 11:18:03 +01:00
Adam Warner
70fb733fea col_table does not exist yet, will break the install if pushed as hotfix.
Not sure why these additional "'s were put in, they break the update command, too.

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-17 10:53:49 +01:00
Adam Warner
eb8333c772 Merge branch 'development' into developmentNew 2017-07-16 16:45:33 +01:00
WaLLy3K
c9a98b68c8 Avoid reactivating a deactivated lighttpd service (#1485)
* Do not activate disabled lighttpd upon update

* Fixes #1362

* Use systemctl when available

* Move `finalexports` to the very end of the install script
set value of LIGHTTPD_ENABLED to 1 or 0 depending on whether or not lighttpd is enabled or disabled.
actually save LIGHTTPD_ENABLED value to setupvars.conf

Signed-off-by: Adam Warner <adamw@rner.email>

* add [[ -z "${LIGHTTPD_ENABLED}" ]] back in!

Signed-off-by: Adam Warner <adamw@rner.email>

* Ensure "Loaded:" is the line being checked

* Colourise disabled lighttpd message

* Prevent disabled lighttpd triggering error

* change of plan, don't need that [[ -z "${LIGHTTPD_ENABLED}" ]]

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-16 16:44:14 +01:00
Adam Warner
247d3ed729 list availible branches for FTL
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-16 13:54:23 +01:00
Adam Warner
031c6428d5 Merge branch 'tweak/checkout_FTL' of https://github.com/pi-hole/pi-hole into tweak/checkout_FTL
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	advanced/Scripts/piholeCheckout.sh
2017-07-16 13:34:20 +01:00
Adam Warner
f2e9d585f7 * Add helptext for pihole checkout ftl
* Only attempt to install FTL if branch was found
* ~~corebranches~~ webbranches (web branches now actually listed)

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-16 13:33:00 +01:00
WaLLy3K
8af9853b9a Fixed minor formatting issues
* Removed useless echo
* Quoted and braced conditionals
* Explicit escaping of newline
* Fixed arrays implicitly concatenating (SC2199)
* Fixed incorrect variable used in checkout web
2017-07-16 22:32:34 +10:00
Adam Warner
783f50657b Merge branch 'development' into tweak/checkout_FTL
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	advanced/Scripts/piholeCheckout.sh
2017-07-16 12:25:27 +01:00
WaLLy3K
3a50b91722 User-friendly queryFunc() output (#1483)
* User-friendly queryFunc() output

* Silence grep errors
* Provide 'pihole -q -h' help output
* Rewrite option handling
* Loop through grep stdout to make query output user friendly
* Add -adlist option to show block list URL instead of internal file name
* Limit general searches to 10 matches per block list
* Add -all option to override 10 match limit
* Fixed 'pihole -h' wording

* Further query optimisations

* Optimised scanList() output by switching folder
* Re-added processWildcards() function
* Added "-bp" exact matching option for use with block page
* Standardised query output
* Separated wildcard search from blacklist/whitelist search
* Optimised sorting by sorting glob output and not scanList() output

* Fixed result skipping

* Add text for wildcard result on exact query

* Fix wildcard result output

* Multiple wildcard matches on exact query could cause unexpected output

* Remove unnecessary replacement

* Make grep only output matching text

* HOSTS format lists will also output the IP address
* That substitution was necessary

* Remove IP address from HOSTS format lists

* Filter unwanted content

* Add /dev/null to grep, to always print file name (even when searching only one block list)
* Use three seds to remove unwanted content from block lists

* Merge with development

* Simplify queryFunc code
2017-07-15 11:56:40 +01:00
WaLLy3K
3631d1349e Prevent Web Admin from printing restartdns colour codes (#1575)
* Prevent Web Admin from printing unnecessary msgs

* Make DNS restart behaviour consistent
2017-07-15 11:11:06 +01:00
Dan Schaper
05c8687041 Integrate DL's update.sh fixes.
`shellcheck -x` for following files.

Do not test for included files SC1091

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	advanced/Scripts/update.sh
2017-07-14 22:40:34 +01:00
Dan Schaper
66f32b7601 Remove testing for debug as this is getting a re-write by Jacob.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-07-14 22:39:13 +01:00
Dan Schaper
9101916719 Test exclusion for sourced files SC1090.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-07-14 22:39:04 +01:00
Adam Warner
edb594461d Remove CIDR from IPv6 address when detecting it in the install script
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	automated install/basic-install.sh
2017-07-14 22:31:43 +01:00
Mcat12
9464b71a6e Remove /* from IPv6 as well as IPv4
Fixes Discourse issue: https://discourse.pi-hole.net/t/ipv6-aaaa-dns-issue/3830

Signed-off-by: Adam Warner <adamw@rner.email>
# Conflicts:
#	gravity.sh
2017-07-14 22:29:16 +01:00
Adam Warner
7d56e2a937 FTL has an L in it, innit?
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-14 20:54:41 +01:00
Adam Warner
218aa03f05 Merge branch 'developmentNew' of https://github.com/pi-hole/pi-hole into developmentNew 2017-07-14 20:50:52 +01:00
Adam Warner
1db03a10d7 Merge branch 'master' into developmentNew 2017-07-14 20:47:49 +01:00
Jacob Salmela
e1f818ffb7 Tweak/debug improvements (#1585)
* check for CIDR notation when comparing IPv6 address to that found in setupVars.conf

* highlight bad address entries in pihole.log and reference a corresponding FAQ

* show header output if Pi-holes x-header does not match

* fix automated mode when running from the dashboard.  It would previously not automatically upload and generate a token.

* show disclaimer message

* undocumented feature for now: obfuscate domains in pihole.log so they are not visible when sent to the Pi-hole developers.  We need to make an additonal flag for this in the pihole command.  if the variable OBFUSCATE has a value, it will replace the domain in the log with a placeholder value

* fix small typo in the disclaimer
2017-07-14 16:53:45 +01:00
Molikuner
9934f505a5 Fix URL extension parsing
when there is a querystring Pi-hole sometimes parsed a wrong extension
2017-07-13 23:18:40 +02:00
Dan Schaper
8c2b8f7241 Merge pull request #1599 from pi-hole/tweak/readme
Fix extentions of the JPG images
2017-07-12 17:40:56 -07:00
Adam Warner
bf70c2c660 initial changes to tests to take into account changes to strings
Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-12 22:57:57 +01:00
Adam Warner
74b912a0b7 Check if FTL is already installed, do not download if it is detected, and the sha1sum matches the remote
This will probably break some tests. I'll work that out in a bit
Signed-off-by: Adam Warner <adamw@rner.email>

Signed-off-by: Adam Warner <adamw@rner.email>
2017-07-12 22:37:51 +01:00
Dan Schaper
93d40b083e Fix extentions of the JPG images
Some images are jpg and not png.
2017-07-12 11:40:18 -07:00
Jacob Salmela
162ee28d0c Merge pull request #1597 from pi-hole/tweak/readme-trademarks-and-more
Update README with ® and several other improvements to better describe v3.2
2017-07-12 08:25:49 -05:00
Jacob Salmela
d328d17d03 Merge pull request #1586 from pi-hole/enhance/comments-in-installer
Install Script: Add comments for nearly every line of code
2017-07-12 07:49:35 -05:00
Dan Schaper
2778d88e8a Fix missing then clause 2017-07-12 00:12:54 -07:00
Jacob Salmela
b5c6178644 Merge remote-tracking branch 'origin/development' into enhance/comments-in-installer
merge in development
2017-07-12 01:38:49 -05:00
Jacob Salmela
ea8927e1da add facebook page to contact info
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-12 01:21:47 -05:00
Jacob Salmela
bc1065a7fc reorganize sections. install instructions first. also added more wordsmithing and links to interesting pi-hole.net articles
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-12 01:18:50 -05:00
Jacob Salmela
f4c7d389e5 more wordsmithing and updating links
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-12 01:03:09 -05:00
Jacob Salmela
03387391de wordsmith DHCP server section, API section, and chronometer2 section. Also add more images
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-12 00:53:14 -05:00
Jacob Salmela
24df5f5208 describe settings page in the order they appear on the dashboard--also add screenshots
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-12 00:36:12 -05:00
Jacob Salmela
9348a8ab15 move technical details to the bottom of the page in light of showing off Pi-holes features first.
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-11 23:36:40 -05:00
Jacob Salmela
fbd55dd740 tweaks to donation verbiage
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-11 23:33:49 -05:00
Jacob Salmela
e5e26413e9 new executive summary above the fold
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-11 23:28:47 -05:00
Jacob Salmela
527fe2f5e1 wordsmithing using Pi-hole as your DNS server, gravity, and additional blocklists.
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-11 23:06:42 -05:00
Jacob Salmela
38d213ee6c add section about additional ways to support us
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-11 22:55:50 -05:00
Jacob Salmela
613f2d3b86 Pi-hole is now a registered trademark: replace ™ with ®
Signed-off-by: Jacob Salmela <github@decoy.email>
2017-07-11 22:51:20 -05:00
Jacob Salmela
e7ad972783 fix thre spelling errors 2017-07-10 14:12:30 -05:00
Jacob Salmela
2f939d8c56 fix two spelling errors 2017-07-07 09:05:19 -05:00
Jacob Salmela
7ef751f96d Merge pull request #1587 from pi-hole/fix/1430
Show text typed when pressing Ctrl+C after using pihole -a -p
2017-07-06 20:59:41 -05:00
Jacob Salmela
fb66fb12c5 put "no password will be set" on a newline. 2017-07-06 20:54:09 -05:00
Jacob Salmela
042dcf795c fixes #1430 2017-07-06 20:44:40 -05:00
Jacob Salmela
aad39c5ffc add comments for nearly every line of code. 2017-07-06 19:25:56 -05:00
Dan Schaper
c3ed710e31 Merge pull request #1565 from pi-hole/revamp/debug
Revamp of debug script with logic and colours
2017-07-05 15:12:36 -07:00
Jacob Salmela
cb65907e60 Merge branch 'development' of https://github.com/pi-hole/pi-hole into revamp/debug
merge in development to avoid shellcheck from travis
2017-07-05 16:55:34 -05:00
DL6ER
bb8a263d70 ShellCheck 2017-07-05 19:34:20 +02:00
DL6ER
70fd94edb3 Edit message when requested branch of FTL is not available 2017-07-05 19:30:05 +02:00
WaLLy3K
d0492898eb Add "php5-sqlite" to uninstall dependencies 2017-07-05 17:21:17 +10:00
WaLLy3K
c6ba03802f Add "php5-sqlite" to dependencies 2017-07-05 17:18:21 +10:00
WaLLy3K
1bebcef265 Make Chronometer usable on smaller screens (#1518) 2017-07-04 13:52:51 +10:00
WaLLy3K
209fbf82c4 Colourise tailFunc (#1550)
* Colourise tailFunc

* Strip month, day number and dnsmasq[PID]
* Blocked domains show as light red
* Queries show as standard colour
* Everything else as dark gray

* Change tailFunc highlighted lines

* Highlight Blocked/Blacklist/Wildcard lines as red
* Make DHCP lines default colour

* Make sure tailFunc doesn't match on domain names
2017-07-02 15:21:00 +02:00
DL6ER
6ce79ae1d0 Fix git commands (#1577) 2017-07-01 23:52:10 +02:00
Adam Warner
b3eb5c4f0e Colour Tweaks (#1549) 2017-07-01 22:08:17 +10:00
DL6ER
ec4e9780ed Accept underscores when validating domain names (#1571) 2017-06-30 22:52:33 +10:00
Adam Warner
22abbffbb7 Merge branch 'development' of https://github.com/gedetil/pi-hole into gedetil-development
Signed-off-by: Adam Warner <adamw@rner.email>

# Conflicts:
#	advanced/Scripts/webpage.sh
2017-06-29 19:47:32 +01:00
Jacob Salmela
05a724afae codacy appeasement: remove useless cats 2017-06-29 11:49:28 -05:00
Jacob Salmela
1957b002bc add comments about X-Headers and further explain the file descriptor cod. 2017-06-29 11:37:58 -05:00
Jacob Salmela
04cef25add remove color character codes before uploading so the log is more readable on our plaintext tricorder server 2017-06-29 11:17:19 -05:00
Adam Warner
ab1a6d8829 Fix install script using IPv6 CIDR notation (#1570) 2017-06-29 11:18:52 +10:00
DL6ER
98afb0e998 pihole checkout ftl 2017-06-27 14:28:05 +02:00
DL6ER
e9d81fc883 Backend additions for aufit log feature (#1399) 2017-06-27 10:53:24 +02:00
Jacob Salmela
22fac5e1e0 additional shellcheck fixes 2017-06-26 22:03:45 -05:00
Jacob Salmela
b6a2a4ad5a more shellcheck fixes 2017-06-26 21:51:41 -05:00
Jacob Salmela
5f00347019 appease shellcheck by removing two unneccesary functions and making some if/else blocks 2017-06-26 21:34:39 -05:00
Mcat12
89a22ded54 Merge pull request #1564 from pi-hole/fix/ipv6-cidr
Fix gravity generation when IPv6 CIDR is present
2017-06-26 10:04:06 -04:00
Mcat12
1e31fa89aa Remove /* from IPv6 as well as IPv4
Fixes Discourse issue: https://discourse.pi-hole.net/t/ipv6-aaaa-dns-issue/3830
2017-06-26 09:51:21 -04:00
Dan Schaper
b477b7f777 Merge pull request #1539 from mterron/patch-1
Add support for PowerPC architecture
2017-06-25 19:37:23 -07:00
Mcat12
0de15f7a97 Merge branch 'development' into patch-1 2017-06-25 18:15:33 -04:00
Mcat12
35ecf40259 Merge pull request #1545 from pi-hole/dschaper-patch-1
Update PULL_REQUEST_TEMPLATE.md
2017-06-25 18:13:30 -04:00
Mcat12
009363a7bb Merge pull request #1560 from pi-hole/fix/ad-domain-hostname
Move local.list after the ad blocking lists
2017-06-25 18:11:48 -04:00
Mcat12
a3758612ec Merge pull request #1556 from pi-hole/fix/invalid-ipv6-wildcard
Fix wildcarding with IPv6
2017-06-25 18:09:26 -04:00
Mcat12
8dc94e014f Merge branch 'development' into fix/invalid-ipv6-wildcard 2017-06-25 18:04:38 -04:00
Dan Schaper
ad886ac164 Merge branch 'development' of github.com:pi-hole/pi-hole into dschaper-patch-1 2017-06-25 15:03:56 -07:00
Mcat12
78e7c8b8e9 Merge branch 'development' into fix/ad-domain-hostname 2017-06-25 18:03:16 -04:00
Dan Schaper
3779085051 Merge pull request #1562 from pi-hole/tweak/shellcheck
Tweak ShellCheck Tests
2017-06-25 14:45:45 -07:00
Dan Schaper
c29c4ceb0f Integrate DL's update.sh fixes.
`shellcheck -x` for following files.

Do not test for included files SC1091

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-06-25 14:39:09 -07:00
Dan Schaper
07fc047dd8 Remove testing for debug as this is getting a re-write by Jacob.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-06-25 12:26:16 -07:00
Mcat12
bc46694ea7 Move local.list after the ad blocking lists
Fixes the bug found by [Reddit](https://www.reddit.com/r/pihole/comments/6j3az9/urls_in_my_blacklist_are_showing_up_as_my_default/)
2017-06-25 12:18:09 -04:00
Dan Schaper
0c2827e130 Test exclusion for sourced files SC1090.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-06-24 15:49:16 -07:00
Mcat12
cb09e0bc9a Strip /* from the end of the IPv6 address
Fixes #1536
2017-06-24 11:14:23 -04:00
Dan Schaper
06d5ea9d51 Grammar and signoff instructions.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-06-22 12:59:07 -07:00
Dan Schaper
a4650c6226 Update PULL_REQUEST_TEMPLATE.md 2017-06-21 08:26:59 -07:00
Dan Schaper
c85a603491 Update PULL_REQUEST_TEMPLATE.md 2017-06-21 08:19:19 -07:00
Adam Warner
536585b846 Colourise Core Output Text (#1471)
* Define colours within COL_TABLE
* Do not output colours for non-terminal instances
* Removed ":::"
* Fixed indenting & spacing
* Made output consistent throughout project
* Reworded text to fit on standard 80 char wide Terminal screen
* Made 'sudo raspi-config' warning (insufficient disk space) only show on RPi
* Make "Installation/Update Complete" the final msg
* Remove redundant messages
* Simplify update available message
* Confirm user would like to begin uninstall
* If "git pull" string says "Already up-to-date.", place [i] before it
* Colour Temp/Interface output
* Made `pihole disable 5z` invalid
* Added error fallback if invalid argument (not s/m) is detected
* Quoted "$2" for consistency
* Updated help text
* L185/286: Replaced echo with redirect
* User agents for adblock.mahakala.is/adaway.org unnecessary 
* Print newline on confirmation of repository reset
* Add output to admin-related dnsmasq restarts
* Return error message for "pihole -q"
* Imply default checkout behaviour with y/N
* Fix uninstall failing to remove pihole user
* Print checkout 'git remote show origin' STDERR on new line
* Replaced checkout "AdminLTE" wording with "Web Admin"
2017-06-21 21:49:05 +10:00
Adam Warner
ecde222512 [Staging] 3.1 (#1502)
* Fix handling of wildcard help text

* Rewrite help text for better handling of params

* Replace misleading letter variable

* stash changes on branch switch, else it fails if any changes have been made.

* Make changes according to comment in #1384

* Update queryFunc()

* Allow scanList() to search files using a wildcard by removing quotes wrapped around `${list}`
* scanList() will not provide a domain ouput on each string if exact is specified (`grep -l`)
* Remove unused processWildcards() function
* Return a message if no domain is specified
* IDN domains are converted to punycode when running a `pihole -q` search if the `python` package is available, otherwise will revert to current behaviour
* Scan Blacklist & Wildcards first, exiting from search if a match is found (Fixes #1330)
* Use one `grep` subshell to search for all "*.domains" lists at once (opposed to looping to get every matching file name, and then spawning a `grep` instance for every matching file)
* queryFunc() will not return "(0 results)" output from files where no match is found
* Sort results based off list number
* Return a message if no results are found

* Update basic-install.sh

* Update block page. Allow for setupVars setting of CUSTOMBLOCKPAGE (bool) to prevent it being overwritten

* simplify

* further simplify

* fix inteliJ IDEA complaints

* even further simplify

* tidy up output

* revert line, looks tidyer

* clarify

* Revert "Ensure any changes to blocking page are updated."

* We test for dpkg lock on line 830 directly, no need for the check also
in the template section.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* Display FTL version & version.sh rewrite

While testing to make sure `pihole -v` would output `pihole-FTL version`, I noticed some options didn't work how I expected them to. For example, if I use `pihole -v -p`, I would expect to see the version output of Pi-hole Core. Instead, I'm informed that it's an invalid option.

I've had the following things in mind while rewriting this:
  * I'm operating under the assumption that FTL is only installed if the Admin Console is (Line 113 exit 0)
  * I have modified the help text to only output with `pihole -v --help`
  * I have modified all output to be more similar to the output style of `grep` and `curl` (Ditching ":::")

Testing output:
```
w3k@MCT:~$ pihole -v
  Pi-hole version is v3.0.1-14-ga928cd3 (Latest: v3.0.1)
  Admin Console version is v3.0-9-g3760482 (Latest: v3.0.1)
  FTL version is v2.6.2 (Latest: v2.6.2)
w3k@MCT:~$ pihole -v -c
  Current Pi-hole version is v3.0.1-14-ga928cd3
  Current Admin Console version is v3.0-9-g3760482
  Current FTL version is v2.6.2
w3k@MCT:~$ pihole -v -l
  Latest Pi-hole version is v3.0.1
  Latest Admin Console version is v3.0.1
  Latest FTL version is v2.6.2
w3k@MCT:~$ pihole -v -p --hash
  Current Pi-hole hash is a928cd3
w3k@MCT:~$ pihole -v -a --hash
  Current Admin Console hash is 3760482
w3k@MCT:~$ pihole -v --help
Usage: pihole -v [REPO | OPTION] [OPTION]
Show Pi-hole, Web Admin & FTL versions
  <Shows all Repositories and Options>
w3k@MCT:~$ pihole -v -foo
  Invalid Option!
```

* Update -h to work as --hash

Also provide error output as per https://github.com/pi-hole/pi-hole/pull/1447#issuecomment-300600093

* Perform EXACT searches on HOSTS lists correctly

`\s` on the end may be overkill, but it is the existing scanList() behaviour.

* Fixed indentation

* Minimise string duplication & other minor changes

Instead of duplicating output strings, rewrite core/web/ftlOutput() into one neat versionOutput().

* Modified syntax to be valid for Shellcheck

* Log and echo gateway responses

* Update queryFunc() to search Whitelist

If there is a match in Whitelist/Blacklist/Wildcards, `[ ! -t 1 ]` will cause the search to end if the terminal is closed when the script is called. This has the intended effect of allowing a user to search for a W/B/W domain (as well as all the adlists it's found in) using `pihole -q` via Terminal, but the script will stop searching after a W/B/W match when called by the block page.

* Wrap in double brackets

* Provide remote hashes for version.sh

 * Provide remote hashes for comparison
 * Use double braces for all conditions (for consistency)
 * Suppress potential "cd" error output
 * Provide "not applicable" output upon any hash request for FTL

* whitelist on website blocked doesnt work (#1452)

Since Pi-hole redirects ad domains to itself, accessing the script via de.ign.com is the same as pi.hole in this case. The fix should be as simple as adding a / before admin on this line.

* Solve piholeLogFlush.sh having to be issued 2 x to clear logs (#1460)

Simplified the command -v syntax, and added a sleep 3 timer to the first execution of the log rotation. The second execution was being issued while the first was still running, thus it would fail and you would have to issue the "Flush Logs" command a second time.

* Use `echo "ABC" | pihole tricorder` to upload to Pi-hole's medical tricorder. Uses SSL if available.

* Update list.sh

I believe this has feature parity with `sed /foo/ Id` but also supports busybox, and my alpine docker ;)

* Document `sed` substitution for user readability

Comment the oneliner with explanations of what each step does.

* Update Help Output (#1467)



* File consistency

* Tabs to 2 spaces
* Corrected indenting
* Double braced conditionals
* Quoted variables within conditionals

* Standardise core help text

* Added help text for disable command
* Added help text for logging command

* Clean up

* Fixed certain new lines and spaces

* Sync with development branch

* Formatting consistency

* Tabs to 2 spaces
* Corrected indenting
* Double braced conditionals
* Quoted variables within conditionals
* Fixed certain newlines and spaces

* Admin help text

* Added help text for interface command

* Sync with development branch

* Formatting consistency

* Tabs to 2 spaces
* Fixed some wording
* Fixed certain spaces

* Formatting consistency

* Minor wording changes
* Tabs to 2 spaces
* Corrected indenting
* Double braced conditionals
* Quoted variables within conditionals
* Fixed certain newlines and spaces

* Blacklist help text

* Formatting consistency

* Tabs to 2 spaces
* Corrected indenting

* Cronometer help text

* Formatting consistency

* Fixed certain newlines and spaces
* Corrected indenting

* Checkout warning alteration

* Add checkout help text

* Corrected help output

* Show help for "pihole -a -i --help"

* Fix "pihole disable --help" and "pihole -l --help"

* Show help for "pihole -v -h" 

* Indent output text
* Minor help text change

* Show help for "pihole checkout --help"

* Tricorder: Insecure Opt-out

* Check to see if Tricorder is being called directly
* Provide opt-out for insecure transmission of debug log
* Remove mention of internal function from help menu

* 🌮 is the new :shipit: squirrel

* Wording changes and bug fix

* Fix wildcard help text

* -wild is not a valid option since we're already using -wild

* Fix logrotation: manual flushing should be done twice, but automated rotation at midnight should only be done *once*!

* Print echos only when manual flushing is requested

* Add "quiet" mode + update comments in the cron file

* Confirm Tricorder is online

* Scan port 9998 to confirm the availability of "tricorder.pi-hole.net"
* Exit codes for upload process

* Formatting consistency

* Add link to Windows DNS Swapper

See #1400

* Install loopback firewall rules for FTL (#1419)

* Install loopback firewall rules for FTL

* FirewallD FTL ports

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* Remove firewallD FTL local rules.

Local rules should not be blocked in firewallD, not requred for internal service FTD>

* Reinstate https rules, and delete FTL rules

Fixes earlier commit.

* Retrieve local repos on repair (#1481)

* Retrieve local repos on repair

* Change conditional to check for repair
* Change wording of Update/Reconfigure message
* Fixed indenting

* Perform "git reset --hard" on reconfigure

* Change directory before trying to reset repository. Fixes #1489

* No need to `cd $PWD` as it doesn't affect flow of caller script.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* Refine output of password status in basic-install.sh:displayFinalMessage(). Fixes #1488 (#1490)

* Rewrite Chronometer to output more stats

* Fix output IPv4 addr when removing CIDR notation (#1498)

* Move wildcards file if blocking is disabled (#1495)

* Move wildcards file if blocking is diabled

* Delete newline

* Roll back merge #1417 (#1494)

* Update ISSUE_TEMPLATE.md

* Remove Question option

* Prefer ULA over GUA addresses [IPv6] (#1508)

* On installs with GUA and ULA's we should prefer ULA's as it's been demonstrated that GUA's can and often are rotated by ISPs. Fixes #1473

* Add test for link-local address detection

* Add ULA-only and GUA-only tests

* Add test_IPv6_GUA_ULA_test and test_IPv6_ULA_GUA_test

* Add ""

* Add mock_command_2 command that can mock a command with more than one argument (as "ip -6 address") and result multiple lines of results

* Make mock_command_2 more similar to the original mock_command

* Correct comments

* Fixed remaining comments

* Fixed one last comment...

* Fixed a comment...

* Add weekly logrotation of FTL's log (#1509)

* Update LICENSE of the project to EUPL v1.2

* Make clear that NO is the default if the user just hits return (#1514)

* Add tricorderFunc back as usable function (#1515)

As per #1464

* Don't update FTL when there is a core update (as this will update FTL a second time). Fixes #1516

* Add FTL tests to the test suite (#1510)

* Add first version of FTL tests

* Wait one second to allow FTL to start up and analyze our mock log

* Add test_FTL_telnet_statistics

* Added test_FTL_telnet_top_clients

* Add test_FTL_telnet_top_domains

* Revert "Add FTL tests to the test suite (#1510)" (#1519)

This reverts commit cf6a1ac9ad.

* Trim version output when update is successful (#1527)

* Change ownership of /etc/pihole to user/group pihole. Fixes #1529 (#1530)

* Delete temporary files after installing the FTL binary. Fixes #1525

* Change from admin to approvers teams

* Introduce new file black.list for blacklist content

* Add "pihole -g -b" to *only* update black.list (saves a bunch of time when adding/changing only blacklisted files - won'tdownload lal lists, but only processes the blacklist and restars dnsmasq)

* Remove useless cat

* Improve displayed messages and overall logic

* Disable black.list on "pihole disable"

* cp + rm === mv (well, almost)
2017-06-20 22:17:41 +01:00
Terror
5b472ff67c Add support for PowerPC architecture
Related to https://github.com/pi-hole/FTL/pull/88
2017-06-20 08:28:04 +12:00
Mcat12
6f2ec22894 Merge pull request #1534 from pi-hole/new/black.list
Introducing black.list
2017-06-19 14:26:08 -04:00
DL6ER
05798fe07a cp + rm === mv (well, almost) 2017-06-19 20:22:03 +02:00
Mcat12
8ab5ffd876 Merge pull request #1533 from pi-hole/dschaper-patch-1
Change from admin to approvers teams
2017-06-17 12:23:04 -04:00
Mcat12
2b6709d83f Merge pull request #1532 from pi-hole/fix/tempfiles
Delete temporary files after installing the FTL binary. Fixes #1525
2017-06-17 12:07:00 -04:00
DL6ER
e4cc5b3847 Disable black.list on "pihole disable" 2017-06-17 14:49:02 +02:00
DL6ER
8bad56e897 Improve displayed messages and overall logic 2017-06-17 14:24:30 +02:00
DL6ER
92e691408f Remove useless cat 2017-06-17 14:14:07 +02:00
DL6ER
0a9c234127 Add "pihole -g -b" to *only* update black.list (saves a bunch of time when adding/changing only blacklisted files - won'tdownload lal lists, but only processes the blacklist and restars dnsmasq) 2017-06-17 13:57:27 +02:00
DL6ER
0283a1ab74 Introduce new file black.list for blacklist content 2017-06-17 13:50:10 +02:00
Dan Schaper
b32096b16e Change from admin to approvers teams 2017-06-17 03:59:27 -07:00
DL6ER
3d7582faec Delete temporary files after installing the FTL binary. Fixes #1525 2017-06-17 08:54:26 +02:00
DL6ER
54a88ab5ab Change ownership of /etc/pihole to user/group pihole. Fixes #1529 (#1530) 2017-06-17 08:43:05 +02:00
WaLLy3K
aff5ff08d5 Trim version output when update is successful (#1527) 2017-06-15 09:50:05 +02:00
Jacob Salmela
fc0440546f add functions to parse head and tails of gravity.list and pihole.log 2017-06-10 23:20:27 -05:00
Jacob Salmela
172b8d2427 parse ftl log 2017-06-10 22:18:33 -05:00
Jacob Salmela
6d10a498a5 implement a limit on how many lines of a file we want to view 2017-06-10 21:57:17 -05:00
Jacob Salmela
881819ed5f ignore big files we dont need to know about; also fix diagnosing pihole processes 2017-06-10 18:37:28 -05:00
Jacob Salmela
3275c5f710 more comments to help understand the script 2017-06-10 15:54:27 -05:00
Jacob Salmela
b0cc1a38c3 adjust minor formatting for better readability 2017-06-10 15:28:04 -05:00
Mcat12
e8025dbc81 Merge pull request #1513 from pi-hole/EUPLv1.2
Update LICENSE of the project to EUPL v1.2
2017-06-10 14:10:25 -04:00
Jacob Salmela
e10182c839 only parse files required by Pi-hole 2017-06-10 12:27:05 -05:00
Jacob Salmela
b4f1fe08f0 variablize all files and directories. also put required files and folders into an arry so we can compare them in later functions by parsing through them 2017-06-09 23:22:37 -05:00
Jacob Salmela
64171fa2a1 small color and formatting changes 2017-06-09 15:42:54 -05:00
Jacob Salmela
048eacd305 parse array in correct location 2017-06-07 12:31:08 -05:00
Jacob Salmela
24aa72c19d condense repetative code into functions; parse the content of each file 2017-06-07 12:25:00 -05:00
Jacob Salmela
92b5fe4be4 check arch compatibility and add gateway faq url 2017-06-05 14:55:58 -05:00
DL6ER
939055f19c Revert "Add FTL tests to the test suite (#1510)" (#1519)
This reverts commit cf6a1ac9ad.
2017-06-05 13:51:13 +02:00
Mcat12
c47f3e3307 Merge pull request #1517 from pi-hole/tweak/update_core_and_FTL
Don't update FTL when there is a core update
2017-06-04 08:42:59 -04:00
DL6ER
cf6a1ac9ad Add FTL tests to the test suite (#1510)
* Add first version of FTL tests

* Wait one second to allow FTL to start up and analyze our mock log

* Add test_FTL_telnet_statistics

* Added test_FTL_telnet_top_clients

* Add test_FTL_telnet_top_domains
2017-06-04 13:23:56 +02:00
DL6ER
f1146a3443 Don't update FTL when there is a core update (as this will update FTL a second time). Fixes #1516 2017-06-04 12:41:44 +02:00
WaLLy3K
6823a62644 Add tricorderFunc back as usable function (#1515)
As per #1464
2017-06-03 19:13:40 +02:00
DL6ER
2516a1e298 Make clear that NO is the default if the user just hits return (#1514) 2017-06-03 17:23:47 +02:00
DL6ER
288f93c5dd Update LICENSE of the project to EUPL v1.2 2017-06-03 15:06:00 +02:00
DL6ER
8ef64dbe74 Add weekly logrotation of FTL's log (#1509) 2017-06-03 14:51:35 +02:00
DL6ER
01e091fd17 Prefer ULA over GUA addresses [IPv6] (#1508)
* On installs with GUA and ULA's we should prefer ULA's as it's been demonstrated that GUA's can and often are rotated by ISPs. Fixes #1473

* Add test for link-local address detection

* Add ULA-only and GUA-only tests

* Add test_IPv6_GUA_ULA_test and test_IPv6_ULA_GUA_test

* Add ""

* Add mock_command_2 command that can mock a command with more than one argument (as "ip -6 address") and result multiple lines of results

* Make mock_command_2 more similar to the original mock_command

* Correct comments

* Fixed remaining comments

* Fixed one last comment...

* Fixed a comment...
2017-06-02 23:01:48 +02:00
Jacob Salmela
8b4c0b456b exclude webpassword from being uploaded. also check that the IP addresses detected match those defined in setupVars.conf 2017-06-01 01:15:11 -05:00
Jacob Salmela
02a601deff comment out dir checks for lighttpd, cronm and http as they have a lot of other files that need parsing through. May need to increase the logic there if this is information we really need to know. 2017-06-01 00:19:15 -05:00
Jacob Salmela
b207fadc04 check if os is supported based on pretty name 2017-06-01 00:18:06 -05:00
Mcat12
bf3883ed46 Merge pull request #1506 from pi-hole/tweak/github_issues
Update ISSUE_TEMPLATE.md to remove Feature Request choice.
2017-05-31 19:14:36 -04:00
Dan Schaper
3a58e9d33a Remove Question option 2017-05-31 00:02:57 -07:00
Dan Schaper
570c54002f Update ISSUE_TEMPLATE.md 2017-05-30 23:51:22 -07:00
Jacob Salmela
d51c067e1b change some verbiage; new function to compare the ports in use to the services assigned to them. 2017-05-27 21:21:18 -05:00
Jacob Salmela
2fea5d428d condense repetitive code into functions 2017-05-27 15:47:15 -05:00
WaLLy3K
2b8a8b03a8 Roll back merge #1417 (#1494) 2017-05-27 22:42:44 +02:00
Jacob Salmela
d51e0c49b1 remove comments and blank lines when parsing files 2017-05-27 13:44:33 -05:00
DL6ER
d913534793 Move wildcards file if blocking is disabled (#1495)
* Move wildcards file if blocking is diabled

* Delete newline
2017-05-27 17:51:41 +02:00
Jacob Salmela
36907edd50 parse contents of each file in each dir, several log_writes 2017-05-27 00:04:42 -05:00
Jacob Salmela
7ec169ab10 more comments, fixed automated tricorder, variablizing echos, verify FTL version 2017-05-26 22:05:50 -05:00
Jacob Salmela
7873da1ae5 more colors. shortened dig timeouts 2017-05-26 15:17:26 -05:00
Jacob Salmela
ef5a6e7880 add faq urls to some functions, added more colors, also use a static url for remote digs 2017-05-26 14:26:02 -05:00
Jacob Salmela
96f01e670f add functions to write to console and log at the same time 2017-05-26 12:16:22 -05:00
WaLLy3K
10139241f5 Fix output IPv4 addr when removing CIDR notation (#1498) 2017-05-26 09:57:27 +02:00
Jacob Salmela
5902be2a49 comments for every line 2017-05-24 22:07:15 -05:00
Jacob Salmela
cc946ce068 upload to tricorder functions 2017-05-24 21:11:15 -05:00
Jacob Salmela
1102fdc44b append everything the user sees to the pihole_debug.log file 2017-05-24 20:24:23 -05:00
Jacob Salmela
c995c81fff adjust some spacing 2017-05-24 19:36:06 -05:00
Jacob Salmela
6684af9938 add lighttpd list function and gravity analysis 2017-05-24 18:31:55 -05:00
Jacob Salmela
8bafd12f95 fix resolver functions and add x-header function 2017-05-24 16:10:14 -05:00
Jacob Salmela
76266cf31b add resolver functions and check directory content functions 2017-05-24 15:29:31 -05:00
WaLLy3K
4ad0cdf5d4 Rewrite Chronometer to output more stats 2017-05-25 01:03:13 +10:00
Jacob Salmela
1a87d3a659 add process check function 2017-05-23 22:57:22 -05:00
Jacob Salmela
085f2c6ca0 add port check function 2017-05-23 22:32:30 -05:00
WaLLy3K
98fdb95645 Merge pull request #1491 from pi-hole/fix/ResetInRepoDir
Change directory before trying to reset repository
2017-05-23 19:02:03 +10:00
DL6ER
3035c9a366 Refine output of password status in basic-install.sh:displayFinalMessage(). Fixes #1488 (#1490) 2017-05-23 10:44:11 +02:00
Dan Schaper
5004cf331a No need to cd $PWD as it doesn't affect flow of caller script.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-05-22 15:36:51 -07:00
DL6ER
74eb8c8622 Change directory before trying to reset repository. Fixes #1489 2017-05-22 23:43:52 +02:00
Jacob Salmela
b74300f67c add ping internet function and fix some spacing issues 2017-05-22 12:57:55 -05:00
Jacob Salmela
107babe8f4 add ping gateway function 2017-05-22 12:35:57 -05:00
Jacob Salmela
8fd9a22d18 add detect IP function 2017-05-22 12:05:42 -05:00
Jacob Salmela
8c5c1316dd add php version and processor check functions 2017-05-22 08:48:56 -05:00
Jacob Salmela
daff5d8b5a add critical dependencies version check functions 2017-05-22 03:05:51 -05:00
Jacob Salmela
6c4a7b626e add pihole version check functions 2017-05-22 02:39:00 -05:00
Jacob Salmela
1aa5943e67 add if directory exists function 2017-05-22 01:06:15 -05:00
Jacob Salmela
69fe889f92 comments for all lines and small formatting changes 2017-05-21 23:25:53 -05:00
WaLLy3K
2ef87ad110 Retrieve local repos on repair (#1481)
* Retrieve local repos on repair

* Change conditional to check for repair
* Change wording of Update/Reconfigure message
* Fixed indenting

* Perform "git reset --hard" on reconfigure
2017-05-21 22:47:25 +02:00
DL6ER
c655e6ea73 Install loopback firewall rules for FTL (#1419)
* Install loopback firewall rules for FTL

* FirewallD FTL ports

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>

* Remove firewallD FTL local rules.

Local rules should not be blocked in firewallD, not requred for internal service FTD>

* Reinstate https rules, and delete FTL rules

Fixes earlier commit.
2017-05-20 15:47:51 +02:00
Jacob Salmela
5d7ef9281f get just the OS pretty name for Dan 2017-05-20 02:01:56 -05:00
Jacob Salmela
6fa00e7cc8 first functions with pretty colors. check OS, setupVars, and contents of .d dirs 2017-05-20 01:34:13 -05:00
WaLLy3K
2f2825f15e Tricorder: Insecure Opt-out 2017-05-20 10:45:26 +10:00
Mcat12
e377fe5503 Merge pull request #1486 from pi-hole/readme/win-dns-swapper
Add link to Windows DNS Swapper
2017-05-19 11:26:51 -04:00
Mcat12
69b41dd72e Add link to Windows DNS Swapper
See #1400
2017-05-19 11:16:34 -04:00
WaLLy3K
69fa9874dd Use HTTP_HOST instead of SERVER_NAME
* Fixes https://github.com/pi-hole/pi-hole/issues/1479
2017-05-18 18:54:26 +10:00
WaLLy3K
a620a5c430 Formatting consistency 2017-05-18 12:53:32 +10:00
WaLLy3K
1f3db8b602 Confirm Tricorder is online
* Scan port 9998 to confirm the availability of "tricorder.pi-hole.net"
* Exit codes for upload process
2017-05-18 12:43:17 +10:00
WaLLy3K
f6732a484e Merge pull request #1317 from r0ckarong/development
Fixed handling of `pihole -wild` help text
2017-05-18 11:16:25 +10:00
DL6ER
4015122d33 Merge pull request #1476 from pi-hole/fix/midnightflushing
Fix midnight logrotation
2017-05-18 01:23:32 +02:00
DL6ER
42eb811910 Add "quiet" mode + update comments in the cron file 2017-05-17 12:54:43 +02:00
DL6ER
c9042ffedd Print echos only when manual flushing is requested 2017-05-17 12:51:04 +02:00
DL6ER
4e2c6a7b8e Fix logrotation: manual flushing should be done twice, but automated rotation at midnight should only be done *once*! 2017-05-17 12:44:35 +02:00
WaLLy3K
7453bf2ee6 Fix wildcard help text
* -wild is not a valid option since we're already using -wild
2017-05-16 10:23:53 +10:00
WaLLy3K
7d17c652f3 Merge branch 'development' into development 2017-05-16 10:18:32 +10:00
WaLLy3K
075f00cecd Merge branch 'development' into tc-insecure-optout 2017-05-16 09:49:42 +10:00
WaLLy3K
b9f2ba0717 Wording changes and bug fix 2017-05-16 09:48:46 +10:00
Adam Warner
ed04be5faa Merge pull request #1468 from pi-hole/tweak/help-output
New Help Output
2017-05-14 16:46:58 +01:00
Adam Warner
90119c75d5 more merge conflicts! 2017-05-14 16:43:20 +01:00
Dan Schaper
d30056026b Merge pull request #1466 from pi-hole/doclist_remove_sed
Document `sed` substitution for user readability
2017-05-14 08:28:10 -07:00
Adam Warner
bc8a5916d8 fix merge conflicts 2017-05-14 16:17:04 +01:00
Dan Schaper
f202602f99 Merge pull request #1470 from pi-hole/tweak/taco
Update PullApprove rules
2017-05-14 07:41:07 -07:00
DL6ER
69f361a3a1 🌮 is the new :shipit: squirrel 2017-05-14 16:28:35 +02:00
WaLLy3K
da9ff0cc66 Tricorder: Insecure Opt-out
* Check to see if Tricorder is being called directly
* Provide opt-out for insecure transmission of debug log
* Remove mention of internal function from help menu
2017-05-14 19:27:14 +10:00
WaLLy3K
703ff09a91 Merge pull request #1464 from pi-hole/new/tricorder_option
Tricorder debug logs are now uploaded using SSL when `openssl` is available
2017-05-14 15:37:25 +10:00
WaLLy3K
30035ce1c2 Merge branch 'development' into tweak/help-output 2017-05-14 13:03:33 +10:00
WaLLy3K
39b74ebfd4 Show help for "pihole checkout --help" 2017-05-14 12:22:19 +10:00
WaLLy3K
3bd677c102 Show help for "pihole -v -h"
* Indent output text
* Minor help text change
2017-05-14 11:57:46 +10:00
WaLLy3K
4eb7d2868c Fix "pihole disable --help" and "pihole -l --help" 2017-05-14 11:53:40 +10:00
WaLLy3K
0e4473685b Show help for "pihole -a -i --help" 2017-05-14 11:47:56 +10:00
WaLLy3K
b721ed49ab Update Help Output (#1467)
* File consistency

* Tabs to 2 spaces
* Corrected indenting
* Double braced conditionals
* Quoted variables within conditionals

* Standardise core help text

* Added help text for disable command
* Added help text for logging command

* Clean up

* Fixed certain new lines and spaces

* Sync with development branch

* Formatting consistency

* Tabs to 2 spaces
* Corrected indenting
* Double braced conditionals
* Quoted variables within conditionals
* Fixed certain newlines and spaces

* Admin help text

* Added help text for interface command

* Sync with development branch

* Formatting consistency

* Tabs to 2 spaces
* Fixed some wording
* Fixed certain spaces

* Formatting consistency

* Minor wording changes
* Tabs to 2 spaces
* Corrected indenting
* Double braced conditionals
* Quoted variables within conditionals
* Fixed certain newlines and spaces

* Blacklist help text

* Formatting consistency

* Tabs to 2 spaces
* Corrected indenting

* Cronometer help text

* Formatting consistency

* Fixed certain newlines and spaces
* Corrected indenting

* Checkout warning alteration

* Add checkout help text

* Corrected help output
2017-05-14 11:11:44 +10:00
Dan Schaper
25601b9fcc Document sed substitution for user readability
Comment the oneliner with explanations of what each step does.
2017-05-13 17:49:58 -07:00
Dan Schaper
db10c8ab46 Merge pull request #1465 from pi-hole/busybox_sed_support
Update list.sh for busybox compatibility
2017-05-13 17:40:27 -07:00
Adam Hill
55f78e3b64 Update list.sh
I believe this has feature parity with `sed /foo/ Id` but also supports busybox, and my alpine docker ;)
2017-05-13 18:44:41 -05:00
DL6ER
7abf349730 Use echo "ABC" | pihole tricorder to upload to Pi-hole's medical tricorder. Uses SSL if available. 2017-05-13 21:08:21 +02:00
WaLLy3K
f9d41caeb6 Merge branch 'development' into blockpage2 2017-05-13 23:29:44 +10:00
Hans Geiblinger
b166410cbf Solve piholeLogFlush.sh having to be issued 2 x to clear logs (#1460)
Simplified the command -v syntax, and added a sleep 3 timer to the first execution of the log rotation. The second execution was being issued while the first was still running, thus it would fail and you would have to issue the "Flush Logs" command a second time.
2017-05-12 22:39:55 +02:00
0412465564
31d5a7ae9e whitelist on website blocked doesnt work (#1452)
Since Pi-hole redirects ad domains to itself, accessing the script via de.ign.com is the same as pi.hole in this case. The fix should be as simple as adding a / before admin on this line.
2017-05-12 22:29:07 +02:00
Dan Schaper
5bb91759b4 Merge pull request #1459 from WaLLy3K/patch-2
Provide remote hashes for version.sh
2017-05-12 12:38:13 -07:00
Dan Schaper
80c4b7c9bb Merge pull request #1455 from pi-hole/tweak/logecho_gateway
Debug: Log and echo gateway responses
2017-05-12 12:02:21 -07:00
WaLLy3K
ea0a9ceb37 Provide remote hashes for version.sh
* Provide remote hashes for comparison
 * Use double braces for all conditions (for consistency)
 * Suppress potential "cd" error output
 * Provide "not applicable" output upon any hash request for FTL
2017-05-12 15:25:01 +10:00
Dan Schaper
68dd2a6b91 Merge pull request #1447 from WaLLy3K/patch-1
Display FTL version & version.sh rewrite
2017-05-11 14:23:59 -07:00
WaLLy3K
f875976268 Replacing superseded file with dummy content 2017-05-11 21:02:04 +10:00
Dan Schaper
e23c6899e0 Merge pull request #1456 from WaLLy3K/patch-3
Update queryFunc() to search Whitelist
2017-05-11 03:45:40 -07:00
WaLLy3K
c35c7b2cea Wrap in double brackets 2017-05-11 20:21:23 +10:00
WaLLy3K
1c2aa44d46 Provide notice message for whitelisted sites 2017-05-11 20:10:40 +10:00
WaLLy3K
3b44a0da32 Provide error message if not found in any list 2017-05-11 20:09:00 +10:00
WaLLy3K
58353e2839 Update queryFunc() to search Whitelist
If there is a match in Whitelist/Blacklist/Wildcards, `[ ! -t 1 ]` will cause the search to end if the terminal is closed when the script is called. This has the intended effect of allowing a user to search for a W/B/W domain (as well as all the adlists it's found in) using `pihole -q` via Terminal, but the script will stop searching after a W/B/W match when called by the block page.
2017-05-11 19:58:35 +10:00
Adam Warner
5e0572637e Merge pull request #1417 from WaLLy3K/tweak/queryFunc
QueryFunc() rewrite
2017-05-11 09:07:00 +01:00
Dan Schaper
501b26decd Log and echo gateway responses 2017-05-10 22:08:06 -07:00
WaLLy3K
c6596f2c54 Modified syntax to be valid for Shellcheck 2017-05-11 14:19:13 +10:00
WaLLy3K
2863308090 Minimise string duplication & other minor changes
Instead of duplicating output strings, rewrite core/web/ftlOutput() into one neat versionOutput().
2017-05-11 13:34:58 +10:00
WaLLy3K
7fef1fdc83 Fixed indentation 2017-05-11 10:11:04 +10:00
WaLLy3K
3081c151bd Perform EXACT searches on HOSTS lists correctly
`\s` on the end may be overkill, but it is the existing scanList() behaviour.
2017-05-11 09:13:32 +10:00
Dan Schaper
c793295be0 Merge pull request #1446 from pi-hole/tweak/install_lockcheck
Clarify error message on apt failures.
2017-05-10 15:40:13 -07:00
WaLLy3K
fe0a35cc7a Update -h to work as --hash
Also provide error output as per https://github.com/pi-hole/pi-hole/pull/1447#issuecomment-300600093
2017-05-11 08:30:49 +10:00
Dan Schaper
0b67eebaec Merge pull request #1440 from pi-hole/revert-1437-blockPage
Revert "Ensure any changes to blocking page are updated."
2017-05-10 15:26:29 -07:00
WaLLy3K
03201e2f20 Display FTL version & version.sh rewrite
While testing to make sure `pihole -v` would output `pihole-FTL version`, I noticed some options didn't work how I expected them to. For example, if I use `pihole -v -p`, I would expect to see the version output of Pi-hole Core. Instead, I'm informed that it's an invalid option.

I've had the following things in mind while rewriting this:
  * I'm operating under the assumption that FTL is only installed if the Admin Console is (Line 113 exit 0)
  * I have modified the help text to only output with `pihole -v --help`
  * I have modified all output to be more similar to the output style of `grep` and `curl` (Ditching ":::")

Testing output:
```
w3k@MCT:~$ pihole -v
  Pi-hole version is v3.0.1-14-ga928cd3 (Latest: v3.0.1)
  Admin Console version is v3.0-9-g3760482 (Latest: v3.0.1)
  FTL version is v2.6.2 (Latest: v2.6.2)
w3k@MCT:~$ pihole -v -c
  Current Pi-hole version is v3.0.1-14-ga928cd3
  Current Admin Console version is v3.0-9-g3760482
  Current FTL version is v2.6.2
w3k@MCT:~$ pihole -v -l
  Latest Pi-hole version is v3.0.1
  Latest Admin Console version is v3.0.1
  Latest FTL version is v2.6.2
w3k@MCT:~$ pihole -v -p --hash
  Current Pi-hole hash is a928cd3
w3k@MCT:~$ pihole -v -a --hash
  Current Admin Console hash is 3760482
w3k@MCT:~$ pihole -v --help
Usage: pihole -v [REPO | OPTION] [OPTION]
Show Pi-hole, Web Admin & FTL versions
  <Shows all Repositories and Options>
w3k@MCT:~$ pihole -v -foo
  Invalid Option!
```
2017-05-10 13:07:56 +10:00
Dan Schaper
dfc32b26a6 We test for dpkg lock on line 830 directly, no need for the check also
in the template section.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-05-09 13:11:28 -07:00
WaLLy3K
173ad339bb Update CSS location 2017-05-08 19:33:45 +10:00
Adam Warner
89fd962615 Revert "Ensure any changes to blocking page are updated." 2017-05-06 11:45:31 +01:00
Adam Warner
a928cd3fa1 Merge pull request #1437 from pi-hole/blockPage
Ensure any changes to blocking page are updated.
2017-05-06 01:06:22 +01:00
Dan Schaper
f190a6ebc5 Merge pull request #1436 from pi-hole/fix/dhcpcd-localhostNS
Update basic-install.sh dhcpcd.conf nameserver
2017-05-05 15:25:12 -07:00
Adam Warner
9beb9fd941 Merge pull request #1384 from pi-hole/checkoutImprovements
Stash changes when switching branches
2017-05-05 23:22:54 +01:00
Adam Warner
525a1228c3 clarify 2017-05-05 22:43:37 +01:00
Adam Warner
19fd25c7cd revert line, looks tidyer 2017-05-05 22:40:10 +01:00
Adam Warner
5b0927ca4b tidy up output 2017-05-05 22:32:27 +01:00
Adam Warner
324d4433c3 even further simplify 2017-05-05 22:31:31 +01:00
Adam Warner
615ca56ea3 fix inteliJ IDEA complaints 2017-05-05 22:27:58 +01:00
Adam Warner
41dd163453 further simplify 2017-05-05 22:27:33 +01:00
Adam Warner
5cd2c77d98 simplify 2017-05-05 22:24:40 +01:00
Adam Warner
f270f7430c Update block page. Allow for setupVars setting of CUSTOMBLOCKPAGE (bool) to prevent it being overwritten 2017-05-05 22:10:24 +01:00
Dan Schaper
99b23627d0 Update basic-install.sh 2017-05-05 12:03:51 -07:00
Adam Warner
26fcb1b2a0 Merge pull request #1429 from pi-hole/development
Release v3.0.1
2017-05-04 15:12:26 +01:00
DL6ER
e9c4e8123c Merge branch 'master' into development 2017-05-04 12:12:44 +02:00
Dan Schaper
a290e01bdf Merge pull request #1421 from pi-hole/fix/accidental-password-reset
Add option to enter new password as command arg
2017-05-04 03:11:54 -07:00
DL6ER
9cc392fa02 Update Marks PR after the Promo code has been merged 2017-05-04 11:43:48 +02:00
Dan Schaper
7c2046cce7 Merge pull request #1423 from pi-hole/promoLearnsToCode
Double hash the password directly in the install script
2017-05-03 12:07:38 -07:00
WaLLy3K
4d731ca30b Updated landing page location
During development, I had the location of `/pihole/index.php` as just `/index.php`. Just correcting some changes!
2017-05-03 15:33:50 +10:00
WaLLy3K
f2016f26d7 Updated splash page CSS href 2017-05-03 15:29:43 +10:00
Adam Warner
b13171cc45 $1 is not $pw. Seriously, who let me onto this project 2017-05-02 22:37:38 +01:00
Adam Warner
9c645e2010 Seriously. 2017-05-02 22:30:02 +01:00
Adam Warner
bb6f409e89 dropped a " 2017-05-02 22:28:32 +01:00
Adam Warner
61ec7723f6 use function in install script 2017-05-02 22:25:47 +01:00
Adam Warner
9c136a5579 functionise Hashing 2017-05-02 22:24:37 +01:00
Adam Warner
a5733508ae Double hash the password directly in the install script 2017-05-02 21:36:08 +01:00
WaLLy3K
a8818c16d8 Fixed unnecessary usage of !important 2017-05-02 19:51:13 +10:00
DL6ER
c8e1e6dc8a Merge pull request #1418 from pi-hole/tweak/debug/FTL_log
Include pihole-FTL.log in debug report
2017-05-02 09:41:35 +02:00
WaLLy3K
7bcea98d0c Do not activate letsencrypt.conf if found 2017-05-02 17:28:51 +10:00
WaLLy3K
74b15d10d9 Update lighttpd.conf.fedora
Mirror changes found in `lighttpd.conf.debian`
2017-05-02 17:24:55 +10:00
WaLLy3K
356c70cdae Update lighttpd.conf.debian
* Disable `include-conf-enabled.pl`, as blindly enabling HTTPS (as Let's Encrypt does by having a file in that folder) creates Block Page inefficiencies
* Make Block page handle JS request rewrite, allowing users to better utilise their `lighttpd` service
* Make Block page handle debugging Pi-hole header
* Make Block page redirect users from `pi.hole` to `http://pi.hole/admin`
2017-05-02 17:24:07 +10:00
WaLLy3K
dfb5c37d98 Delete index.js 2017-05-02 17:21:40 +10:00
DL6ER
30dcf6ff47 Include pihole-FTL.log in debug report 2017-05-02 09:18:58 +02:00
WaLLy3K
a0603ad3b7 Update queryFunc()
* Allow scanList() to search files using a wildcard by removing quotes wrapped around `${list}`
* scanList() will not provide a domain ouput on each string if exact is specified (`grep -l`)
* Remove unused processWildcards() function
* Return a message if no domain is specified
* IDN domains are converted to punycode when running a `pihole -q` search if the `python` package is available, otherwise will revert to current behaviour
* Scan Blacklist & Wildcards first, exiting from search if a match is found (Fixes #1330)
* Use one `grep` subshell to search for all "*.domains" lists at once (opposed to looping to get every matching file name, and then spawning a `grep` instance for every matching file)
* queryFunc() will not return "(0 results)" output from files where no match is found
* Sort results based off list number
* Return a message if no results are found
2017-05-02 17:13:55 +10:00
WaLLy3K
551add5f44 Update index.php
* An "About Pi-hole" link on the block page provides an ELI5 explanation to those not familiar with Pi-hole
* An email contact link on the block page provides users of your Pi-hole with a means to easily get in touch with you
* Browsing to your Pi-hole's address will show a simple "landing page", which can be replaced by adding "landing.php" within "/var/www/html"
* Users manually browsing to file/image based content (i.e: non HTML based content) on blocked sites will be greeted with a small "Blocked by Pi-hole" image
* Sites that are manually blacklisted will display a notice of this on the block page
* Sites that aren't directly blocked, but have a CNAME record, will show a notification on the block page (e.g: If raw.githubusercontent.com is not blocked, but github.map.fastly.net is)
* On the block page, "Back to Safety" now directs the user to "about:home" if Javascript is disabled
* Whitelisting is disabled for installs without a password, or if a client does not have Javascript

* Known issues:
  * Admin Console needs a text field under "Web User Interface" where the admin can enter a preferred contact email when a site needs to be whitelisted, to be saved to setupVars.conf with the key "ADMIN_EMAIL"
  * Admin Console needs a text field under "Networking" where the admin can enter their Pi-hole's externally contactable FQDN, allowing access to their landing page when browsing to mypi.duckdns.org, to be saved to setupVars.conf with the key "FQDN"
  * I am not aware of expected output of `$_SERVER["VIRTUAL_HOST"]`, so I have assumed it should be filtered as if it's a domain
2017-05-02 17:06:31 +10:00
WaLLy3K
88944a31ec Update blockingpage.css
* Block page UI overhaul to replicate the style of the Admin Console
* Block page UI is now mobile friendly
* Users can safely customise text in order to make the block page more friendly for their household
2017-05-02 17:05:24 +10:00
DL6ER
3473ebc0fe Merge pull request #1408 from pi-hole/tweak/localise-queries
Add localise-queries flag to dnsmasq's config
2017-05-02 08:56:47 +02:00
Dan Schaper
8c657910ae Merge pull request #1280 from technicalpyro/development
fixes missing dialog package from some distros
2017-05-01 16:07:32 -07:00
Dan Schaper
1886c44579 Merge pull request #1406 from pi-hole/update/UA
Update default User Agent to modern browser.
2017-05-01 14:35:55 -07:00
Adam Warner
1dcc1871fb Merge pull request #1404 from pi-hole/development
3.0
2017-05-01 22:03:54 +01:00
DL6ER
19e688effb Add localise-queries flag to 01-pihole.conf 2017-04-30 13:47:07 +02:00
Dan Schaper
6a2b885988 Update default User Agent to modern browser.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-04-27 11:41:08 -07:00
Dan Schaper
bfc4775b34 Merge pull request #1297 from raincoats/development
Redirect to admin panel when accessing 'http://pi.hole/'
2017-04-26 12:35:19 -07:00
Adam Warner
981004606b Merge branch 'master' into development 2017-04-26 20:12:34 +01:00
Adam Warner
9d40fd1eda Merge branch 'development' Resolved conflicts
# Conflicts:
#	advanced/Scripts/piholeCheckout.sh
2017-04-26 20:12:16 +01:00
DL6ER
db1e5f10ea Make changes according to comment in #1384 2017-04-21 17:08:15 +02:00
DL6ER
fbb6b56d99 Merge pull request #1397 from pi-hole/fix/ipv4ipv6error
Bugfix: Blocking page
2017-04-20 16:18:50 +02:00
DL6ER
f1f70133dc Populate $ipv4 and $ipv6 + fix small error that prevented blocking page from coming up at all. Fixes #1396 2017-04-20 13:53:27 +02:00
DL6ER
d0f55e5125 Merge pull request #1394 from pi-hole/fix/remove-temp-gravity-files
Delete the temp files created by gravity
2017-04-19 08:46:01 +02:00
Mcat12
5e308dbd51 Delete the temp files created by gravity 2017-04-18 20:35:06 -04:00
Mcat12
c3c554f4d6 Merge pull request #1391 from pi-hole/tweak/flush
Flush twice to move data out-of-sight of FTL
2017-04-17 20:10:03 -04:00
DL6ER
320c06e0a4 Flush twice to move data out-of-sight of FTL 2017-04-17 21:25:15 +02:00
Adam Warner
2e398c5da4 stash changes on branch switch, else it fails if any changes have been made. 2017-04-14 17:20:13 +01:00
DL6ER
b1484104bd Merge pull request #1379 from pi-hole/tweak/FTLinit.d
Tweaks for `FTL`'s init file
2017-04-13 12:53:37 +02:00
Mcat12
c738a9a044 Merge pull request #1381 from technicalpyro/development
Grammar Fix
2017-04-12 21:29:39 -04:00
Technicalpyro
519cb71022 Grammar Fix
]
2017-04-12 16:05:21 -04:00
DL6ER
fcd92d27f7 Don't use PID file but rather "pidof pihole-FTL" for detecting if another process is already running 2017-04-12 15:12:09 +02:00
DL6ER
3eacfa9831 Improve FTL's service script 2017-04-12 14:13:18 +02:00
gedetil
ff6df76e36 Update webpage.sh
Implement "Halt system" button, next to "Restart system" button, on
admin/settings page.  Useful for doing clean shutdown before powering off.

(This affects 4 files, 3 for the web content, 1 for backend script.)

Gilbert Detillieux <gedetil> 2017-04-11
2017-04-11 12:04:44 -05:00
Mcat12
1d64b614c7 Merge pull request #1349 from pi-hole/internal/editorconfig
Add .editorconfig
2017-04-06 18:05:56 -04:00
Dan Schaper
a832dd7f67 Update .editorconfig
Set path for JS source.
2017-04-06 14:55:21 -07:00
Mcat12
a96b4d28e1 Merge pull request #1365 from pi-hole/adlistImprovements
Adlist improvements
2017-04-06 16:15:50 -04:00
Mcat12
57e8b7f924 Merge pull request #1355 from pmo3/development
Mask password input when changing password
2017-04-03 20:23:19 -04:00
Patrick O'Brien
263eb856d5 remove vagrant from gitignore 2017-04-03 15:15:44 -04:00
DL6ER
5a4f088b24 Merge pull request #1341 from pi-hole/tweak/readme-tm
Update logo and Pi-hole™ name with a trademark symbol.
2017-04-03 17:35:58 +02:00
DL6ER
c1913bfa7d Merge pull request #1366 from pi-hole/fix/adaway-list-agent
Use correct agent when downloading adaway.org list
2017-04-03 17:32:44 +02:00
DL6ER
474881e4c7 Merge pull request #1346 from pi-hole/varChanges
Clean up previous PR
2017-04-03 17:32:02 +02:00
Flo
7e0aa822b6 Match the Pi-hole brand (#1358)
* Update README.md

* Update index.php

* Update basic-install.sh

* Update piholeCheckout.sh

* Update update.sh

* Update CONTRIBUTING.md

* Update the Pi-hole brand tip in CONTRIBUTING.md

Use a better formulation.

* Update README.md 2
2017-04-03 17:29:57 +02:00
DL6ER
940d780a4c Merge pull request #1361 from pi-hole/new/error404page
Improve Error 404 page behavior
2017-04-03 17:25:46 +02:00
DL6ER
ad9575ce18 Recognize more host names 2017-04-03 16:28:18 +02:00
Mcat12
ce86205df0 Use correct agent when downloading adaway.org list
See https://discourse.pi-hole.net/t/2278
2017-04-02 12:44:00 -04:00
Adam Warner
3cf9942465 spacing fixed 2017-03-31 23:00:56 +01:00
Adam Warner
153031482f Add delete mode to adlist command. Might be abetter way to do this 2017-03-31 22:51:10 +01:00
Adam Warner
1f74b1e2fd newline 2017-03-31 21:12:17 +01:00
Adam Warner
42393123a0 add newline to adlists.default 2017-03-31 20:15:13 +01:00
Adam Warner
af2cff5177 remove call to user list 2017-03-31 20:13:04 +01:00
Adam Warner
5435b93df2 remove spaces 2017-03-31 20:05:45 +01:00
Adam Warner
3a3dde6298 add adlist argument redirector 2017-03-31 20:03:56 +01:00
Adam Warner
b4bc90fb85 add in CustomizeAdlists function 2017-03-31 19:35:52 +01:00
Adam Warner
02040cd25d We no longer need to do this, either 2017-03-31 19:23:26 +01:00
Adam Warner
bdc6bd4135 Don't need this comment anymore 2017-03-31 19:18:28 +01:00
Adam Warner
e720de401d One file to rule them all, same functionality (made changes and want to go back to default? Delete your adlists.list) 2017-03-31 19:16:09 +01:00
Adam Warner
ce97896ffd account for new adlists.custom file 2017-03-31 19:00:04 +01:00
Adam Warner
86fa4e9ee8 trim down default adlist 2017-03-31 18:55:07 +01:00
DL6ER
f09c166350 Improve Error 404 page behavior 2017-03-28 14:02:00 +02:00
Patrick O'Brien
24868fdb2b Merge remote-tracking branch 'upstream/development' into development 2017-03-27 13:38:19 -04:00
Patrick O'Brien
a463250ecf don't hash an empty password 2017-03-27 13:37:19 -04:00
Mcat12
d38e034e92 Merge pull request #1354 from flokX/patch-4
Complete blocking page
2017-03-26 13:12:42 -04:00
Flo
6eb9192cd1 Complete site
The start <html>-tag was missing.
2017-03-25 16:11:37 +01:00
Patrick O'Brien
94f15f1b3c Merge remote-tracking branch 'upstream/development' into development 2017-03-23 18:47:50 -04:00
Patrick O'Brien
ee296f36c1 mask password input on command line 2017-03-23 18:47:30 -04:00
Dan Schaper
598a7b3cc0 Add .editorconfig
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-22 13:44:04 -07:00
Mcat12
52baf26d7d Merge pull request #1348 from pi-hole/fix/update-without-web
Source setupVars in the updater before attempting to use it
2017-03-21 18:18:03 -04:00
Mcat12
fb3e6ee35c Source setupVars before attempting to use it
Fixes #1347
2017-03-21 18:01:51 -04:00
Dan Schaper
af1d1bd9c2 One more change
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-21 05:04:58 -07:00
Dan Schaper
f32ad7699d Merge pull request #1320 from georou/development
Use Firewalld --add-service instead of port
2017-03-21 04:49:59 -07:00
Dan Schaper
79294bb6ca Merge pull request #1332 from pi-hole/varChanges
replace instances of "/etc/.pihole" with ${PI_HOLE_LOCAL_REPO}
2017-03-21 04:49:10 -07:00
Jacob Salmela
1cd4710718 replace logo with TM logo 2017-03-19 15:41:16 -05:00
Jacob Salmela
48c19ade8e add trademarks to Pi-hole name in signifigant places 2017-03-19 15:36:22 -05:00
Adam Warner
0acf70f836 Merge pull request #1340 from AnthonyGiorgio/development
Formatting cleanup.
2017-03-19 18:40:50 +00:00
Anthony Giorgio
fd584dd03b Formatting cleanup.
Convert backticks to quotes to fix error message.
Make Pi-hole capitalization consistent.
 Make Pi-hole capitalization consistent.
2017-03-18 20:47:13 -04:00
Dan Schaper
2740c68a63 Merge pull request #1335 from pi-hole/tweak/debug_templog
Debugging tweaks for temporary logfiles
2017-03-16 23:35:15 -07:00
Mcat12
62a242a894 Merge pull request #1334 from pi-hole/tweak/interface_detect
Let `ip` determine which links are candidates.
2017-03-16 21:36:13 -04:00
DL6ER
8b060e9699 Merge pull request #1333 from Wandmalfarbe/development
Fixed minor spelling mistakes in README.md
2017-03-16 18:02:40 +01:00
Dan Schaper
b1f769b671 Output cleaning, IP stack check headers.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-15 23:50:29 -07:00
Dan Schaper
77378da70a Cat out temp files to final log.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-15 23:43:41 -07:00
Dan Schaper
160030b75f Quiet systemctl output to just the current daemon status.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-15 23:27:18 -07:00
Dan Schaper
0a0c3a2fb7 Copy working temp to final location.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-15 23:20:12 -07:00
Dan Schaper
e9f1ca338f Create temp files for working storage, log to working storage temps.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-15 22:49:47 -07:00
Dan Schaper
073c7e54df Merge pull request #1331 from pi-hole/RemovePasswordFromDebugLogBecauseSomePeopleFeelItUnderminesSecurity-TheyProbablyHaveAPoint
add check on file_parse to not include WEBPASSWORD= in the debug log
2017-03-15 22:08:48 -07:00
Dan Schaper
2834f2ccc2 Let ip determine which links are candidates.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-15 22:05:48 -07:00
georou
6c56665403 updated travis for new firewalld add service 2017-03-16 10:26:51 +11:00
georou
0d794226ab Removed unsupported POSIX brace expansion 2017-03-16 09:29:33 +11:00
Wandmalfarbe
ab2af11775 Fixed minor spelling mistakes in README.md 2017-03-15 20:58:41 +01:00
Adam Warner
83662c9e50 additional requested changes 2017-03-15 19:50:22 +00:00
Adam Warner
6c1d52199f Merge branch 'master' of https://github.com/jftuga/pi-hole into jftuga-master 2017-03-15 19:47:31 +00:00
Adam Warner
cfaf1ac67c add check on file_parse to not include WEBPASSWORD= in the debug log 2017-03-15 18:59:41 +00:00
Mcat12
a6caa0e680 Merge pull request #1327 from pi-hole/fix/pihole-help-text
Fix help text bug
2017-03-14 15:00:25 -04:00
Mcat12
c4b43f92ce Fix help text bug
Fixes #1325
2017-03-14 13:19:43 -04:00
DL6ER
3d1ccd9625 Merge pull request #1312 from pi-hole/pihole-backports
Pi-hole Core v2.13.2
2017-03-14 11:32:34 +01:00
John Taylor
76bd53ef1f replace instances of "/etc/.pihole" with ${PI_HOLE_LOCAL_REPO} 2017-03-13 20:24:04 -04:00
Mcat12
8fa209f0df Merge pull request #1322 from pi-hole/FixWildCardBlacklisting
Only remove from wildcard list if domain is being added to whitelist …
2017-03-13 17:52:28 -04:00
Mcat12
88835512dd Merge pull request #1322 from pi-hole/FixWildCardBlacklisting
Only remove from wildcard list if domain is being added to whitelist …
2017-03-13 17:50:18 -04:00
Adam Warner
6b862dd9e9 Only remove from wildcard list if domain is being added to whitelist or blacklist 2017-03-13 20:38:34 +00:00
DL6ER
be0b76c954 Merge pull request #1319 from pi-hole/fix/gravitypath
Use absolute path for pihole command in gravity.sh
2017-03-13 21:16:31 +01:00
georou
e45559da20 Use Firewalld services instead of ports 2017-03-14 01:13:23 +11:00
DL6ER
d7b5870ba6 Use absolute path for pihole command in gravity.sh. Fixes #1318 2017-03-12 23:15:23 +01:00
Markus Napp
bb7a7d94ef Replace misleading letter variable 2017-03-12 16:16:45 +01:00
Markus Napp
9a475cc010 Rewrite help text for better handling of params 2017-03-12 15:50:48 +01:00
Markus Napp
ae30c285a2 Fix handling of wildcard help text 2017-03-12 15:45:11 +01:00
Dan Schaper
df18c7cd59 Merge pull request #1313 from pi-hole/new/piholecheckout
Checkout adjustments
2017-03-11 22:54:57 +01:00
Dan Schaper
2e74219ff9 Merge pull request #1313 from pi-hole/new/piholecheckout
Checkout adjustments
2017-03-11 13:01:11 -08:00
Dan Schaper
b0ae954f1e Only update when update flag is set to "true"
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-11 12:37:36 -08:00
Dan Schaper
a2404f104a Just some style and linting. And a cd in fetch_checkout_pull_branch
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-11 12:21:15 -08:00
DL6ER
38547ced7a Can only diff once upstream branch is tracked 2017-03-11 16:55:37 +01:00
DL6ER
9a9d9007cd Add missing "== true" 2017-03-11 16:49:47 +01:00
DL6ER
bd2d81f691 source setupVars.conf to see if INSTALL_WEB is true or not 2017-03-11 16:46:52 +01:00
DL6ER
1b9e7fbf2e Test if branch is locally available is not reliable because of possible ambiguities 2017-03-11 16:40:10 +01:00
DL6ER
d4a49d192f Correct variable name 2017-03-11 16:38:28 +01:00
DL6ER
8cb66544d2 Remove "\ " 2017-03-11 16:36:54 +01:00
DL6ER
140ac192aa The web repo might actually be missing and this is n error (not installed because the user didn't want it) 2017-03-11 16:30:58 +01:00
DL6ER
b961b13d60 Small bugfix 2017-03-11 16:27:00 +01:00
DL6ER
febdb4a190 Use git diff to determine if code has changed (no need to run the installer if it hasn't changed at all) 2017-03-11 16:24:13 +01:00
DL6ER
1d60b62e7a Testing alternative way of fetching/checking out of a single branch 2017-03-11 16:11:23 +01:00
Dan Schaper
41e1e4cb68 Rearrange pull logic, some optimization.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-10 11:25:35 -08:00
Dan Schaper
d5b88e0df8 Get the right name for the options.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-10 11:07:58 -08:00
Dan Schaper
20fd61468d Require branch to check out
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-10 11:04:37 -08:00
Dan Schaper
0a0d25dff4 Script runs in subshell, no need to cd back to pwd.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-10 10:57:46 -08:00
DL6ER
38ba079baa Merge pull request #1307 from pi-hole/fix/versionwithoutwebinterface
Don't try to obtain version of web interface it it is not installed
2017-03-10 14:33:12 +01:00
Dan Schaper
33f7979359 Merge pull request #1293 from pi-hole/fix/version
Account for hash in versioning
2017-03-10 14:32:52 +01:00
Dan Schaper
8460b2544b Merge pull request #1295 from pi-hole/tweak/pullapprove
Require 4 approvals instead of five for merging into master
2017-03-10 14:31:53 +01:00
Dan Schaper
bc514ea955 Merge pull request #1296 from pi-hole/fix/debugVersion
Debug version detection improvements
2017-03-10 14:30:50 +01:00
DL6ER
6f8893d950 Merge pull request #1301 from pi-hole/fix/removewildcard
Remove wildcard entry when adding the very same domain either the white- or blacklist
2017-03-10 14:29:38 +01:00
DL6ER
de6aaf18ab Merge pull request #1302 from pi-hole/fix/nowildcardlistfile
Check for existence of wildcard blocking list (query adlists)
2017-03-10 14:29:13 +01:00
DL6ER
0fe64cf5cc Merge pull request #1300 from pi-hole/fix/deletehostrecord
Bugfix for when deleting host-record
2017-03-10 14:28:52 +01:00
DL6ER
9a95531fb9 Merge pull request #1310 from pi-hole/new/piholecheckout
Pi-hole checkout feature
2017-03-10 14:24:15 +01:00
Mcat12
9df6a8dd06 Merge pull request #1311 from pi-hole/tweak/ascii-berry
add ascii berry to beginning of installer
2017-03-09 13:40:57 -05:00
raincoats
1590a179fa Change 302 redirect to 301
Change "302 Found" response to "301 Moved Permanently", as "302 Found" is meant for temporary redirects.

Was asked to do so in this comment: https://github.com/pi-hole/pi-hole/pull/1297#issuecomment-284335421
2017-03-09 17:38:56 +11:00
Jacob Salmela
5e16487ef6 add ascii berry to beginning of installer 2017-03-08 21:14:21 -06:00
DL6ER
2b3afbfef8 Merge pull request #1310 from pi-hole/new/piholecheckout
Pi-hole checkout feature
2017-03-09 00:43:35 +01:00
Dan Schaper
c3c7dcc9f5 Merge remote-tracking branch 'origin/new/piholecheckout' into new/piholecheckout 2017-03-08 15:32:14 -08:00
Dan Schaper
273728b481 One more argument to shift.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 15:32:06 -08:00
DL6ER
81a1057cac Fix something Dan has overlooked 2017-03-09 00:30:36 +01:00
DL6ER
fd310c6445 Back to how we had it before, because --unshallow does not work at all 2017-03-09 00:28:02 +01:00
Dan Schaper
a9b52518bf Shift numbers for argument identifiers, functions are called after shift
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 14:29:51 -08:00
Dan Schaper
87da40068c Always exited with value 1, now exits with proper value.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 14:18:08 -08:00
Dan Schaper
b8f1eadb7f Shift off checkout from being passed to script from pihole
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 14:17:56 -08:00
Dan Schaper
b522d8eaf6 Source and reuse existing variables, centralize code.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 13:41:11 -08:00
Dan Schaper
89ff99322d Don't need to remember pwd inside a function, calling function doesn't change directories.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 13:30:08 -08:00
Dan Schaper
56e17d1010 Source functions and variables from basic-install.sh
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-08 13:28:24 -08:00
DL6ER
708067e875 Merge pull request #1309 from pi-hole/new/FTLChronometer
Remove duplicated line
2017-03-08 13:27:11 +01:00
DL6ER
d2ab0694b7 Add "master" shortcut 2017-03-08 13:18:34 +01:00
DL6ER
8a14a63d5d Pi-hole checkout feature 2017-03-08 13:16:40 +01:00
DL6ER
8235b18854 Remove duplicated line 2017-03-08 12:09:34 +01:00
DL6ER
e0e9ebbe74 Merge pull request #1307 from pi-hole/fix/versionwithoutwebinterface
Don't try to obtain version of web interface it it is not installed
2017-03-07 23:54:32 +01:00
DL6ER
6e6259975e Merge pull request #1308 from pi-hole/new/FTLChronometer
Let Chronometer query all data from FTL directly
2017-03-07 19:41:23 +01:00
DL6ER
10bc8414b9 Move FTL querying before clearing the terminal to avoid flashing on Pi B+ 2017-03-07 18:10:05 +01:00
DL6ER
4e25e0dc5c Add missing } to JSON output 2017-03-07 17:57:57 +01:00
DL6ER
b1a9793d94 Let Chronometer query all data from FTL (no need for having the API). Fixes #1305 2017-03-07 17:54:11 +01:00
DL6ER
6dea00668e Don't try to obtain version of web interface it it is not installed. Fixes #1303 2017-03-07 13:08:01 +01:00
DL6ER
ae9182c92e Merge pull request #1301 from pi-hole/fix/removewildcard
Remove wildcard entry when adding the very same domain either the white- or blacklist
2017-03-06 23:53:06 +01:00
DL6ER
af17355fe7 Merge pull request #1302 from pi-hole/fix/nowildcardlistfile
Check for existence of wildcard blocking list (query adlists)
2017-03-06 17:03:34 +01:00
DL6ER
dce3e50a00 Check for existence of wildcard blocking list before trying to acces it 2017-03-06 16:44:56 +01:00
DL6ER
cf31561267 Remove wildcard entry when adding the very same domain either the white- or blacklist 2017-03-06 16:25:35 +01:00
DL6ER
a97f0b1298 Merge pull request #1300 from pi-hole/fix/deletehostrecord
Bugfix for when deleting host-record
2017-03-06 16:16:42 +01:00
Dan Schaper
d1e0f3ae18 Merge pull request #1294 from pi-hole/tweak/debugDNS
Tweak DNS debugging
2017-03-06 05:50:37 -08:00
DL6ER
47a6786e8f Use proper test syntax 2017-03-06 14:02:56 +01:00
DL6ER
a69fcbb91e Bugfix for when deleting host-record 2017-03-06 13:44:13 +01:00
Dan Schaper
8e2b51b391 Merge pull request #1296 from pi-hole/fix/debugVersion
Debug version detection improvements
2017-03-05 07:13:41 -08:00
Dan Schaper
560af43204 Merge pull request #1293 from pi-hole/fix/version
Account for hash in versioning
2017-03-05 07:10:18 -08:00
DL6ER
9c119f919e Merge pull request #1298 from pi-hole/new/teleporter
Add CLI Teleporter feature
2017-03-05 15:05:07 +01:00
DL6ER
baefec86f2 Add CLI teleporter feature 2017-03-05 14:08:44 +01:00
raincoats
eb763d2dc2 Redirect to admin panel when accessing 'http://pi.hole/'
If someone tries to access 'http://pi.hole/', it will take them to the "Website blocked" page. Very confusing if you don't know to go to 'http://pi.hole/admin/'. This just redirects them to the admin panel.
2017-03-05 16:58:21 +11:00
Dan Schaper
512c650441 Shellchecking.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 19:07:55 -08:00
Dan Schaper
dc44fc9e27 Version check amalgamation and removal of && || logic.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 17:54:38 -08:00
Dan Schaper
05640f9a6b Merge pull request #1295 from pi-hole/tweak/pullapprove
Require 4 approvals instead of five for merging into master
2017-03-04 15:17:25 -08:00
Dan Schaper
6f2fb57c08 Protocol specific records checks.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 15:16:33 -08:00
Dan Schaper
2547cc4c8d Only run IPv6 if enabled, split out Chaos TXT checks.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 15:06:34 -08:00
DL6ER
112ddb3c77 Require 4 approvals instead of five for merging into master 2017-03-04 22:57:37 +01:00
DL6ER
9f4ef66f41 Add IPv6 resolver test 2017-03-04 22:38:52 +01:00
DL6ER
086f0790fc Add Google's IPv6 address for potential IPv6 resolver tests 2017-03-04 22:31:18 +01:00
Dan Schaper
709b44f736 IPv4 DNS tests
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 12:16:43 -08:00
Dan Schaper
6cd4ff6d68 Organize functions and function calls.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 12:16:32 -08:00
Dan Schaper
abd3e828de Optimize normalOutput
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-04 07:46:00 -08:00
DL6ER
b85af50d14 Generate only the information that is actually asked for 2017-03-04 14:08:11 +01:00
Dan Schaper
0e8fd49669 Function...
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 23:30:57 -08:00
Dan Schaper
945e22874e Collapse duplicate functions, and take out argument loops.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 23:12:28 -08:00
Dan Schaper
77ab47a984 Awk for perl
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 22:34:55 -08:00
Dan Schaper
ed8088f203 Functions for Core/Web version and hash. And only check first argument in each section.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 22:10:32 -08:00
Dan Schaper
8831b22fc8 Prototype function for getting version of local repo
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 21:36:38 -08:00
Dan Schaper
0341bd1758 Optimize code, undoc flag for current hash.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 20:32:26 -08:00
Dan Schaper
9bb4a5fb25 Factor out variables from display.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 20:16:53 -08:00
Dan Schaper
ebfffea5dc Always show something, even if it's just the short hash of the latest commit.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 20:04:55 -08:00
Dan Schaper
81939ab265 Get short hash of local and remote
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-03 19:14:30 -08:00
DL6ER
f2fe84c9d3 Merge pull request #1292 from pi-hole/master
Merge patches back into devel
2017-03-03 23:45:29 +01:00
DL6ER
051f463350 Merge pull request #1291 from pi-hole/fix/defaultlisteningbehavior
Fix default listening behavior of dnsmasq
2017-03-03 23:33:44 +01:00
DL6ER
f626406685 Revert #1273 2017-03-03 23:14:12 +01:00
DL6ER
dd971b6ee5 Default behavior is old behavir (listen on gravity interface (e.g. eth0), permit all origins) 2017-03-03 22:58:41 +01:00
Dan Schaper
8776b822db Merge pull request #1287 from pi-hole/fix/update_fail
Exit script immediately if we can't update package cache.
2017-03-03 12:20:29 -08:00
DL6ER
fc76b1a6a3 Merge pull request #1244 from pi-hole/new/FTL-binary
FTL
2017-03-03 13:41:27 +01:00
DL6ER
9183200b6f Merge pull request #1286 from pi-hole/tweak/dpkg_lock
Test for dpkg lock before using apt-get
2017-03-03 13:39:40 +01:00
DL6ER
f1b8abf503 Merge pull request #1146 from pi-hole/tweak/chronometer_recentlyblocked
[FTL] Show most recently blocked domain in chronometer
2017-03-03 12:20:43 +01:00
DL6ER
9502356980 Move test_dpkg_lock to initial UPDATE_PKG_CACHE. There was unpredictable interference with debconf-apt-progress 2017-03-03 11:55:15 +01:00
DL6ER
a535ca9db4 Some tweaks to the new dpkg lock detector 2017-03-03 11:55:13 +01:00
DL6ER
2c762899de Add loop to wait if package manager is blocked externally 2017-03-03 11:55:10 +01:00
Dan Schaper
24fd23493d Exit script immediately if we can't update package cache.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-03-02 15:54:58 -08:00
Dan Schaper
6f1ed28d0a Merge pull request #1274 from pi-hole/development
Pi-hole Core v2.13
2017-03-02 14:34:43 -08:00
DL6ER
66b7d04b82 Merge branch 'development' into new/FTL-binary 2017-03-01 12:42:48 +01:00
DL6ER
044afa838c Merge pull request #1284 from pi-hole/new/dnsmasqListeningBehavior
Setup interface listening behavior of dnsmasq
2017-03-01 12:20:59 +01:00
DL6ER
7ba47f504c Add special "except-interface" line in case of listening on all interfaces 2017-03-01 12:15:04 +01:00
DL6ER
0be1717ff4 Fix config error 2017-03-01 11:46:48 +01:00
DL6ER
189a4e0078 Add option to skip restarting of dnsmasq 2017-03-01 11:26:06 +01:00
DL6ER
3adf8785d8 Move "all" down in help text to not suggest that it is the default 2017-03-01 11:07:05 +01:00
DL6ER
b74862bfc5 Actually apply new setting by restarting dnsmasq 2017-03-01 11:02:08 +01:00
DL6ER
01273124ea Change to -i, interface 2017-03-01 10:59:55 +01:00
DL6ER
721ada7e16 Fix typo 2017-03-01 10:52:21 +01:00
DL6ER
bd9dc91396 Add response for users manually setting this up via CLI 2017-03-01 10:50:13 +01:00
DL6ER
de6c43a8d3 Setup interface listening behavior of dnsmasq 2017-03-01 10:46:20 +01:00
Technicalpyro
93dea7b942 Moved to installers dependencies 2017-02-27 15:21:59 -05:00
Dan Schaper
f6fc6a5e56 Merge pull request #1281 from pi-hole/tweak/web_debug
Back end changes for Web based debug calls.
2017-02-27 12:21:33 -08:00
Dan Schaper
ca24f7c143 Merge pull request #1273 from pi-hole/new/no_fixed_interface
Don't save `interface=` line to `dnsmasq`s config file
2017-02-27 11:50:28 -08:00
Dan Schaper
17b0db6515 Fix for calling -w without -a.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-27 11:40:20 -08:00
Dan Schaper
83b0600863 Carriage return or newline based webcalls.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-27 11:03:57 -08:00
Dan Schaper
38961fb31b Help text clarification and addition of the automated debuggin flag.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-27 10:49:25 -08:00
Dan Schaper
6c130b7960 Vebiage and highligh the token, also :::
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-27 10:27:11 -08:00
Dan Schaper
7244d44a1d Notify user that log is being uploaded.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-27 10:02:00 -08:00
Dan Schaper
9b060aab34 Debug auto mode engaged
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-26 18:22:06 -08:00
Dan Schaper
ba5bbf3523 Modify pihole for -d -a arguments. 2017-02-26 15:36:53 -08:00
Technicalpyro
697b0295f3 fixes missing dialog package from some ditros 2017-02-26 14:24:08 -06:00
Mcat12
66d7ebd6c3 Merge pull request #1276 from pi-hole/fix/INSTALL_WEB
Bugfix: Delete INSTALL_WEB line before adding new one
2017-02-25 10:50:09 -05:00
DL6ER
ae24f1255f Bugfix: Delete INSTALL_WEB line before adding new one 2017-02-25 11:29:12 +01:00
DL6ER
ec7e75a6e3 Don't save interface= line to dnsmasqs config file 2017-02-24 16:02:24 +01:00
DL6ER
aee106ae69 Merge pull request #1272 from flokX/patch-1
Update old install command to new
2017-02-24 13:32:20 +01:00
Flo
2a881a90ac Update old install command to new 2017-02-24 11:29:19 +01:00
DL6ER
ce6c465942 Merge pull request #1266 from pi-hole/new/host-record
Add host-record option
2017-02-23 17:32:10 +01:00
Jacob Salmela
3748a0ed33 Merge pull request #1267 from pi-hole/tweak/license
update license to EUPL on core files
2017-02-22 15:51:54 -06:00
Jacob Salmela
7a1a2dec67 update license to EUPL on core files 2017-02-22 11:55:20 -06:00
DL6ER
7ed1bbad49 Add host-record option 2017-02-22 14:43:07 +01:00
DL6ER
078cc7660e Improved updater logic 2017-02-22 11:00:45 +01:00
DL6ER
af2893d2ce Updater implementation for FTL 2017-02-22 10:43:13 +01:00
Jacob Salmela
0fe5efba76 Merge pull request #1265 from ProtoFoo/ProtoFoo-redirect
Redirect pi.hole to pi.hole/admin/
2017-02-21 15:49:19 -06:00
ProtoFoo
fb6631d317 Removed a line that did nothing. 2017-02-21 22:22:30 +01:00
ProtoFoo
cd0b8927c5 Removed a line that did nothing. 2017-02-21 22:22:03 +01:00
ProtoFoo
3fab34687c Redirect pi.hole to pi.hole/admin/ 2017-02-21 20:38:09 +01:00
ProtoFoo
b2d78edae9 Redirect pi.hole to pi.hole/admin/ 2017-02-21 20:36:59 +01:00
ProtoFoo
412cacac49 Merge pull request #1 from pi-hole/development
Development
2017-02-21 19:10:47 +01:00
Dan Schaper
dcb9797f35 Tests changed to reflect uname calls.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-21 09:24:00 -08:00
Dan Schaper
4dcee5cd84 arch is not portable.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-21 09:14:49 -08:00
DL6ER
a64211123f Some debug additions 2017-02-21 16:46:54 +01:00
DL6ER
1645677c3a Cosmetics 2017-02-21 16:42:52 +01:00
DL6ER
4f85ace525 Force pihole user to use sh-shell (instead of nologin) 2017-02-21 14:46:53 +01:00
DL6ER
e8fde702a0 Also chown the other files 2017-02-21 11:52:07 +01:00
DL6ER
e339f3852c Change ownership of FTL log to pihole user 2017-02-21 11:50:08 +01:00
DL6ER
032f94afc0 Don't suppress su's output 2017-02-21 11:46:31 +01:00
DL6ER
e9b50442fa Remove test_FTL_support_files_installed as we create them using the init.d script as of now 2017-02-21 11:25:18 +01:00
DL6ER
77b3764481 Remove resundant code (FTL will later be enabled by enable_service) 2017-02-21 11:23:01 +01:00
DL6ER
90ccbef431 pihole-FTL init.d script 2017-02-21 11:18:47 +01:00
Dan Schaper
02ea9b9abc Check file path and permissions in one go.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 18:15:40 -08:00
Dan Schaper
4cd598ae10 Check support files installed and permissions.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 18:12:51 -08:00
Dan Schaper
8eeb8ad779 Check binary installed and functional.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 17:15:04 -08:00
Dan Schaper
2ffb103acb Move binary to final home.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 15:44:33 -08:00
Dan Schaper
a0c17368ed cd to directory to sha1sum
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 15:27:24 -08:00
Dan Schaper
d76e761d0b Merge remote-tracking branch 'origin/new/FTL-binary' into new/FTL-binary
# Conflicts:
#	automated install/basic-install.sh
2017-02-20 15:22:55 -08:00
Dan Schaper
6023984703 Silence sha check
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 15:13:54 -08:00
Dan Schaper
cde7b53de3 Check sha1 of transferred file.
Sha1sum file in temp directory.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 15:13:26 -08:00
Dan Schaper
b36a44a954 Check sha1 of transferred file. 2017-02-20 14:44:34 -08:00
Adam Warner
fcc3d5450d Merge pull request #1263 from pi-hole/idea
accidentally the idea file
2017-02-20 22:16:50 +00:00
Dan Schaper
057cecb3e0 Replace ignored file. 2017-02-20 14:12:45 -08:00
Adam Warner
86c6e0e826 accidentally the idea file 2017-02-20 21:36:27 +00:00
Adam Warner
5c223b5f4e Merge pull request #1262 from pi-hole/gitAttributes
linux style line endings enforced
2017-02-20 21:28:16 +00:00
Dan Schaper
883aa30aca Revert reversion. 2017-02-20 13:25:28 -08:00
Adam Warner
763b51fe22 linux style line endings enforced 2017-02-20 21:12:04 +00:00
Dan Schaper
dd1aa9163c Fix IDEA ignoring pullapprove.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 12:01:38 -08:00
Dan Schaper
e087797edc Test for format of tag version.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 11:49:20 -08:00
Dan Schaper
5e6f8489a9 Find 404 errors and relay message.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 11:45:58 -08:00
Dan Schaper
48351fed79 Remove trailing newline from curl'd variable.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 11:33:55 -08:00
Dan Schaper
875a5d309d Check downloaded file for binary or text.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 11:28:36 -08:00
Dan Schaper
70e876ee13 Download tests.
Make sure we download a binary and not just get the GitHub page.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 11:11:16 -08:00
Dan Schaper
7a269e757e Debian buildpack image for docker (Need curl for testing, using scm version to add curl and git.)
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 09:24:47 -08:00
Dan Schaper
87edbeaf58 Factor out downloader from detector function.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 08:40:17 -08:00
Dan Schaper
339f95b00c Change from uname -m to straight arch
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 08:13:46 -08:00
Dan Schaper
e480c761cd Merge remote-tracking branch 'origin/new/FTL-binary' into new/FTL-binary
# Conflicts:
#	test/test_automated_install.py
2017-02-20 07:25:34 -08:00
Dan Schaper
26c628f8a5 Mock ldd command response.
Test aarch64 detection

Arm v6/v7 little endian.

x86_64 native

Test aarch64 detection

Unknown platform detection.

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 07:22:25 -08:00
Dan Schaper
59d6907d71 Test aarch64 detection
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 06:34:57 -08:00
Dan Schaper
b4450a3918 Mock ldd command response.
Test aarch64 detection

Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 06:34:54 -08:00
Dan Schaper
7032be6049 Template for FTL engine type tests.
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2017-02-20 06:34:40 -08:00
DL6ER
70a6a79b8c Detect library differently 2017-02-20 13:40:32 +01:00
DL6ER
f24f77c5bd Detect if architecture is *aarch* + use hf binary only if ARMv7+ is detected 2017-02-20 11:14:23 +01:00
DL6ER
66ae79f9b8 Merge pull request #1259 from friimaind/patch-1
Added my personal project Pi-hole Droid to the Projects's list
2017-02-20 10:49:00 +01:00
DL6ER
378338c684 Install pihole-FTL to /usr/bin instead of /usr/local/bin 2017-02-20 10:42:07 +01:00
Massimiliano Monaro
7da076df18 Added my personal project Pi-hole Droid to the Projects's list
Pi-hole Droid is an unofficial client that connects to your Pi-hole to show charts and statistics.
2017-02-20 10:04:14 +01:00
Adam Warner
45fbadbb26 Merge pull request #1257 from pi-hole/revert-1241-feature/redirect-pi-hole-to-admin
Revert "redirect pi.hole to pi.hole/admin"
2017-02-20 02:10:13 +00:00
Adam Warner
a7def771c8 Revert "redirect pi.hole to pi.hole/admin" 2017-02-19 20:12:32 +00:00
Adam Warner
543f1243e2 Merge pull request #1241 from pi-hole/feature/redirect-pi-hole-to-admin
redirect pi.hole to pi.hole/admin
2017-02-18 20:59:03 +00:00
Adam Warner
a001443ad7 Merge pull request #1252 from pi-hole/tweak/debug_IP
Debug IP stack fixes
2017-02-18 19:33:54 +00:00
Adam Warner
36166c129a Merge pull request #1253 from Skittels0/even_more_dns
Adds DNS.WATCH to default dns servers
2017-02-18 19:12:32 +00:00
Skittels
4e7a485e23 Update basic-install.sh 2017-02-18 13:42:13 +01:00
Skittels
9e5795bf55 Added DNS.WATCH to default dns servers 2017-02-18 13:03:40 +01:00
Dan Schaper
053b38e0bd Set up for IP matching in detection. 2017-02-16 19:45:44 -08:00
Dan Schaper
2aa3a109a0 Ping gateways and Internet. 2017-02-16 18:38:05 -08:00
Dan Schaper
472708376d Split out IP checks. 2017-02-16 18:30:15 -08:00
Dan Schaper
cfed3d59e9 Begin fixing IP detection functions. 2017-02-16 16:49:14 -08:00
Adam Warner
95fd9d4863 Merge pull request #1248 from IanOliver/patch-3
Update malwaredomains.com and mahakala.is URLs to HTTPS
2017-02-16 08:07:18 +00:00
Ian Oliver
c89bca6ec8 Update malwaredomains.com and mahakala.is URLs to HTTPS 2017-02-15 21:31:42 +00:00
Dan Schaper
ee262c30c2 Merge pull request #1245 from pi-hole/readme/magic-mirror-project
add magic mirror project link to readme
2017-02-14 19:21:27 -08:00
Jacob Salmela
6b8240d4de add magic mirror project link to readme 2017-02-14 20:25:11 -06:00
DL6ER
4035c933df Moved echo to else block 2017-02-13 16:50:48 +01:00
DL6ER
abd44dd284 Add 32bit message 2017-02-13 16:33:22 +01:00
DL6ER
95d7fe76b5 Make comments more pretty 2017-02-13 14:50:25 +01:00
DL6ER
a052f397fe Be more verbose during install 2017-02-13 14:47:06 +01:00
DL6ER
09d6e73b0a Don't print error message on 32bit platforms 2017-02-13 14:42:11 +01:00
DL6ER
7fb6b71d52 Fix install path 2017-02-13 14:40:31 +01:00
DL6ER
07e37d7fc3 Proper error handling 2017-02-13 11:33:09 +01:00
DL6ER
fbe3dc0dcd Have to get latest tag via GitHub API for downloading the binaries 2017-02-13 11:27:52 +01:00
DL6ER
6018c0c2fc Add FTLinstall() 2017-02-13 11:07:29 +01:00
DL6ER
52a2f166fd Add FTLdownload() subroutine 2017-02-13 10:29:27 +01:00
Jacob Salmela
26cb6a1929 redirect pi.hole to pi.hole/admin 2017-02-11 20:46:27 -06:00
Jacob Salmela
7c63bbfe44 Merge pull request #1233 from ProtoFoo/patch-1
Add manual edit warnings to lighttpd.conf.* files
2017-02-11 08:10:35 -06:00
Adam Warner
109026222e Merge pull request #1237 from IanOliver/patch-1
Spelling corrections in adlists.default comments
2017-02-10 23:43:11 +00:00
DL6ER
af8e629df4 Merge pull request #1239 from pi-hole/tweak/debug48h
Change description as we want to save the debug log for 48h instead of only 24h
2017-02-10 20:46:12 +01:00
DL6ER
f7f1daa69f Merge pull request #1238 from pi-hole/tweak/debugLogdnsmasq
Scan whole dnsmasq.d directory for cofigurations files
2017-02-10 20:46:01 +01:00
DL6ER
01f980d49c Change description as we want to save the debug log for 48h instead of only 24h 2017-02-10 17:45:20 +01:00
DL6ER
99fab7e52a Scan whole dnsmasq.d directory for cofigurations files 2017-02-10 17:42:37 +01:00
Ian Oliver
692292b1d4 Spelling corrections in comments 2017-02-10 11:22:14 +00:00
Mcat12
cd608d9d5b Merge pull request #1182 from pi-hole/adminPageAsOption
Give user the choice to install web admin or not
2017-02-09 20:20:08 -05:00
Mcat12
ba67144e34 Merge branch 'development' into adminPageAsOption 2017-02-09 16:27:07 -05:00
ProtoFoo
162d9d7d57 Add manual edit warning
Added text block from 01-pihole.conf to warn user that manual changes to lighttpd config will be overwritten.
Slight cosmetic adjustments (tabs -> spaces).
2017-02-09 17:00:52 +01:00
ProtoFoo
357f5a2cfd Add manual edit warning
Added text block from dns config file to warn user that manual changes to lighttpd config will be overwritten.
Slight cosmetic adjustments (tabs -> spaces).
2017-02-09 16:46:55 +01:00
Mcat12
d1ca32b0a5 Merge pull request #1231 from pi-hole/fix/iproute_deps
Update basic-install.sh
2017-02-09 10:12:05 -05:00
Dan Schaper
34f326c559 Update basic-install.sh 2017-02-08 14:13:49 -08:00
DL6ER
7785dac50e Merge pull request #1228 from r0ckarong/development
Justify and improve help texts, add missing wildcard description
2017-02-08 14:05:53 +01:00
Markus Napp
01f643e5eb fixup! Fix spacing for wildcard help in list script 2017-02-08 12:56:28 +01:00
Markus Napp
8037f3e332 Fix spacing for wildcard help in list script 2017-02-08 12:55:14 +01:00
Markus Napp
19e30b829a Add wildcard description to help text, improve other help texts 2017-02-08 12:42:14 +01:00
Markus Napp
afe5176e01 Justify help output to match main script 2017-02-08 12:41:53 +01:00
Mcat12
a48317883d Fix indentation 2017-02-07 18:14:41 -05:00
DL6ER
5ac92ae4eb Merge pull request #1222 from pi-hole/fix/installer
Remove double echos
2017-02-07 09:21:22 +01:00
DL6ER
8fb6ba19a1 Remove double echos 2017-02-06 12:06:38 +01:00
Dan Schaper
314f7e7889 Merge pull request #1183 from pi-hole/tweak/update_cache_trap
Trap for package cache update failures.
2017-02-05 16:04:19 -08:00
Promofaux
4fcf8fd23f Merge in development branch - resolve conflict in update.sh 2017-02-05 19:39:02 +00:00
Promofaux
10a30344e5 No need to source setupVars, as basic-install.sh is sourced, which sources setupVars itself. Sourception. 2017-02-05 19:29:56 +00:00
Promofaux
1206dda347 testing putting runGravity at a different part of the script 2017-02-05 19:23:04 +00:00
Promofaux
b764d17c64 comment 2017-02-05 19:18:27 +00:00
Promofaux
ba0abdb88d wrap update logic in admin_installed bool check 2017-02-05 19:12:09 +00:00
Promofaux
1428b58dde source setupVars and only check admin repo if it is enabled 2017-02-05 19:07:04 +00:00
Promofaux
e57425df5f 0.0.0.0 instead of pi-holes IP address for redirect purposes 2017-02-04 15:25:11 +00:00
Jacob Salmela
5e7dfaf220 Merge pull request #1214 from pi-hole/tweak/readme-updates
Update README with latest version screenshots and remove Raspberry references
2017-02-03 15:43:31 -06:00
Jacob Salmela
ad5c011b6c Add new screenshots from latest version 2017-02-03 15:33:44 -06:00
Jacob Salmela
fcdd33b585 Update and remove old FAQ links 2017-02-03 15:21:42 -06:00
Jacob Salmela
f767f066ad Update outdated text and describe features from recent versions 2017-02-03 15:18:28 -06:00
Dan Schaper
b8d0e5e5a1 Merge pull request #1210 from pi-hole/fix/dhcpcd_int
Remove comment leaders from DHCPCD interface
2017-02-02 12:48:29 -08:00
Dan Schaper
26ad23f01e Remove comment leaders from DHCPCD interface
We need to set the interface in DHCPCD, comments were inadvertently added a while ago.
2017-02-01 18:33:42 -08:00
DL6ER
21d771e171 Merge pull request #1207 from r0ckarong/master
Fix output for wildcards in gravity.sh
2017-02-01 20:13:47 +01:00
Markus Napp
66616eb0f0 Rename missing plurals check 2017-02-01 19:55:33 +01:00
Mcat12
18eb8a2159 Merge pull request #1185 from pi-hole/cleanup/git_functions
Move git functions to one script
2017-01-31 19:05:53 -05:00
Markus Napp
72a1fc3f64 Fix output for wildcards in gravity.sh 2017-02-01 00:07:47 +01:00
Dan Schaper
96eea32a9d Merge pull request #1205 from pi-hole/master
Sync master and development
2017-01-31 12:35:08 -08:00
DL6ER
3239c7023a Merge pull request #1170 from pi-hole/new/DHCPstaticleases
Backend changes for static DHCP leases
2017-01-31 21:07:36 +01:00
Dan Schaper
3d9d13222b Use constants for leading paths. 2017-01-28 17:42:55 -08:00
Dan Schaper
745adabb05 Path to source basic-install.sh 2017-01-28 17:38:14 -08:00
Dan Schaper
3861b57dc6 Start moving reused utility functions to one script. 2017-01-28 17:32:42 -08:00
Dan Schaper
439999cb62 Last rule check. 2017-01-28 16:47:53 -08:00
Dan Schaper
7291aa07ca Silenc cache updater. 2017-01-28 16:46:37 -08:00
Dan Schaper
9181e2652e Merge remote-tracking branch 'dschaper/tweak/update_cache_trap' into tweak/update_cache_trap 2017-01-28 16:43:28 -08:00
Dan Schaper
409f76aa34 Error check. 2017-01-28 16:37:31 -08:00
Dan Schaper
54e2c6181a Populate all required variables with a distro check. 2017-01-28 16:37:28 -08:00
Dan Schaper
a281d87315 Eval variable. (Not a fan.) 2017-01-28 16:37:26 -08:00
Dan Schaper
2a5587f236 Test for failure. 2017-01-28 16:37:17 -08:00
Dan Schaper
2d18b2d784 Start test templates. 2017-01-28 16:37:04 -08:00
Dan Schaper
585f842206 Error check. 2017-01-28 16:33:40 -08:00
Dan Schaper
737819b56e Populate all required variables with a distro check. 2017-01-28 16:08:43 -08:00
Dan Schaper
a7130e6530 Eval variable. (Not a fan.) 2017-01-28 16:03:48 -08:00
Dan Schaper
f9cfed5aff Test for failure. 2017-01-28 15:56:43 -08:00
Dan Schaper
f65a9dbfd2 Test for failure. 2017-01-28 15:49:28 -08:00
Dan Schaper
96c59fada4 Spelling check. 2017-01-28 15:47:27 -08:00
Dan Schaper
153a9d8ac7 Start test templates. 2017-01-28 15:45:25 -08:00
Dan Schaper
297d4eec57 Start test templates. 2017-01-28 15:44:31 -08:00
Promofaux
c31b4383e6 add back in code to stop dnsmasq and lighttpd during install. 2017-01-28 21:37:21 +00:00
Promofaux
35828f9cea Source setupvars earlier in update/repair process 2017-01-28 19:05:55 +00:00
Promofaux
90af12fdb8 Remember the [@] 2017-01-28 18:41:37 +00:00
Promofaux
5fede23cf7 trying another tactic 2017-01-28 18:39:15 +00:00
Promofaux
bc4762f270 no need to stop dnsmasq/lighttpt if we're going to reload them at the end anyway. 2017-01-28 16:27:02 +00:00
Promofaux
01429d59bd more web checks 2017-01-28 15:45:14 +00:00
Promofaux
731d15f9b5 don't display web admin info in final dialog if it's not selected 2017-01-28 15:43:33 +00:00
Promofaux
f0bd7fae5c ) not } 2017-01-28 15:32:07 +00:00
Promofaux
f8322cc2d4 use the web install flag. Could be optimised 2017-01-28 15:25:02 +00:00
Promofaux
dfdb9e393b move repo clone to function 2017-01-28 15:15:42 +00:00
Promofaux
bd07d7f32e Only install web dependenices if flag is true 2017-01-28 15:11:39 +00:00
Promofaux
f588c6f93c introduce web toggle flag 2017-01-28 14:40:47 +00:00
Promofaux
d9ec3d2c22 spelling 2017-01-28 14:28:18 +00:00
Promofaux
e2b87759d8 split out web dependencies 2017-01-28 14:27:08 +00:00
DL6ER
dad18dc5de Changed keywords 2017-01-25 10:35:45 +01:00
DL6ER
5c95c4074b Remove static leases from DHCP static leases file 2017-01-25 10:35:03 +01:00
DL6ER
4301b9a12a Add static DHCP leases to new file 2017-01-25 10:33:25 +01:00
Mcat12
58f3ff69d8 Align comment with referenced line 2017-01-16 18:51:13 -05:00
DL6ER
72d8d10e64 Show most recently blocked domain in chronometer (using FTL). Fixes #717 2017-01-16 22:39:58 +01:00
105 changed files with 12767 additions and 4259 deletions

38
.editorconfig Normal file
View File

@@ -0,0 +1,38 @@
# EditorConfig is awesome: https://editorconfig.org/
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = tab
tab_width = 4
charset = utf-8
trim_trailing_whitespace = true
# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8
# 4 space indentation
[*.py]
indent_style = space
indent_size = 4
# Tab indentation (no size specified)
[Makefile]
indent_style = tab
# Indentation override for all JS under lib directory
[scripts/**.js]
indent_style = space
indent_size = 2
# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

2
.gitattributes vendored
View File

@@ -35,4 +35,4 @@ GitHub.Tests.Integration/Resources/* binary
# Catch all for anything we forgot. Add rules if you get CRLF -> LF warnings.
* text=auto
* text eol=lf

View File

@@ -1,33 +0,0 @@
**In raising this issue, I confirm the following (please check boxes, eg [X]) Failure to fill the template will close your issue:**
- [] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md).
- [] The issue I am reporting can be *replicated*
- [] The issue I'm reporting isn't a duplicate (see [FAQs](https://github.com/pi-hole/pi-hole/wiki/FAQs), [closed issues](https://github.com/pi-hole/pi-hole/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aclosed%20), and [open issues](https://github.com/pi-hole/pi-hole/issues)).
**How familiar are you with the codebase?:**
_{replace this text with a number from 1 to 10, with 1 being not familiar, and 10 being very familiar}_
---
**[FEATURE REQUEST | QUESTION | OTHER]:**
Please [submit your feature request here](https://discourse.pi-hole.net/c/feature-requests), so it is votable by the community. It's also easier for us to track.
**[BUG | ISSUE] Expected Behaviour:**
**[BUG | ISSUE] Actual Behaviour:**
**[BUG | ISSUE] Steps to reproduce:**
-
-
-
-
**(Optional) Debug token generated by `pihole -d`:**
`<token>`
_This template was created based on the work of [`udemy-dl`](https://github.com/nishad/udemy-dl/blob/master/LICENSE)._

View File

@@ -1,19 +0,0 @@
**By submitting this pull request, I confirm the following (please check boxes, eg [X]) _Failure to fill the template will close your PR_:**
***Please submit all pull requests against the `development` branch. Failure to do so will delay or deny your request***
- [] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md).
- [] I have checked that [another pull request](https://github.com/pi-hole/pi-hole/pulls) for this purpose does not exist.
- [] I have considered, and confirmed that this submission will be valuable to others.
- [] I accept that this submission may not be used, and the pull request closed at the will of the maintainer.
- [] I give this submission freely, and claim no ownership to its content.
**How familiar are you with the codebase?:**
_{replace this text with a number from 1 to 10, with 1 being not familiar, and 10 being very familiar}_
---
_{replace this line with your pull request content}_
_This template was created based on the work of [`udemy-dl`](https://github.com/nishad/udemy-dl/blob/master/LICENSE)._

2
.github/dco.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
require:
members: false

25
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Test Supported Distributions
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
distro-test:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
strategy:
matrix:
distro: [debian_9, debian_10, ubuntu_16, ubuntu_18, ubuntu_20, centos_7, centos_8, fedora_32, fedora_33]
env:
DISTRO: ${{matrix.distro}}
steps:
- uses: actions/checkout@v1
- name: Set up Python 3.7
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Install dependencies
run: pip install -r test/requirements.txt
- name: Test with tox
run: tox -c test/tox.${DISTRO}.ini

71
.gitignore vendored
View File

@@ -3,5 +3,74 @@
*.swp
__pycache__
.cache
.pullapprove.yml
.pytest_cache
.tox
.eggs
*.egg-info
# Created by https://www.gitignore.io/api/jetbrains+iml
### JetBrains+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# All idea files, with exceptions
.idea
!.idea/codeStyles/*
!.idea/codeStyleSettings.xml
# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle:
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Ruby plugin and RubyMine
/.rakeTasks
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### JetBrains+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
.idea/misc.xml
*.ipr
# End of https://www.gitignore.io/api/jetbrains+iml

View File

@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="2" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</value>
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="2" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</value>
</option>
<MarkdownNavigatorCodeStyleSettings>
<option name="RIGHT_MARGIN" value="72" />
</MarkdownNavigatorCodeStyleSettings>
</value>
</option>
<MarkdownNavigatorCodeStyleSettings>
<option name="RIGHT_MARGIN" value="72" />
</MarkdownNavigatorCodeStyleSettings>
</value>
</option>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</component>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</component>
</project>

7
.idea/codeStyles/Project.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<MarkdownNavigatorCodeStyleSettings>
<option name="RIGHT_MARGIN" value="72" />
</MarkdownNavigatorCodeStyleSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

View File

@@ -1,38 +0,0 @@
version: 2
always_pending:
title_regex: '(WIP|wip)'
labels:
- wip
explanation: 'This PR is a work in progress...'
group_defaults:
reset_on_push:
enabled: true
reject_value: -2
approve_regex: '^(Approved|:shipit:|:\+1:|Engage)'
reject_regex: '^(Rejected|:-1:|Borg)'
author_approval:
auto: true
groups:
development:
approve_by_comment:
enabled: true
conditions:
branches:
- development
required: 2
teams:
- approvers
master:
approve_by_comment:
enabled: true
conditions:
branches:
- master
required: -1
teams:
- admin

6
.stickler.yml Normal file
View File

@@ -0,0 +1,6 @@
linters:
shellcheck:
shell: bash
phpcs:
flake8:
max-line-length: 120

View File

@@ -1,10 +0,0 @@
sudo: required
services:
- docker
language: python
python:
- "2.7"
install:
- pip install -r requirements.txt
script: py.test -vv

View File

@@ -1,13 +1,11 @@
_This template was created based on the work of [`udemy-dl`](https://github.com/nishad/udemy-dl/blob/master/LICENSE)._
# Contributors Guide
Please read and understand the contribution guide before creating an issue or pull request.
## Etiquette
- Our goal for Pi-hole is **stability before features**. This means we focus on squashing critical bugs before adding new features. Often, we can do both in tandem, but bugs will take priority over a new feature.
- Pi-hole is open source and [powered by donations](https://pi-hole.net/donate/), and as such, we give our **free time** to build, maintain, and **provide user support** for this project. It would be extremely unfair for us to suffer abuse or anger for our hard work, so please take a moment to consider that.
- Our goal for Pi-hole is **stability before features**. This means we focus on squashing critical bugs before adding new features. Often, we can do both in tandem, but bugs will take priority over a new feature.
- Pi-hole is open source and [powered by donations](https://pi-hole.net/donate/), and as such, we give our **free time** to build, maintain, and **provide user support** for this project. It would be extremely unfair for us to suffer abuse or anger for our hard work, so please take a moment to consider that.
- Please be considerate towards the developers and other users when raising issues or presenting pull requests.
- Respect our decision(s), and do not be upset or abusive if your submission is not used.
@@ -28,11 +26,87 @@ When requesting or submitting new features, first consider whether it might be u
- Check the codebase to ensure that your feature doesn't already exist.
- Check the pull requests to ensure that another person hasn't already submitted the feature or fix.
- Read and understand the [DCO guidelines](https://docs.pi-hole.net/guides/github/contributing/) for the project.
## Technical Requirements
- Submit Pull Requests to the **development branch only**.
- Before Submitting your Pull Request, merge `development` with your new branch and fix any conflicts. (Make sure you don't break anything in development!)
- Please use the [Google Style Guide for Shell](https://google.github.io/styleguide/shell.xml) for your code submission styles.
- Please use the [Google Style Guide for Shell](https://google.github.io/styleguide/shell.xml) for your code submission styles.
- Commit Unix line endings.
- Please use the Pi-hole brand: **Pi-hole** (Take a special look at the capitalized 'P' and a low 'h' with a hyphen)
- (Optional fun) keep to the theme of Star Trek/black holes/gravity.
## Forking and Cloning from GitHub to GitHub
1. Fork <https://github.com/pi-hole/pi-hole/> to a repo under a namespace you control, or have permission to use, for example: `https://github.com/<your_namespace>/<your_repo_name>/`. You can do this from the github.com website.
2. Clone `https://github.com/<your_namespace>/<your_repo_name>/` with the tool of you choice.
3. To keep your fork in sync with our repo, add an upstream remote for pi-hole/pi-hole to your repo.
```bash
git remote add upstream https://github.com/pi-hole/pi-hole.git
```
4. Checkout the `development` branch from your fork `https://github.com/<your_namespace>/<your_repo_name>/`.
5. Create a topic/branch, based on the `development` branch code. *Bonus fun to keep to the theme of Star Trek/black holes/gravity.*
6. Make your changes and commit to your topic branch in your repo.
7. Rebase your commits and squash any insignificant commits. See the notes below for an example.
8. Merge `development` your branch and fix any conflicts.
9. Open a Pull Request to merge your topic branch into our repo's `development` branch.
- Keep in mind the technical requirements from above.
## Forking and Cloning from GitHub to other code hosting sites
- Forking is a GitHub concept and cannot be done from GitHub to other git-based code hosting sites. However, those sites may be able to mirror a GitHub repo.
1. To contribute from another code hosting site, you must first complete the steps above to fork our repo to a GitHub namespace you have permission to use, for example: `https://github.com/<your_namespace>/<your_repo_name>/`.
2. Create a repo in your code hosting site, for example: `https://gitlab.com/<your_namespace>/<your_repo_name>/`
3. Follow the instructions from your code hosting site to create a mirror between `https://github.com/<your_namespace>/<your_repo_name>/` and `https://gitlab.com/<your_namespace>/<your_repo_name>/`.
4. When you are ready to create a Pull Request (PR), follow the steps `(starting at step #6)` from [Forking and Cloning from GitHub to GitHub](#forking-and-cloning-from-github-to-github) and create the PR from `https://github.com/<your_namespace>/<your_repo_name>/`.
## Notes for squashing commits with rebase
- To rebase your commits and squash previous commits, you can use:
```bash
git rebase -i your_topic_branch~(number of commits to combine)
```
- For more details visit [gitready.com](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
1. The following would combine the last four commits in the branch `mytopic`.
```bash
git rebase -i mytopic~4
```
2. An editor window opens with the most recent commits indicated: (edit the commands to the left of the commit ID)
```gitattributes
pick 9dff55b2 existing commit comments
squash ebb1a730 existing commit comments
squash 07cc5b50 existing commit comments
reword 9dff55b2 existing commit comments
```
3. Save and close the editor. The next editor window opens: (edit the new commit message). *If you select reword for a commit, an additional editor window will open for you to edit the comment.*
```bash
new commit comments
Signed-off-by: yourname <your email address>
```
4. Save and close the editor for the rebase process to execute. The terminal output should say something like the following:
```bash
Successfully rebased and updated refs/heads/mytopic.
```
5. Once you have a successful rebase, and before you sync your local clone, you have to force push origin to update your repo:
```bash
git push -f origin
```
6. Continue on from step #7 from [Forking and Cloning from GitHub to GitHub](#forking-and-cloning-from-github-to-github)

389
LICENSE
View File

@@ -1,339 +1,146 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 2017 Pi-hole, LLC (https://pi-hole.net)
Pi-hole Core
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This software is licensed under the European Union Public License (EUPL)
The license is available in the 22 official languages of the EU. The English version is included here.
Please see https://joinup.ec.europa.eu/community/eupl/og_page/eupl for official translations of the other languages.
Preamble
This license applies to the whole project EXCEPT:
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
- any commits made to the master branch prior to the release of version 3.0
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
The licenses that existed prior to this change have remained intact.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
-------------------------------------------------------------
EUROPEAN UNION PUBLIC LICENCE v. 1.2
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
EUPL © the European Union 2007, 2016
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
This European Union Public Licence (the EUPL) applies to the Work (as defined below) which is provided under the terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such use is covered by a right of the copyright holder of the Work).
The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following notice immediately following the copyright notice for the Work:
Licensed under the EUPL
or has expressed by any other means his willingness to license under the EUPL.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
1. Definitions
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
In this Licence, the following terms have the following meaning:
The precise terms and conditions for copying, distribution and
modification follow.
- The Licence: this Licence.
- The Original Work: the work or software distributed or communicated by the Licensor under this Licence, available as Source Code and also as Executable Code as the case may be.
- Derivative Works: the works or software that could be created by the Licensee, based upon the Original Work or modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in the country mentioned in Article 15.
- The Work: the Original Work or its Derivative Works.
- The Source Code: the human-readable form of the Work which is the most convenient for people to study and modify.
- The Executable Code: any code which has generally been compiled and which is meant to be interpreted by a computer as a program.
- The Licensor: the natural or legal person that distributes or communicates the Work under the Licence.
- Contributor(s): any natural or legal person who modifies the Work under the Licence, or otherwise contributes to the creation of a Derivative Work.
- The Licensee or You: any natural or legal person who makes any usage of the Work under the terms of the Licence.
- Distribution or Communication: any act of selling, giving, lending, renting, distributing, communicating, transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential functionalities at the disposal of any other natural or legal person.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
2. Scope of the rights granted by the Licence
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for the duration of copyright vested in the Original Work:
- use the Work in any circumstance and for all usage,
- reproduce the Work,
- modify the Work, and make Derivative Works based upon the Work,
- communicate to the public, including the right to make available or display the Work or copies thereof to the public and perform publicly, as the case may be, the Work,
- distribute the Work or copies thereof,
- lend and rent the Work or copies thereof,
- sublicense rights in the Work or copies thereof.
Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the applicable law permits so.
In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed by law in order to make effective the licence of the economic rights here above listed.
The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the extent necessary to make use of the rights granted on the Work under this Licence.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
3. Communication of the Source Code
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to distribute or communicate the Work.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
4. Limitations on copyright
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations thereto.
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
5. Obligations of the Licensee
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those obligations are the following:
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work to carry prominent notices stating that the Work has been modified and the date of modification.
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless the Original Work is expressly distributed only under this version of the Licence - for example by communicating EUPL v. 1.2 only. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the Work or Derivative Work that alter or restrict the terms of the Licence.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done under the terms of this Compatible Licence. For the sake of this clause, Compatible Licence refers to the licences listed in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available for as long as the Licensee continues to distribute or communicate the Work.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the copyright notice.
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
6. Chain of Authorship
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or licensed to him/her and that he/she has the power and authority to grant the Licence.
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or licensed to him/her and that he/she has the power and authority to grant the Licence.
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contributions to the Work, under the terms of this Licence.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
7. Disclaimer of Warranty
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work and may therefore contain defects or bugs inherent to this type of development.
For the above reason, the Work is provided under the Licence on an as is basis and without warranties of any kind concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this Licence.
This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
8. Disclaimer of Liability
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However, the Licensor will be liable under statutory product liability laws as far such laws apply to the Work.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
9. Additional agreements
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by the fact You have accepted any warranty or additional liability.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
10. Acceptance of the Licence
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
The provisions of this Licence can be accepted by clicking on an icon I agree placed under the bottom of a window displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms and conditions.
Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution or Communication by You of the Work or copies thereof.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
11. Information to the public
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
In case of any Distribution or Communication of the Work by means of electronic communication by You (for example, by offering to download the Work from a remote location) the distribution channel or media (for example, a website) must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence and the way it may be accessible, concluded, stored and reproduced by the Licensee.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
12. Termination of the Licence
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms of the Licence.
Such a termination will not terminate the licences of any person who has received the Work from the Licensee under the Licence, provided such persons remain in full compliance with the Licence.
NO WARRANTY
13. Miscellaneous
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the Work.
If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid and enforceable.
The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence. New versions of the Licence will be published with a unique version number.
All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take advantage of the linguistic version of their choice.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
14. Jurisdiction
END OF TERMS AND CONDITIONS
Without prejudice to specific agreement between parties,
- any litigation resulting from the interpretation of this License, arising between the European Union institutions, bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union,
- any litigation arising between other parties and resulting from the interpretation of this License, will be subject to the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business.
How to Apply These Terms to Your New Programs
15. Applicable Law
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
Without prejudice to specific agreement between parties,
- this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat, resides or has his registered office,
- this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside a European Union Member State.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
===
{description}
Copyright (C) {year} {fullname}
Appendix
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
Compatible Licences according to Article 5 EUPL are:
- GNU General Public License (GPL) v. 2, v. 3
- GNU Affero General Public License (AGPL) v. 3
- Open Software License (OSL) v. 2.1, v. 3.0
- Eclipse Public License (EPL) v. 1.0
- CeCILL v. 2.0, v. 2.1
- Mozilla Public Licence (MPL) v. 2
- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software
- European Union Public Licence (EUPL) v. 1.1, v. 1.2
- Québec Free and Open-Source Licence - Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+)
- The European Commission may update this Appendix to later versions of the above licences without producing a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the covered Source Code from exclusive appropriation.
- All other changes or additions to this Appendix require the production of a new EUPL version.

221
README.md
View File

@@ -1,155 +1,164 @@
<p align="center">
<a href=https://www.bountysource.com/trackers/3011939-pi-hole-pi-hole?utm_source=3011939&utm_medium=shield&utm_campaign=TRACKER_BADGE><img src="https://www.bountysource.com/badge/tracker?tracker_id=3011939"></a>
<a href="https://www.codacy.com/app/Pi-hole/pi-hole?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=pi-hole/pi-hole&amp;utm_campaign=Badge_Grade"><img src="https://api.codacy.com/project/badge/Grade/c558a0f8d7124c99b02b84f0f5564238"/></a>
<a href=https://travis-ci.org/pi-hole/pi-hole><img src="https://travis-ci.org/pi-hole/pi-hole.svg?branch=development"></a>
</p>
<!-- markdownlint-configure-file { "MD004": { "style": "consistent" } } -->
<!-- markdownlint-disable MD033 -->
#
<p align="center">
<a href=https://discourse.pi-hole.net><img src="https://assets.pi-hole.net/static/Vortex_text.png" width=210></a>
<a href="https://pi-hole.net/">
<img src="https://pi-hole.github.io/graphics/Vortex/Vortex_with_Wordmark.svg" width="150" height="260" alt="Pi-hole">
</a>
<br>
<strong>Network-wide ad blocking via your own Linux hardware</strong>
</p>
<!-- markdownlint-enable MD033 -->
## The multi-platform, network-wide ad blocker
The Pi-hole® is a [DNS sinkhole](https://en.wikipedia.org/wiki/DNS_Sinkhole) that protects your devices from unwanted content, without installing any client-side software.
Block ads for **all** your devices _without_ the need to install client-side software. The Pi-hole blocks ads at the DNS-level, so all your devices are protected.
- **Easy-to-install**: our versatile installer walks you through the process, and takes less than ten minutes
- **Resolute**: content is blocked in _non-browser locations_, such as ad-laden mobile apps and smart TVs
- **Responsive**: seamlessly speeds up the feel of everyday browsing by caching DNS queries
- **Lightweight**: runs smoothly with [minimal hardware and software requirements](https://docs.pi-hole.net/main/prerequisites/)
- **Robust**: a command line interface that is quality assured for interoperability
- **Insightful**: a beautiful responsive Web Interface dashboard to view and control your Pi-hole
- **Versatile**: can optionally function as a [DHCP server](https://discourse.pi-hole.net/t/how-do-i-use-pi-holes-built-in-dhcp-server-and-why-would-i-want-to/3026), ensuring *all* your devices are protected automatically
- **Scalable**: [capable of handling hundreds of millions of queries](https://pi-hole.net/2017/05/24/how-much-traffic-can-pi-hole-handle/) when installed on server-grade hardware
- **Modern**: blocks ads over both IPv4 and IPv6
- **Free**: open source software which helps ensure _you_ are the sole person in control of your privacy
- Web Browsers
- Cell Phones
- Smart TV's
- Internet-connected home automation
- Anything that communicates with the Internet
-----
<p align="center">
<a href=http://www.digitalocean.com/?refcode=344d234950e1><img src="https://assets.pi-hole.net/static/DOHostingSlug.png"></a>
</p>
## One-Step Automated Install
## Your Support Still Matters
Digital Ocean helps with our infrastructure, but our developers are all volunteers so *your donations help keep us innovating*. Sending a donation using our links below helps us offset a portion of our monthly costs.
- ![Paypal](https://assets.pi-hole.net/static/paypal.png) [Donate via PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3J2L3Z4DHW9UY)
- ![Bitcoin](https://assets.pi-hole.net/static/Bitcoin.png) Bitcoin Address: 1GKnevUnVaQM2pQieMyeHkpr8DXfkpfAtL
### One-Step Automated Install
1. Install a [supported operating system](https://discourse.pi-hole.net/t/hardware-software-requirements/273/1)
2. Run the command below (it downloads [this script](https://github.com/pi-hole/pi-hole/blob/master/automated%20install/basic-install.sh) in case you want to read over it first!)
Those who want to get started quickly and conveniently may install Pi-hole using the following command:
### `curl -sSL https://install.pi-hole.net | bash`
#### Alternative Semi-Automated Install Methods
_If you wish to read over the script before running it, run `nano basic-install.sh` to open the file in a text viewer._
## Alternative Install Methods
##### Clone our repository and run the automated installer from your device.
Piping to `bash` is [controversial](https://pi-hole.net/2016/07/25/curling-and-piping-to-bash), as it prevents you from [reading code that is about to run](https://github.com/pi-hole/pi-hole/blob/master/automated%20install/basic-install.sh) on your system. Therefore, we provide these alternative installation methods which allow code review before installation:
```
### Method 1: Clone our repository and run
```bash
git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
cd Pi-hole/automated\ install/
bash basic-install.sh
cd "Pi-hole/automated install/"
sudo bash basic-install.sh
```
##### Or
### Method 2: Manually download the installer and run
```bash
wget -O basic-install.sh https://install.pi-hole.net
bash basic-install.sh
sudo bash basic-install.sh
```
### Method 3: Using Docker to deploy Pi-hole
Please refer to the [Pi-hole docker repo](https://github.com/pi-hole/docker-pi-hole) to use the Official Docker Images.
Once installed, [configure your router to have **DHCP clients use the Pi as their DNS server**](https://discourse.pi-hole.net/t/how-do-i-configure-my-devices-to-use-pi-hole-as-their-dns-server/245) and then any device that connects to your network will have ads blocked without any further configuration. Alternatively, you can manually set each device to [use the Raspberry Pi as its DNS server](http://pi-hole.net/faq/how-do-i-use-the-pi-hole-as-my-dns-server/).
## [Post-install: Make your network take advantage of Pi-hole](https://docs.pi-hole.net/main/post-install/)
## What is Pi-hole and how do I install it?
<p align="center">
<a href=https://www.youtube.com/watch?v=vKWjx1AQYgs><img src="https://assets.pi-hole.net/static/global.png"></a>
</p>
Once the installer has been run, you will need to [configure your router to have **DHCP clients use Pi-hole as their DNS server**](https://discourse.pi-hole.net/t/how-do-i-configure-my-devices-to-use-pi-hole-as-their-dns-server/245) which ensures that all devices connecting to your network will have content blocked without any further intervention.
If your router does not support setting the DNS server, you can [use Pi-hole's built-in DHCP server](https://discourse.pi-hole.net/t/how-do-i-use-pi-holes-built-in-dhcp-server-and-why-would-i-want-to/3026); just be sure to disable DHCP on your router first (if it has that feature available).
## Get Help Or Connect With Us On The Web
As a last resort, you can always manually set each device to use Pi-hole as their DNS server.
- [Users Forum](https://discourse.pi-hole.net/)
- [FAQs](https://discourse.pi-hole.net/c/faqs)
- [Wiki](https://github.com/pi-hole/pi-hole/wiki)
- ![Twitter](https://assets.pi-hole.net/static/twitter.png) [Tweet @The_Pi_Hole](https://twitter.com/The_Pi_Hole)
- ![Reddit](https://assets.pi-hole.net/static/reddit.png) [Reddit /r/pihole](https://www.reddit.com/r/pihole/)
- ![YouTube](https://assets.pi-hole.net/static/youtube.png) [Pi-hole channel](https://www.youtube.com/channel/UCT5kq9w0wSjogzJb81C9U0w)
- [![Join the chat at https://gitter.im/pi-hole/pi-hole](https://badges.gitter.im/pi-hole/pi-hole.svg)](https://gitter.im/pi-hole/pi-hole?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-----
## Technical Details
## Pi-hole is free, but powered by your support
The Pi-hole is an **advertising-aware DNS/Web server**. If an ad domain is queried, a small Web page or GIF is delivered in place of the advertisement. You can also [replace ads with any image you want](http://pi-hole.net/faq/is-it-possible-to-change-the-blank-page-that-takes-place-of-the-ads-to-something-else/) since it is just a simple Webpage taking place of the ads.
There are many reoccurring costs involved with maintaining free, open source, and privacy-respecting software; expenses which [our volunteer developers](https://github.com/orgs/pi-hole/people) pitch in to cover out-of-pocket. This is just one example of how strongly we feel about our software, as well as the importance of keeping it maintained.
### Gravity
Make no mistake: **your support is absolutely vital to help keep us innovating!**
The [gravity.sh](https://github.com/pi-hole/pi-hole/blob/master/gravity.sh) does most of the magic. The script pulls in ad domains from many sources and compiles them into a single list of [over 1.6 million entries](http://jacobsalmela.com/block-millions-ads-network-wide-with-a-raspberry-pi-hole-2-0) (if you decide to use the [mahakala list](https://github.com/pi-hole/pi-hole/commit/963eacfe0537a7abddf30441c754c67ca1e40965)). This script is controlled by the `pihole` command. Please run `pihole -h` to see what commands can be run via `pihole`.
### [Donations](https://pi-hole.net/donate)
Sending a donation using our Sponsor Button is **extremely helpful** in offsetting a portion of our monthly expenses and rewarding our dedicated development team:
### Alternative support
#### Other Operating Systems
If you'd rather not donate (_which is okay!_), there are other ways you can help support us:
The automated install is only for a clean install of a Debian family or Fedora based system, such as the Raspberry Pi. However, this script will work for most UNIX-like systems, some with some slight **modifications** that we can help you work through. If you can install `dnsmasq` and a Webserver, it should work OK. If there are other platforms you'd like supported, let us know.
- [GitHub Sponsors](https://github.com/sponsors/pi-hole/)
- [Patreon](https://patreon.com/pihole)
- [Hetzner Cloud](https://hetzner.cloud/?ref=7aceisRX3AzA) _affiliate link_
- [Digital Ocean](https://www.digitalocean.com/?refcode=344d234950e1) _affiliate link_
- [Stickermule](https://www.stickermule.com/unlock?ref_id=9127301701&utm_medium=link&utm_source=invite) _earn a $10 credit after your first purchase_
- [Amazon US](http://www.amazon.com/exec/obidos/redirect-home/pihole09-20) _affiliate link_
- Spreading the word about our software, and how you have benefited from it
### Web Interface
### Contributing via GitHub
The [Web interface](https://github.com/pi-hole/AdminLTE#pi-hole-admin-dashboard) will be installed automatically so you can view stats and change settings. You can find it at:
We welcome _everyone_ to contribute to issue reports, suggest new features, and create pull requests.
`http://192.168.1.x/admin/index.php` or `http://pi.hole/admin`
If you have something to add - anything from a typo through to a whole new feature, we're happy to check it out! Just make sure to fill out our template when submitting your request; the questions that it asks will help the volunteers quickly understand what you're aiming to achieve.
![Pi-hole Advanced Stats Dashboard](https://assets.pi-hole.net/static/dashboard.png)
You'll find that the [install script](https://github.com/pi-hole/pi-hole/blob/master/automated%20install/basic-install.sh) and the [debug script](https://github.com/pi-hole/pi-hole/blob/master/advanced/Scripts/piholeDebug.sh) have an abundance of comments, which will help you better understand how Pi-hole works. They're also a valuable resource to those who want to learn how to write scripts or code a program! We encourage anyone who likes to tinker to read through it and submit a pull request for us to review.
### Whitelist and blacklist
-----
Domains can be whitelisted and blacklisted using either the web interface or the command line. See [the wiki page](https://github.com/pi-hole/pi-hole/wiki/Whitelisting-and-Blacklisting) for more details
<p align="center">
<a href=https://github.com/pi-hole/pi-hole/wiki/Whitelisting-and-Blacklisting><img src="https://assets.pi-hole.net/static/controlpanel.png"></a>
</p>
## Getting in touch with us
## API
While we are primarily reachable on our [Discourse User Forum](https://discourse.pi-hole.net/), we can also be found on a variety of social media outlets.
A basic read-only API can be accessed at `/admin/api.php`. It returns the following JSON:
**Please be sure to check the FAQ's** before starting a new discussion. Many user questions already have answers and can be solved without any additional assistance.
``` json
{
"domains_being_blocked": "136708",
"dns_queries_today": "18108",
"ads_blocked_today": "14648",
"ads_percentage_today": "80.89"
}
```
- [Frequently Asked Questions](https://discourse.pi-hole.net/c/faqs)
- [Feature Requests](https://discourse.pi-hole.net/c/feature-requests?order=votes)
- [Reddit](https://www.reddit.com/r/pihole/)
- [Twitter](https://twitter.com/The_Pi_hole)
The same output can be achieved on the CLI by running `chronometer.sh -j`
-----
## Real-time Statistics
## Breakdown of Features
You can view [real-time stats](http://pi-hole.net/faq/install-the-real-time-lcd-monitor-chronometer/) via `ssh` or on an [2.8" LCD screen](http://amzn.to/1P0q1Fj). This is accomplished via [`chronometer.sh`](https://github.com/pi-hole/pi-hole/blob/master/advanced/Scripts/chronometer.sh). ![Pi-hole LCD](http://i.imgur.com/nBEqycp.jpg)
### [Faster-than-light Engine](https://github.com/pi-hole/ftl)
## Pi-hole Projects
[FTLDNS](https://github.com/pi-hole/ftl) is a lightweight, purpose-built daemon used to provide statistics needed for the Web Interface, and its API can be easily integrated into your own projects. As the name implies, FTLDNS does this all *very quickly*!
- [Pi-hole stats in your Mac's menu bar](https://getbitbar.com/plugins/Network/pi-hole.1m.py)
- [Get LED alerts for each blocked ad](http://thetimmy.silvernight.org/pages/endisbutton/)
- [Pi-hole on Ubuntu 14.04 on VirtualBox](http://hbalagtas.blogspot.com/2016/02/adblocking-with-pi-hole-and-ubuntu-1404.html)
- [Docker Pi-hole container (x86 and ARM)](https://hub.docker.com/r/diginc/pi-hole/)
- [Splunk: Pi-hole Visualizser](https://splunkbase.splunk.com/app/3023/)
- [Pi-hole Chrome extension](https://chrome.google.com/webstore/detail/pi-hole-list-editor/hlnoeoejkllgkjbnnnhfolapllcnaglh) ([open source](https://github.com/packtloss/pihole-extension))
- [Go Bananas for CHiP-hole ad blocking](https://www.hackster.io/jacobsalmela/chip-hole-network-wide-ad-blocker-98e037)
- [Sky-Hole](http://dlaa.me/blog/post/skyhole)
- [Pi-hole in the Cloud!](http://blog.codybunch.com/2015/07/28/Pi-Hole-in-the-cloud/)
- [unRaid-hole](https://github.com/spants/unraidtemplates/blob/master/Spants/unRaid-hole.xml#L13)--[Repo and more info](http://lime-technology.com/forum/index.php?PHPSESSID=c0eae3e5ef7e521f7866034a3336489d&topic=38486.0)
- [Pi-hole on/off button](http://thetimmy.silvernight.org/pages/endisbutton/)
- [Minibian Pi-hole](http://munkjensen.net/wiki/index.php/See_my_Pi-Hole#Minibian_Pi-hole)
- [Windows Tray Stat Application](https://github.com/goldbattle/copernicus)
- [Let your blink1 device blink when Pi-hole filters ads](https://gist.github.com/elpatron68/ec0b4c582e5abf604885ac1e068d233f)
- [Pi-Hole Prometheus exporter](https://github.com/nlamirault/pihole_exporter) : a [Prometheus](https://prometheus.io/) exporter for Pi-Hole
Some of the statistics you can integrate include:
## Coverage
- Total number of domains being blocked
- Total number of DNS queries today
- Total number of ads blocked today
- Percentage of ads blocked
- Unique domains
- Queries forwarded (to your chosen upstream DNS server)
- Queries cached
- Unique clients
- [Adafruit livestream install](https://www.youtube.com/watch?v=eg4u2j1HYlI)
- [TekThing: 5 fun, easy projects for a Raspberry Pi](https://youtu.be/QwrKlyC2kdM?t=1m42s)
- [Pi-hole on Adafruit's blog](https://blog.adafruit.com/2016/03/04/pi-hole-is-a-black-hole-for-internet-ads-piday-raspberrypi-raspberry_pi/)
- [The Defrag Show - MSDN/Channel 9](https://channel9.msdn.com/Shows/The-Defrag-Show/Defrag-Endoscope-USB-Camera-The-Final-HoloLens-Vote-Adblock-Pi-and-more?WT.mc_id=dlvr_twitter_ch9#time=20m39s)
- [MacObserver Podcast 585](http://www.macobserver.com/tmo/podcast/macgeekgab-585)
- [Medium: Block All Ads For $53](https://medium.com/@robleathern/block-ads-on-all-home-devices-for-53-18-a5f1ec139693#.gj1xpgr5d)
- [MakeUseOf: Adblock Everywhere, The Pi-hole Way](http://www.makeuseof.com/tag/adblock-everywhere-raspberry-pi-hole-way/)
- [Lifehacker: Turn Your Pi Into An Ad Blocker With A Single Command](http://lifehacker.com/turn-a-raspberry-pi-into-an-ad-blocker-with-a-single-co-1686093533)!
- [Pi-hole on TekThing](https://youtu.be/8Co59HU2gY0?t=2m)
- [Pi-hole on Security Now! Podcast](http://www.youtube.com/watch?v=p7-osq_y8i8&t=100m26s)
- [Foolish Tech Show](https://youtu.be/bYyena0I9yc?t=2m4s)
- [Pi-hole on Ubuntu](http://www.boyter.org/2015/12/pi-hole-ubuntu-14-04/)
- [Catchpoint: iOS 9 Ad Blocking](http://blog.catchpoint.com/2015/09/14/ad-blocking-apple/)
- [Build an Ad-Blocker for less than 10$ with Orange-Pi](http://www.devacron.com/orangepi-zero-as-an-ad-block-server-with-pi-hole/)
The API can be accessed via [`telnet`](https://github.com/pi-hole/FTL), the Web (`admin/api.php`) and Command Line (`pihole -c -j`). You can find out [more details over here](https://discourse.pi-hole.net/t/pi-hole-api/1863).
### The Command Line Interface
The [pihole](https://docs.pi-hole.net/core/pihole-command/) command has all the functionality necessary to be able to fully administer the Pi-hole, without the need of the Web Interface. It's fast, user-friendly, and auditable by anyone with an understanding of `bash`.
Some notable features include:
- [Whitelisting, Blacklisting and Regex](https://docs.pi-hole.net/core/pihole-command/#whitelisting-blacklisting-and-regex)
- [Debugging utility](https://docs.pi-hole.net/core/pihole-command/#debugger)
- [Viewing the live log file](https://docs.pi-hole.net/core/pihole-command/#tail)
- [Updating Ad Lists](https://docs.pi-hole.net/core/pihole-command/#gravity)
- [Querying Ad Lists for blocked domains](https://docs.pi-hole.net/core/pihole-command/#query)
- [Enabling and Disabling Pi-hole](https://docs.pi-hole.net/core/pihole-command/#enable-disable)
- ... and *many* more!
You can read our [Core Feature Breakdown](https://docs.pi-hole.net/core/pihole-command/#pi-hole-core) for more information.
### The Web Interface Dashboard
This [optional dashboard](https://github.com/pi-hole/AdminLTE) allows you to view stats, change settings, and configure your Pi-hole. It's the power of the Command Line Interface, with none of the learning curve!
Some notable features include:
- Mobile friendly interface
- Password protection
- Detailed graphs and doughnut charts
- Top lists of domains and clients
- A filterable and sortable query log
- Long Term Statistics to view data over user-defined time ranges
- The ability to easily manage and configure Pi-hole features
- ... and all the main features of the Command Line Interface!
There are several ways to [access the dashboard](https://discourse.pi-hole.net/t/how-do-i-access-pi-holes-dashboard-admin-interface/3168):
1. `http://pi.hole/admin/` (when using Pi-hole as your DNS server)
2. `http://<IP_ADDPRESS_OF_YOUR_PI_HOLE>/admin/`

View File

@@ -1,53 +0,0 @@
## Pi-hole ad-list default sources. Updated 29/10/2016 #########################
# #
# To make changes to this file: #
# 1. run `cp /etc/pihole/adlists.default /etc/pihole/adlists.list` #
# 2. run `nano /etc/pihole/adlists.list` #
# 3. Uncomment or comment any of the below lists #
# #
# Know of any other lists? Feel free to let us know about them, or add them #
# to this file! #
################################################################################
# The below list amalgamates several lists we used previously.
# See `https://github.com/StevenBlack/hosts` for details
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
# Other lists we consider safe:
http://mirror1.malwaredomains.com/files/justdomains
http://sysctl.org/cameleon/hosts
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
# hosts-file.net list. Updated frequently, but has been known to block legitimate sites.
https://hosts-file.net/ad_servers.txt
# Mahakala list. Has been known to block legitimage domains including the entire .com range.
# Warning: Due to the sheer size of this list, the web admin console will be unresponsive.
#http://adblock.mahakala.is/
# ADZHOSTS list. Has been known to block legitimate domains
#http://pilotfiber.dl.sourceforge.net/project/adzhosts/HOSTS.txt
# Windows 10 telemetry list
#https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/win10/spy.txt
# Securemecca.com list - Also blocks "adult" sites (pornography/gambling etc)
#http://securemecca.com/Downloads/hosts.txt
# Quidsup's tracker list
#https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
# Block the BBC News website Breaking News banner
#https://raw.githubusercontent.com/BreakingTheNews/BreakingTheNews.github.io/master/hosts
# Untested Lists:
#https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt
#https://raw.githubusercontent.com/Dawsey21/Lists/master/main-blacklist.txt
#http://malwaredomains.lehigh.edu/files/domains.txt
# Following two lists should be used simultaneously: (readme https://github.com/notracking/hosts-blocklists/)
#https://raw.github.com/notracking/hosts-blocklists/master/hostnames.txt
#https://raw.github.com/notracking/hosts-blocklists/master/domains.txt
# Combination of serveral host files on the internet (warning some facebook domains are also blocked but you can go to facebook.com). See https://github.com/mat1th/Dns-add-block for more information.
#https://raw.githubusercontent.com/mat1th/Dns-add-block/master/hosts

View File

@@ -1,13 +1,11 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# dnsmasq config for Pi-hole
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# Dnsmasq config for Pi-hole's FTLDNS
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
###############################################################################
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
@@ -16,15 +14,17 @@
# IF YOU WISH TO CHANGE THE UPSTREAM SERVERS, CHANGE THEM IN: #
# /etc/pihole/setupVars.conf #
# #
# ANY OTHER CHANGES SHOULD BE MADE IN A SEPERATE CONFIG FILE #
# OR IN /etc/dnsmasq.conf #
# ANY OTHER CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
# WITHIN /etc/dnsmasq.d/yourname.conf #
###############################################################################
addn-hosts=/etc/pihole/gravity.list
addn-hosts=/etc/pihole/local.list
addn-hosts=/etc/pihole/custom.list
domain-needed
localise-queries
bogus-priv
no-resolv
@@ -34,11 +34,11 @@ server=@DNS2@
interface=@INT@
cache-size=10000
cache-size=@CACHE_SIZE@
log-queries
log-facility=/var/log/pihole.log
local-ttl=300
local-ttl=2
log-async

View File

@@ -0,0 +1,49 @@
# Determine if terminal is capable of showing colors
if [[ -t 1 ]] && [[ $(tput colors) -ge 8 ]]; then
# Bold and underline may not show up on all clients
# If something MUST be emphasized, use both
COL_BOLD=''
COL_ULINE=''
COL_NC=''
COL_GRAY=''
COL_RED=''
COL_GREEN=''
COL_YELLOW=''
COL_BLUE=''
COL_PURPLE=''
COL_CYAN=''
else
# Provide empty variables for `set -u`
COL_BOLD=""
COL_ULINE=""
COL_NC=""
COL_GRAY=""
COL_RED=""
COL_GREEN=""
COL_YELLOW=""
COL_BLUE=""
COL_PURPLE=""
COL_CYAN=""
fi
# Deprecated variables
COL_WHITE="${COL_BOLD}"
COL_BLACK="${COL_NC}"
COL_LIGHT_BLUE="${COL_BLUE}"
COL_LIGHT_GREEN="${COL_GREEN}"
COL_LIGHT_CYAN="${COL_CYAN}"
COL_LIGHT_RED="${COL_RED}"
COL_URG_RED="${COL_RED}${COL_BOLD}${COL_ULINE}"
COL_LIGHT_PURPLE="${COL_PURPLE}"
COL_BROWN="${COL_YELLOW}"
COL_LIGHT_GRAY="${COL_GRAY}"
COL_DARK_GRAY="${COL_GRAY}"
TICK="[${COL_GREEN}✓${COL_NC}]"
CROSS="[${COL_RED}✗${COL_NC}]"
INFO="[i]"
QST="[?]"
DONE="${COL_GREEN} done!${COL_NC}"
OVER="\\r"

View File

@@ -1,95 +1,579 @@
#!/usr/bin/env bash
# shellcheck disable=SC1090,SC1091
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Calculates stats and displays to an LCD
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
LC_ALL=C
LC_NUMERIC=C
# Retrieve stats from FTL engine
pihole-FTL() {
local ftl_port LINE
ftl_port=$(cat /run/pihole-FTL.port 2> /dev/null)
if [[ -n "$ftl_port" ]]; then
# Open connection to FTL
exec 3<>"/dev/tcp/127.0.0.1/$ftl_port"
#Functions##############################################################################################################
piLog="/var/log/pihole.log"
gravity="/etc/pihole/gravity.list"
# Test if connection is open
if { "true" >&3; } 2> /dev/null; then
# Send command to FTL and ask to quit when finished
echo -e ">$1 >quit" >&3
. /etc/pihole/setupVars.conf
# Read input until we received an empty string and the connection is
# closed
read -r -t 1 LINE <&3
until [[ -z "${LINE}" ]] && [[ ! -t 3 ]]; do
echo "$LINE" >&1
read -r -t 1 LINE <&3
done
# Borrowed/modified from https://gist.github.com/cjus/1047794
function GetJSONValue {
retVal=$(echo $1 | sed 's/\\\\\//\//g' | \
sed 's/[{}]//g' | \
awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | \
sed 's/\"\:/\|/g' | \
sed 's/[\,]/ /g' | \
sed 's/\"//g' | \
grep -w $2)
echo ${retVal##*|}
# Close connection
exec 3>&-
exec 3<&-
fi
else
echo "0"
fi
}
outputJSON() {
json=$(curl -s -X GET http://127.0.0.1/admin/api.php?summaryRaw)
echo ${json}
# Print spaces to align right-side additional text
printFunc() {
local text_last
title="$1"
title_len="${#title}"
text_main="$2"
text_main_nocol="$text_main"
if [[ "${text_main:0:1}" == "" ]]; then
text_main_nocol=$(sed 's/\[[0-9;]\{1,5\}m//g' <<< "$text_main")
fi
text_main_len="${#text_main_nocol}"
text_addn="$3"
if [[ "$text_addn" == "last" ]]; then
text_addn=""
text_last="true"
fi
# If there is additional text, define max length of text_main
if [[ -n "$text_addn" ]]; then
case "$scr_cols" in
[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-4]) text_main_max_len="9";;
4[5-9]) text_main_max_len="14";;
*) text_main_max_len="19";;
esac
fi
[[ -z "$text_addn" ]] && text_main_max_len="$(( scr_cols - title_len ))"
# Remove excess characters from main text
if [[ "$text_main_len" -gt "$text_main_max_len" ]]; then
# Trim text without colors
text_main_trim="${text_main_nocol:0:$text_main_max_len}"
# Replace with trimmed text
text_main="${text_main/$text_main_nocol/$text_main_trim}"
fi
# Determine amount of spaces for each line
if [[ -n "$text_last" ]]; then
# Move cursor to end of screen
spc_num=$(( scr_cols - ( title_len + text_main_len ) ))
else
spc_num=$(( text_main_max_len - text_main_len ))
fi
[[ "$spc_num" -le 0 ]] && spc_num="0"
spc=$(printf "%${spc_num}s")
#spc="${spc// /.}" # Debug: Visualize spaces
printf "%s%s$spc" "$title" "$text_main"
if [[ -n "$text_addn" ]]; then
printf "%s(%s)%s\\n" "$COL_NC$COL_DARK_GRAY" "$text_addn" "$COL_NC"
else
# Do not print trailing newline on final line
[[ -z "$text_last" ]] && printf "%s\\n" "$COL_NC"
fi
}
normalChrono() {
for (( ; ; )); do
clear
# Displays a colorful Pi-hole logo
echo " ___ _ _ _"
echo "| _ (_)___| |_ ___| |___"
echo "| _/ |___| ' \/ _ \ / -_)"
echo "|_| |_| |_||_\___/_\___|"
echo ""
echo " ${IPV4_ADDRESS}"
echo ""
uptime | cut -d' ' -f11-
#uptime -p #Doesn't work on all versions of uptime
uptime | awk -F'( |,|:)+' '{if ($7=="min") m=$6; else {if ($7~/^day/) {d=$6;h=$8;m=$9} else {h=$6;m=$7}}} {print d+0,"days,",h+0,"hours,",m+0,"minutes."}'
echo "-------------------------------"
# Uncomment to continually read the log file and display the current domain being blocked
#tail -f /var/log/pihole.log | awk '/\/etc\/pihole\/gravity.list/ {if ($7 != "address" && $7 != "name" && $7 != "/etc/pihole/gravity.list") print $7; else;}'
# Perform on first Chrono run (not for JSON formatted string)
get_init_stats() {
calcFunc(){ awk "BEGIN {print $*}" 2> /dev/null; }
json=$(curl -s -X GET http://127.0.0.1/admin/api.php?summaryRaw)
# Convert bytes to human-readable format
hrBytes() {
awk '{
num=$1;
if(num==0) {
print "0 B"
} else {
xxx=(num<0?-num:num)
sss=(num<0?-1:1)
split("B KB MB GB TB PB",type)
for(i=5;yyy < 1;i--) {
yyy=xxx / (2^(10*i))
}
printf "%.0f " type[i+2], yyy*sss
}
}' <<< "$1";
}
domains=$(printf "%'.f" $(GetJSONValue ${json} "domains_being_blocked")) #add commas in
queries=$(printf "%'.f" $(GetJSONValue ${json} "dns_queries_today"))
blocked=$(printf "%'.f" $(GetJSONValue ${json} "ads_blocked_today"))
LC_NUMERIC=C percentage=$(printf "%0.2f\n" $(GetJSONValue ${json} "ads_percentage_today")) #2 decimal places
# Convert seconds to human-readable format
hrSecs() {
day=$(( $1/60/60/24 )); hrs=$(( $1/3600%24 ))
mins=$(( ($1%3600)/60 )); secs=$(( $1%60 ))
[[ "$day" -ge "2" ]] && plu="s"
[[ "$day" -ge "1" ]] && days="$day day${plu}, " || days=""
printf "%s%02d:%02d:%02d\\n" "$days" "$hrs" "$mins" "$secs"
}
echo "Blocking: ${domains}"
echo "Queries: ${queries}"
# Set Color Codes
coltable="/opt/pihole/COL_TABLE"
if [[ -f "${coltable}" ]]; then
source ${coltable}
else
COL_NC=""
COL_DARK_GRAY=""
COL_LIGHT_GREEN=""
COL_LIGHT_BLUE=""
COL_LIGHT_RED=""
COL_YELLOW=""
COL_LIGHT_RED=""
COL_URG_RED=""
fi
echo "Pi-holed: ${blocked} (${percentage}%)"
# Get RPi throttle state (RPi 3B only) & model number, or OS distro info
if command -v vcgencmd &> /dev/null; then
local sys_throttle_raw
local sys_rev_raw
sleep 5
done
sys_throttle_raw=$(vgt=$(sudo vcgencmd get_throttled); echo "${vgt##*x}")
# Active Throttle Notice: https://bit.ly/2gnunOo
if [[ "$sys_throttle_raw" != "0" ]]; then
case "$sys_throttle_raw" in
*0001) thr_type="${COL_YELLOW}Under Voltage";;
*0002) thr_type="${COL_LIGHT_BLUE}Arm Freq Cap";;
*0003) thr_type="${COL_YELLOW}UV${COL_DARK_GRAY},${COL_NC} ${COL_LIGHT_BLUE}AFC";;
*0004) thr_type="${COL_LIGHT_RED}Throttled";;
*0005) thr_type="${COL_YELLOW}UV${COL_DARK_GRAY},${COL_NC} ${COL_LIGHT_RED}TT";;
*0006) thr_type="${COL_LIGHT_BLUE}AFC${COL_DARK_GRAY},${COL_NC} ${COL_LIGHT_RED}TT";;
*0007) thr_type="${COL_YELLOW}UV${COL_DARK_GRAY},${COL_NC} ${COL_LIGHT_BLUE}AFC${COL_DARK_GRAY},${COL_NC} ${COL_LIGHT_RED}TT";;
esac
[[ -n "$thr_type" ]] && sys_throttle="$thr_type${COL_DARK_GRAY}"
fi
sys_rev_raw=$(awk '/Revision/ {print $3}' < /proc/cpuinfo)
case "$sys_rev_raw" in
000[2-6]) sys_model=" 1, Model B";; # 256MB
000[7-9]) sys_model=" 1, Model A";; # 256MB
000d|000e|000f) sys_model=" 1, Model B";; # 512MB
0010|0013) sys_model=" 1, Model B+";; # 512MB
0012|0015) sys_model=" 1, Model A+";; # 256MB
a0104[0-1]|a21041|a22042) sys_model=" 2, Model B";; # 1GB
900021) sys_model=" 1, Model A+";; # 512MB
900032) sys_model=" 1, Model B+";; # 512MB
90009[2-3]|920093) sys_model=" Zero";; # 512MB
9000c1) sys_model=" Zero W";; # 512MB
a02082|a[2-3]2082) sys_model=" 3, Model B";; # 1GB
a020d3) sys_model=" 3, Model B+";; # 1GB
*) sys_model="";;
esac
sys_type="Raspberry Pi$sys_model"
else
source "/etc/os-release"
CODENAME=$(sed 's/[()]//g' <<< "${VERSION/* /}")
sys_type="${NAME/ */} ${CODENAME^} $VERSION_ID"
fi
# Get core count
sys_cores=$(grep -c "^processor" /proc/cpuinfo)
# Test existence of clock speed file for ARM CPU
if [[ -f "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" ]]; then
scaling_freq_file="/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"
fi
# Test existence of temperature file
if [[ -f "/sys/class/thermal/thermal_zone0/temp" ]]; then
temp_file="/sys/class/thermal/thermal_zone0/temp"
elif [[ -f "/sys/class/hwmon/hwmon0/temp1_input" ]]; then
temp_file="/sys/class/hwmon/hwmon0/temp1_input"
else
temp_file=""
fi
# Test existence of setupVars config
if [[ -f "/etc/pihole/setupVars.conf" ]]; then
setupVars="/etc/pihole/setupVars.conf"
fi
}
displayHelp() {
cat << EOM
::: Displays stats about your piHole!
:::
::: Usage: sudo pihole -c [optional:-j]
::: Note: If no option is passed, then stats are displayed on screen, updated every 5 seconds
:::
::: Options:
::: -j, --json output stats as JSON formatted string
::: -h, --help display this help text
EOM
exit 0
get_sys_stats() {
local ph_ver_raw
local cpu_raw
local ram_raw
local disk_raw
# Update every 12 refreshes (Def: every 60s)
count=$((count+1))
if [[ "$count" == "1" ]] || (( "$count" % 12 == 0 )); then
# Do not source setupVars if file does not exist
[[ -n "$setupVars" ]] && source "$setupVars"
mapfile -t ph_ver_raw < <(pihole -v -c 2> /dev/null | sed -n 's/^.* v/v/p')
if [[ -n "${ph_ver_raw[0]}" ]]; then
ph_core_ver="${ph_ver_raw[0]}"
if [[ ${#ph_ver_raw[@]} -eq 2 ]]; then
# AdminLTE not installed
ph_lte_ver="(not installed)"
ph_ftl_ver="${ph_ver_raw[1]}"
else
ph_lte_ver="${ph_ver_raw[1]}"
ph_ftl_ver="${ph_ver_raw[2]}"
fi
else
ph_core_ver="-1"
fi
sys_name=$(hostname)
[[ -n "$TEMPERATUREUNIT" ]] && temp_unit="${TEMPERATUREUNIT^^}" || temp_unit="C"
# Get storage stats for partition mounted on /
read -r -a disk_raw <<< "$(df -B1 / 2> /dev/null | awk 'END{ print $3,$2,$5 }')"
disk_used="${disk_raw[0]}"
disk_total="${disk_raw[1]}"
disk_perc="${disk_raw[2]}"
net_gateway=$(ip route | grep default | cut -d ' ' -f 3 | head -n 1)
# Get DHCP stats, if feature is enabled
if [[ "$DHCP_ACTIVE" == "true" ]]; then
ph_dhcp_max=$(( ${DHCP_END##*.} - ${DHCP_START##*.} + 1 ))
fi
# Get DNS server count
dns_count="0"
[[ -n "${PIHOLE_DNS_1}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_2}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_3}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_4}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_5}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_6}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_7}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_8}" ]] && dns_count=$((dns_count+1))
[[ -n "${PIHOLE_DNS_9}" ]] && dns_count="$dns_count+"
fi
# Get screen size
read -r -a scr_size <<< "$(stty size 2>/dev/null || echo 24 80)"
scr_lines="${scr_size[0]}"
scr_cols="${scr_size[1]}"
# Determine Chronometer size behavior
if [[ "$scr_cols" -ge 58 ]]; then
chrono_width="large"
elif [[ "$scr_cols" -gt 40 ]]; then
chrono_width="medium"
else
chrono_width="small"
fi
# Determine max length of divider string
scr_line_len=$(( scr_cols - 2 ))
[[ "$scr_line_len" -ge 58 ]] && scr_line_len="58"
scr_line_str=$(printf "%${scr_line_len}s")
scr_line_str="${scr_line_str// /—}"
sys_uptime=$(hrSecs "$(cut -d. -f1 /proc/uptime)")
sys_loadavg=$(cut -d " " -f1,2,3 /proc/loadavg)
# Get CPU usage, only counting processes over 1% as active
# shellcheck disable=SC2009
cpu_raw=$(ps -eo pcpu,rss --no-headers | grep -E -v " 0")
cpu_tasks=$(wc -l <<< "$cpu_raw")
cpu_taskact=$(sed -r "/(^ 0.)/d" <<< "$cpu_raw" | wc -l)
cpu_perc=$(awk '{sum+=$1} END {printf "%.0f\n", sum/'"$sys_cores"'}' <<< "$cpu_raw")
# Get CPU clock speed
if [[ -n "$scaling_freq_file" ]]; then
cpu_mhz=$(( $(< /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) / 1000 ))
else
cpu_mhz=$(lscpu | awk -F ":" '/MHz/ {print $2;exit}')
cpu_mhz=$(printf "%.0f" "${cpu_mhz//[[:space:]]/}")
fi
# Determine whether to display CPU clock speed as MHz or GHz
if [[ -n "$cpu_mhz" ]]; then
[[ "$cpu_mhz" -le "999" ]] && cpu_freq="$cpu_mhz MHz" || cpu_freq="$(printf "%.1f" $(calcFunc "$cpu_mhz"/1000)) GHz"
[[ "${cpu_freq}" == *".0"* ]] && cpu_freq="${cpu_freq/.0/}"
fi
# Determine color for temperature
if [[ -n "$temp_file" ]]; then
if [[ "$temp_unit" == "C" ]]; then
cpu_temp=$(printf "%.0fc\\n" "$(calcFunc "$(< $temp_file) / 1000")")
case "${cpu_temp::-1}" in
-*|[0-9]|[1-3][0-9]) cpu_col="$COL_LIGHT_BLUE";;
4[0-9]) cpu_col="";;
5[0-9]) cpu_col="$COL_YELLOW";;
6[0-9]) cpu_col="$COL_LIGHT_RED";;
*) cpu_col="$COL_URG_RED";;
esac
# $COL_NC$COL_DARK_GRAY is needed for $COL_URG_RED
cpu_temp_str=" @ $cpu_col$cpu_temp$COL_NC$COL_DARK_GRAY"
elif [[ "$temp_unit" == "F" ]]; then
cpu_temp=$(printf "%.0ff\\n" "$(calcFunc "($(< $temp_file) / 1000) * 9 / 5 + 32")")
case "${cpu_temp::-1}" in
-*|[0-9]|[0-9][0-9]) cpu_col="$COL_LIGHT_BLUE";;
1[0-1][0-9]) cpu_col="";;
1[2-3][0-9]) cpu_col="$COL_YELLOW";;
1[4-5][0-9]) cpu_col="$COL_LIGHT_RED";;
*) cpu_col="$COL_URG_RED";;
esac
cpu_temp_str=" @ $cpu_col$cpu_temp$COL_NC$COL_DARK_GRAY"
else
cpu_temp_str=$(printf " @ %.0fk\\n" "$(calcFunc "($(< $temp_file) / 1000) + 273.15")")
fi
else
cpu_temp_str=""
fi
read -r -a ram_raw <<< "$(awk '/MemTotal:/{total=$2} /MemFree:/{free=$2} /Buffers:/{buffers=$2} /^Cached:/{cached=$2} END {printf "%.0f %.0f %.0f", (total-free-buffers-cached)*100/total, (total-free-buffers-cached)*1024, total*1024}' /proc/meminfo)"
ram_perc="${ram_raw[0]}"
ram_used="${ram_raw[1]}"
ram_total="${ram_raw[2]}"
if [[ "$(pihole status web 2> /dev/null)" == "1" ]]; then
ph_status="${COL_LIGHT_GREEN}Active"
else
ph_status="${COL_LIGHT_RED}Offline"
fi
if [[ "$DHCP_ACTIVE" == "true" ]]; then
local ph_dhcp_range
ph_dhcp_range=$(seq -s "|" -f "${DHCP_START%.*}.%g" "${DHCP_START##*.}" "${DHCP_END##*.}")
# Count dynamic leases from available range, and not static leases
ph_dhcp_num=$(grep -cE "$ph_dhcp_range" "/etc/pihole/dhcp.leases")
ph_dhcp_percent=$(( ph_dhcp_num * 100 / ph_dhcp_max ))
fi
}
get_ftl_stats() {
local stats_raw
mapfile -t stats_raw < <(pihole-FTL "stats")
domains_being_blocked_raw="${stats_raw[0]#* }"
dns_queries_today_raw="${stats_raw[1]#* }"
ads_blocked_today_raw="${stats_raw[2]#* }"
ads_percentage_today_raw="${stats_raw[3]#* }"
queries_forwarded_raw="${stats_raw[5]#* }"
queries_cached_raw="${stats_raw[6]#* }"
# Only retrieve these stats when not called from jsonFunc
if [[ -z "$1" ]]; then
local top_ad_raw
local top_domain_raw
local top_client_raw
domains_being_blocked=$(printf "%.0f\\n" "${domains_being_blocked_raw}" 2> /dev/null)
dns_queries_today=$(printf "%.0f\\n" "${dns_queries_today_raw}")
ads_blocked_today=$(printf "%.0f\\n" "${ads_blocked_today_raw}")
ads_percentage_today=$(printf "%'.0f\\n" "${ads_percentage_today_raw}")
queries_cached_percentage=$(printf "%.0f\\n" "$(calcFunc "$queries_cached_raw * 100 / ( $queries_forwarded_raw + $queries_cached_raw )")")
recent_blocked=$(pihole-FTL recentBlocked)
read -r -a top_ad_raw <<< "$(pihole-FTL "top-ads (1)")"
read -r -a top_domain_raw <<< "$(pihole-FTL "top-domains (1)")"
read -r -a top_client_raw <<< "$(pihole-FTL "top-clients (1)")"
top_ad="${top_ad_raw[2]}"
top_domain="${top_domain_raw[2]}"
if [[ "${top_client_raw[3]}" ]]; then
top_client="${top_client_raw[3]}"
else
top_client="${top_client_raw[2]}"
fi
fi
}
get_strings() {
# Expand or contract strings depending on screen size
if [[ "$chrono_width" == "large" ]]; then
phc_str=" ${COL_DARK_GRAY}Core"
lte_str=" ${COL_DARK_GRAY}Web"
ftl_str=" ${COL_DARK_GRAY}FTL"
api_str="${COL_LIGHT_RED}API Offline"
host_info="$sys_type"
sys_info="$sys_throttle"
sys_info2="Active: $cpu_taskact of $cpu_tasks tasks"
used_str="Used: "
leased_str="Leased: "
domains_being_blocked=$(printf "%'.0f" "$domains_being_blocked")
ads_blocked_today=$(printf "%'.0f" "$ads_blocked_today")
dns_queries_today=$(printf "%'.0f" "$dns_queries_today")
ph_info="Blocking: $domains_being_blocked sites"
total_str="Total: "
else
phc_str=" ${COL_DARK_GRAY}Core"
lte_str=" ${COL_DARK_GRAY}Web"
ftl_str=" ${COL_DARK_GRAY}FTL"
api_str="${COL_LIGHT_RED}API Down"
ph_info="$domains_being_blocked blocked"
fi
[[ "$sys_cores" -ne 1 ]] && sys_cores_txt="${sys_cores}x "
cpu_info="$sys_cores_txt$cpu_freq$cpu_temp_str"
ram_info="$used_str$(hrBytes "$ram_used") of $(hrBytes "$ram_total")"
disk_info="$used_str$(hrBytes "$disk_used") of $(hrBytes "$disk_total")"
lan_info="Gateway: $net_gateway"
dhcp_info="$leased_str$ph_dhcp_num of $ph_dhcp_max"
ads_info="$total_str$ads_blocked_today of $dns_queries_today"
dns_info="$dns_count DNS servers"
[[ "$recent_blocked" == "0" ]] && recent_blocked="${COL_LIGHT_RED}FTL offline${COL_NC}"
}
chronoFunc() {
local extra_arg="$1"
local extra_value="$2"
get_init_stats
for (( ; ; )); do
get_sys_stats
get_ftl_stats
get_strings
# Strip excess development version numbers
if [[ "$ph_core_ver" != "-1" ]]; then
phc_ver_str="$phc_str: ${ph_core_ver%-*}${COL_NC}"
lte_ver_str="$lte_str: ${ph_lte_ver%-*}${COL_NC}"
ftl_ver_str="$ftl_str: ${ph_ftl_ver%-*}${COL_NC}"
else
phc_ver_str="$phc_str: $api_str${COL_NC}"
fi
# Get refresh number
if [[ "${extra_arg}" = "refresh" ]]; then
num="${extra_value}"
num_str="Refresh set for every $num seconds"
else
num_str=""
fi
clear
# Remove exit message heading on third refresh
if [[ "$count" -le 2 ]] && [[ "${extra_arg}" != "exit" ]]; then
echo -e " ${COL_LIGHT_GREEN}Pi-hole Chronometer${COL_NC}
$num_str
${COL_LIGHT_RED}Press Ctrl-C to exit${COL_NC}
${COL_DARK_GRAY}$scr_line_str${COL_NC}"
else
echo -e "|¯¯¯(¯)_|¯|_ ___|¯|___$phc_ver_str\\n| ¯_/¯|_| ' \\/ _ \\ / -_)$lte_ver_str\\n|_| |_| |_||_\\___/_\\___|$ftl_ver_str\\n ${COL_DARK_GRAY}$scr_line_str${COL_NC}"
fi
printFunc " Hostname: " "$sys_name" "$host_info"
printFunc " Uptime: " "$sys_uptime" "$sys_info"
printFunc " Task Load: " "$sys_loadavg" "$sys_info2"
printFunc " CPU usage: " "$cpu_perc%" "$cpu_info"
printFunc " RAM usage: " "$ram_perc%" "$ram_info"
printFunc " HDD usage: " "$disk_perc" "$disk_info"
if [[ "$scr_lines" -gt 17 ]] && [[ "$chrono_width" != "small" ]]; then
printFunc " LAN addr: " "${IPV4_ADDRESS/\/*/}" "$lan_info"
fi
if [[ "$DHCP_ACTIVE" == "true" ]]; then
printFunc "DHCP usage: " "$ph_dhcp_percent%" "$dhcp_info"
fi
printFunc " Pi-hole: " "$ph_status" "$ph_info"
printFunc " Ads Today: " "$ads_percentage_today%" "$ads_info"
printFunc "Local Qrys: " "$queries_cached_percentage%" "$dns_info"
printFunc " Blocked: " "$recent_blocked"
printFunc "Top Advert: " "$top_ad"
# Provide more stats on screens with more lines
if [[ "$scr_lines" -eq 17 ]]; then
if [[ "$DHCP_ACTIVE" == "true" ]]; then
printFunc "Top Domain: " "$top_domain" "last"
else
print_client="true"
fi
else
print_client="true"
fi
if [[ -n "$print_client" ]]; then
printFunc "Top Domain: " "$top_domain"
printFunc "Top Client: " "$top_client" "last"
fi
# Handle exit/refresh options
if [[ "${extra_arg}" == "exit" ]]; then
exit 0
else
if [[ "${extra_arg}" == "refresh" ]]; then
sleep "$num"
else
sleep 5
fi
fi
done
}
jsonFunc() {
get_ftl_stats "json"
echo "{\"domains_being_blocked\":${domains_being_blocked_raw},\"dns_queries_today\":${dns_queries_today_raw},\"ads_blocked_today\":${ads_blocked_today_raw},\"ads_percentage_today\":${ads_percentage_today_raw}}"
}
helpFunc() {
if [[ "$1" == "?" ]]; then
echo "Unknown option. Please view 'pihole -c --help' for more information"
else
echo "Usage: pihole -c [options]
Example: 'pihole -c -j'
Calculates stats and displays to an LCD
Options:
-j, --json Output stats as JSON formatted string
-r, --refresh Set update frequency (in seconds)
-e, --exit Output stats and exit without refreshing
-h, --help Display this help text"
fi
exit 0
}
if [[ $# = 0 ]]; then
normalChrono
chronoFunc
fi
for var in "$@"; do
case "$var" in
"-j" | "--json" ) outputJSON;;
"-h" | "--help" ) displayHelp;;
* ) exit 1;;
esac
done
case "$1" in
"-j" | "--json" ) jsonFunc;;
"-h" | "--help" ) helpFunc;;
"-r" | "--refresh" ) chronoFunc refresh "$2";;
"-e" | "--exit" ) chronoFunc exit;;
* ) helpFunc "?";;
esac

View File

@@ -0,0 +1,125 @@
#!/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
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"
sqlite3 "${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"
sqlite3 "${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"
sqlite3 "${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"
sqlite3 "${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"
sqlite3 "${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"
sqlite3 "${database}" < "${scriptPath}/13_to_14.sql"
version=14
fi
}

View File

@@ -0,0 +1,16 @@
.timeout 30000
BEGIN TRANSACTION;
ALTER TABLE client ADD COLUMN date_added INTEGER;
ALTER TABLE client ADD COLUMN date_modified INTEGER;
ALTER TABLE client ADD COLUMN comment TEXT;
CREATE TRIGGER tr_client_update AFTER UPDATE ON client
BEGIN
UPDATE client SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE id = NEW.id;
END;
UPDATE info SET value = 11 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,19 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
UPDATE "group" SET name = 'Default' WHERE id = 0;
UPDATE "group" SET description = 'The default group' WHERE id = 0;
DROP TRIGGER IF EXISTS tr_group_zero;
CREATE TRIGGER tr_group_zero AFTER DELETE ON "group"
BEGIN
INSERT OR IGNORE INTO "group" (id,enabled,name,description) VALUES (0,1,'Default','The default group');
END;
UPDATE info SET value = 12 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,18 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
ALTER TABLE adlist ADD COLUMN date_updated INTEGER;
DROP TRIGGER tr_adlist_update;
CREATE TRIGGER tr_adlist_update AFTER UPDATE OF address,enabled,comment ON adlist
BEGIN
UPDATE adlist SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE id = NEW.id;
END;
UPDATE info SET value = 13 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,13 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
ALTER TABLE adlist ADD COLUMN number INTEGER NOT NULL DEFAULT 0;
ALTER TABLE adlist ADD COLUMN invalid_domains INTEGER NOT NULL DEFAULT 0;
ALTER TABLE adlist ADD COLUMN status INTEGER NOT NULL DEFAULT 0;
UPDATE info SET value = 14 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,14 @@
.timeout 30000
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))
);
UPDATE info SET value = 2 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,65 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
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)
);
INSERT INTO regex_blacklist_by_group SELECT * FROM regex_by_group;
DROP TABLE regex_by_group;
DROP VIEW vw_regex;
DROP TRIGGER tr_regex_update;
CREATE VIEW vw_regex_blacklist AS SELECT DISTINCT domain
FROM regex_blacklist
LEFT JOIN regex_blacklist_by_group ON regex_blacklist_by_group.regex_blacklist_id = regex_blacklist.id
LEFT JOIN "group" ON "group".id = regex_blacklist_by_group.group_id
WHERE regex_blacklist.enabled = 1 AND (regex_blacklist_by_group.group_id IS NULL OR "group".enabled = 1)
ORDER BY regex_blacklist.id;
CREATE TRIGGER tr_regex_blacklist_update AFTER UPDATE ON regex_blacklist
BEGIN
UPDATE regex_blacklist SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE domain = NEW.domain;
END;
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
);
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)
);
CREATE VIEW vw_regex_whitelist AS SELECT DISTINCT domain
FROM regex_whitelist
LEFT JOIN regex_whitelist_by_group ON regex_whitelist_by_group.regex_whitelist_id = regex_whitelist.id
LEFT JOIN "group" ON "group".id = regex_whitelist_by_group.group_id
WHERE regex_whitelist.enabled = 1 AND (regex_whitelist_by_group.group_id IS NULL OR "group".enabled = 1)
ORDER BY regex_whitelist.id;
CREATE TRIGGER tr_regex_whitelist_update AFTER UPDATE ON regex_whitelist
BEGIN
UPDATE regex_whitelist SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE domain = NEW.domain;
END;
UPDATE info SET value = 3 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,96 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
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
);
ALTER TABLE whitelist ADD COLUMN type INTEGER;
UPDATE whitelist SET type = 0;
INSERT INTO domainlist (type,domain,enabled,date_added,date_modified,comment)
SELECT type,domain,enabled,date_added,date_modified,comment FROM whitelist;
ALTER TABLE blacklist ADD COLUMN type INTEGER;
UPDATE blacklist SET type = 1;
INSERT INTO domainlist (type,domain,enabled,date_added,date_modified,comment)
SELECT type,domain,enabled,date_added,date_modified,comment FROM blacklist;
ALTER TABLE regex_whitelist ADD COLUMN type INTEGER;
UPDATE regex_whitelist SET type = 2;
INSERT INTO domainlist (type,domain,enabled,date_added,date_modified,comment)
SELECT type,domain,enabled,date_added,date_modified,comment FROM regex_whitelist;
ALTER TABLE regex_blacklist ADD COLUMN type INTEGER;
UPDATE regex_blacklist SET type = 3;
INSERT INTO domainlist (type,domain,enabled,date_added,date_modified,comment)
SELECT type,domain,enabled,date_added,date_modified,comment FROM regex_blacklist;
DROP TABLE whitelist_by_group;
DROP TABLE blacklist_by_group;
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)
);
DROP TRIGGER tr_whitelist_update;
DROP TRIGGER tr_blacklist_update;
DROP TRIGGER tr_regex_whitelist_update;
DROP TRIGGER tr_regex_blacklist_update;
CREATE TRIGGER tr_domainlist_update AFTER UPDATE ON domainlist
BEGIN
UPDATE domainlist SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE domain = NEW.domain;
END;
DROP VIEW vw_whitelist;
CREATE VIEW vw_whitelist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 0
ORDER BY domainlist.id;
DROP VIEW vw_blacklist;
CREATE VIEW vw_blacklist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 1
ORDER BY domainlist.id;
DROP VIEW vw_regex_whitelist;
CREATE VIEW vw_regex_whitelist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 2
ORDER BY domainlist.id;
DROP VIEW vw_regex_blacklist;
CREATE VIEW vw_regex_blacklist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 3
ORDER BY domainlist.id;
UPDATE info SET value = 4 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,38 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
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)
);
DROP VIEW vw_gravity;
CREATE VIEW vw_gravity AS SELECT domain, adlist_by_group.group_id AS group_id
FROM gravity
LEFT JOIN adlist_by_group ON adlist_by_group.adlist_id = gravity.adlist_id
LEFT JOIN adlist ON adlist.id = gravity.adlist_id
LEFT JOIN "group" ON "group".id = adlist_by_group.group_id
WHERE adlist.enabled = 1 AND (adlist_by_group.group_id IS NULL OR "group".enabled = 1);
CREATE TABLE client
(
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)
);
UPDATE info SET value = 5 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,18 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
DROP VIEW vw_adlist;
CREATE VIEW vw_adlist AS SELECT DISTINCT address, adlist.id AS id
FROM adlist
LEFT JOIN adlist_by_group ON adlist_by_group.adlist_id = adlist.id
LEFT JOIN "group" ON "group".id = adlist_by_group.group_id
WHERE adlist.enabled = 1 AND (adlist_by_group.group_id IS NULL OR "group".enabled = 1)
ORDER BY adlist.id;
UPDATE info SET value = 6 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,35 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
INSERT OR REPLACE INTO "group" (id,enabled,name) VALUES (0,1,'Unassociated');
INSERT INTO domainlist_by_group (domainlist_id, group_id) SELECT id, 0 FROM domainlist;
INSERT INTO client_by_group (client_id, group_id) SELECT id, 0 FROM client;
INSERT INTO adlist_by_group (adlist_id, group_id) SELECT id, 0 FROM adlist;
CREATE TRIGGER tr_domainlist_add AFTER INSERT ON domainlist
BEGIN
INSERT INTO domainlist_by_group (domainlist_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_client_add AFTER INSERT ON client
BEGIN
INSERT INTO client_by_group (client_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_adlist_add AFTER INSERT ON adlist
BEGIN
INSERT INTO adlist_by_group (adlist_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_group_zero AFTER DELETE ON "group"
BEGIN
INSERT OR REPLACE INTO "group" (id,enabled,name) VALUES (0,1,'Unassociated');
END;
UPDATE info SET value = 7 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,35 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
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
);
CREATE TRIGGER tr_group_update AFTER UPDATE ON "group"
BEGIN
UPDATE "group" SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE id = NEW.id;
END;
INSERT OR IGNORE INTO "group" (id,enabled,name,description) SELECT id,enabled,name,description FROM "group__";
DROP TABLE "group__";
CREATE TRIGGER tr_group_zero AFTER DELETE ON "group"
BEGIN
INSERT OR IGNORE INTO "group" (id,enabled,name) VALUES (0,1,'Unassociated');
END;
UPDATE info SET value = 8 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,27 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
DROP TRIGGER IF EXISTS tr_group_update;
DROP TRIGGER IF EXISTS tr_group_zero;
PRAGMA legacy_alter_table=ON;
ALTER TABLE "group" RENAME TO "group__";
PRAGMA legacy_alter_table=OFF;
ALTER TABLE "group__" RENAME TO "group";
CREATE TRIGGER tr_group_update AFTER UPDATE ON "group"
BEGIN
UPDATE "group" SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE id = NEW.id;
END;
CREATE TRIGGER tr_group_zero AFTER DELETE ON "group"
BEGIN
INSERT OR IGNORE INTO "group" (id,enabled,name) VALUES (0,1,'Unassociated');
END;
UPDATE info SET value = 9 WHERE property = 'version';
COMMIT;

View File

@@ -0,0 +1,29 @@
.timeout 30000
PRAGMA FOREIGN_KEYS=OFF;
BEGIN TRANSACTION;
DROP TABLE IF EXISTS whitelist;
DROP TABLE IF EXISTS blacklist;
DROP TABLE IF EXISTS regex_whitelist;
DROP TABLE IF EXISTS regex_blacklist;
CREATE TRIGGER tr_domainlist_delete AFTER DELETE ON domainlist
BEGIN
DELETE FROM domainlist_by_group WHERE domainlist_id = OLD.id;
END;
CREATE TRIGGER tr_adlist_delete AFTER DELETE ON adlist
BEGIN
DELETE FROM adlist_by_group WHERE adlist_id = OLD.id;
END;
CREATE TRIGGER tr_client_delete AFTER DELETE ON client
BEGIN
DELETE FROM client_by_group WHERE client_id = OLD.id;
END;
UPDATE info SET value = 10 WHERE property = 'version';
COMMIT;

View File

@@ -1,232 +1,299 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# Whitelists and blacklists domains
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# shellcheck disable=SC1090
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Whitelist and blacklist domains
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# Globals
piholeDir="/etc/pihole"
GRAVITYDB="${piholeDir}/gravity.db"
# Source pihole-FTL from install script
pihole_FTL="${piholeDir}/pihole-FTL.conf"
if [[ -f "${pihole_FTL}" ]]; then
source "${pihole_FTL}"
fi
# Set this only after sourcing pihole-FTL.conf as the gravity database path may
# have changed
gravityDBfile="${GRAVITYDB}"
#globals
basename=pihole
piholeDir=/etc/${basename}
whitelist=${piholeDir}/whitelist.txt
blacklist=${piholeDir}/blacklist.txt
readonly wildcardlist="/etc/dnsmasq.d/03-pihole-wildcard.conf"
reload=false
addmode=true
verbose=true
wildcard=false
web=false
domList=()
domToRemoveList=()
listMain=""
listAlt=""
typeId=""
comment=""
declare -i domaincount
domaincount=0
colfile="/opt/pihole/COL_TABLE"
source ${colfile}
# IDs are hard-wired to domain interpretation in the gravity database scheme
# Clients (including FTL) will read them through the corresponding views
readonly whitelist="0"
readonly blacklist="1"
readonly regex_whitelist="2"
readonly regex_blacklist="3"
GetListnameFromTypeId() {
if [[ "$1" == "${whitelist}" ]]; then
echo "whitelist"
elif [[ "$1" == "${blacklist}" ]]; then
echo "blacklist"
elif [[ "$1" == "${regex_whitelist}" ]]; then
echo "regex whitelist"
elif [[ "$1" == "${regex_blacklist}" ]]; then
echo "regex blacklist"
fi
}
GetListParamFromTypeId() {
if [[ "${typeId}" == "${whitelist}" ]]; then
echo "w"
elif [[ "${typeId}" == "${blacklist}" ]]; then
echo "b"
elif [[ "${typeId}" == "${regex_whitelist}" && "${wildcard}" == true ]]; then
echo "-white-wild"
elif [[ "${typeId}" == "${regex_whitelist}" ]]; then
echo "-white-regex"
elif [[ "${typeId}" == "${regex_blacklist}" && "${wildcard}" == true ]]; then
echo "-wild"
elif [[ "${typeId}" == "${regex_blacklist}" ]]; then
echo "-regex"
fi
}
helpFunc() {
local listname param
if [[ ${listMain} == ${whitelist} ]]; then
letter="w"
word="white"
else
letter="b"
word="black"
listname="$(GetListnameFromTypeId "${typeId}")"
param="$(GetListParamFromTypeId)"
echo "Usage: pihole -${param} [options] <domain> <domain2 ...>
Example: 'pihole -${param} site.com', or 'pihole -${param} site1.com site2.com'
${listname^} one or more domains
Options:
-d, --delmode Remove domain(s) from the ${listname}
-nr, --noreload Update ${listname} without reloading the DNS server
-q, --quiet Make output less verbose
-h, --help Show this help dialog
-l, --list Display all your ${listname}listed domains
--nuke Removes all entries in a list"
exit 0
}
ValidateDomain() {
# Convert to lowercase
domain="${1,,}"
# Check validity of domain (don't check for regex entries)
if [[ "${#domain}" -le 253 ]]; then
if [[ ( "${typeId}" == "${regex_blacklist}" || "${typeId}" == "${regex_whitelist}" ) && "${wildcard}" == false ]]; then
validDomain="${domain}"
else
validDomain=$(grep -P "^((-|_)*[a-z\\d]((-|_)*[a-z\\d])*(-|_)*)(\\.(-|_)*([a-z\\d]((-|_)*[a-z\\d])*))*$" <<< "${domain}") # Valid chars check
validDomain=$(grep -P "^[^\\.]{1,63}(\\.[^\\.]{1,63})*$" <<< "${validDomain}") # Length of each label
fi
fi
cat << EOM
::: Immediately ${word}lists one or more domains in the hosts file
:::
::: Usage: pihole -${letter} domain1 [domain2 ...]
:::
::: Options:
::: -d, --delmode Remove domains from the ${word}list
::: -nr, --noreload Update ${word}list without refreshing dnsmasq
::: -q, --quiet output is less verbose
::: -h, --help Show this help dialog
::: -l, --list Display your ${word}listed domains
EOM
if [[ "${letter}" == "b" ]]; then
echo "::: -wild, --wildcard Add whitecard entry (only blacklist)"
fi
exit 0
if [[ -n "${validDomain}" ]]; then
domList=("${domList[@]}" "${validDomain}")
else
echo -e " ${CROSS} ${domain} is not a valid argument or domain name!"
fi
domaincount=$((domaincount+1))
}
EscapeRegexp() {
# This way we may safely insert an arbitrary
# string in our regular expressions
# Also remove leading "." if present
echo $* | sed 's/^\.*//' | sed "s/[]\.|$(){}?+*^]/\\\\&/g" | sed "s/\\//\\\\\//g"
}
ProcessDomainList() {
for dom in "${domList[@]}"; do
# Format domain into regex filter if requested
if [[ "${wildcard}" == true ]]; then
dom="(\\.|^)${dom//\./\\.}$"
fi
HandleOther(){
# First, convert everything to lowercase
domain=$(sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" <<< "$1")
#check validity of domain
validDomain=$(echo "${domain}" | perl -lne 'print if /(?!.*[^a-z0-9-\.].*)^((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9-]+\.)*[a-z]{2,63}/')
if [ -z "${validDomain}" ]; then
echo "::: $1 is not a valid argument or domain name"
else
domList=("${domList[@]}" ${validDomain})
fi
}
PoplistFile() {
#check whitelist file exists, and if not, create it
if [[ ! -f ${whitelist} ]]; then
touch ${whitelist}
fi
for dom in "${domList[@]}"; do
# Logic : If addmode then add to desired list and remove from the other; if delmode then remove from desired list but do not add to the other
if ${addmode}; then
AddDomain "${dom}" "${listMain}"
RemoveDomain "${dom}" "${listAlt}"
else
RemoveDomain "${dom}" "${listMain}"
fi
done
# Logic: If addmode then add to desired list and remove from the other;
# if delmode then remove from desired list but do not add to the other
if ${addmode}; then
AddDomain "${dom}"
else
RemoveDomain "${dom}"
fi
done
}
AddDomain() {
list="$2"
domain=$(EscapeRegexp "$1")
local domain num requestedListname existingTypeId existingListname
domain="$1"
if [[ "${list}" == "${whitelist}" || "${list}" == "${blacklist}" ]]; then
# Is the domain in the list we want to add it to?
num="$(sqlite3 "${gravityDBfile}" "SELECT COUNT(*) FROM domainlist WHERE domain = '${domain}';")"
requestedListname="$(GetListnameFromTypeId "${typeId}")"
bool=true
#Is the domain in the list we want to add it to?
grep -Ex -q "${domain}" "${list}" > /dev/null 2>&1 || bool=false
if [[ "${num}" -ne 0 ]]; then
existingTypeId="$(sqlite3 "${gravityDBfile}" "SELECT type FROM domainlist WHERE domain = '${domain}';")"
if [[ "${existingTypeId}" == "${typeId}" ]]; then
if [[ "${verbose}" == true ]]; then
echo -e " ${INFO} ${1} already exists in ${requestedListname}, no need to add!"
fi
else
existingListname="$(GetListnameFromTypeId "${existingTypeId}")"
sqlite3 "${gravityDBfile}" "UPDATE domainlist SET type = ${typeId} WHERE domain='${domain}';"
if [[ "${verbose}" == true ]]; then
echo -e " ${INFO} ${1} already exists in ${existingListname}, it has been moved to ${requestedListname}!"
fi
fi
return
fi
if [[ "${bool}" == false ]]; then
#domain not found in the whitelist file, add it!
if [[ "${verbose}" == true ]]; then
echo "::: Adding $1 to $list..."
fi
reload=true
# Add it to the list we want to add it to
echo "$1" >> "${list}"
else
if [[ "${verbose}" == true ]]; then
echo "::: ${1} already exists in ${list}, no need to add!"
fi
fi
elif [[ "${list}" == "${wildcardlist}" ]]; then
source "${piholeDir}/setupVars.conf"
#Remove the /* from the end of the IPv4addr.
IPV4_ADDRESS=${IPV4_ADDRESS%/*}
IPV6_ADDRESS=${IPV6_ADDRESS}
bool=true
#Is the domain in the list?
grep -e "address=\/${domain}\/" "${wildcardlist}" > /dev/null 2>&1 || bool=false
if [[ "${bool}" == false ]]; then
if [[ "${verbose}" == true ]]; then
echo "::: Adding $1 to wildcard blacklist..."
fi
reload=true
echo "address=/$1/${IPV4_ADDRESS}" >> "${wildcardlist}"
if [[ ${#IPV6_ADDRESS} > 0 ]] ; then
echo "address=/$1/${IPV6_ADDRESS}" >> "${wildcardlist}"
fi
else
if [[ "${verbose}" == true ]]; then
echo "::: ${1} already exists in wildcard blacklist, no need to add!"
fi
fi
fi
# Domain not found in the table, add it!
if [[ "${verbose}" == true ]]; then
echo -e " ${INFO} Adding ${domain} to the ${requestedListname}..."
fi
reload=true
# Insert only the domain here. The enabled and date_added fields will be filled
# with their default values (enabled = true, date_added = current timestamp)
if [[ -z "${comment}" ]]; then
sqlite3 "${gravityDBfile}" "INSERT INTO domainlist (domain,type) VALUES ('${domain}',${typeId});"
else
# also add comment when variable has been set through the "--comment" option
sqlite3 "${gravityDBfile}" "INSERT INTO domainlist (domain,type,comment) VALUES ('${domain}',${typeId},'${comment}');"
fi
}
RemoveDomain() {
list="$2"
domain=$(EscapeRegexp "$1")
local domain num requestedListname
domain="$1"
if [[ "${list}" == "${whitelist}" || "${list}" == "${blacklist}" ]]; then
# Is the domain in the list we want to remove it from?
num="$(sqlite3 "${gravityDBfile}" "SELECT COUNT(*) FROM domainlist WHERE domain = '${domain}' AND type = ${typeId};")"
bool=true
#Is it in the list? Logic follows that if its whitelisted it should not be blacklisted and vice versa
grep -Ex -q "${domain}" "${list}" > /dev/null 2>&1 || bool=false
if [[ "${bool}" == true ]]; then
# Remove it from the other one
echo "::: Removing $1 from $list..."
# /I flag: search case-insensitive
sed -i "/${domain}/Id" "${list}"
reload=true
else
if [[ "${verbose}" == true ]]; then
echo "::: ${1} does not exist in ${list}, no need to remove!"
fi
fi
requestedListname="$(GetListnameFromTypeId "${typeId}")"
elif [[ "${list}" == "${wildcardlist}" ]]; then
bool=true
#Is it in the list?
grep -e "address=\/${domain}\/" "${wildcardlist}" > /dev/null 2>&1 || bool=false
if [[ "${bool}" == true ]]; then
# Remove it from the other one
echo "::: Removing $1 from $list..."
# /I flag: search case-insensitive
sed -i "/address=\/${domain}/Id" "${list}"
reload=true
else
if [[ "${verbose}" == true ]]; then
echo "::: ${1} does not exist in ${list}, no need to remove!"
fi
fi
if [[ "${num}" -eq 0 ]]; then
if [[ "${verbose}" == true ]]; then
echo -e " ${INFO} ${domain} does not exist in ${requestedListname}, no need to remove!"
fi
return
fi
}
Reload() {
# Reload hosts file
pihole -g -sd
# Domain found in the table, remove it!
if [[ "${verbose}" == true ]]; then
echo -e " ${INFO} Removing ${domain} from the ${requestedListname}..."
fi
reload=true
# Remove it from the current list
sqlite3 "${gravityDBfile}" "DELETE FROM domainlist WHERE domain = '${domain}' AND type = ${typeId};"
}
Displaylist() {
if [[ ${listMain} == ${whitelist} ]]; then
string="gravity resistant domains"
local count num_pipes domain enabled status nicedate requestedListname
requestedListname="$(GetListnameFromTypeId "${typeId}")"
data="$(sqlite3 "${gravityDBfile}" "SELECT domain,enabled,date_modified FROM domainlist WHERE type = ${typeId};" 2> /dev/null)"
if [[ -z $data ]]; then
echo -e "Not showing empty list"
else
string="domains caught in the sinkhole"
echo -e "Displaying ${requestedListname}:"
count=1
while IFS= read -r line
do
# Count number of pipes seen in this line
# This is necessary because we can only detect the pipe separating the fields
# from the end backwards as the domain (which is the first field) may contain
# pipe symbols as they are perfectly valid regex filter control characters
num_pipes="$(grep -c "^" <<< "$(grep -o "|" <<< "${line}")")"
# Extract domain and enabled status based on the obtained number of pipe characters
domain="$(cut -d'|' -f"-$((num_pipes-1))" <<< "${line}")"
enabled="$(cut -d'|' -f"$((num_pipes))" <<< "${line}")"
datemod="$(cut -d'|' -f"$((num_pipes+1))" <<< "${line}")"
# Translate boolean status into human readable string
if [[ "${enabled}" -eq 1 ]]; then
status="enabled"
else
status="disabled"
fi
# Get nice representation of numerical date stored in database
nicedate=$(date --rfc-2822 -d "@${datemod}")
echo " ${count}: ${domain} (${status}, last modified ${nicedate})"
count=$((count+1))
done <<< "${data}"
fi
verbose=false
echo -e " Displaying $string \n"
count=1
while IFS= read -r RD; do
echo "${count}: ${RD}"
count=$((count+1))
done < "${listMain}"
exit 0;
exit 0;
}
for var in "$@"; do
case "${var}" in
"-w" | "whitelist" ) listMain="${whitelist}"; listAlt="${blacklist}";;
"-b" | "blacklist" ) listMain="${blacklist}"; listAlt="${whitelist}";;
"-wild" | "wildcard" ) listMain="${wildcardlist}";;
"-nr"| "--noreload" ) reload=false;;
"-d" | "--delmode" ) addmode=false;;
"-f" | "--force" ) force=true;;
"-q" | "--quiet" ) verbose=false;;
"-h" | "--help" ) helpFunc;;
"-l" | "--list" ) Displaylist;;
* ) HandleOther "${var}";;
esac
NukeList() {
count=$(sqlite3 "${gravityDBfile}" "SELECT COUNT(1) FROM domainlist WHERE type = ${typeId};")
listname="$(GetListnameFromTypeId "${typeId}")"
if [ "$count" -gt 0 ];then
sqlite3 "${gravityDBfile}" "DELETE FROM domainlist WHERE type = ${typeId};"
echo " ${TICK} Removed ${count} domain(s) from the ${listname}"
else
echo " ${INFO} ${listname} already empty. Nothing to do!"
fi
exit 0;
}
GetComment() {
comment="$1"
if [[ "${comment}" =~ [^a-zA-Z0-9_\#:/\.,\ -] ]]; then
echo " ${CROSS} Found invalid characters in domain comment!"
exit
fi
}
while (( "$#" )); do
case "${1}" in
"-w" | "whitelist" ) typeId=0;;
"-b" | "blacklist" ) typeId=1;;
"--white-regex" | "white-regex" ) typeId=2;;
"--white-wild" | "white-wild" ) typeId=2; wildcard=true;;
"--wild" | "wildcard" ) typeId=3; wildcard=true;;
"--regex" | "regex" ) typeId=3;;
"-nr"| "--noreload" ) reload=false;;
"-d" | "--delmode" ) addmode=false;;
"-q" | "--quiet" ) verbose=false;;
"-h" | "--help" ) helpFunc;;
"-l" | "--list" ) Displaylist;;
"--nuke" ) NukeList;;
"--web" ) web=true;;
"--comment" ) GetComment "${2}"; shift;;
* ) ValidateDomain "${1}";;
esac
shift
done
shift
if [[ $# = 0 ]]; then
helpFunc
if [[ ${domaincount} == 0 ]]; then
helpFunc
fi
PoplistFile
ProcessDomainList
if ${reload}; then
Reload
# Used on web interface
if $web; then
echo "DONE"
fi
if [[ "${reload}" != false ]]; then
pihole restartdns reload-lists
fi

View File

@@ -0,0 +1,23 @@
#!/bin/bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2020 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
#
#
# The pihole disable command has the option to set a specified time before
# blocking is automatically re-enabled.
#
# Present script is responsible for the sleep & re-enable part of the job and
# is automatically terminated if it is still running when pihole is enabled by
# other means.
#
# This ensures that pihole ends up in the correct state after a sequence of
# commands suchs as: `pihole disable 30s; pihole enable; pihole disable`
readonly PI_HOLE_BIN_DIR="/usr/local/bin"
sleep "${1}"
"${PI_HOLE_BIN_DIR}"/pihole enable

View File

@@ -0,0 +1,66 @@
#!/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.
#
# ARP table interaction
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
coltable="/opt/pihole/COL_TABLE"
if [[ -f ${coltable} ]]; then
source ${coltable}
fi
# Determine database location
# Obtain DBFILE=... setting from pihole-FTL.db
# Constructed to return nothing when
# a) the setting is not present in the config file, or
# b) the setting is commented out (e.g. "#DBFILE=...")
FTLconf="/etc/pihole/pihole-FTL.conf"
if [ -e "$FTLconf" ]; then
DBFILE="$(sed -n -e 's/^\s*DBFILE\s*=\s*//p' ${FTLconf})"
fi
# Test for empty string. Use standard path in this case.
if [ -z "$DBFILE" ]; then
DBFILE="/etc/pihole/pihole-FTL.db"
fi
flushARP(){
local output
if [[ "${args[1]}" != "quiet" ]]; then
echo -ne " ${INFO} Flushing network table ..."
fi
# Truncate network_addresses table in pihole-FTL.db
# This needs to be done before we can truncate the network table due to
# foreign key constraints
if ! output=$(sqlite3 "${DBFILE}" "DELETE FROM network_addresses" 2>&1); then
echo -e "${OVER} ${CROSS} Failed to truncate network_addresses table"
echo " Database location: ${DBFILE}"
echo " Output: ${output}"
return 1
fi
# Truncate network table in pihole-FTL.db
if ! output=$(sqlite3 "${DBFILE}" "DELETE FROM network" 2>&1); then
echo -e "${OVER} ${CROSS} Failed to truncate network table"
echo " Database location: ${DBFILE}"
echo " Output: ${output}"
return 1
fi
if [[ "${args[1]}" != "quiet" ]]; then
echo -e "${OVER} ${TICK} Flushed network table"
fi
}
args=("$@")
case "${args[0]}" in
"arpflush" ) flushARP;;
esac

View File

@@ -0,0 +1,201 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Switch Pi-hole subsystems to a different GitHub branch.
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
readonly PI_HOLE_FILES_DIR="/etc/.pihole"
PH_TEST="true"
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
# webInterfaceGitUrl set in basic-install.sh
# webInterfaceDir set in basic-install.sh
# piholeGitURL set in basic-install.sh
# is_repo() sourced from basic-install.sh
# setupVars set in basic-install.sh
# check_download_exists sourced from basic-install.sh
# fully_fetch_repo sourced from basic-install.sh
# get_available_branches sourced from basic-install.sh
# fetch_checkout_pull_branch sourced from basic-install.sh
# checkout_pull_branch sourced from basic-install.sh
source "${setupVars}"
warning1() {
echo " Please note that changing branches severely alters your Pi-hole subsystems"
echo " Features that work on the master branch, may not on a development branch"
echo -e " ${COL_LIGHT_RED}This feature is NOT supported unless a Pi-hole developer explicitly asks!${COL_NC}"
read -r -p " Have you read and understood this? [y/N] " response
case "${response}" in
[yY][eE][sS]|[yY])
echo ""
return 0
;;
*)
echo -e "\\n ${INFO} Branch change has been canceled"
return 1
;;
esac
}
checkout() {
local corebranches
local webbranches
# Check if FTL is installed - do this early on as FTL is a hard dependency for Pi-hole
local funcOutput
funcOutput=$(get_binary_name) #Store output of get_binary_name here
local binary
binary="pihole-FTL${funcOutput##*pihole-FTL}" #binary name will be the last line of the output of get_binary_name (it always begins with pihole-FTL)
# Avoid globbing
set -f
# This is unlikely
if ! is_repo "${PI_HOLE_FILES_DIR}" ; then
echo -e " ${COL_LIGHT_RED}Error: Core Pi-hole repo is missing from system!"
echo -e " Please re-run install script from https://github.com/pi-hole/pi-hole${COL_NC}"
exit 1;
fi
if [[ "${INSTALL_WEB_INTERFACE}" == "true" ]]; then
if ! is_repo "${webInterfaceDir}" ; then
echo -e " ${COL_LIGHT_RED}Error: Web Admin repo is missing from system!"
echo -e " Please re-run install script from https://github.com/pi-hole/pi-hole${COL_NC}"
exit 1;
fi
fi
if [[ -z "${1}" ]]; then
echo -e " ${COL_LIGHT_RED}Invalid option${COL_NC}"
echo -e " Try 'pihole checkout --help' for more information."
exit 1
fi
if ! warning1 ; then
exit 1
fi
if [[ "${1}" == "dev" ]] ; then
# Shortcut to check out development branches
echo -e " ${INFO} Shortcut \"dev\" detected - checking out development / devel branches..."
echo ""
echo -e " ${INFO} Pi-hole Core"
fetch_checkout_pull_branch "${PI_HOLE_FILES_DIR}" "development" || { echo " ${CROSS} Unable to pull Core development branch"; exit 1; }
if [[ "${INSTALL_WEB_INTERFACE}" == "true" ]]; then
echo ""
echo -e " ${INFO} Web interface"
fetch_checkout_pull_branch "${webInterfaceDir}" "devel" || { echo " ${CROSS} Unable to pull Web development branch"; exit 1; }
fi
#echo -e " ${TICK} Pi-hole Core"
local path
path="development/${binary}"
echo "development" > /etc/pihole/ftlbranch
chmod 644 /etc/pihole/ftlbranch
elif [[ "${1}" == "master" ]] ; then
# Shortcut to check out master branches
echo -e " ${INFO} Shortcut \"master\" detected - checking out master branches..."
echo -e " ${INFO} Pi-hole core"
fetch_checkout_pull_branch "${PI_HOLE_FILES_DIR}" "master" || { echo " ${CROSS} Unable to pull Core master branch"; exit 1; }
if [[ ${INSTALL_WEB_INTERFACE} == "true" ]]; then
echo -e " ${INFO} Web interface"
fetch_checkout_pull_branch "${webInterfaceDir}" "master" || { echo " ${CROSS} Unable to pull Web master branch"; exit 1; }
fi
#echo -e " ${TICK} Web Interface"
local path
path="master/${binary}"
echo "master" > /etc/pihole/ftlbranch
chmod 644 /etc/pihole/ftlbranch
elif [[ "${1}" == "core" ]] ; then
str="Fetching branches from ${piholeGitUrl}"
echo -ne " ${INFO} $str"
if ! fully_fetch_repo "${PI_HOLE_FILES_DIR}" ; then
echo -e "${OVER} ${CROSS} $str"
exit 1
fi
corebranches=($(get_available_branches "${PI_HOLE_FILES_DIR}"))
if [[ "${corebranches[*]}" == *"master"* ]]; then
echo -e "${OVER} ${TICK} $str"
echo -e " ${INFO} ${#corebranches[@]} branches available for Pi-hole Core"
else
# Print STDERR output from get_available_branches
echo -e "${OVER} ${CROSS} $str\\n\\n${corebranches[*]}"
exit 1
fi
echo ""
# Have the user choose the branch they want
if ! (for e in "${corebranches[@]}"; do [[ "$e" == "${2}" ]] && exit 0; done); then
echo -e " ${INFO} Requested branch \"${2}\" is not available"
echo -e " ${INFO} Available branches for Core are:"
for e in "${corebranches[@]}"; do echo " - $e"; done
exit 1
fi
checkout_pull_branch "${PI_HOLE_FILES_DIR}" "${2}"
elif [[ "${1}" == "web" ]] && [[ "${INSTALL_WEB_INTERFACE}" == "true" ]] ; then
str="Fetching branches from ${webInterfaceGitUrl}"
echo -ne " ${INFO} $str"
if ! fully_fetch_repo "${webInterfaceDir}" ; then
echo -e "${OVER} ${CROSS} $str"
exit 1
fi
webbranches=($(get_available_branches "${webInterfaceDir}"))
if [[ "${webbranches[*]}" == *"master"* ]]; then
echo -e "${OVER} ${TICK} $str"
echo -e " ${INFO} ${#webbranches[@]} branches available for Web Admin"
else
# Print STDERR output from get_available_branches
echo -e "${OVER} ${CROSS} $str\\n\\n${webbranches[*]}"
exit 1
fi
echo ""
# Have the user choose the branch they want
if ! (for e in "${webbranches[@]}"; do [[ "$e" == "${2}" ]] && exit 0; done); then
echo -e " ${INFO} Requested branch \"${2}\" is not available"
echo -e " ${INFO} Available branches for Web Admin are:"
for e in "${webbranches[@]}"; do echo " - $e"; done
exit 1
fi
checkout_pull_branch "${webInterfaceDir}" "${2}"
elif [[ "${1}" == "ftl" ]] ; then
local path
path="${2}/${binary}"
if check_download_exists "$path"; then
echo " ${TICK} Branch ${2} exists"
echo "${2}" > /etc/pihole/ftlbranch
chmod 644 /etc/pihole/ftlbranch
FTLinstall "${binary}"
restart_service pihole-FTL
enable_service pihole-FTL
else
echo " ${CROSS} Requested branch \"${2}\" is not available"
ftlbranches=( $(git ls-remote https://github.com/pi-hole/ftl | grep 'heads' | sed 's/refs\/heads\///;s/ //g' | awk '{print $2}') )
echo -e " ${INFO} Available branches for FTL are:"
for e in "${ftlbranches[@]}"; do echo " - $e"; done
exit 1
fi
else
echo -e " ${INFO} Requested option \"${1}\" is not available"
exit 1
fi
# Force updating everything
if [[ ! "${1}" == "web" && ! "${1}" == "ftl" ]]; then
echo -e " ${INFO} Running installer to upgrade your installation"
if "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh" --unattended; then
exit 0
else
echo -e " ${COL_LIGHT_RED} Error: Unable to complete update, please contact support${COL_NC}"
exit 1
fi
fi
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,20 +1,70 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# Flushes /var/log/pihole.log
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# Flushes Pi-hole's log file
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
echo -n "::: Flushing /var/log/pihole.log ..."
# Test if logrotate is available on this system
if command -v /usr/sbin/logrotate &> /dev/null; then
/usr/sbin/logrotate --force /etc/pihole/logrotate
else
echo " " > /var/log/pihole.log
colfile="/opt/pihole/COL_TABLE"
source ${colfile}
# Determine database location
# Obtain DBFILE=... setting from pihole-FTL.db
# Constructed to return nothing when
# a) the setting is not present in the config file, or
# b) the setting is commented out (e.g. "#DBFILE=...")
FTLconf="/etc/pihole/pihole-FTL.conf"
if [ -e "$FTLconf" ]; then
DBFILE="$(sed -n -e 's/^\s*DBFILE\s*=\s*//p' ${FTLconf})"
fi
# Test for empty string. Use standard path in this case.
if [ -z "$DBFILE" ]; then
DBFILE="/etc/pihole/pihole-FTL.db"
fi
if [[ "$@" != *"quiet"* ]]; then
echo -ne " ${INFO} Flushing /var/log/pihole.log ..."
fi
if [[ "$@" == *"once"* ]]; then
# Nightly logrotation
if command -v /usr/sbin/logrotate >/dev/null; then
# Logrotate once
/usr/sbin/logrotate --force /etc/pihole/logrotate
else
# Copy pihole.log over to pihole.log.1
# and empty out pihole.log
# Note that moving the file is not an option, as
# dnsmasq would happily continue writing into the
# moved file (it will have the same file handler)
cp -p /var/log/pihole.log /var/log/pihole.log.1
echo " " > /var/log/pihole.log
chmod 644 /var/log/pihole.log
fi
else
# Manual flushing
if command -v /usr/sbin/logrotate >/dev/null; then
# Logrotate twice to move all data out of sight of FTL
/usr/sbin/logrotate --force /etc/pihole/logrotate; sleep 3
/usr/sbin/logrotate --force /etc/pihole/logrotate
else
# Flush both pihole.log and pihole.log.1 (if existing)
echo " " > /var/log/pihole.log
if [ -f /var/log/pihole.log.1 ]; then
echo " " > /var/log/pihole.log.1
chmod 644 /var/log/pihole.log.1
fi
fi
# Delete most recent 24 hours from FTL's database, leave even older data intact (don't wipe out all history)
deleted=$(sqlite3 "${DBFILE}" "DELETE FROM queries WHERE timestamp >= strftime('%s','now')-86400; select changes() from queries limit 1")
# Restart pihole-FTL to force reloading history
sudo pihole restartdns
fi
if [[ "$@" != *"quiet"* ]]; then
echo -e "${OVER} ${TICK} Flushed /var/log/pihole.log"
echo -e " ${TICK} Deleted ${deleted} queries from database"
fi
echo "... done!"

264
advanced/Scripts/query.sh Executable file
View File

@@ -0,0 +1,264 @@
#!/usr/bin/env bash
# shellcheck disable=SC1090
# Pi-hole: A black hole for Internet advertisements
# (c) 2018 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Query Domain Lists
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# Globals
piholeDir="/etc/pihole"
GRAVITYDB="${piholeDir}/gravity.db"
options="$*"
all=""
exact=""
blockpage=""
matchType="match"
# Source pihole-FTL from install script
pihole_FTL="${piholeDir}/pihole-FTL.conf"
if [[ -f "${pihole_FTL}" ]]; then
source "${pihole_FTL}"
fi
# Set this only after sourcing pihole-FTL.conf as the gravity database path may
# have changed
gravityDBfile="${GRAVITYDB}"
colfile="/opt/pihole/COL_TABLE"
source "${colfile}"
# Scan an array of files for matching strings
scanList(){
# Escape full stops
local domain="${1}" esc_domain="${1//./\\.}" lists="${2}" type="${3:-}"
# Prevent grep from printing file path
cd "$piholeDir" || exit 1
# Prevent grep -i matching slowly: https://bit.ly/2xFXtUX
export LC_CTYPE=C
# /dev/null forces filename to be printed when only one list has been generated
case "${type}" in
"exact" ) grep -i -E -l "(^|(?<!#)\\s)${esc_domain}($|\\s|#)" ${lists} /dev/null 2>/dev/null;;
# Iterate through each regexp and check whether it matches the domainQuery
# If it does, print the matching regexp and continue looping
# Input 1 - regexps | Input 2 - domainQuery
"regex" )
for list in ${lists}; do
if [[ "${domain}" =~ ${list} ]]; then
printf "%b\n" "${list}";
fi
done;;
* ) grep -i "${esc_domain}" ${lists} /dev/null 2>/dev/null;;
esac
}
if [[ "${options}" == "-h" ]] || [[ "${options}" == "--help" ]]; then
echo "Usage: pihole -q [option] <domain>
Example: 'pihole -q -exact domain.com'
Query the adlists for a specified domain
Options:
-exact Search the block lists for exact domain matches
-all Return all query matches within a block list
-h, --help Show this help dialog"
exit 0
fi
# Handle valid options
if [[ "${options}" == *"-bp"* ]]; then
exact="exact"; blockpage=true
else
[[ "${options}" == *"-all"* ]] && all=true
if [[ "${options}" == *"-exact"* ]]; then
exact="exact"; matchType="exact ${matchType}"
fi
fi
# Strip valid options, leaving only the domain and invalid options
# This allows users to place the options before or after the domain
options=$(sed -E 's/ ?-(bp|adlists?|all|exact) ?//g' <<< "${options}")
# Handle remaining options
# If $options contain non ASCII characters, convert to punycode
case "${options}" in
"" ) str="No domain specified";;
*" "* ) str="Unknown query option specified";;
*[![:ascii:]]* ) domainQuery=$(idn2 "${options}");;
* ) domainQuery="${options}";;
esac
if [[ -n "${str:-}" ]]; then
echo -e "${str}${COL_NC}\\nTry 'pihole -q --help' for more information."
exit 1
fi
scanDatabaseTable() {
local domain table type querystr result extra
domain="$(printf "%q" "${1}")"
table="${2}"
type="${3:-}"
# As underscores are legitimate parts of domains, we escape them when using the LIKE operator.
# Underscores are SQLite wildcards matching exactly one character. We obviously want to suppress this
# behavior. The "ESCAPE '\'" clause specifies that an underscore preceded by an '\' should be matched
# as a literal underscore character. We pretreat the $domain variable accordingly to escape underscores.
if [[ "${table}" == "gravity" ]]; then
case "${exact}" in
"exact" ) querystr="SELECT gravity.domain,adlist.address,adlist.enabled FROM gravity LEFT JOIN adlist ON adlist.id = gravity.adlist_id WHERE domain = '${domain}'";;
* ) querystr="SELECT gravity.domain,adlist.address,adlist.enabled FROM gravity LEFT JOIN adlist ON adlist.id = gravity.adlist_id WHERE domain LIKE '%${domain//_/\\_}%' ESCAPE '\\'";;
esac
else
case "${exact}" in
"exact" ) querystr="SELECT domain,enabled FROM domainlist WHERE type = '${type}' AND domain = '${domain}'";;
* ) querystr="SELECT domain,enabled FROM domainlist WHERE type = '${type}' AND domain LIKE '%${domain//_/\\_}%' ESCAPE '\\'";;
esac
fi
# Send prepared query to gravity database
result="$(sqlite3 "${gravityDBfile}" "${querystr}")" 2> /dev/null
if [[ -z "${result}" ]]; then
# Return early when there are no matches in this table
return
fi
if [[ "${table}" == "gravity" ]]; then
echo "${result}"
return
fi
# Mark domain as having been white-/blacklist matched (global variable)
wbMatch=true
# Print table name
if [[ -z "${blockpage}" ]]; then
echo " ${matchType^} found in ${COL_BOLD}exact ${table}${COL_NC}"
fi
# Loop over results and print them
mapfile -t results <<< "${result}"
for result in "${results[@]}"; do
if [[ -n "${blockpage}" ]]; then
echo "π ${result}"
exit 0
fi
domain="${result/|*}"
if [[ "${result#*|}" == "0" ]]; then
extra=" (disabled)"
else
extra=""
fi
echo " ${domain}${extra}"
done
}
scanRegexDatabaseTable() {
local domain list
domain="${1}"
list="${2}"
type="${3:-}"
# Query all regex from the corresponding database tables
mapfile -t regexList < <(sqlite3 "${gravityDBfile}" "SELECT domain FROM domainlist WHERE type = ${type}" 2> /dev/null)
# If we have regexps to process
if [[ "${#regexList[@]}" -ne 0 ]]; then
# Split regexps over a new line
str_regexList=$(printf '%s\n' "${regexList[@]}")
# Check domain against regexps
mapfile -t regexMatches < <(scanList "${domain}" "${str_regexList}" "regex")
# If there were regex matches
if [[ "${#regexMatches[@]}" -ne 0 ]]; then
# Split matching regexps over a new line
str_regexMatches=$(printf '%s\n' "${regexMatches[@]}")
# Form a "matched" message
str_message="${matchType^} found in ${COL_BOLD}regex ${list}${COL_NC}"
# Form a "results" message
str_result="${COL_BOLD}${str_regexMatches}${COL_NC}"
# If we are displaying more than just the source of the block
if [[ -z "${blockpage}" ]]; then
# Set the wildcard match flag
wcMatch=true
# Echo the "matched" message, indented by one space
echo " ${str_message}"
# Echo the "results" message, each line indented by three spaces
# shellcheck disable=SC2001
echo "${str_result}" | sed 's/^/ /'
else
echo "π .wildcard"
exit 0
fi
fi
fi
}
# Scan Whitelist and Blacklist
scanDatabaseTable "${domainQuery}" "whitelist" "0"
scanDatabaseTable "${domainQuery}" "blacklist" "1"
# Scan Regex table
scanRegexDatabaseTable "${domainQuery}" "whitelist" "2"
scanRegexDatabaseTable "${domainQuery}" "blacklist" "3"
# Query block lists
mapfile -t results <<< "$(scanDatabaseTable "${domainQuery}" "gravity")"
# Handle notices
if [[ -z "${wbMatch:-}" ]] && [[ -z "${wcMatch:-}" ]] && [[ -z "${results[*]}" ]]; then
echo -e " ${INFO} No ${exact/t/t }results found for ${COL_BOLD}${domainQuery}${COL_NC} within the block lists"
exit 0
elif [[ -z "${results[*]}" ]]; then
# Result found in WL/BL/Wildcards
exit 0
elif [[ -z "${all}" ]] && [[ "${#results[*]}" -ge 100 ]]; then
echo -e " ${INFO} Over 100 ${exact/t/t }results found for ${COL_BOLD}${domainQuery}${COL_NC}
This can be overridden using the -all option"
exit 0
fi
# Print "Exact matches for" title
if [[ -n "${exact}" ]] && [[ -z "${blockpage}" ]]; then
plural=""; [[ "${#results[*]}" -gt 1 ]] && plural="es"
echo " ${matchType^}${plural} for ${COL_BOLD}${domainQuery}${COL_NC} found in:"
fi
for result in "${results[@]}"; do
match="${result/|*/}"
extra="${result#*|}"
adlistAddress="${extra/|*/}"
extra="${extra#*|}"
if [[ "${extra}" == "0" ]]; then
extra="(disabled)"
else
extra=""
fi
if [[ -n "${blockpage}" ]]; then
echo "0 ${adlistAddress}"
elif [[ -n "${exact}" ]]; then
echo " - ${adlistAddress} ${extra}"
else
if [[ ! "${adlistAddress}" == "${adlistAddress_prev:-}" ]]; then
count=""
echo " ${matchType^} found in ${COL_BOLD}${adlistAddress}${COL_NC}:"
adlistAddress_prev="${adlistAddress}"
fi
: $((count++))
# Print matching domain if $max_count has not been reached
[[ -z "${all}" ]] && max_count="50"
if [[ -z "${all}" ]] && [[ "${count}" -ge "${max_count}" ]]; then
[[ "${count}" -gt "${max_count}" ]] && continue
echo " ${COL_GRAY}Over ${count} results found, skipping rest of file${COL_NC}"
else
echo " ${match} ${extra}"
fi
fi
done
exit 0

View File

@@ -1,42 +1,42 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Automatically configures the Pi to use the 2.8 LCD screen to display stats on it (also works over ssh)
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
############ FUNCTIONS ###########
# Borrowed from adafruit-pitft-helper < borrowed from raspi-config
# https://github.com/adafruit/Adafruit-PiTFT-Helper/blob/master/adafruit-pitft-helper#L324-L334
getInitSys() {
if command -v systemctl > /dev/null && systemctl | grep -q '\-\.mount'; then
SYSTEMD=1
elif [ -f /etc/init.d/cron ] && [ ! -h /etc/init.d/cron ]; then
SYSTEMD=0
else
echo "Unrecognised init system"
return 1
fi
if command -v systemctl > /dev/null && systemctl | grep -q '\-\.mount'; then
SYSTEMD=1
elif [ -f /etc/init.d/cron ] && [ ! -h /etc/init.d/cron ]; then
SYSTEMD=0
else
echo "Unrecognized init system"
return 1
fi
}
# Borrowed from adafruit-pitft-helper:
# https://github.com/adafruit/Adafruit-PiTFT-Helper/blob/master/adafruit-pitft-helper#L274-L285
autoLoginPiToConsole() {
if [ -e /etc/init.d/lightdm ]; then
if [ ${SYSTEMD} -eq 1 ]; then
systemctl set-default multi-user.target
ln -fs /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
else
update-rc.d lightdm disable 2
sed /etc/inittab -i -e "s/1:2345:respawn:\/sbin\/getty --noclear 38400 tty1/1:2345:respawn:\/bin\/login -f pi tty1 <\/dev\/tty1 >\/dev\/tty1 2>&1/"
fi
fi
if [ -e /etc/init.d/lightdm ]; then
if [ ${SYSTEMD} -eq 1 ]; then
systemctl set-default multi-user.target
ln -fs /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
else
update-rc.d lightdm disable 2
sed /etc/inittab -i -e "s/1:2345:respawn:\/sbin\/getty --noclear 38400 tty1/1:2345:respawn:\/bin\/login -f pi tty1 <\/dev\/tty1 >\/dev\/tty1 2>&1/"
fi
fi
}
######### SCRIPT ###########
@@ -70,5 +70,5 @@ setupcon
reboot
# Start showing the stats on the screen by running the command on another tty:
# http://unix.stackexchange.com/questions/170063/start-a-process-on-a-different-tty
# https://unix.stackexchange.com/questions/170063/start-a-process-on-a-different-tty
#setsid sh -c 'exec /usr/local/bin/chronometer.sh <> /dev/tty1 >&0 2>&1'

View File

@@ -1,219 +1,217 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Check Pi-hole core and admin pages versions and determine what
# upgrade (if any) is required. Automatically updates and reinstalls
# application if update is detected.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# Variables
readonly ADMIN_INTERFACE_GIT_URL="https://github.com/pi-hole/AdminLTE.git"
readonly ADMIN_INTERFACE_DIR="/var/www/html/admin"
readonly PI_HOLE_GIT_URL="https://github.com/pi-hole/pi-hole.git"
readonly PI_HOLE_FILES_DIR="/etc/.pihole"
is_repo() {
# Use git to check if directory is currently under VCS, return the value
local directory="${1}"
local curdir
local rc
# shellcheck disable=SC2034
PH_TEST=true
curdir="${PWD}"
cd "${directory}" &> /dev/null || return 1
git status --short &> /dev/null
rc=$?
cd "${curdir}" &> /dev/null || return 1
return "${rc}"
}
# when --check-only is passed to this script, it will not perform the actual update
CHECK_ONLY=false
prep_repo() {
# Prepare directory for local repository building
local directory="${1}"
# shellcheck disable=SC1090
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
# shellcheck disable=SC1091
source "/opt/pihole/COL_TABLE"
rm -rf "${directory}" &> /dev/null
return
}
make_repo() {
# Remove the non-repod interface and clone the interface
local remoteRepo="${2}"
local directory="${1}"
(prep_repo "${directory}" && git clone -q --depth 1 "${remoteRepo}" "${directory}")
return
}
update_repo() {
local directory="${1}"
local curdir
curdir="${PWD}"
cd "${directory}" &> /dev/null || return 1
# Pull the latest commits
# Stash all files not tracked for later retrieval
git stash --all --quiet
# Force a clean working directory for cloning
git clean --force -d
# Fetch latest changes and apply
git pull --quiet
cd "${curdir}" &> /dev/null || return 1
}
getGitFiles() {
# Setup git repos for directory and repository passed
# as arguments 1 and 2
local directory="${1}"
local remoteRepo="${2}"
echo ":::"
echo "::: Checking for existing repository..."
if is_repo "${directory}"; then
echo -n "::: Updating repository in ${directory}..."
update_repo "${directory}" || (echo "*** Error: Could not update local repository. Contact support."; exit 1)
echo " done!"
else
echo -n "::: Cloning ${remoteRepo} into ${directory}..."
make_repo "${directory}" "${remoteRepo}" || (echo "Unable to clone repository, please contact support"; exit 1)
echo " done!"
fi
}
# is_repo() sourced from basic-install.sh
# make_repo() sourced from basic-install.sh
# update_repo() source from basic-install.sh
# getGitFiles() sourced from basic-install.sh
# FTLcheckUpdate() sourced from basic-install.sh
GitCheckUpdateAvail() {
local directory="${1}"
curdir=$PWD;
cd "${directory}"
local directory
directory="${1}"
curdir=$PWD
cd "${directory}" || return
# Fetch latest changes in this repo
git fetch --quiet origin
# Fetch latest changes in this repo
git fetch --quiet origin
# @ alone is a shortcut for HEAD. Older versions of git
# need @{0}
LOCAL="$(git rev-parse @{0})"
# @ alone is a shortcut for HEAD. Older versions of git
# need @{0}
LOCAL="$(git rev-parse "@{0}")"
# The suffix @{upstream} to a branchname
# (short form <branchname>@{u}) refers
# to the branch that the branch specified
# by branchname is set to build on top of#
# (configured with branch.<name>.remote and
# branch.<name>.merge). A missing branchname
# defaults to the current one.
REMOTE="$(git rev-parse @{upstream})"
# The suffix @{upstream} to a branchname
# (short form <branchname>@{u}) refers
# to the branch that the branch specified
# by branchname is set to build on top of#
# (configured with branch.<name>.remote and
# branch.<name>.merge). A missing branchname
# defaults to the current one.
REMOTE="$(git rev-parse "@{upstream}")"
if [[ ${#LOCAL} == 0 ]]; then
echo "::: Error: Local revision could not be obtained, ask Pi-hole support."
echo "::: Additional debugging output:"
git status
exit
fi
if [[ ${#REMOTE} == 0 ]]; then
echo "::: Error: Remote revision could not be obtained, ask Pi-hole support."
echo "::: Additional debugging output:"
git status
exit
fi
# Change back to original directory
cd "${curdir}"
if [[ "${#LOCAL}" == 0 ]]; then
echo -e "\\n ${COL_LIGHT_RED}Error: Local revision could not be obtained, please contact Pi-hole Support"
echo -e " Additional debugging output:${COL_NC}"
git status
exit
fi
if [[ "${#REMOTE}" == 0 ]]; then
echo -e "\\n ${COL_LIGHT_RED}Error: Remote revision could not be obtained, please contact Pi-hole Support"
echo -e " Additional debugging output:${COL_NC}"
git status
exit
fi
if [[ "${LOCAL}" != "${REMOTE}" ]]; then
# Local branch is behind remote branch -> Update
return 0
else
# Local branch is up-to-date or in a situation
# where this updater cannot be used (like on a
# branch that exists only locally)
return 1
fi
# Change back to original directory
cd "${curdir}" || exit
if [[ "${LOCAL}" != "${REMOTE}" ]]; then
# Local branch is behind remote branch -> Update
return 0
else
# Local branch is up-to-date or in a situation
# where this updater cannot be used (like on a
# branch that exists only locally)
return 1
fi
}
main() {
local pihole_version_current
local web_version_current
local basicError="\\n ${COL_LIGHT_RED}Unable to complete update, please contact Pi-hole Support${COL_NC}"
local core_update
local web_update
local FTL_update
#This is unlikely
if ! is_repo "${PI_HOLE_FILES_DIR}" || ! is_repo "${ADMIN_INTERFACE_DIR}" ; then
echo "::: Critical Error: One or more Pi-Hole repos are missing from system!"
echo "::: Please re-run install script from https://github.com/pi-hole/pi-hole"
exit 1;
fi
echo "::: Checking for updates..."
if GitCheckUpdateAvail "${PI_HOLE_FILES_DIR}" ; then
core_update=true
echo "::: Pi-hole Core: update available"
else
core_update=false
echo "::: Pi-hole Core: up to date"
fi
if GitCheckUpdateAvail "${ADMIN_INTERFACE_DIR}" ; then
web_update=true
echo "::: Web Interface: update available"
else
web_update=false
echo "::: Web Interface: up to date"
fi
FTL_update=false
# Logic
# If Core up to date AND web up to date:
# Do nothing
# If Core up to date AND web NOT up to date:
# Pull web repo
# If Core NOT up to date AND web up to date:
# pull pihole repo, run install --unattended -- reconfigure
# if Core NOT up to date AND web NOT up to date:
# pull pihole repo run install --unattended
# shellcheck disable=1090,2154
source "${setupVars}"
if ! ${core_update} && ! ${web_update} ; then
echo ":::"
echo "::: Everything is up to date!"
# This is unlikely
if ! is_repo "${PI_HOLE_FILES_DIR}" ; then
echo -e "\\n ${COL_LIGHT_RED}Error: Core Pi-hole repo is missing from system!"
echo -e " Please re-run install script from https://pi-hole.net${COL_NC}"
exit 1;
fi
echo -e " ${INFO} Checking for updates..."
if GitCheckUpdateAvail "${PI_HOLE_FILES_DIR}" ; then
core_update=true
echo -e " ${INFO} Pi-hole Core:\\t${COL_YELLOW}update available${COL_NC}"
else
core_update=false
echo -e " ${INFO} Pi-hole Core:\\t${COL_LIGHT_GREEN}up to date${COL_NC}"
fi
if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
if ! is_repo "${ADMIN_INTERFACE_DIR}" ; then
echo -e "\\n ${COL_LIGHT_RED}Error: Web Admin repo is missing from system!"
echo -e " Please re-run install script from https://pi-hole.net${COL_NC}"
exit 1;
fi
if GitCheckUpdateAvail "${ADMIN_INTERFACE_DIR}" ; then
web_update=true
echo -e " ${INFO} Web Interface:\\t${COL_YELLOW}update available${COL_NC}"
else
web_update=false
echo -e " ${INFO} Web Interface:\\t${COL_LIGHT_GREEN}up to date${COL_NC}"
fi
fi
local funcOutput
funcOutput=$(get_binary_name) #Store output of get_binary_name here
local binary
binary="pihole-FTL${funcOutput##*pihole-FTL}" #binary name will be the last line of the output of get_binary_name (it always begins with pihole-FTL)
if FTLcheckUpdate "${binary}" > /dev/null; then
FTL_update=true
echo -e " ${INFO} FTL:\\t\\t${COL_YELLOW}update available${COL_NC}"
else
case $? in
1)
echo -e " ${INFO} FTL:\\t\\t${COL_LIGHT_GREEN}up to date${COL_NC}"
;;
2)
echo -e " ${INFO} FTL:\\t\\t${COL_LIGHT_RED}Branch is not available.${COL_NC}\\n\\t\\t\\tUse ${COL_LIGHT_GREEN}pihole checkout ftl [branchname]${COL_NC} to switch to a valid branch."
;;
*)
echo -e " ${INFO} FTL:\\t\\t${COL_LIGHT_RED}Something has gone wrong, contact support${COL_NC}"
esac
FTL_update=false
fi
# Determine FTL branch
local ftlBranch
if [[ -f "/etc/pihole/ftlbranch" ]]; then
ftlBranch=$(</etc/pihole/ftlbranch)
else
ftlBranch="master"
fi
if [[ ! "${ftlBranch}" == "master" && ! "${ftlBranch}" == "development" ]]; then
# Notify user that they are on a custom branch which might mean they they are lost
# behind if a branch was merged to development and got abandoned
printf " %b %bWarning:%b You are using FTL from a custom branch (%s) and might be missing future releases.\\n" "${INFO}" "${COL_LIGHT_RED}" "${COL_NC}" "${ftlBranch}"
fi
if [[ "${core_update}" == false && "${web_update}" == false && "${FTL_update}" == false ]]; then
echo ""
echo -e " ${TICK} Everything is up to date!"
exit 0
fi
if [[ "${CHECK_ONLY}" == true ]]; then
echo ""
exit 0
fi
if [[ "${core_update}" == true ]]; then
echo ""
echo -e " ${INFO} Pi-hole core files out of date, updating local repo."
getGitFiles "${PI_HOLE_FILES_DIR}" "${PI_HOLE_GIT_URL}"
echo -e " ${INFO} If you had made any changes in '/etc/.pihole/', they have been stashed using 'git stash'"
fi
if [[ "${web_update}" == true ]]; then
echo ""
echo -e " ${INFO} Pi-hole Web Admin files out of date, updating local repo."
getGitFiles "${ADMIN_INTERFACE_DIR}" "${ADMIN_INTERFACE_GIT_URL}"
echo -e " ${INFO} If you had made any changes in '/var/www/html/admin/', they have been stashed using 'git stash'"
fi
if [[ "${FTL_update}" == true ]]; then
echo ""
echo -e " ${INFO} FTL out of date, it will be updated by the installer."
fi
if [[ "${FTL_update}" == true || "${core_update}" == true ]]; then
${PI_HOLE_FILES_DIR}/automated\ install/basic-install.sh --reconfigure --unattended || \
echo -e "${basicError}" && exit 1
fi
if [[ "${FTL_update}" == true || "${core_update}" == true || "${web_update}" == true ]]; then
# Force an update of the updatechecker
/opt/pihole/updatecheck.sh
/opt/pihole/updatecheck.sh x remote
echo -e " ${INFO} Local version file information updated."
fi
echo ""
exit 0
elif ! ${core_update} && ${web_update} ; then
echo ":::"
echo "::: Pi-hole Web Admin files out of date"
getGitFiles "${ADMIN_INTERFACE_DIR}" "${ADMIN_INTERFACE_GIT_URL}"
elif ${core_update} && ! ${web_update} ; then
echo ":::"
echo "::: Pi-hole core files out of date"
getGitFiles "${PI_HOLE_FILES_DIR}" "${PI_HOLE_GIT_URL}"
/etc/.pihole/automated\ install/basic-install.sh --reconfigure --unattended || echo "Unable to complete update, contact Pi-hole" && exit 1
elif ${core_update} && ${web_update} ; then
echo ":::"
echo "::: Updating Everything"
getGitFiles "${PI_HOLE_FILES_DIR}" "${PI_HOLE_GIT_URL}"
/etc/.pihole/automated\ install/basic-install.sh --unattended || echo "Unable to complete update, contact Pi-hole" && exit 1
else
echo "*** Update script has malfunctioned, fallthrough reached. Please contact support"
exit 1
fi
if [[ "${web_update}" == true ]]; then
web_version_current="$(/usr/local/bin/pihole version --admin --current)"
echo ":::"
echo "::: Web Admin version is now at ${web_version_current}"
echo "::: If you had made any changes in '/var/www/html/admin/', they have been stashed using 'git stash'"
fi
if [[ "${core_update}" == true ]]; then
pihole_version_current="$(/usr/local/bin/pihole version --pihole --current)"
echo ":::"
echo "::: Pi-hole version is now at ${pihole_version_current}"
echo "::: If you had made any changes in '/etc/.pihole/', they have been stashed using 'git stash'"
fi
echo ""
exit 0
}
if [[ "$1" == "--check-only" ]]; then
CHECK_ONLY=true
fi
main

94
advanced/Scripts/updatecheck.sh Executable file
View File

@@ -0,0 +1,94 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Checks for local or remote versions and branches
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# Credit: https://stackoverflow.com/a/46324904
function json_extract() {
local key=$1
local json=$2
local string_regex='"([^"\]|\\.)*"'
local number_regex='-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?'
local value_regex="${string_regex}|${number_regex}|true|false|null"
local pair_regex="\"${key}\"[[:space:]]*:[[:space:]]*(${value_regex})"
if [[ ${json} =~ ${pair_regex} ]]; then
echo $(sed 's/^"\|"$//g' <<< "${BASH_REMATCH[1]}")
else
return 1
fi
}
function get_local_branch() {
# Return active branch
cd "${1}" 2> /dev/null || return 1
git rev-parse --abbrev-ref HEAD || return 1
}
function get_local_version() {
# Return active branch
cd "${1}" 2> /dev/null || return 1
git describe --long --dirty --tags 2> /dev/null || return 1
}
# Source the setupvars config file
# shellcheck disable=SC1091
. /etc/pihole/setupVars.conf
if [[ "$2" == "remote" ]]; then
if [[ "$3" == "reboot" ]]; then
sleep 30
fi
GITHUB_VERSION_FILE="/etc/pihole/GitHubVersions"
GITHUB_CORE_VERSION="$(json_extract tag_name "$(curl -s 'https://api.github.com/repos/pi-hole/pi-hole/releases/latest' 2> /dev/null)")"
echo -n "${GITHUB_CORE_VERSION}" > "${GITHUB_VERSION_FILE}"
chmod 644 "${GITHUB_VERSION_FILE}"
if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
GITHUB_WEB_VERSION="$(json_extract tag_name "$(curl -s 'https://api.github.com/repos/pi-hole/AdminLTE/releases/latest' 2> /dev/null)")"
echo -n " ${GITHUB_WEB_VERSION}" >> "${GITHUB_VERSION_FILE}"
fi
GITHUB_FTL_VERSION="$(json_extract tag_name "$(curl -s 'https://api.github.com/repos/pi-hole/FTL/releases/latest' 2> /dev/null)")"
echo -n " ${GITHUB_FTL_VERSION}" >> "${GITHUB_VERSION_FILE}"
else
LOCAL_BRANCH_FILE="/etc/pihole/localbranches"
CORE_BRANCH="$(get_local_branch /etc/.pihole)"
echo -n "${CORE_BRANCH}" > "${LOCAL_BRANCH_FILE}"
chmod 644 "${LOCAL_BRANCH_FILE}"
if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
WEB_BRANCH="$(get_local_branch /var/www/html/admin)"
echo -n " ${WEB_BRANCH}" >> "${LOCAL_BRANCH_FILE}"
fi
FTL_BRANCH="$(pihole-FTL branch)"
echo -n " ${FTL_BRANCH}" >> "${LOCAL_BRANCH_FILE}"
LOCAL_VERSION_FILE="/etc/pihole/localversions"
CORE_VERSION="$(get_local_version /etc/.pihole)"
echo -n "${CORE_VERSION}" > "${LOCAL_VERSION_FILE}"
chmod 644 "${LOCAL_VERSION_FILE}"
if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
WEB_VERSION="$(get_local_version /var/www/html/admin)"
echo -n " ${WEB_VERSION}" >> "${LOCAL_VERSION_FILE}"
fi
FTL_VERSION="$(pihole-FTL version)"
echo -n " ${FTL_VERSION}" >> "${LOCAL_VERSION_FILE}"
fi

View File

@@ -1,102 +1,217 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# shows version numbers
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# Flags:
latest=false
current=false
# Show version numbers
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# Variables
DEFAULT="-1"
COREGITDIR="/etc/.pihole/"
WEBGITDIR="/var/www/html/admin/"
normalOutput() {
piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0)
webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0)
getLocalVersion() {
# FTL requires a different method
if [[ "$1" == "FTL" ]]; then
pihole-FTL version
return 0
fi
piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//')
webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//')
# Get the tagged version of the local repository
local directory="${1}"
local version
echo "::: Pi-hole version is ${piholeVersion} (Latest version is ${piholeVersionLatest:-${DEFAULT}})"
echo "::: Web-Admin version is ${webVersion} (Latest version is ${webVersionLatest:-${DEFAULT}})"
cd "${directory}" 2> /dev/null || { echo "${DEFAULT}"; return 1; }
version=$(git describe --tags --always || echo "$DEFAULT")
if [[ "${version}" =~ ^v ]]; then
echo "${version}"
elif [[ "${version}" == "${DEFAULT}" ]]; then
echo "ERROR"
return 1
else
echo "Untagged"
fi
return 0
}
webOutput() {
for var in "$@"; do
case "${var}" in
"-l" | "--latest" ) latest=true;;
"-c" | "--current" ) current=true;;
* ) echo "::: Invalid Option!"; exit 1;
esac
done
getLocalHash() {
# Local FTL hash does not exist on filesystem
if [[ "$1" == "FTL" ]]; then
echo "N/A"
return 0
fi
if [[ "${latest}" == true && "${current}" == false ]]; then
webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//')
echo "${webVersionLatest:--1}"
elif [[ "${latest}" == false && "${current}" == true ]]; then
webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0)
echo "${webVersion}"
else
webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0)
webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//')
echo "::: Web-Admin version is ${webVersion} (Latest version is ${webVersionLatest:-${DEFAULT}})"
fi
# Get the short hash of the local repository
local directory="${1}"
local hash
cd "${directory}" 2> /dev/null || { echo "${DEFAULT}"; return 1; }
hash=$(git rev-parse --short HEAD || echo "$DEFAULT")
if [[ "${hash}" == "${DEFAULT}" ]]; then
echo "ERROR"
return 1
else
echo "${hash}"
fi
return 0
}
coreOutput() {
for var in "$@"; do
case "${var}" in
"-l" | "--latest" ) latest=true;;
"-c" | "--current" ) current=true;;
* ) echo "::: Invalid Option!"; exit 1;
esac
done
getRemoteHash(){
# Remote FTL hash is not applicable
if [[ "$1" == "FTL" ]]; then
echo "N/A"
return 0
fi
if [[ "${latest}" == true && "${current}" == false ]]; then
piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//')
echo "${piholeVersionLatest:--1}"
elif [[ "${latest}" == false && "${current}" == true ]]; then
piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0)
echo "${piholeVersion}"
else
piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0)
piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//')
echo "::: Pi-hole version is ${piholeVersion} (Latest version is ${piholeVersionLatest:-${DEFAULT}})"
fi
local daemon="${1}"
local branch="${2}"
hash=$(git ls-remote --heads "https://github.com/pi-hole/${daemon}" | \
awk -v bra="$branch" '$0~bra {print substr($0,0,8);exit}')
if [[ -n "$hash" ]]; then
echo "$hash"
else
echo "ERROR"
return 1
fi
return 0
}
getRemoteVersion(){
# Get the version from the remote origin
local daemon="${1}"
local version
local cachedVersions
local arrCache
cachedVersions="/etc/pihole/GitHubVersions"
#If the above file exists, then we can read from that. Prevents overuse of GitHub API
if [[ -f "$cachedVersions" ]]; then
IFS=' ' read -r -a arrCache < "$cachedVersions"
case $daemon in
"pi-hole" ) echo "${arrCache[0]}";;
"AdminLTE" ) echo "${arrCache[1]}";;
"FTL" ) echo "${arrCache[2]}";;
esac
return 0
fi
version=$(curl --silent --fail "https://api.github.com/repos/pi-hole/${daemon}/releases/latest" | \
awk -F: '$1 ~/tag_name/ { print $2 }' | \
tr -cd '[[:alnum:]]._-')
if [[ "${version}" =~ ^v ]]; then
echo "${version}"
else
echo "ERROR"
return 1
fi
return 0
}
getLocalBranch(){
# Get the checked out branch of the local directory
local directory="${1}"
local branch
# Local FTL btranch is stored in /etc/pihole/ftlbranch
if [[ "$1" == "FTL" ]]; then
branch="$(pihole-FTL branch)"
else
cd "${directory}" 2> /dev/null || { echo "${DEFAULT}"; return 1; }
branch=$(git rev-parse --abbrev-ref HEAD || echo "$DEFAULT")
fi
if [[ ! "${branch}" =~ ^v ]]; then
if [[ "${branch}" == "master" ]]; then
echo ""
elif [[ "${branch}" == "HEAD" ]]; then
echo "in detached HEAD state at "
else
echo "${branch} "
fi
else
# Branch started in "v"
echo "release "
fi
return 0
}
versionOutput() {
[[ "$1" == "pi-hole" ]] && GITDIR=$COREGITDIR
[[ "$1" == "AdminLTE" ]] && GITDIR=$WEBGITDIR
[[ "$1" == "FTL" ]] && GITDIR="FTL"
[[ "$2" == "-c" ]] || [[ "$2" == "--current" ]] || [[ -z "$2" ]] && current=$(getLocalVersion $GITDIR) && branch=$(getLocalBranch $GITDIR)
[[ "$2" == "-l" ]] || [[ "$2" == "--latest" ]] || [[ -z "$2" ]] && latest=$(getRemoteVersion "$1")
if [[ "$2" == "-h" ]] || [[ "$2" == "--hash" ]]; then
[[ "$3" == "-c" ]] || [[ "$3" == "--current" ]] || [[ -z "$3" ]] && curHash=$(getLocalHash "$GITDIR") && branch=$(getLocalBranch $GITDIR)
[[ "$3" == "-l" ]] || [[ "$3" == "--latest" ]] || [[ -z "$3" ]] && latHash=$(getRemoteHash "$1" "$(cd "$GITDIR" 2> /dev/null && git rev-parse --abbrev-ref HEAD)")
fi
if [[ -n "$current" ]] && [[ -n "$latest" ]]; then
output="${1^} version is $branch$current (Latest: $latest)"
elif [[ -n "$current" ]] && [[ -z "$latest" ]]; then
output="Current ${1^} version is $branch$current"
elif [[ -z "$current" ]] && [[ -n "$latest" ]]; then
output="Latest ${1^} version is $latest"
elif [[ "$curHash" == "N/A" ]] || [[ "$latHash" == "N/A" ]]; then
output="${1^} hash is not applicable"
elif [[ -n "$curHash" ]] && [[ -n "$latHash" ]]; then
output="${1^} hash is $curHash (Latest: $latHash)"
elif [[ -n "$curHash" ]] && [[ -z "$latHash" ]]; then
output="Current ${1^} hash is $curHash"
elif [[ -z "$curHash" ]] && [[ -n "$latHash" ]]; then
output="Latest ${1^} hash is $latHash"
else
errorOutput
fi
[[ -n "$output" ]] && echo " $output"
}
errorOutput() {
echo " Invalid Option! Try 'pihole -v --help' for more information."
exit 1
}
defaultOutput() {
# Source the setupvars config file
# shellcheck disable=SC1091
source /etc/pihole/setupVars.conf
versionOutput "pi-hole" "$@"
if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
versionOutput "AdminLTE" "$@"
fi
versionOutput "FTL" "$@"
}
helpFunc() {
cat << EOM
:::
::: Show Pi-hole/Web Admin versions
:::
::: Usage: pihole -v [ -a | -p ] [ -l | -c ]
:::
::: Options:
::: -a, --admin Show both current and latest versions of web admin
::: -p, --pihole Show both current and latest versions of Pi-hole core files
::: -l, --latest (Only after -a | -p) Return only latest version
::: -c, --current (Only after -a | -p) Return only current version
::: -h, --help Show this help dialog
:::
EOM
exit 0
echo "Usage: pihole -v [repo | option] [option]
Example: 'pihole -v -p -l'
Show Pi-hole, Admin Console & FTL versions
Repositories:
-p, --pihole Only retrieve info regarding Pi-hole repository
-a, --admin Only retrieve info regarding AdminLTE repository
-f, --ftl Only retrieve info regarding FTL repository
Options:
-c, --current Return the current version
-l, --latest Return the latest version
--hash Return the GitHub hash from your local repositories
-h, --help Show this help dialog"
exit 0
}
if [[ $# = 0 ]]; then
normalOutput
fi
for var in "$@"; do
case "${var}" in
"-a" | "--admin" ) shift; webOutput "$@";;
"-p" | "--pihole" ) shift; coreOutput "$@" ;;
"-h" | "--help" ) helpFunc;;
esac
done
case "${1}" in
"-p" | "--pihole" ) shift; versionOutput "pi-hole" "$@";;
"-a" | "--admin" ) shift; versionOutput "AdminLTE" "$@";;
"-f" | "--ftl" ) shift; versionOutput "FTL" "$@";;
"-h" | "--help" ) helpFunc;;
* ) defaultOutput "$@";;
esac

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Provides an automated migration subroutine to convert Pi-hole v3.x wildcard domains to Pi-hole v4.x regex filters
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# regexFile set in gravity.sh
wildcardFile="/etc/dnsmasq.d/03-pihole-wildcard.conf"
convert_wildcard_to_regex() {
if [ ! -f "${wildcardFile}" ]; then
return
fi
local addrlines domains uniquedomains
# Obtain wildcard domains from old file
addrlines="$(grep -oE "/.*/" ${wildcardFile})"
# Strip "/" from domain names and convert "." to regex-compatible "\."
domains="$(sed 's/\///g;s/\./\\./g' <<< "${addrlines}")"
# Remove repeated domains (may have been inserted two times due to A and AAAA blocking)
uniquedomains="$(uniq <<< "${domains}")"
# Automatically generate regex filters and remove old wildcards file
awk '{print "(^|\\.)"$0"$"}' <<< "${uniquedomains}" >> "${regexFile:?}" && rm "${wildcardFile}"
}

View File

@@ -0,0 +1,193 @@
PRAGMA foreign_keys=OFF;
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
);
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)
);
CREATE TABLE adlist
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
address 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,
date_updated INTEGER,
number INTEGER NOT NULL DEFAULT 0,
invalid_domains INTEGER NOT NULL DEFAULT 0,
status INTEGER NOT NULL DEFAULT 0
);
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)
);
CREATE TABLE gravity
(
domain TEXT NOT NULL,
adlist_id INTEGER NOT NULL REFERENCES adlist (id)
);
CREATE TABLE info
(
property TEXT PRIMARY KEY,
value TEXT NOT NULL
);
INSERT INTO "info" VALUES('version','14');
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))
);
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)
);
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
);
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)
);
CREATE TRIGGER tr_adlist_update AFTER UPDATE OF address,enabled,comment ON adlist
BEGIN
UPDATE adlist SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE id = NEW.id;
END;
CREATE TRIGGER tr_client_update AFTER UPDATE ON client
BEGIN
UPDATE client SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE ip = NEW.ip;
END;
CREATE TRIGGER tr_domainlist_update AFTER UPDATE ON domainlist
BEGIN
UPDATE domainlist SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE domain = NEW.domain;
END;
CREATE VIEW vw_whitelist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 0
ORDER BY domainlist.id;
CREATE VIEW vw_blacklist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 1
ORDER BY domainlist.id;
CREATE VIEW vw_regex_whitelist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 2
ORDER BY domainlist.id;
CREATE VIEW vw_regex_blacklist AS SELECT domain, domainlist.id AS id, domainlist_by_group.group_id AS group_id
FROM domainlist
LEFT JOIN domainlist_by_group ON domainlist_by_group.domainlist_id = domainlist.id
LEFT JOIN "group" ON "group".id = domainlist_by_group.group_id
WHERE domainlist.enabled = 1 AND (domainlist_by_group.group_id IS NULL OR "group".enabled = 1)
AND domainlist.type = 3
ORDER BY domainlist.id;
CREATE VIEW vw_gravity AS SELECT domain, adlist_by_group.group_id AS group_id
FROM gravity
LEFT JOIN adlist_by_group ON adlist_by_group.adlist_id = gravity.adlist_id
LEFT JOIN adlist ON adlist.id = gravity.adlist_id
LEFT JOIN "group" ON "group".id = adlist_by_group.group_id
WHERE adlist.enabled = 1 AND (adlist_by_group.group_id IS NULL OR "group".enabled = 1);
CREATE VIEW vw_adlist AS SELECT DISTINCT address, adlist.id AS id
FROM adlist
LEFT JOIN adlist_by_group ON adlist_by_group.adlist_id = adlist.id
LEFT JOIN "group" ON "group".id = adlist_by_group.group_id
WHERE adlist.enabled = 1 AND (adlist_by_group.group_id IS NULL OR "group".enabled = 1)
ORDER BY adlist.id;
CREATE TRIGGER tr_domainlist_add AFTER INSERT ON domainlist
BEGIN
INSERT INTO domainlist_by_group (domainlist_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_client_add AFTER INSERT ON client
BEGIN
INSERT INTO client_by_group (client_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_adlist_add AFTER INSERT ON adlist
BEGIN
INSERT INTO adlist_by_group (adlist_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_group_update AFTER UPDATE ON "group"
BEGIN
UPDATE "group" SET date_modified = (cast(strftime('%s', 'now') as int)) WHERE id = NEW.id;
END;
CREATE TRIGGER tr_group_zero AFTER DELETE ON "group"
BEGIN
INSERT OR IGNORE INTO "group" (id,enabled,name) VALUES (0,1,'Default');
END;
CREATE TRIGGER tr_domainlist_delete AFTER DELETE ON domainlist
BEGIN
DELETE FROM domainlist_by_group WHERE domainlist_id = OLD.id;
END;
CREATE TRIGGER tr_adlist_delete AFTER DELETE ON adlist
BEGIN
DELETE FROM adlist_by_group WHERE adlist_id = OLD.id;
END;
CREATE TRIGGER tr_client_delete AFTER DELETE ON client
BEGIN
DELETE FROM client_by_group WHERE client_id = OLD.id;
END;
COMMIT;

View File

@@ -0,0 +1,42 @@
.timeout 30000
ATTACH DATABASE '/etc/pihole/gravity.db' AS OLD;
BEGIN TRANSACTION;
DROP TRIGGER tr_domainlist_add;
DROP TRIGGER tr_client_add;
DROP TRIGGER tr_adlist_add;
INSERT OR REPLACE INTO "group" SELECT * FROM OLD."group";
INSERT OR REPLACE INTO domain_audit SELECT * FROM OLD.domain_audit;
INSERT OR REPLACE INTO domainlist SELECT * FROM OLD.domainlist;
INSERT OR REPLACE INTO domainlist_by_group SELECT * FROM OLD.domainlist_by_group;
INSERT OR REPLACE INTO adlist SELECT * FROM OLD.adlist;
INSERT OR REPLACE INTO adlist_by_group SELECT * FROM OLD.adlist_by_group;
INSERT OR REPLACE INTO info SELECT * FROM OLD.info;
INSERT OR REPLACE INTO client SELECT * FROM OLD.client;
INSERT OR REPLACE INTO client_by_group SELECT * FROM OLD.client_by_group;
CREATE TRIGGER tr_domainlist_add AFTER INSERT ON domainlist
BEGIN
INSERT INTO domainlist_by_group (domainlist_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_client_add AFTER INSERT ON client
BEGIN
INSERT INTO client_by_group (client_id, group_id) VALUES (NEW.id, 0);
END;
CREATE TRIGGER tr_adlist_add AFTER INSERT ON adlist
BEGIN
INSERT INTO adlist_by_group (adlist_id, group_id) VALUES (NEW.id, 0);
END;
COMMIT;

View File

@@ -0,0 +1,21 @@
/var/log/pihole.log {
# su #
daily
copytruncate
rotate 5
compress
delaycompress
notifempty
nomail
}
/var/log/pihole-FTL.log {
# su #
weekly
copytruncate
rotate 3
compress
delaycompress
notifempty
nomail
}

View File

@@ -0,0 +1,108 @@
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides: pihole-FTL
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: pihole-FTL daemon
# Description: Enable service provided by pihole-FTL daemon
### END INIT INFO
FTLUSER=pihole
PIDFILE=/run/pihole-FTL.pid
is_running() {
pgrep -o "pihole-FTL" > /dev/null 2>&1
}
# Start the service
start() {
if is_running; then
echo "pihole-FTL is already running"
else
# Touch files to ensure they exist (create if non-existing, preserve if existing)
touch /var/log/pihole-FTL.log /var/log/pihole.log
touch /run/pihole-FTL.pid /run/pihole-FTL.port
touch /etc/pihole/dhcp.leases
mkdir -p /run/pihole
mkdir -p /var/log/pihole
chown pihole:pihole /run/pihole /var/log/pihole
# Remove possible leftovers from previous pihole-FTL processes
rm -f /dev/shm/FTL-* 2> /dev/null
rm /run/pihole/FTL.sock 2> /dev/null
# Ensure that permissions are set so that pihole-FTL can edit all necessary files
chown pihole:pihole /run/pihole-FTL.pid /run/pihole-FTL.port
chown pihole:pihole /etc/pihole /etc/pihole/dhcp.leases 2> /dev/null
chown pihole:pihole /var/log/pihole-FTL.log /var/log/pihole.log
chmod 0644 /var/log/pihole-FTL.log /run/pihole-FTL.pid /run/pihole-FTL.port /var/log/pihole.log
# Chown database files to the user FTL runs as. We ignore errors as the files may not (yet) exist
chown pihole:pihole /etc/pihole/pihole-FTL.db /etc/pihole/gravity.db 2> /dev/null
if setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW,CAP_NET_ADMIN,CAP_SYS_NICE+eip "$(which pihole-FTL)"; then
su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"
else
echo "Warning: Starting pihole-FTL as root because setting capabilities is not supported on this system"
pihole-FTL
fi
echo
fi
}
# Stop the service
stop() {
if is_running; then
pkill -o pihole-FTL
for i in {1..5}; do
if ! is_running; then
break
fi
echo -n "."
sleep 1
done
echo
if is_running; then
echo "Not stopped; may still be shutting down or shutdown may have failed, killing now"
pkill -o -9 pihole-FTL
exit 1
else
echo "Stopped"
fi
else
echo "Not running"
fi
echo
}
# Indicate the service status
status() {
if is_running; then
echo "[ ok ] pihole-FTL is running"
exit 0
else
echo "[ ] pihole-FTL is not running"
exit 1
fi
}
### main logic ###
case "$1" in
stop)
stop
;;
status)
status
;;
start|restart|reload|condrestart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0

View File

@@ -0,0 +1,36 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Updates ad sources every week
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
#
#
#
# This file is under source-control of the Pi-hole installation and update
# scripts, any changes made to this file will be overwritten when the software
# is updated or re-installed. Please make any changes to the appropriate crontab
# or other cron file snippets.
# Pi-hole: Update the ad sources once a week on Sunday at a random time in the
# early morning. Download any updates from the adlists
# Squash output to log, then splat the log to stdout on error to allow for
# standard crontab job error handling.
59 1 * * 7 root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updateGravity >/var/log/pihole_updateGravity.log || cat /var/log/pihole_updateGravity.log
# Pi-hole: Flush the log daily at 00:00
# The flush script will use logrotate if available
# parameter "once": logrotate only once (default is twice)
# parameter "quiet": don't print messages
00 00 * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole flush once quiet
@reboot root /usr/sbin/logrotate /etc/pihole/logrotate
# Pi-hole: Grab local version and branch every 10 minutes
*/10 * * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker local
# Pi-hole: Grab remote version every 24 hours
59 17 * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker remote
@reboot root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker remote reboot

View File

@@ -0,0 +1,9 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Allows the WebUI to use Pi-hole commands
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
#

View File

@@ -1,11 +1,79 @@
_pihole() {
local cur prev opts
local cur prev opts opts_admin opts_checkout opts_chronometer opts_debug opts_interface opts_logging opts_privacy opts_query opts_update opts_version
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="admin blacklist chronometer debug disable enable flush help logging query reconfigure restartdns setupLCD status tail uninstall updateGravity updatePihole version whitelist"
prev2="${COMP_WORDS[COMP_CWORD-2]}"
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
case "${prev}" in
"pihole")
opts="admin blacklist checkout chronometer 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}) )
;;
"admin")
opts_admin="celsius email fahrenheit interface kelvin password privacylevel"
COMPREPLY=( $(compgen -W "${opts_admin}" -- ${cur}) )
;;
"checkout")
opts_checkout="core ftl web master dev"
COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) )
;;
"chronometer")
opts_chronometer="\--exit \--json \--refresh"
COMPREPLY=( $(compgen -W "${opts_chronometer}" -- ${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="-adlist -all -exact"
COMPREPLY=( $(compgen -W "${opts_query}" -- ${cur}) )
;;
"updatePihole"|"-up")
opts_update="--check-only"
COMPREPLY=( $(compgen -W "${opts_update}" -- ${cur}) )
;;
"version")
opts_version="\--admin \--current \--ftl \--hash \--latest \--pihole"
COMPREPLY=( $(compgen -W "${opts_version}" -- ${cur}) )
;;
"interface")
if ( [[ "$prev2" == "admin" ]] || [[ "$prev2" == "-a" ]] ); then
opts_interface="$(cat /proc/net/dev | cut -d: -s -f1)"
COMPREPLY=( $(compgen -W "${opts_interface}" -- ${cur}) )
else
return 1
fi
;;
"privacylevel")
if ( [[ "$prev2" == "admin" ]] || [[ "$prev2" == "-a" ]] ); then
opts_privacy="0 1 2 3"
COMPREPLY=( $(compgen -W "${opts_privacy}" -- ${cur}) )
else
return 1
fi
;;
"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

View File

@@ -1,136 +1,455 @@
/* CSS Reset */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; }
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; }
body { line-height: 1; }
ol, ul { list-style: none; }
blockquote, q { quotes: none; }
blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; }
table { border-collapse: collapse; border-spacing: 0; }
html { height: 100%; overflow-x: hidden; }
/* Pi-hole: A black hole for Internet advertisements
* (c) 2017 Pi-hole, LLC (https://pi-hole.net)
* Network-wide ad blocking via your own hardware.
*
* This file is copyright under the latest version of the EUPL.
* Please see LICENSE file for your rights under this license. */
/* General Style */
a { color: rgba(0,60,120,0.95); text-decoration: none; } /* 1E3C5A */
a:hover { color: rgba(210,120,0,0.95); transition-duration: .2s; } /* 255, 128, 0 */
divs a { border-bottom: 1px dashed rgba(30,60,90,0.3); }
b { font-weight: bold; }
i { font-style: italic; }
/* Text Customisation Options ======> */
.title::before { content: "Website Blocked"; }
.altBtn::before { content: "Why am I here?"; }
.linkPH::before { content: "About Pi-hole"; }
.linkEmail::before { content: "Contact Admin"; }
footer, pre, td { font-family: monospace; padding-left: 15px; }
/*body, header { background: #E1E1E1; }*/
#bpOutput.add::before { content: "Info"; }
#bpOutput.add::after { content: "The domain is being whitelisted..."; }
#bpOutput.error::before, .unhandled::before { content: "Error"; }
#bpOutput.unhandled::after { content: "An unhandled exception occurred. This may happen when your browser is unable to load jQuery, or when the webserver is denying access to the Pi-hole API."; }
#bpOutput.success::before { content: "Success"; }
#bpOutput.success::after { content: "Website has been whitelisted! You may need to flush your DNS cache"; }
.recentwl::before { content: "This site has been whitelisted. Please flush your DNS cache and/or restart your browser."; }
.unknown::before { content: "This website is not found in any of Pi-hole's blacklists. The reason you have arrived here is unknown."; }
.cname::before { content: "This site is an alias for "; } /* <a href="http://cname.com">cname.com</a> */
.cname::after { content: ", which may be blocked by Pi-hole."; }
.blacklist::before { content: "Manually Blacklisted"; }
.wildcard::before { content: "Manually Blacklisted by Wildcard"; }
.noblock::before { content: "Not found on any Blacklist"; }
#bpBlock::before { content: "Access to the following website has been denied:"; }
#bpFlag::before { content: "This is primarily due to being flagged as:"; }
#bpHelpTxt::before { content: "If you have an ongoing use for this website, please "; }
#bpHelpTxt a::before, #bpHelpTxt span::before { content: "ask the administrator"; }
#bpHelpTxt::after{ content: " of the Pi-hole on this network to have it whitelisted"; }
#bpBack::before { content: "Back to safety"; }
#bpInfo::before { content: "Technical Info"; }
#bpFoundIn::before { content: "This site is found in "; }
#bpFoundIn span::after { content: " of "; }
#bpFoundIn::after { content: " lists:"; }
#bpWhitelist::before { content: "Whitelist"; }
footer span::before { content: "Page generated on "; }
/* Hide whitelisting form entirely */
/* #bpWLButtons { display: none; } */
/* Text Customisation Options <=============================== */
/* http://necolas.github.io/normalize.css ======> */
html { font-family: sans-serif; line-height: 1.15; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
body { margin: 0; }
article, aside, footer, header, nav, section { display: block; }
h1 { font-size: 2em; margin: 0.67em 0; }
figcaption, figure, main { display: block; }
figure { margin: 1em 40px; }
hr { box-sizing: content-box; height: 0; overflow: visible; }
pre { font-family: monospace, monospace; font-size: 1em; }
a { background-color: transparent; -webkit-text-decoration-skip: objects; }
a:active, a:hover { outline-width: 0; }
abbr[title] { border-bottom: none; text-decoration: underline; text-decoration: underline dotted; }
b, strong { font-weight: inherit; }
b, strong { font-weight: bolder; }
code, kbd, samp { font-family: monospace, monospace; font-size: 1em; }
dfn { font-style: italic; }
mark { background-color: #ff0; color: #000; }
small { font-size: 80%; }
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sub { bottom: -0.25em; }
sup { top: -0.5em; }
audio, video { display: inline-block; }
audio:not([controls]) { display: none; height: 0; }
img { border-style: none; }
svg:not(:root) { overflow: hidden; }
button, input, optgroup, select, textarea { font-family: sans-serif; font-size: 100%; line-height: 1.15; margin: 0; }
button, input { overflow: visible; }
button, select { text-transform: none; }
button, html [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; }
button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; }
button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; }
fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
legend { box-sizing: border-box; color: inherit; display: table; max-width: 100%; padding: 0; white-space: normal; }
progress { display: inline-block; vertical-align: baseline; }
textarea { overflow: auto; }
[type="checkbox"], [type="radio"] { box-sizing: border-box; padding: 0; }
[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; }
[type="search"] { -webkit-appearance: textfield; outline-offset: -2px; }
[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
::-webkit-file-upload-button { -webkit-appearance: button; font: inherit; }
details, menu { display: block; }
summary { display: list-item; }
canvas { display: inline-block; }
template { display: none; }
[hidden] { display: none; }
/* Normalize.css <=============================== */
html { font-size: 62.5%; }
a { color: #3c8dbc; text-decoration: none; }
a:hover { color: #72afda; text-decoration: underline; }
b { color: rgb(68, 68, 68); }
p { margin: 0; }
label, .buttons a {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
label, .buttons *:not([disabled]) { cursor: pointer; }
/* Touch device dark tap highlight */
header h1 a, label, .buttons * { -webkit-tap-highlight-color: transparent; }
/* Webkit Focus Glow */
textarea, input, button { outline: none; }
@font-face {
font-family: "Source Sans Pro";
font-style: normal;
font-weight: 400;
font-display: swap;
src: local("Source Sans Pro Regular"), local("SourceSansPro-Regular"),
url("/admin/style/vendor/SourceSansPro/source-sans-pro-v13-latin-regular.woff2") format("woff2"),
url("/admin/style/vendor/SourceSansPro/source-sans-pro-v13-latin-regular.woff") format("woff");
}
@font-face {
font-family: "Source Sans Pro";
font-style: normal;
font-weight: 700;
font-display: swap;
src: local("Source Sans Pro Bold"), local("SourceSansPro-Bold"),
url("/admin/style/vendor/SourceSansPro/source-sans-pro-v13-latin-700.woff2") format("woff2"),
url("/admin/style/vendor/SourceSansPro/source-sans-pro-v13-latin-700.woff") format("woff");
}
body {
background-image: -webkit-linear-gradient(top, rgba(240,240,240,0.95), rgba(190,190,190,0.95));
background-image: linear-gradient(to bottom, rgba(240,240,240,0.95), rgba(190,190,190,0.95));
background-attachment: fixed;
color: rgba(64,64,64,0.95);
font: 14px, sans-serif;
line-height: 1em;
background: #dbdbdb url("/admin/img/boxed-bg.jpg") repeat fixed;
color: #333;
font: 1.4rem "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 2.2rem;
}
/* User is greeted with a splash page when browsing to Pi-hole IP address */
#splashpage {
background: #222;
color: rgba(255, 255, 255, 0.7);
text-align: center;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#splashpage img { margin: 5px; width: 256px; }
#splashpage b { color: inherit; }
#bpWrapper {
margin: 0 auto;
max-width: 1250px;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
}
header {
min-width: 320px;
width: 100%;
text-shadow: 0 1px rgba(255,255,255,0.6);
display: table;
table-layout: fixed;
border: 1px solid rgba(0,0,0,0.25);
border-top-color: rgba(255,255,255,0.85);
border-style: solid none;
background-image: -webkit-linear-gradient(top, rgba(240,240,240,0.95), rgba(220,220,220,0.95));
background-image: linear-gradient(to bottom, rgba(240,240,240,0.95), rgba(220,220,220,0.95));
box-shadow: 0 0 1px 1px rgba(0,0,0,0.04);
background: #3c8dbc;
display: table;
position: relative;
width: 100%;
}
header h1, header div {
display: table-cell;
color: inherit;
font-weight: bold;
vertical-align: middle;
white-space: nowrap;
overflow: hidden;
box-sizing: border-box;
header h1, header h1 a, header .spc, header #bpAlt label {
display: table-cell;
color: #fff;
white-space: nowrap;
vertical-align: middle;
height: 50px; /* Must match #bpAbout top value */
}
header h1 {
font-size: 22px;
font-weight: bold;
width: 100%;
padding: 8px 0;
text-indent: 32px;
background: url("http://pi.hole/admin/img/logo.svg") left no-repeat;
background-size: 30px 22px;
h1 a {
background-color: rgba(0, 0, 0, 0.1);
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 2rem;
font-weight: 400;
min-width: 230px;
text-align: center;
}
header h1 a, h1 a:hover { color: inherit; }
header .alt { width: 85px; font-size: 0.8em; padding-right: 4px; text-align: right; line-height: 1.25em; }
.active { color: green; }
.inactive { color: red; }
h1 a:hover, header #bpAlt:hover { background-color: rgba(0, 0, 0, 0.12); color: inherit; text-decoration: none; }
header .spc { width: 100%; }
header #bpAlt label {
background: url("/admin/img/logo.svg") no-repeat center left 15px;
background-size: 15px 23px;
padding: 0 15px;
text-indent: 30px;
}
[type="checkbox"][id$="Toggle"] { display: none; }
[type="checkbox"][id$="Toggle"]:checked ~ #bpAbout,
[type="checkbox"][id$="Toggle"]:checked ~ #bpMoreInfo {
display: block;
}
html, body {
height: 100%;
}
#pihole_card {
width: 400px;
height: auto;
max-width: 400px;
}
#pihole_card p, #pihole_card a {
font-size: 13pt;
text-align: center;
}
#pihole_logo_splash {
height: auto;
width: 100%;
}
/* Click anywhere else on screen to hide #bpAbout */
#bpAboutToggle:checked {
display: block;
height: 300px; /* VH Fallback */
height: 100vh;
left: 0;
top: 0;
opacity: 0;
position: absolute;
width: 100%;
}
#bpAbout {
background: #3c8dbc;
border-bottom-left-radius: 5px;
border: 1px solid #fff;
border-right-width: 0;
box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.12);
box-sizing: border-box;
display: none;
font-size: 1.7rem;
top: 50px;
position: absolute;
right: 0;
width: 280px;
z-index: 1;
}
.aboutPH {
box-sizing: border-box;
color: rgba(255, 255, 255, 0.8);
display: block;
padding: 10px;
width: 100%;
text-align: center;
}
.aboutImg {
background: url("/admin/img/logo.svg") no-repeat center;
background-size: 90px 90px;
height: 90px;
margin: 0 auto;
padding: 2px;
width: 90px;
}
.aboutPH p { margin: 10px 0; }
.aboutPH small { display: block; font-size: 1.2rem; }
.aboutLink {
background: #fff;
border-top: 1px solid #ddd;
display: table;
font-size: 1.4rem;
text-align: center;
width: 100%;
}
.aboutLink a {
display: table-cell;
padding: 14px;
min-width: 50%;
}
main {
display: block;
width: 80%;
padding: 10px;
font-size: 1em;
background-color: rgba(255,255,255,0.85);
margin: 8px auto;
box-sizing: border-box;
border: 1px solid rgba(0,0,0,0.25);
box-shadow: 4px 4px rgba(0,0,0,0.1);
line-height: 1.2em;
border-radius: 8px;
background: #ecf0f5;
font-size: 1.65rem;
padding: 10px;
}
h2 { /* Rgba is shared with .transparent th */
font: 1.15em sans-serif;
background-color: rgba(255,0,0,0.4);
text-shadow: none;
line-height: 1.1em;
padding-bottom: 1px;
margin-top: 8px;
margin-bottom: 4px;
background: -webkit-linear-gradient(left, rgba(0,0,0,0.25), transparent 80%) no-repeat;
background: linear-gradient(to right, rgba(0,0,0,0.25), transparent 80%) no-repeat;
background-size: 100% 1px;
background-position: 0 17px;
#bpOutput {
background: #00c0ef;
border-radius: 3px;
border: 1px solid rgba(0, 0, 0, 0.1);
color: #fff;
font-size: 1.4rem;
margin-bottom: 10px;
margin-top: 5px;
padding: 15px;
}
h2:first-child { margin-top: 0; }
h2 ~ *:not(h2) { margin-left: 4px; }
li { padding: 2px 0; }
li::before { content: "\00BB\00a0"; }
li a { position: relative; top: 1px; } /* Center bullet-point arrows */
/* Button Style */
.buttons a, button, input, .transparent th a { /* Swapped rgba is shared with input[type='url'] */
display: inline-block;
color: rgba(32,32,32,0.9);
font-weight: bold;
text-align: center;
cursor: pointer;
text-shadow: 0 1px rgba(255,255,255,0.2);
line-height: 0.86em;
font-size: 1em;
padding: 4px 8px;
background: #FAFAFA;
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.05), rgba(0,0,0,0.05));
background-image: linear-gradient(to bottom, rgba(255,255,255,0.05), rgba(0,0,0,0.05));
border: 1px solid rgba(0,0,0,0.25);
border-radius: 4px;
box-shadow: 0 1px 0 rgba(0,0,0,0.04);
#bpOutput::before {
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='14' viewBox='0 0 7 14'%3E%3Cpath fill='%23fff' d='M6 11a1.371 1.371 0 011 1v1a1.371 1.371 0 01-1 1H1a1.371 1.371 0 01-1-1v-1a1.371 1.371 0 011-1h1V8H1a1.371 1.371 0 01-1-1V6a1.371 1.371 0 011-1h3a1.371 1.371 0 011 1v5h1zM3.5 0A1.5 1.5 0 112 1.5 1.5 1.5 0 013.5 0z'/%3E%3C/svg%3E") no-repeat center left;
display: block;
font-size: 1.8rem;
text-indent: 15px;
}
.buttons { white-space: nowrap; width: 100%; display: table; }
.buttons33 { white-space: nowrap; width: 33.333%; display: table; text-align: center; margin-left: 33.333% }
.mini a { width: 50%; }
a.safe { background-color: rgba(0,220,0,0.5); }
button.safe { background-color: rgba(0,220,0,0.5); }
a.warn { background-color: rgba(220,0,0,0.5); }
#bpOutput.hidden { display: none; }
#bpOutput.success { background: #00a65a; }
#bpOutput.error { background: #dd4b39; }
.blocked a, .mini a { display: table-cell; }
.blocked a.safe50 { width: 50%; background-color: rgba(0,220,0,0.5); }
.blocked a.safe33 { width: 33.333%; background-color: rgba(0,220,0,0.5); }
.blockMsg, .flagMsg {
font: 700 1.8rem Consolas, Courier, monospace;
padding: 5px 10px 10px;
text-indent: 15px;
}
/* Types of text */
.msg { white-space: pre; overflow: auto; -webkit-overflow-scrolling: touch; display: block; line-height: 1.2em; font-weight: bold; font-size: 1.15em; margin: 4px 8px 8px 8px; white-space: pre-line; }
#bpHelpTxt { padding-bottom: 10px; }
footer { font-size: 0.8em; text-align: center; width: 87%; margin: 4px auto; }
.buttons {
border-spacing: 5px 0;
display: table;
width: 100%;
}
.buttons * {
-moz-appearance: none;
-webkit-appearance: none;
border-radius: 3px;
border: 1px solid rgba(0, 0, 0, 0.1);
box-sizing: content-box;
display: table-cell;
font-size: 1.65rem;
margin-right: 5px;
min-height: 20px;
padding: 6px 12px;
position: relative;
text-align: center;
vertical-align: top;
white-space: nowrap;
width: auto;
}
.buttons a:hover { text-decoration: none; }
/* Button hover dark overlay */
.buttons *:not(input):not([disabled]):hover {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1));
color: #fff;
}
/* Button active shadow inset */
.buttons *:not([disabled]):not(input):active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
/* Input border color */
.buttons *:not([disabled]):hover, .buttons input:focus {
border-color: rgba(0, 0, 0, 0.25);
}
#bpButtons * { width: 50%; color: #fff; }
#bpBack { background-color: #00a65a; }
#bpInfo { background-color: #3c8dbc; }
#bpWhitelist { background-color: #dd4b39; }
#blockpage .buttons [type="password"][disabled] { color: rgba(0, 0, 0, 1); }
#blockpage .buttons [disabled] { color: rgba(0, 0, 0, 0.55); background-color: #e3e3e3; }
#blockpage .buttons [type="password"]:-ms-input-placeholder { color: rgba(51, 51, 51, 0.8); }
input[type="password"] { font-size: 1.5rem; }
@-webkit-keyframes slidein { from { max-height: 0; opacity: 0; } to { max-height: 300px; opacity: 1; } }
@keyframes slidein { from { max-height: 0; opacity: 0; } to { max-height: 300px; opacity: 1; } }
#bpMoreToggle:checked ~ #bpMoreInfo { display: block; margin-top: 8px; -webkit-animation: slidein 0.05s linear; animation: slidein 0.05s linear; }
#bpMoreInfo { display: none; margin-top: 10px; }
#bpQueryOutput {
font-size: 1.2rem;
line-height: 1.65rem;
margin: 5px 0 0;
overflow: auto;
padding: 0 5px;
-webkit-overflow-scrolling: touch;
}
#bpQueryOutput span { margin-right: 4px; }
#bpWLButtons { width: auto; margin-top: 10px; }
#bpWLButtons * { display: inline-block; }
#bpWLDomain { display: none; }
#bpWLPassword { width: 160px; }
#bpWhitelist { color: #fff; }
footer {
background: #fff;
border-top: 1px solid #d2d6de;
color: #444;
font: 1.2rem Consolas, Courier, monospace;
padding: 8px;
}
/* Responsive Content */
@media only screen and (max-width: 500px) {
h1 a {
font-size: 1.8rem;
min-width: 170px;
}
footer span::before {
content: "Generated ";
}
footer span {
display: block;
}
}
@media only screen and (min-width: 1251px) {
#bpWrapper, footer {
border-radius: 0 0 5px 5px;
}
#bpAbout {
border-right-width: 1px;
}
}
@media only screen and (max-width: 400px) {
#pihole_card {
width: 100%;
height: auto;
}
#pihole_card p, #pihole_card a {
font-size: 100%;
}
}
@media only screen and (max-width: 256px) {
#pihole_logo_splash {
width: 90% !important;
height: auto;
}
}

View File

@@ -46,7 +46,7 @@
#resolv-file=
# By default, dnsmasq will send queries to any of the upstream
# servers it knows about and tries to favour servers to are known
# servers it knows about and tries to favor servers to are known
# to be up. Uncommenting this forces dnsmasq to try each query
# with each server strictly in the order they appear in
# /etc/resolv.conf
@@ -189,7 +189,7 @@
# add names to the DNS for the IPv6 address of SLAAC-configured dual-stack
# hosts. Use the DHCPv4 lease to derive the name, network segment and
# MAC address and assume that the host will also have an
# IPv6 address calculated using the SLAAC alogrithm.
# IPv6 address calculated using the SLAAC algorithm.
#dhcp-range=1234::, ra-names
# Do Router Advertisements, BUT NOT DHCP for this subnet.
@@ -210,7 +210,7 @@
#dhcp-range=1234::, ra-stateless, ra-names
# Do router advertisements for all subnets where we're doing DHCPv6
# Unless overriden by ra-stateless, ra-names, et al, the router
# Unless overridden by ra-stateless, ra-names, et al, the router
# advertisements will have the M and O bits set, so that the clients
# get addresses and configuration from DHCPv6, and the A bit reset, so the
# clients don't use SLAAC addresses.
@@ -281,7 +281,7 @@
# Give a fixed IPv6 address and name to client with
# DUID 00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2
# Note the MAC addresses CANNOT be used to identify DHCPv6 clients.
# Note also the they [] around the IPv6 address are obilgatory.
# Note also the they [] around the IPv6 address are obligatory.
#dhcp-host=id:00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2, fred, [1234::5]
# Ignore any clients which are not specified in dhcp-host lines
@@ -404,14 +404,14 @@
#dhcp-option=vendor:MSFT,2,1i
# Send the Encapsulated-vendor-class ID needed by some configurations of
# Etherboot to allow is to recognise the DHCP server.
# Etherboot to allow is to recognize the DHCP server.
#dhcp-option=vendor:Etherboot,60,"Etherboot"
# Send options to PXELinux. Note that we need to send the options even
# though they don't appear in the parameter request list, so we need
# to use dhcp-option-force here.
# See http://syslinux.zytor.com/pxe.php#special for details.
# Magic number - needed before anything else is recognised
# Magic number - needed before anything else is recognized
#dhcp-option-force=208,f1:00:74:7e
# Configuration file name
#dhcp-option-force=209,configs/common

View File

@@ -1 +0,0 @@
var x = "Pi-hole: A black hole for Internet advertisements."

View File

@@ -1,183 +1,395 @@
<?php
/* Detailed Pi-Hole Block Page: Show "Website Blocked" if user browses to site, but not to image/file requests based on the work of WaLLy3K for DietPi & Pi-Hole */
/* Pi-hole: A black hole for Internet advertisements
* (c) 2017 Pi-hole, LLC (https://pi-hole.net)
* Network-wide ad blocking via your own hardware.
*
* This file is copyright under the latest version of the EUPL.
* Please see LICENSE file for your rights under this license. */
$uri = escapeshellcmd($_SERVER['REQUEST_URI']);
$serverName = escapeshellcmd($_SERVER['SERVER_NAME']);
// Sanitize SERVER_NAME output
$serverName = htmlspecialchars($_SERVER["SERVER_NAME"]);
// Remove external ipv6 brackets if any
$serverName = preg_replace('/^\[(.*)\]$/', '${1}', $serverName);
// Retrieve server URI extension (EG: jpg, exe, php)
$uriExt = pathinfo($uri, PATHINFO_EXTENSION);
if (!is_file("/etc/pihole/setupVars.conf"))
die("[ERROR] File not found: <code>/etc/pihole/setupVars.conf</code>");
// Define which URL extensions get rendered as "Website Blocked"
$webExt = array('asp', 'htm', 'html', 'php', 'rss', 'xml');
// Get values from setupVars.conf
$setupVars = parse_ini_file("/etc/pihole/setupVars.conf");
$svPasswd = !empty($setupVars["WEBPASSWORD"]);
$svEmail = (!empty($setupVars["ADMIN_EMAIL"]) && filter_var($setupVars["ADMIN_EMAIL"], FILTER_VALIDATE_EMAIL)) ? $setupVars["ADMIN_EMAIL"] : "";
unset($setupVars);
if(in_array($uriExt, $webExt) || empty($uriExt))
{
// Requested resource has an extension listed in $webExt
// or no extension (index access to some folder incl. the root dir)
$showPage = true;
}
else
{
// Something else
$showPage = false;
// Set landing page location, found within /var/www/html/
$landPage = "../landing.php";
// Define array for hostnames to be accepted as self address for splash page
$authorizedHosts = [ "localhost" ];
if (!empty($_SERVER["FQDN"])) {
// If setenv.add-environment = ("fqdn" => "true") is configured in lighttpd,
// append $serverName to $authorizedHosts
array_push($authorizedHosts, $serverName);
} else if (!empty($_SERVER["VIRTUAL_HOST"])) {
// Append virtual hostname to $authorizedHosts
array_push($authorizedHosts, $_SERVER["VIRTUAL_HOST"]);
}
// Handle incoming URI types
if (!$showPage)
{
// Set which extension types render as Block Page (Including "" for index.ext)
$validExtTypes = array("asp", "htm", "html", "php", "rss", "xml", "");
// Get extension of current URL
$currentUrlExt = pathinfo($_SERVER["REQUEST_URI"], PATHINFO_EXTENSION);
// Set mobile friendly viewport
$viewPort = '<meta name="viewport" content="width=device-width, initial-scale=1">';
// Set response header
function setHeader($type = "x") {
header("X-Pi-hole: A black hole for Internet advertisements.");
if (isset($type) && $type === "js") header("Content-Type: application/javascript");
}
// Determine block page type
if ($serverName === "pi.hole"
|| (!empty($_SERVER["VIRTUAL_HOST"]) && $serverName === $_SERVER["VIRTUAL_HOST"])) {
// Redirect to Web Interface
exit(header("Location: /admin"));
} elseif (filter_var($serverName, FILTER_VALIDATE_IP) || in_array($serverName, $authorizedHosts)) {
// When directly browsing via IP or authorized hostname
// Render splash/landing page based off presence of $landPage file
// Unset variables so as to not be included in $landPage or $splashPage
unset($svPasswd, $svEmail, $authorizedHosts, $validExtTypes, $currentUrlExt);
// If $landPage file is present
if (is_file(getcwd()."/$landPage")) {
unset($serverName, $viewPort); // unset extra variables not to be included in $landpage
include $landPage;
exit();
}
// If $landPage file was not present, Set Splash Page output
$splashPage = <<<EOT
<!doctype html>
<html lang='en'>
<head>
<meta charset='utf-8'>
$viewPort
<title>● $serverName</title>
<link rel='stylesheet' href='pihole/blockingpage.css'>
<link rel='shortcut icon' href='admin/img/favicons/favicon.ico' type='image/x-icon'>
</head>
<body id='splashpage'>
<div id="pihole_card">
<img src='admin/img/logo.svg' alt='Pi-hole logo' id="pihole_logo_splash" />
<p>Pi-<strong>hole</strong>: Your black hole for Internet advertisements</p>
<a href='/admin'>Did you mean to go to the admin panel?</a>
</div>
</body>
</html>
EOT;
exit($splashPage);
} elseif ($currentUrlExt === "js") {
// Serve Pi-hole JavaScript for blocked domains requesting JS
exit(setHeader("js").'var x = "Pi-hole: A black hole for Internet advertisements."');
} elseif (strpos($_SERVER["REQUEST_URI"], "?") !== FALSE && isset($_SERVER["HTTP_REFERER"])) {
// Serve blank image upon receiving REQUEST_URI w/ query string & HTTP_REFERRER
// e.g: An iframe of a blocked domain
exit(setHeader().'<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><script>window.close();</script>
</head>
<body>
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=">
</body>
</html>');
} elseif (!in_array($currentUrlExt, $validExtTypes) || substr_count($_SERVER["REQUEST_URI"], "?")) {
// Serve SVG upon receiving non $validExtTypes URL extension or query string
// e.g: Not an iframe of a blocked domain, such as when browsing to a file/query directly
// QoL addition: Allow the SVG to be clicked on in order to quickly show the full Block Page
$blockImg = '<a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="110" height="16">
<circle cx="8" cy="8" r="7" fill="none" stroke="rgba(152,2,2,.5)" stroke-width="2"/>
<path fill="rgba(152,2,2,.5)" d="M11.526 3.04l1.414 1.415-8.485 8.485-1.414-1.414z"/>
<text x="19.3" y="12" opacity=".3" style="font:11px Arial">
Blocked by Pi-hole
</text>
</svg>
</a>';
exit(setHeader()."<!doctype html>
<html lang='en'>
<head>
<meta charset='utf-8'>
$viewPort
</head>
<body>$blockImg</body>
</html>");
}
/* Start processing Block Page from here */
// Define admin email address text based off $svEmail presence
$bpAskAdmin = !empty($svEmail) ? '<a href="mailto:'.$svEmail.'?subject=Site Blocked: '.$serverName.'"></a>' : "<span/>";
// Get possible non-standard location of FTL's database
$FTLsettings = parse_ini_file("/etc/pihole/pihole-FTL.conf");
if (isset($FTLsettings["GRAVITYDB"])) {
$gravityDBFile = $FTLsettings["GRAVITYDB"];
} else {
$gravityDBFile = "/etc/pihole/gravity.db";
}
// Connect to gravity.db
try {
$db = new SQLite3($gravityDBFile, SQLITE3_OPEN_READONLY);
} catch (Exception $exception) {
die("[ERROR]: Failed to connect to gravity.db");
}
// Get all adlist addresses
$adlistResults = $db->query("SELECT address FROM vw_adlist");
$adlistsUrls = array();
while ($row = $adlistResults->fetchArray()) {
array_push($adlistsUrls, $row[0]);
}
if (empty($adlistsUrls))
die("[ERROR]: There are no adlists enabled");
// Get total number of blocklists (Including Whitelist, Blacklist & Wildcard lists)
$adlistsCount = count($adlistsUrls) + 3;
// Set query timeout
ini_set("default_socket_timeout", 3);
// Logic for querying blocklists
function queryAds($serverName) {
// Determine the time it takes while querying adlists
$preQueryTime = microtime(true)-$_SERVER["REQUEST_TIME_FLOAT"];
$queryAdsURL = sprintf(
"http://127.0.0.1:%s/admin/scripts/pi-hole/php/queryads.php?domain=%s&bp",
$_SERVER["SERVER_PORT"],
$serverName
);
$queryAds = file($queryAdsURL, FILE_IGNORE_NEW_LINES);
$queryAds = array_values(array_filter(preg_replace("/data:\s+/", "", $queryAds)));
$queryTime = sprintf("%.0f", (microtime(true)-$_SERVER["REQUEST_TIME_FLOAT"]) - $preQueryTime);
// Exception Handling
try {
// Define Exceptions
if (strpos($queryAds[0], "No exact results") !== FALSE) {
// Return "none" into $queryAds array
return array("0" => "none");
} else if ($queryTime >= ini_get("default_socket_timeout")) {
// Connection Timeout
throw new Exception ("Connection timeout (".ini_get("default_socket_timeout")."s)");
} elseif (!strpos($queryAds[0], ".") !== false) {
// Unknown $queryAds output
throw new Exception ("Unhandled error message (<code>$queryAds[0]</code>)");
}
return $queryAds;
} catch (Exception $e) {
// Return exception as array
return array("0" => "error", "1" => $e->getMessage());
}
}
// Get results of queryads.php exact search
$queryAds = queryAds($serverName);
// Pass error through to Block Page
if ($queryAds[0] === "error")
die("[ERROR]: Unable to parse results from <i>queryads.php</i>: <code>".$queryAds[1]."</code>");
// Count total number of matching blocklists
$featuredTotal = count($queryAds);
// Place results into key => value array
$queryResults = null;
foreach ($queryAds as $str) {
$value = explode(" ", $str);
@$queryResults[$value[0]] .= "$value[1]";
}
// Determine if domain has been blacklisted, whitelisted, wildcarded or CNAME blocked
if (strpos($queryAds[0], "blacklist") !== FALSE) {
$notableFlagClass = "blacklist";
$adlistsUrls = array("π" => substr($queryAds[0], 2));
} elseif (strpos($queryAds[0], "whitelist") !== FALSE) {
$notableFlagClass = "noblock";
$adlistsUrls = array("π" => substr($queryAds[0], 2));
$wlInfo = "recentwl";
} elseif (strpos($queryAds[0], "wildcard") !== FALSE) {
$notableFlagClass = "wildcard";
$adlistsUrls = array("π" => substr($queryAds[0], 2));
} elseif ($queryAds[0] === "none") {
$featuredTotal = "0";
$notableFlagClass = "noblock";
// QoL addition: Determine appropriate info message if CNAME exists
// Suggests to the user that $serverName has a CNAME (alias) that may be blocked
$dnsRecord = dns_get_record("$serverName")[0];
if (array_key_exists("target", $dnsRecord)) {
$wlInfo = $dnsRecord['target'];
} else {
$wlInfo = "unknown";
}
}
// Set #bpOutput notification
$wlOutputClass = (isset($wlInfo) && $wlInfo === "recentwl") ? $wlInfo : "hidden";
$wlOutput = (isset($wlInfo) && $wlInfo !== "recentwl") ? "<a href='http://$wlInfo'>$wlInfo</a>" : "";
// Get Pi-hole Core version
$phVersion = exec("cd /etc/.pihole/ && git describe --long --tags");
// Print $execTime on development branches
// Testing for - is marginally faster than "git rev-parse --abbrev-ref HEAD"
if (explode("-", $phVersion)[1] != "0")
$execTime = microtime(true)-$_SERVER["REQUEST_TIME_FLOAT"];
// Please Note: Text is added via CSS to allow an admin to provide a localized
// language without the need to edit this file
setHeader();
?>
<!doctype html>
<!-- Pi-hole: A black hole for Internet advertisements
* (c) 2017 Pi-hole, LLC (https://pi-hole.net)
* Network-wide ad blocking via your own hardware.
*
* This file is copyright under the latest version of the EUPL. -->
<html>
<head>
<script>window.close();</script></head>
<body>
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
</body>
</html>
<?php
die();
}
<meta charset="utf-8">
<?=$viewPort ?>
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="x-dns-prefetch-control" content="off">
<link rel="stylesheet" href="pihole/blockingpage.css">
<link rel="shortcut icon" href="admin/img/favicons/favicon.ico" type="image/x-icon">
<title>● <?=$serverName ?></title>
<script src="admin/scripts/vendor/jquery.min.js"></script>
<script>
window.onload = function () {
<?php
// Remove href fallback from "Back to safety" button
if ($featuredTotal > 0) {
echo '$("#bpBack").removeAttr("href");';
// Get Pi-Hole version
$piHoleVersion = exec('cd /etc/.pihole/ && git describe --tags --abbrev=0');
// Enable whitelisting if JS is available
echo '$("#bpWhitelist").prop("disabled", false);';
// Don't show the URI if it is the root directory
if($uri == "/")
{
$uri = "";
}
?>
<!DOCTYPE html>
<head>
<meta charset='UTF-8'/>
<title>Website Blocked</title>
<link rel='stylesheet' href='http://pi.hole/pihole/blockingpage.css'/>
<link rel='shortcut icon' href='http://pi.hole/admin/img/favicon.png' type='image/png'/>
<meta name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0, user-scalable=no'/>
<meta name='robots' content='noindex,nofollow'/>
// Enable password input if necessary
if (!empty($svPasswd)) {
echo '$("#bpWLPassword").attr("placeholder", "Password");';
echo '$("#bpWLPassword").prop("disabled", false);';
}
// Otherwise hide the input
else {
echo '$("#bpWLPassword").hide();';
}
}
?>
}
</script>
</head>
<body id="body">
<body id="blockpage"><div id="bpWrapper">
<header>
<h1><a href='/'>Website Blocked</a></h1>
<h1 id="bpTitle">
<a class="title" href="/"><?php //Website Blocked ?></a>
</h1>
<div class="spc"></div>
<input id="bpAboutToggle" type="checkbox">
<div id="bpAbout">
<div class="aboutPH">
<div class="aboutImg"></div>
<p>Open Source Ad Blocker
<small>Designed for Raspberry Pi</small>
</p>
</div>
<div class="aboutLink">
<a class="linkPH" href="https://docs.pi-hole.net/"><?php //About PH ?></a>
<?php if (!empty($svEmail)) echo '<a class="linkEmail" href="mailto:'.$svEmail.'"></a>'; ?>
</div>
</div>
<div id="bpAlt">
<label class="altBtn" for="bpAboutToggle"><?php //Why am I here? ?></label>
</div>
</header>
<main>
<div>Access to the following site has been blocked:<br/>
<span class='pre msg'><?php echo $serverName.$uri; ?></span></div>
<div>If you have an ongoing use for this website, please ask the owner of the Pi-hole in your network to have it whitelisted.</div>
<input id="domain" type="hidden" value="<?php echo $serverName; ?>">
<input id="quiet" type="hidden" value="yes">
<button id="btnSearch" class="buttons blocked" type="button" style="visibility: hidden;"></button>
This page is blocked because it is explicitly contained within the following block list(s):
<pre id="output" style="width: 100%; height: 100%;" hidden="true"></pre><br/>
<div class='buttons blocked'>
<a class='safe33' href='javascript:history.back()'>Go back</a>
<a class='safe33' id="whitelisting">Whitelist this page</a>
<a class='safe33' href='javascript:window.close()'>Close window</a>
</div>
<div style="width: 98%; text-align: center; padding: 10px;" hidden="true" id="whitelistingform">
<p>Note that whitelisting domains which are blocked using the wildcard method won't work.</p>
<p>Password required!</p><br/>
<form>
<input name="list" type="hidden" value="white"><br/>
Domain:<br/>
<input name="domain" value="<?php echo $serverName ?>" disabled><br/><br/>
Password:<br/>
<input type="password" id="pw" name="pw"><br/><br/>
<button class="buttons33 safe" id="btnAdd" type="button">Whitelist</button>
</form><br/>
<pre id="whitelistingoutput" style="width: 100%; height: 100%; padding: 5px;" hidden="true"></pre><br/>
</div>
<div id="bpOutput" class="<?=$wlOutputClass ?>"><?=$wlOutput ?></div>
<div id="bpBlock">
<p class="blockMsg"><?=$serverName ?></p>
</div>
<?php if(isset($notableFlagClass)) { ?>
<div id="bpFlag">
<p class="flagMsg <?=$notableFlagClass ?>"></p>
</div>
<?php } ?>
<div id="bpHelpTxt"><?=$bpAskAdmin ?></div>
<div id="bpButtons" class="buttons">
<a id="bpBack" onclick="javascript:history.back()" href="about:home"></a>
<?php if ($featuredTotal > 0) echo '<label id="bpInfo" for="bpMoreToggle"></label>'; ?>
</div>
<input id="bpMoreToggle" type="checkbox">
<div id="bpMoreInfo">
<span id="bpFoundIn"><span><?=$featuredTotal ?></span><?=$adlistsCount ?></span>
<pre id='bpQueryOutput'><?php if ($featuredTotal > 0) foreach ($queryResults as $num => $value) { echo "<span>[$num]:</span>$adlistsUrls[$num]\n"; } ?></pre>
<form id="bpWLButtons" class="buttons">
<input id="bpWLDomain" type="text" value="<?=$serverName ?>" disabled>
<input id="bpWLPassword" type="password" placeholder="JavaScript disabled" disabled>
<button id="bpWhitelist" type="button" disabled></button>
</form>
</div>
</main>
<footer>Generated <?php echo date('D g:i A, M d'); ?> by Pi-hole <?php echo $piHoleVersion; ?></footer>
<script src="http://pi.hole/admin/scripts/vendor/jquery.min.js"></script>
<script>
// Create event for when the output is appended to
(function($) {
var origAppend = $.fn.append;
$.fn.append = function () {
return origAppend.apply(this, arguments).trigger("append");
};
})(jQuery);
</script>
<script src="http://pi.hole/admin/scripts/pi-hole/js/queryads.js"></script>
<footer><span><?=date("l g:i A, F dS"); ?>.</span> Pi-hole <?=$phVersion ?> (<?=gethostname()."/".$_SERVER["SERVER_ADDR"]; if (isset($execTime)) printf("/%.2fs", $execTime); ?>)</footer>
</div>
<script>
function inIframe () {
try {
return window.self !== window.top;
} catch (e) {
return true;
function add() {
$("#bpOutput").removeClass("hidden error exception");
$("#bpOutput").addClass("add");
var domain = "<?=$serverName ?>";
var pw = $("#bpWLPassword");
if(domain.length === 0) {
return;
}
}
// Try to detect if page is loaded within iframe
if(inIframe())
{
// Within iframe
// hide content of page
$('#body').hide();
// remove background
document.body.style.backgroundImage = "none";
}
else
{
// Query adlists
$( "#btnSearch" ).click();
}
$( "#whitelisting" ).on( "click", function(){ $( "#whitelistingform" ).removeAttr( "hidden" ); });
// Remove whitelist functionality if the domain was blocked because of a wildcard
$( "#output" ).bind("append", function(){
if($( "#output" ).contents()[0].data.indexOf("Wildcard blocking") !== -1)
{
$( "#whitelisting" ).hide();
$( "#whitelistingform" ).hide();
}
});
function add() {
var domain = $("#domain");
var pw = $("#pw");
if(domain.val().length === 0){
return;
}
$.ajax({
url: "admin/scripts/pi-hole/php/add.php",
method: "post",
data: {"domain":domain.val(), "list":"white", "pw":pw.val()},
success: function(response) {
$( "#whitelistingoutput" ).removeAttr( "hidden" );
if(response.indexOf("Pi-hole blocking") !== -1)
{
// Reload page after 5 seconds
setTimeout(function(){window.location.reload(1);}, 5000);
$( "#whitelistingoutput" ).html("---> Success <---<br/>You may have to flush your DNS cache");
}
else
{
$( "#whitelistingoutput" ).html("---> "+response+" <---");
}
},
error: function(jqXHR, exception) {
$( "#whitelistingoutput" ).removeAttr( "hidden" );
$( "#whitelistingoutput" ).html("---> Unknown Error <---");
}
});
}
// Handle enter button for adding domains
$(document).keypress(function(e) {
if(e.which === 13 && $("#pw").is(":focus")) {
$.ajax({
url: "/admin/scripts/pi-hole/php/add.php",
method: "post",
data: {"domain":domain, "list":"white", "pw":pw.val()},
success: function(response) {
if(response.indexOf("Pi-hole blocking") !== -1) {
setTimeout(function(){window.location.reload(1);}, 10000);
$("#bpOutput").removeClass("add");
$("#bpOutput").addClass("success");
$("#bpOutput").html("");
} else {
$("#bpOutput").removeClass("add");
$("#bpOutput").addClass("error");
$("#bpOutput").html(""+response+"");
}
},
error: function(jqXHR, exception) {
$("#bpOutput").removeClass("add");
$("#bpOutput").addClass("exception");
$("#bpOutput").html("");
}
});
}
<?php if ($featuredTotal > 0) { ?>
$(document).keypress(function(e) {
if(e.which === 13 && $("#bpWLPassword").is(":focus")) {
add();
}
});
$("#bpWhitelist").on("click", function() {
add();
}
});
// Handle buttons
$("#btnAdd").on("click", function() {
add();
});
});
<?php } ?>
</script>
</body>
</html>
</body></html>

View File

@@ -1,66 +1,115 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# lighttpd config for Pi-hole
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# Lighttpd config for Pi-hole
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
###############################################################################
# FILE AUTOMATICALLY OVERWRITTEN BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
# #
# CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE: #
# /etc/lighttpd/external.conf #
###############################################################################
server.modules = (
"mod_access",
"mod_accesslog",
"mod_auth",
"mod_expire",
"mod_compress",
"mod_redirect",
"mod_setenv",
"mod_rewrite"
"mod_access",
"mod_accesslog",
"mod_auth",
"mod_expire",
"mod_compress",
"mod_redirect",
"mod_setenv",
"mod_rewrite"
)
server.document-root = "/var/www/html"
server.error-handler-404 = "pihole/index.php"
server.error-handler-404 = "/pihole/index.php"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.pid-file = "/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80
accesslog.filename = "/var/log/lighttpd/access.log"
accesslog.format = "%{%s}t|%V|%r|%s|%b"
accesslog.filename = "/var/log/lighttpd/access.log"
accesslog.format = "%{%s}t|%V|%r|%s|%b"
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
url.access-deny = ( "~", ".inc", ".md", ".yml", ".ini" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = (
"application/json",
"application/vnd.ms-fontobject",
"application/xml",
"font/eot",
"font/opentype",
"font/otf",
"font/ttf",
"image/bmp",
"image/svg+xml",
"image/vnd.microsoft.icon",
"image/x-icon",
"text/css",
"text/html",
"text/javascript",
"text/plain",
"text/xml"
)
mimetype.assign = (
".ico" => "image/x-icon",
".jpeg" => "image/jpeg",
".jpg" => "image/jpeg",
".png" => "image/png",
".svg" => "image/svg+xml",
".css" => "text/css; charset=utf-8",
".html" => "text/html; charset=utf-8",
".js" => "text/javascript; charset=utf-8",
".json" => "application/json; charset=utf-8",
".map" => "application/json; charset=utf-8",
".txt" => "text/plain; charset=utf-8",
".eot" => "application/vnd.ms-fontobject",
".otf" => "font/otf",
".ttc" => "font/collection",
".ttf" => "font/ttf",
".woff" => "font/woff",
".woff2" => "font/woff2"
)
# Add user chosen options held in external file
# This uses include_shell instead of an include wildcard for compatibility
include_shell "cat external.conf 2>/dev/null"
# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
# Prevent Lighttpd from enabling Let's Encrypt SSL for every blocked domain
#include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
include_shell "find /etc/lighttpd/conf-enabled -name '*.conf' -a ! -name 'letsencrypt.conf' -printf 'include \"%p\"\n' 2>/dev/null"
# If the URL starts with /admin, it is the Web interface
$HTTP["url"] =~ "^/admin/" {
# Create a response header for debugging using curl -I
# Create a response header for debugging using curl -I
setenv.add-response-header = (
"X-Pi-hole" => "The Pi-hole Web interface is working!",
"X-Frame-Options" => "DENY"
)
$HTTP["url"] =~ "\.(eot|otf|tt[cf]|woff2?)$" {
# Allow Block Page access to local fonts
setenv.add-response-header = ( "Access-Control-Allow-Origin" => "*" )
}
}
# Rewite js requests, must be out of $HTTP block due to bug #2526
url.rewrite = ( "^(?!/admin/).*\.js$" => "pihole/index.js" )
# If the URL does not start with /admin, then it is a query for an ad domain
$HTTP["url"] =~ "^(?!/admin)/.*" {
# Create a response header for debugging using curl -I
setenv.add-response-header = ( "X-Pi-hole" => "A black hole for Internet advertisements." )
# Block . files from being served, such as .git, .github, .gitignore
$HTTP["url"] =~ "^/admin/\.(.*)" {
url.access-deny = ("")
}
# Add user chosen options held in external file
include_shell "cat external.conf 2>/dev/null"
# Default expire header
expire.url = ( "" => "access plus 0 seconds" )

View File

@@ -1,83 +1,123 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# lighttpd config for Pi-hole
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# Lighttpd config for Pi-hole
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
###############################################################################
# FILE AUTOMATICALLY OVERWRITTEN BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
# #
# CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE: #
# /etc/lighttpd/external.conf #
###############################################################################
server.modules = (
"mod_access",
"mod_auth",
"mod_fastcgi",
"mod_accesslog",
"mod_expire",
"mod_compress",
"mod_redirect",
"mod_setenv",
"mod_rewrite"
"mod_access",
"mod_auth",
"mod_expire",
"mod_fastcgi",
"mod_accesslog",
"mod_compress",
"mod_redirect",
"mod_setenv",
"mod_rewrite"
)
server.document-root = "/var/www/html"
server.error-handler-404 = "pihole/index.php"
server.error-handler-404 = "/pihole/index.php"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.pid-file = "/run/lighttpd.pid"
server.username = "lighttpd"
server.groupname = "lighttpd"
server.port = 80
accesslog.filename = "/var/log/lighttpd/access.log"
accesslog.format = "%{%s}t|%V|%r|%s|%b"
accesslog.filename = "/var/log/lighttpd/access.log"
accesslog.format = "%{%s}t|%V|%r|%s|%b"
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
url.access-deny = ( "~", ".inc", ".md", ".yml", ".ini" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = (
"application/json",
"application/vnd.ms-fontobject",
"application/xml",
"font/eot",
"font/opentype",
"font/otf",
"font/ttf",
"image/bmp",
"image/svg+xml",
"image/vnd.microsoft.icon",
"image/x-icon",
"text/css",
"text/html",
"text/javascript",
"text/plain",
"text/xml"
)
mimetype.assign = ( ".png" => "image/png",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".html" => "text/html",
".css" => "text/css; charset=utf-8",
".js" => "application/javascript",
".json" => "application/json",
".txt" => "text/plain",
".svg" => "image/svg+xml" )
mimetype.assign = (
".ico" => "image/x-icon",
".jpeg" => "image/jpeg",
".jpg" => "image/jpeg",
".png" => "image/png",
".svg" => "image/svg+xml",
".css" => "text/css; charset=utf-8",
".html" => "text/html; charset=utf-8",
".js" => "text/javascript; charset=utf-8",
".json" => "application/json; charset=utf-8",
".map" => "application/json; charset=utf-8",
".txt" => "text/plain; charset=utf-8",
".eot" => "application/vnd.ms-fontobject",
".otf" => "font/otf",
".ttc" => "font/collection",
".ttf" => "font/ttf",
".woff" => "font/woff",
".woff2" => "font/woff2"
)
# Add user chosen options held in external file
# This uses include_shell instead of an include wildcard for compatibility
include_shell "cat external.conf 2>/dev/null"
# default listening port for IPv6 falls back to the IPv4 port
#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
#include_shell "/usr/share/lighttpd/create-mime.assign.pl"
#include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)
)
)
fastcgi.server = (
".php" => (
"localhost" => (
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)
)
)
# If the URL starts with /admin, it is the Web interface
$HTTP["url"] =~ "^/admin/" {
# Create a response header for debugging using curl -I
setenv.add-response-header = ( "X-Pi-hole" => "The Pi-hole Web interface is working!" )
# Create a response header for debugging using curl -I
setenv.add-response-header = (
"X-Pi-hole" => "The Pi-hole Web interface is working!",
"X-Frame-Options" => "DENY"
)
$HTTP["url"] =~ "\.(eot|otf|tt[cf]|woff2?)$" {
# Allow Block Page access to local fonts
setenv.add-response-header = ( "Access-Control-Allow-Origin" => "*" )
}
}
# Rewite js requests, must be out of $HTTP block due to bug #2526
url.rewrite = ( "^(?!/admin/).*\.js$" => "pihole/index.js" )
# If the URL does not start with /admin, then it is a query for an ad domain
$HTTP["url"] =~ "^(?!/admin)/.*" {
# Create a response header for debugging using curl -I
setenv.add-response-header = ( "X-Pi-hole" => "A black hole for Internet advertisements." )
# Block . files from being served, such as .git, .github, .gitignore
$HTTP["url"] =~ "^/admin/\.(.*)" {
url.access-deny = ("")
}
# Add user chosen options held in external file
include_shell "cat external.conf 2>/dev/null"
# Default expire header
expire.url = ( "" => "access plus 0 seconds" )

View File

@@ -1,10 +0,0 @@
/var/log/pihole.log {
# su #
daily
copytruncate
rotate 5
compress
delaycompress
notifempty
nomail
}

View File

@@ -1,29 +0,0 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# Updates ad sources every week
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This file is under source-control of the Pi-hole installation and update
# scripts, any changes made to this file will be overwritten when the softare
# is updated or re-installed. Please make any changes to the appropriate crontab
# or other cron file snippets.
# Pi-hole: Update the ad sources once a week on Sunday at 01:59
# Download any updates from the adlists
59 1 * * 7 root PATH="$PATH:/usr/local/bin/" pihole updateGravity
# Pi-hole: Update Pi-hole! Uncomment to enable auto update
#30 2 * * 7 root PATH="$PATH:/usr/local/bin/" pihole updatePihole
# Pi-hole: Flush the log daily at 00:00 so it doesn't get out of control
# Stats will be viewable in the Web interface thanks to the cron job above
# The flush script will use logrotate if available
00 00 * * * root PATH="$PATH:/usr/local/bin/" pihole flush
@reboot root /usr/sbin/logrotate /etc/pihole/logrotate

View File

@@ -1,11 +0,0 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# Allows the WebUI to use Pi-hole commands
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.

File diff suppressed because it is too large Load Diff

View File

@@ -1,181 +1,227 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Completely uninstalls Pi-hole
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
source "/opt/pihole/COL_TABLE"
while true; do
read -rp " ${QST} Are you sure you would like to remove ${COL_WHITE}Pi-hole${COL_NC}? [y/N] " yn
case ${yn} in
[Yy]* ) break;;
[Nn]* ) echo -e "${OVER} ${COL_LIGHT_GREEN}Uninstall has been canceled${COL_NC}"; exit 0;;
* ) echo -e "${OVER} ${COL_LIGHT_GREEN}Uninstall has been canceled${COL_NC}"; exit 0;;
esac
done
# Must be root to uninstall
str="Root user check"
if [[ ${EUID} -eq 0 ]]; then
echo "::: You are root."
echo -e " ${TICK} ${str}"
else
echo "::: Sudo will be used for the uninstall."
# Check if it is actually installed
# If it isn't, exit because the unnstall cannot complete
if [ -x "$(command -v sudo)" ]; then
export SUDO="sudo"
else
echo "::: Please install sudo or run this as root."
exit 1
fi
# Check if sudo is actually installed
# If it isn't, exit because the uninstall can not complete
if [ -x "$(command -v sudo)" ]; then
export SUDO="sudo"
else
echo -e " ${CROSS} ${str}
Script called with non-root privileges
The Pi-hole requires elevated privileges to uninstall"
exit 1
fi
fi
# Compatability
if [ -x "$(command -v rpm)" ]; then
# Fedora Family
if [ -x "$(command -v dnf)" ]; then
PKG_MANAGER="dnf"
else
PKG_MANAGER="yum"
fi
PKG_REMOVE="${PKG_MANAGER} remove -y"
PIHOLE_DEPS=( bind-utils bc dnsmasq lighttpd lighttpd-fastcgi php-common git curl unzip wget findutils )
package_check() {
rpm -qa | grep ^$1- > /dev/null
}
package_cleanup() {
${SUDO} ${PKG_MANAGER} -y autoremove
}
elif [ -x "$(command -v apt-get)" ]; then
# Debian Family
PKG_MANAGER="apt-get"
PKG_REMOVE="${PKG_MANAGER} -y remove --purge"
PIHOLE_DEPS=( dnsutils bc dnsmasq lighttpd php5-common git curl unzip wget )
package_check() {
dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -c "ok installed"
}
package_cleanup() {
${SUDO} ${PKG_MANAGER} -y autoremove
${SUDO} ${PKG_MANAGER} -y autoclean
}
else
echo "OS distribution not supported"
exit
readonly PI_HOLE_FILES_DIR="/etc/.pihole"
PH_TEST="true"
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
# setupVars set in basic-install.sh
source "${setupVars}"
# distro_check() sourced from basic-install.sh
distro_check
# Install packages used by the Pi-hole
DEPS=("${INSTALLER_DEPS[@]}" "${PIHOLE_DEPS[@]}")
if [[ "${INSTALL_WEB_SERVER}" == true ]]; then
# Install the Web dependencies
DEPS+=("${PIHOLE_WEB_DEPS[@]}")
fi
spinner() {
local pid=$1
local delay=0.50
local spinstr='/-\|'
while [ "$(ps a | awk '{print $1}' | grep "${pid}")" ]; do
local temp=${spinstr#?}
printf " [%c] " "${spinstr}"
local spinstr=${temp}${spinstr%"$temp}"}
sleep ${delay}
printf "\b\b\b\b\b\b"
done
printf " \b\b\b\b"
}
# Compatibility
if [ -x "$(command -v apt-get)" ]; then
# Debian Family
PKG_REMOVE=("${PKG_MANAGER}" -y remove --purge)
package_check() {
dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -c "ok installed"
}
elif [ -x "$(command -v rpm)" ]; then
# Fedora Family
PKG_REMOVE=("${PKG_MANAGER}" remove -y)
package_check() {
rpm -qa | grep "^$1-" > /dev/null
}
else
echo -e " ${CROSS} OS distribution not supported"
exit 1
fi
removeAndPurge() {
# Purge dependencies
echo ":::"
for i in "${PIHOLE_DEPS[@]}"; do
package_check ${i} > /dev/null
if [ $? -eq 0 ]; then
while true; do
read -rp "::: Do you wish to remove ${i} from your system? [y/n]: " yn
case ${yn} in
[Yy]* ) printf ":::\tRemoving %s..." "${i}"; ${SUDO} ${PKG_REMOVE} "${i}" &> /dev/null & spinner $!; printf "done!\n"; break;;
[Nn]* ) printf ":::\tSkipping %s\n" "${i}"; break;;
* ) printf "::: You must answer yes or no!\n";;
esac
done
else
printf ":::\tPackage %s not installed... Not removing.\n" "${i}"
fi
done
# Purge dependencies
echo ""
for i in "${DEPS[@]}"; do
if package_check "${i}" > /dev/null; then
while true; do
read -rp " ${QST} Do you wish to remove ${COL_WHITE}${i}${COL_NC} from your system? [Y/N] " yn
case ${yn} in
[Yy]* )
echo -ne " ${INFO} Removing ${i}...";
${SUDO} "${PKG_REMOVE[@]}" "${i}" &> /dev/null;
echo -e "${OVER} ${INFO} Removed ${i}";
break;;
[Nn]* ) echo -e " ${INFO} Skipped ${i}"; break;;
esac
done
else
echo -e " ${INFO} Package ${i} not installed"
fi
done
# Remove dependency config files
echo "::: Removing dnsmasq config files..."
${SUDO} rm /etc/dnsmasq.conf /etc/dnsmasq.conf.orig /etc/dnsmasq.d/01-pihole.conf &> /dev/null
# Remove dnsmasq config files
${SUDO} rm -f /etc/dnsmasq.conf /etc/dnsmasq.conf.orig /etc/dnsmasq.d/*-pihole*.conf &> /dev/null
echo -e " ${TICK} Removing dnsmasq config files"
# Take care of any additional package cleaning
printf "::: Auto removing & cleaning remaining dependencies..."
package_cleanup &> /dev/null & spinner $!; printf "done!\n";
# Call removeNoPurge to remove PiHole specific files
removeNoPurge
# Call removeNoPurge to remove Pi-hole specific files
removeNoPurge
}
removeNoPurge() {
echo ":::"
# Only web directories/files that are created by pihole should be removed.
echo "::: Removing the Pi-hole Web server files..."
${SUDO} rm -rf /var/www/html/admin &> /dev/null
${SUDO} rm -rf /var/www/html/pihole &> /dev/null
${SUDO} rm /var/www/html/index.lighttpd.orig &> /dev/null
# Only web directories/files that are created by Pi-hole should be removed
echo -ne " ${INFO} Removing Web Interface..."
${SUDO} rm -rf /var/www/html/admin &> /dev/null
${SUDO} rm -rf /var/www/html/pihole &> /dev/null
${SUDO} rm -f /var/www/html/index.lighttpd.orig &> /dev/null
# If the web directory is empty after removing these files, then the parent html folder can be removed.
if [ -d "/var/www/html" ]; then
if [[ ! "$(ls -A /var/www/html)" ]]; then
${SUDO} rm -rf /var/www/html &> /dev/null
fi
fi
# If the web directory is empty after removing these files, then the parent html directory can be removed.
if [ -d "/var/www/html" ]; then
if [[ ! "$(ls -A /var/www/html)" ]]; then
${SUDO} rm -rf /var/www/html &> /dev/null
fi
fi
echo -e "${OVER} ${TICK} Removed Web Interface"
# Attempt to preserve backwards compatibility with older versions
# to guarantee no additional changes were made to /etc/crontab after
# the installation of pihole, /etc/crontab.pihole should be permanently
# preserved.
if [[ -f /etc/crontab.orig ]]; then
${SUDO} mv /etc/crontab /etc/crontab.pihole
${SUDO} mv /etc/crontab.orig /etc/crontab
${SUDO} service cron restart
echo -e " ${TICK} Restored the default system cron"
fi
# Attempt to preserve backwards compatibility with older versions
# to guarantee no additional changes were made to /etc/crontab after
# the installation of pihole, /etc/crontab.pihole should be permanently
# preserved.
if [[ -f /etc/crontab.orig ]]; then
echo "::: Initial Pi-hole cron detected. Restoring the default system cron..."
${SUDO} mv /etc/crontab /etc/crontab.pihole
${SUDO} mv /etc/crontab.orig /etc/crontab
${SUDO} service cron restart
fi
# Attempt to preserve backwards compatibility with older versions
if [[ -f /etc/cron.d/pihole ]];then
${SUDO} rm -f /etc/cron.d/pihole &> /dev/null
echo -e " ${TICK} Removed /etc/cron.d/pihole"
fi
# Attempt to preserve backwards compatibility with older versions
if [[ -f /etc/cron.d/pihole ]];then
echo "::: Removing cron.d/pihole..."
${SUDO} rm /etc/cron.d/pihole &> /dev/null
fi
if package_check lighttpd > /dev/null; then
if [[ -f /etc/lighttpd/lighttpd.conf.orig ]]; then
${SUDO} mv /etc/lighttpd/lighttpd.conf.orig /etc/lighttpd/lighttpd.conf
fi
echo "::: Removing config files and scripts..."
package_check lighttpd > /dev/null
if [ $? -eq 1 ]; then
${SUDO} rm -rf /etc/lighttpd/ &> /dev/null
else
if [ -f /etc/lighttpd/lighttpd.conf.orig ]; then
${SUDO} mv /etc/lighttpd/lighttpd.conf.orig /etc/lighttpd/lighttpd.conf
fi
fi
if [[ -f /etc/lighttpd/external.conf ]]; then
${SUDO} rm /etc/lighttpd/external.conf
fi
${SUDO} rm /etc/dnsmasq.d/adList.conf &> /dev/null
${SUDO} rm /etc/dnsmasq.d/01-pihole.conf &> /dev/null
${SUDO} rm -rf /var/log/*pihole* &> /dev/null
${SUDO} rm -rf /etc/pihole/ &> /dev/null
${SUDO} rm -rf /etc/.pihole/ &> /dev/null
${SUDO} rm -rf /opt/pihole/ &> /dev/null
${SUDO} rm /usr/local/bin/pihole &> /dev/null
${SUDO} rm /etc/bash_completion.d/pihole &> /dev/null
${SUDO} rm /etc/sudoers.d/pihole &> /dev/null
# If the pihole user exists, then remove
if id "pihole" >/dev/null 2>&1; then
echo "::: Removing pihole user..."
${SUDO} userdel -r pihole
fi
echo -e " ${TICK} Removed lighttpd configs"
fi
echo ":::"
printf "::: Finished removing PiHole from your system. Sorry to see you go!\n"
printf "::: Reach out to us at https://github.com/pi-hole/pi-hole/issues if you need help\n"
printf "::: Reinstall by simpling running\n:::\n:::\tcurl -L https://install.pi-hole.net | bash\n:::\n::: at any time!\n:::\n"
printf "::: PLEASE RESET YOUR DNS ON YOUR ROUTER/CLIENTS TO RESTORE INTERNET CONNECTIVITY!\n"
${SUDO} rm -f /etc/dnsmasq.d/adList.conf &> /dev/null
${SUDO} rm -f /etc/dnsmasq.d/01-pihole.conf &> /dev/null
${SUDO} rm -rf /var/log/*pihole* &> /dev/null
${SUDO} rm -rf /etc/pihole/ &> /dev/null
${SUDO} rm -rf /etc/.pihole/ &> /dev/null
${SUDO} rm -rf /opt/pihole/ &> /dev/null
${SUDO} rm -f /usr/local/bin/pihole &> /dev/null
${SUDO} rm -f /etc/bash_completion.d/pihole &> /dev/null
${SUDO} rm -f /etc/sudoers.d/pihole &> /dev/null
echo -e " ${TICK} Removed config files"
# Restore Resolved
if [[ -e /etc/systemd/resolved.conf.orig ]]; then
${SUDO} cp -p /etc/systemd/resolved.conf.orig /etc/systemd/resolved.conf
systemctl reload-or-restart systemd-resolved
fi
# Remove FTL
if command -v pihole-FTL &> /dev/null; then
echo -ne " ${INFO} Removing pihole-FTL..."
if [[ -x "$(command -v systemctl)" ]]; then
systemctl stop pihole-FTL
else
service pihole-FTL stop
fi
${SUDO} rm -f /etc/init.d/pihole-FTL
${SUDO} rm -f /usr/bin/pihole-FTL
echo -e "${OVER} ${TICK} Removed pihole-FTL"
fi
# If the pihole manpage exists, then delete and rebuild man-db
if [[ -f /usr/local/share/man/man8/pihole.8 ]]; then
${SUDO} rm -f /usr/local/share/man/man8/pihole.8 /usr/local/share/man/man8/pihole-FTL.8 /usr/local/share/man/man5/pihole-FTL.conf.5
${SUDO} mandb -q &>/dev/null
echo -e " ${TICK} Removed pihole man page"
fi
# If the pihole user exists, then remove
if id "pihole" &> /dev/null; then
if ${SUDO} userdel -r pihole 2> /dev/null; then
echo -e " ${TICK} Removed 'pihole' user"
else
echo -e " ${CROSS} Unable to remove 'pihole' user"
fi
fi
# If the pihole group exists, then remove
if getent group "pihole" &> /dev/null; then
if ${SUDO} groupdel pihole 2> /dev/null; then
echo -e " ${TICK} Removed 'pihole' group"
else
echo -e " ${CROSS} Unable to remove 'pihole' group"
fi
fi
echo -e "\\n We're sorry to see you go, but thanks for checking out Pi-hole!
If you need help, reach out to us on GitHub, Discourse, Reddit or Twitter
Reinstall at any time: ${COL_WHITE}curl -sSL https://install.pi-hole.net | bash${COL_NC}
${COL_LIGHT_RED}Please reset the DNS on your router/clients to restore internet connectivity
${COL_LIGHT_GREEN}Uninstallation Complete! ${COL_NC}"
}
######### SCRIPT ###########
echo "::: Preparing to remove packages, be sure that each may be safely removed depending on your operating system."
echo "::: (SAFE TO REMOVE ALL ON RASPBIAN)"
if command -v vcgencmd &> /dev/null; then
echo -e " ${INFO} All dependencies are safe to remove on Raspbian"
else
echo -e " ${INFO} Be sure to confirm if any dependencies should not be removed"
fi
while true; do
read -rp "::: Do you wish to purge PiHole's dependencies from your OS? (You will be prompted for each package) [y/n]: " yn
case ${yn} in
[Yy]* ) removeAndPurge; break;;
[Nn]* ) removeNoPurge; break;;
esac
echo -e " ${INFO} ${COL_YELLOW}The following dependencies may have been added by the Pi-hole install:"
echo -n " "
for i in "${DEPS[@]}"; do
echo -n "${i} "
done
echo "${COL_NC}"
read -rp " ${QST} Do you wish to go through each dependency for removal? (Choosing No will leave all dependencies installed) [Y/n] " yn
case ${yn} in
[Yy]* ) removeAndPurge; break;;
[Nn]* ) removeNoPurge; break;;
* ) removeAndPurge; break;;
esac
done

View File

@@ -1 +0,0 @@
py.test -v -f test/

View File

@@ -1,43 +0,0 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# Lighttpd config file for Pi-hole
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_rewrite"
)
server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
$HTTP["host"] =~ "ads.hulu.com|ads-v-darwin.hulu.com|ads-e-darwin.hulu.com" {
url.redirect = ( ".*" => "http://192.168.1.101:8200/MediaItems/19.mov")
}

View File

@@ -1,17 +0,0 @@
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# MiniDLNA config file for Pi-hole
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
media_dir=V,/var/lib/minidlna/videos/
port=8200
friendly_name=pihole
serial=12345678
model_number=1
inotify=yes

1285
gravity.sh

File diff suppressed because it is too large Load Diff

152
manpages/pihole-FTL.8 Normal file
View File

@@ -0,0 +1,152 @@
.TH "Pihole-FTL" "8" "pihole-FTL" "Pi-hole" "November 2020"
.SH "NAME"
pihole-FTL - Pi-hole : The Faster-Than-Light (FTL) Engine
.br
.SH "SYNOPSIS"
\fBservice pihole-FTL \fR(\fBstart\fR|\fBstop\fR|\fBrestart\fR)
.br
\fBpihole-FTL debug\fR
.br
\fBpihole-FTL test\fR
.br
\fBpihole-FTL -v|-vv\fR
.br
\fBpihole-FTL -t\fR
.br
\fBpihole-FTL -b\fR
.br
\fBpihole-FTL -f\fR
.br
\fBpihole-FTL -h\fR
.br
\fBpihole-FTL dnsmasq-test\fR
.br
\fBpihole-FTL regex-test str\fR
.br
\fBpihole-FTL regex-test str rgx\fR
.br
\fBpihole-FTL lua\fR
.br
\fBpihole-FTL luac\fR
.br
\fBpihole-FTL dhcp-discover\fR
.br
\fBpihole-FTL --\fR (\fBoptions\fR)
.br
.SH "DESCRIPTION"
Pi-hole : The Faster-Than-Light (FTL) Engine is a lightweight, purpose-built daemon used to provide statistics needed for the Pi-hole Web Interface, and its API can be easily integrated into your own projects. Although it is an optional component of the Pi-hole ecosystem, it will be installed by default to provide statistics. As the name implies, FTL does its work \fIvery\fR \fIquickly\fR!
.br
Usage
.br
\fBservice pihole-FTL start\fR
.br
Start the pihole-FTL daemon
.br
\fBservice pihole-FTL stop\fR
.br
Stop the pihole-FTL daemon
.br
\fBservice pihole-FTL restart\fR
.br
If the pihole-FTP daemon is running, stop and then start, otherwise start.
.br
Command line arguments
.br
\fBdebug\fR
.br
Don't go into daemon mode (stay in foreground) + more verbose logging
.br
\fBtest\fR
.br
Start FTL and process everything, but shut down immediately afterwards
.br
\fB-v, version\fR
.br
Don't start FTL, show only version
.br
\fB-vv\fR
.br
Don't start FTL, show verbose version information of embedded applications
.br
\fB-t, tag\fR
.br
Don't start FTL, show only git tag
.br
\fB-b, branch\fR
.br
Don't start FTL, show only git branch FTL was compiled from
.br
\fB-f, no-daemon\fR
.br
Don't go into background (daemon mode)
.br
\fB-h, help\fR
.br
Don't start FTL, show help
.br
\fBdnsmasq-test\fR
.br
Test resolver config file syntax
.br
\fBregex-test str\fR
.br
Test str against all regular expressions in the database
.br
\fBregex-test str rgx\fR
.br
Test str against regular expression given by rgx
.br
\fBlua\fR
.br
Start the embedded Lua interpreter
.br
\fBluac\fR
.br
Execute the embedded Lua compiler
.br
\fBdhcp-discover\fR
.br
Discover DHCP servers in the local network
.br
\fB--\fR (options)
.br
Pass options to internal dnsmasq resolver
.br
.SH "EXAMPLE"
Command line arguments can be arbitrarily combined, e.g:
.br
\fBpihole-FTL debug test\fR
.br
Start ftl in foreground with more verbose logging, process everything and shutdown immediately
.br
.SH "SEE ALSO"
\fBpihole\fR(8), \fBpihole-FTL.conf\fR(5)
.br
.SH "COLOPHON"
Get sucked into the latest news and community activity by entering Pi-hole's orbit. Information about Pi-hole, and the latest version of the software can be found at https://pi-hole.net
.br

313
manpages/pihole-FTL.conf.5 Normal file
View File

@@ -0,0 +1,313 @@
.TH "pihole-FTL.conf" "5" "pihole-FTL.conf" "pihole-FTL.conf" "November 2020"
.SH "NAME"
pihole-FTL.conf - FTL's config file
.br
.SH "DESCRIPTION"
/etc/pihole/pihole-FTL.conf will be read by \fBpihole-FTL(8)\fR on startup.
.br
For each setting the option shown first is the default.
.br
\fBBLOCKINGMODE=IP|IP-AAAA-NODATA|NODATA|NXDOMAIN|NULL\fR
.br
How should FTL reply to blocked queries?
IP - Pi-hole's IPs for blocked domains
IP-AAAA-NODATA - Pi-hole's IP + NODATA-IPv6 for blocked domains
NODATA - Using NODATA for blocked domains
NXDOMAIN - NXDOMAIN for blocked domains
NULL - Null IPs for blocked domains
.br
\fBCNAME_DEEP_INSPECT=true|false\fR
.br
Use this option to disable deep CNAME inspection. This might be beneficial for very low-end devices.
.br
\fBBLOCK_ESNI=true|false\fR
.br
Block requests to _esni.* sub-domains.
.br
\fBMAXLOGAGE=24.0\fR
.br
Up to how many hours of queries should be imported from the database and logs?
.br
Maximum is 744 (31 days)
.br
\fBPRIVACYLEVEL=0|1|2|3|4\fR
.br
Privacy level used to collect Pi-hole statistics.
.br
0 - show everything
.br
1 - hide domains
.br
2 - hide domains and clients
.br
3 - anonymous mode (hide everything)
.br
4 - disable all statistics
.br
\fBIGNORE_LOCALHOST=no|yes\fR
.br
Should FTL ignore queries coming from the local machine?
.br
\fBAAAA_QUERY_ANALYSIS=yes|no\fR
.br
Should FTL analyze AAAA queries?
.br
\fBANALYZE_ONLY_A_AND_AAAA=false|true\fR
.br
Should FTL only analyze A and AAAA queries?
.br
\fBSOCKET_LISTENING=localonly|all\fR
.br
Listen only for local socket connections on the API port or permit all connections.
.br
\fBFTLPORT=4711\fR
.br
On which port should FTL be listening?
.br
\fBRESOLVE_IPV6=yes|no\fR
.br
Should FTL try to resolve IPv6 addresses to hostnames?
.br
\fBRESOLVE_IPV4=yes|no\fR
.br
Should FTL try to resolve IPv4 addresses to hostnames?
.br
\fBDELAY_STARTUP=0\fR
.br
Time in seconds (between 0 and 300) to delay FTL startup.
.br
\fBNICE=-10\fR
.br
Set the niceness of the Pi-hole FTL process.
.br
Can be disabled altogether by setting a value of -999.
.br
\fBNAMES_FROM_NETDB=true|false\fR
.br
Control whether FTL should use a fallback option and try to obtain client names from checking the network table.
.br
E.g. IPv6 clients without a hostname will be compared via MAC address to known clients.
.br
\fB\fBREFRESH_HOSTNAMES=IPV4|ALL|NONE\fR
.br
Change how (and if) hourly PTR requests are made to check for changes in client and upstream server hostnames:
.br
IPV4 - Do the hourly PTR lookups only for IPv4 addresses resolving issues in networks with many short-lived PE IPv6 addresses.
.br
ALL - Do the hourly PTR lookups for all addresses. This can create a lot of PTR queries in networks with many IPv6 addresses.
.br
NONE - Don't do hourly PTR lookups. Look up hostnames once (when first seeing a client) and never again. Future hostname changes may be missed.
.br
\fBMAXNETAGE=365\fR
.br
IP addresses (and associated host names) older than the specified number of days are removed.
.br
This avoids dead entries in the network overview table.
.br
\fBEDNS0_ECS=true|false\fR
.br
Should we overwrite the query source when client information is provided through EDNS0 client subnet (ECS) information?
.br
\fBPARSE_ARP_CACHE=true|false\fR
.br
Parse ARP cache to fill network overview table.
.br
\fBDBIMPORT=yes|no\fR
.br
Should FTL load information from the database on startup to be aware of the most recent history?
.br
\fBMAXDBDAYS=365\fR
.br
How long should queries be stored in the database? Setting this to 0 disables the database
.br
\fBDBINTERVAL=1.0\fR
.br
How often do we store queries in FTL's database [minutes]?
.br
Accepts value between 0.1 (6 sec) and 1440 (1 day)
.br
\fBDBFILE=/etc/pihole/pihole-FTL.db\fR
.br
Specify path and filename of FTL's SQLite long-term database.
.br
Setting this to DBFILE= disables the database altogether
.br
\fBLOGFILE=/var/log/pihole-FTL.log\fR
.br
The location of FTL's log file.
.br
\fBPIDFILE=/run/pihole-FTL.pid\fR
.br
The file which contains the PID of FTL's main process.
.br
\fBPORTFILE=/run/pihole-FTL.port\fR
.br
Specify path and filename where the FTL process will write its API port number.
.br
\fBSOCKETFILE=/run/pihole/FTL.sock\fR
.br
The file containing the socket FTL's API is listening on.
.br
\fBSETUPVARSFILE=/etc/pihole/setupVars.conf\fR
.br
The config file of Pi-hole containing, e.g., the current blocking status (do not change).
.br
\fBMACVENDORDB=/etc/pihole/macvendor.db\fR
.br
The database containing MAC -> Vendor information for the network table.
.br
\fBGRAVITYDB=/etc/pihole/gravity.db\fR
.br
Specify path and filename of FTL's SQLite3 gravity database. This database contains all domains relevant for Pi-hole's DNS blocking.
.br
\fBDEBUG_ALL=false|true\fR
.br
Enable all debug flags. If this is set to true, all other debug config options are ignored.
.br
\fBDEBUG_DATABASE=false|true\fR
.br
Print debugging information about database actions such as SQL statements and performance.
.br
\fBDEBUG_NETWORKING=false|true\fR
.br
Prints a list of the detected network interfaces on the startup of FTL.
.br
\fBDEBUG_LOCKS=false|true\fR
.br
Print information about shared memory locks.
.br
Messages will be generated when waiting, obtaining, and releasing a lock.
.br
\fBDEBUG_QUERIES=false|true\fR
.br
Print extensive DNS query information (domains, types, replies, etc.).
.br
\fBDEBUG_FLAGS=false|true\fR
.br
Print flags of queries received by the DNS hooks.
.br
Only effective when \fBDEBUG_QUERIES\fR is enabled as well.
\fBDEBUG_SHMEM=false|true\fR
.br
Print information about shared memory buffers.
.br
Messages are either about creating or enlarging shmem objects or string injections.
.br
\fBDEBUG_GC=false|true\fR
.br
Print information about garbage collection (GC):
.br
What is to be removed, how many have been removed and how long did GC take.
.br
\fBDEBUG_ARP=false|true\fR
.br
Print information about ARP table processing:
.br
How long did parsing take, whether read MAC addresses are valid, and if the macvendor.db file exists.
.br
\fBDEBUG_REGEX=false|true\fR
.br
Controls if FTL should print extended details about regex matching.
.br
\fBDEBUG_API=false|true\fR
.br
Print extra debugging information during telnet API calls.
.br
Currently only used to send extra information when getting all queries.
.br
\fBDEBUG_OVERTIME=false|true\fR
.br
Print information about overTime memory operations, such as initializing or moving overTime slots.
.br
\fBDEBUG_EXTBLOCKED=false|true\fR
.br
Print information about why FTL decided that certain queries were recognized as being externally blocked.
.br
\fBDEBUG_CAPS=false|true\fR
.br
Print information about POSIX capabilities granted to the FTL process.
.br
The current capabilities are printed on receipt of SIGHUP i.e. after executing `killall -HUP pihole-FTL`.
.br
\fBDEBUG_DNSMASQ_LINES=false|true\fR
.br
Print file and line causing a dnsmasq event into FTL's log files.
.br
This is handy to implement additional hooks missing from FTL.
.br
\fBDEBUG_VECTORS=false|true\fR
.br
FTL uses dynamically allocated vectors for various tasks.
.br
This config option enables extensive debugging information such as information about allocation, referencing, deletion, and appending.
.br
\fBDEBUG_RESOLVER=false|true\fR
.br
Extensive information about hostname resolution like which DNS servers are used in the first and second hostname resolving tries.
.br
.SH "SEE ALSO"
\fBpihole\fR(8), \fBpihole-FTL\fR(8)
.br
.SH "COLOPHON"
Pi-hole : The Faster-Than-Light (FTL) Engine is a lightweight, purpose-built daemon used to provide statistics needed for the Pi-hole Web Interface, and its API can be easily integrated into your own projects. Although it is an optional component of the Pi-hole ecosystem, it will be installed by default to provide statistics. As the name implies, FTL does its work \fIvery quickly\fR!
.br
Get sucked into the latest news and community activity by entering Pi-hole's orbit. Information about Pi-hole, and the latest version of the software can be found at https://pi-hole.net
.br

379
manpages/pihole.8 Normal file
View File

@@ -0,0 +1,379 @@
.TH "Pi-hole" "8" "Pi-hole" "Pi-hole" "April 2020"
.SH "NAME"
Pi-hole : A black-hole for internet advertisements
.br
.SH "SYNOPSIS"
\fBpihole\fR (\fB-w\fR|\fB-b\fR|\fB--wild\fR|\fB--regex\fR) [options] domain(s)
.br
\fBpihole -a\fR \fB-p\fR password
.br
\fBpihole -a\fR (\fB-c|-f|-k\fR)
.br
\fBpihole -a -e\fR email
.br
\fBpihole -a -i\fR interface
.br
\fBpihole -a -l\fR privacylevel
.br
\fBpihole -c\fR [-j|-r|-e]
.br
\fBpihole\fR \fB-d\fR [-a]
.br
\fBpihole -f
.br
pihole -r
.br
pihole -t
.br
pihole -g\fR
.br
\fBpihole\fR -\fBq\fR [options]
.br
\fBpihole\fR \fB-l\fR (\fBon|off|off noflush\fR)
.br
\fBpihole -up \fR[--check-only]
.br
\fBpihole -v\fR [-p|-a|-f] [-c|-l|-hash]
.br
\fBpihole uninstall
.br
pihole status
.br
pihole restartdns\fR [options]
.br
\fBpihole\fR (\fBenable\fR|\fBdisable\fR [time])
.br
\fBpihole\fR \fBcheckout\fR repo [branch]
.br
\fBpihole\fR \fBhelp\fR
.br
.SH "DESCRIPTION"
Available commands and options:
.br
\fB-w, whitelist\fR [options] [<domain1> <domain2 ...>]
.br
Adds or removes specified domain or domains tho the Whitelist
.br
\fB-b, blacklist\fR [options] [<domain1> <domain2 ...>]
.br
Adds or removes specified domain or domains to the blacklist
.br
\fB--regex, regex\fR [options] [<regex1> <regex2 ...>]
.br
Add or removes specified regex filter to the regex blacklist
.br
\fB--white-regex\fR [options] [<regex1> <regex2 ...>]
.br
Add or removes specified regex filter to the regex whitelist
.br
\fB--wild, wildcard\fR [options] [<domain1> <domain2 ...>]
.br
Add or removes specified domain to the wildcard blacklist
.br
\fB--white-wild\fR [options] [<domain1> <domain2 ...>]
.br
Add or removes specified domain to the wildcard whitelist
.br
(Whitelist/Blacklist manipulation options):
.br
-d, --delmode Remove domain(s) from the list
.br
-nr, --noreload Update list without refreshing dnsmasq
.br
-q, --quiet Make output less verbose
.br
-l, --list Display all your listed domains
.br
--nuke Removes all entries in a list
.br
\fB-d, debug\fR [-a]
.br
Start a debugging session
.br
-a Enable automated debugging
.br
\fB-f, flush\fR
.br
Flush the Pi-hole log
.br
\fB-r, reconfigure\fR
.br
Reconfigure or Repair Pi-hole subsystems
.br
\fB-t, tail\fR
.br
View the live output of the Pi-hole log
.br
\fB-a, admin\fR [options]
.br
(Admin options):
.br
-p, password Set Web Interface password
.br
-c, celsius Set Celsius as preferred temperature unit
.br
-f, fahrenheit Set Fahrenheit as preferred temperature unit
.br
-k, kelvin Set Kelvin as preferred temperature unit
.br
-e, email Set an administrative contact address for the
Block Page
.br
-i, interface Specify dnsmasq's interface listening behavior
.br
-l, privacylevel <level> Set privacy level
(0 = lowest, 3 = highest)
.br
\fB-c, chronometer\fR [options]
.br
Calculates stats and displays to an LCD
.br
(Chronometer Options):
.br
-j, --json Output stats as JSON formatted string
.br
-r, --refresh Set update frequency (in seconds)
.br
-e, --exit Output stats and exit without refreshing
.br
\fB-g, updateGravity\fR
.br
Update the list of ad-serving domains
.br
\fB-q, query\fR [option]
.br
Query the adlists for a specified domain
.br
(Query options):
.br
-adlist Print the name of the block list URL
.br
-exact Search the block lists for exact domain matches
.br
-all Return all query matches within a block list
.br
\fB-h, --help, help\fR
.br
Show a help dialog
.br
\fB-l, logging\fR [on|off|off noflush]
.br
Specify whether the Pi-hole log should be used
.br
(Logging options):
.br
on Enable the Pi-hole log at /var/log/pihole.log
.br
off Disable and flush the Pi-hole log at
/var/log/pihole.log
.br
off noflush Disable the Pi-hole log at /var/log/pihole.log
.br
\fB-up, updatePihole\fR [--check-only]
.br
Update Pi-hole subsystems
.br
--check-only Exit script before update is performed.
.br
\fB-v, version\fR [repo] [options]
.br
Show installed versions of Pi-hole, Web Interface &amp; FTL
.br
.br
(repo options):
.br
-p, --pihole Only retrieve info regarding Pi-hole repository
.br
-a, --admin Only retrieve info regarding AdminLTE
repository
.br
-f, --ftl Only retrieve info regarding FTL repository
.br
(version options):
.br
-c, --current Return the current version
.br
-l, --latest Return the latest version
.br
--hash Return the GitHub hash from your local
repositories
.br
\fBuninstall\fR
.br
Uninstall Pi-hole from your system
.br
\fBstatus\fR
.br
Display the running status of Pi-hole subsystems
.br
\fBenable\fR
.br
Enable Pi-hole subsystems
.br
\fBdisable\fR [time]
.br
Disable Pi-hole subsystems, optionally for a set duration
.br
(time options):
.br
#s Disable Pi-hole functionality for # second(s)
.br
#m Disable Pi-hole functionality for # minute(s)
.br
\fBrestartdns\fR [options]
.br
Full restart Pi-hole subsystems. Without any options (see below) a full restart causes config file parsing and history re-reading
.br
(restart options):
.br
reload Updates the lists (incl. HOSTS files) and flushes DNS cache. Does not reparse config files
.br
reload-lists Updates the lists (excl. HOSTS files) WITHOUT flushing the DNS cache. Does not reparse config files
.br
\fBcheckout\fR [repo] [branch]
.br
Switch Pi-hole subsystems to a different GitHub branch
.br
(repo options):
.br
core Change the branch of Pi-hole's core subsystem
.br
web Change the branch of Admin Console subsystem
.br
ftl Change the branch of Pi-hole's FTL subsystem
.br
(branch options):
.br
master Update subsystems to the latest stable release
.br
dev Update subsystems to the latest development
release
.br
branchname Update subsystems to the specified branchname
.br
.SH "EXAMPLE"
Some usage examples
.br
Whitelist/blacklist manipulation
.br
\fBpihole -w iloveads.example.com\fR
.br
Adds "iloveads.example.com" to whitelist
.br
\fBpihole -b -d noads.example.com\fR
.br
Removes "noads.example.com" from blacklist
.br
\fBpihole --wild example.com\fR
.br
Adds example.com as a wildcard - would block all subdomains of
example.com, including example.com itself.
.br
\fBpihole --regex "ad.*\\.example\\.com$"\fR
.br
Adds "ad.*\\.example\\.com$" to the regex blacklist.
Would block all subdomains of example.com which start with "ad"
.br
Changing the Web Interface password
.br
\fBpihole -a -p ExamplePassword\fR
.br
Change the password to "ExamplePassword"
.br
Updating lists from internet sources
.br
\fBpihole -g\fR
.br
Update the list of ad-serving domains
.br
Displaying version information
.br
\fBpihole -v -a -c\fR
.br
Display the current version of AdminLTE
.br
Temporarily disabling Pi-hole
.br
\fBpihole disable 5m\fR
.br
Disable Pi-hole functionality for five minutes
.br
Switching Pi-hole subsystem branches
.br
\fBpihole checkout master\fR
.br
Switch to master branch
.br
\fBpihole checkout core dev\fR
.br
Switch to core development branch
.br
\fBpihole arpflush\fR
.br
Flush information stored in Pi-hole's network tables
.br
.SH "SEE ALSO"
\fBlighttpd\fR(8), \fBpihole-FTL\fR(8)
.br
.SH "COLOPHON"
Get sucked into the latest news and community activity by entering Pi-hole's orbit. Information about Pi-hole, and the latest version of the software can be found at https://pi-hole.net.
.br

625
pihole
View File

@@ -1,61 +1,67 @@
#!/bin/bash
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Controller for all pihole scripts and functions.
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
PI_HOLE_SCRIPT_DIR="/opt/pihole"
readonly wildcardlist="/etc/dnsmasq.d/03-pihole-wildcard.conf"
# Must be root to use this tool
if [[ ! $EUID -eq 0 ]];then
if [ -x "$(command -v sudo)" ];then
exec sudo bash "$0" "$@"
exit $?
else
echo "::: sudo is needed to run pihole commands. Please run this script as root or install sudo."
exit 1
fi
fi
readonly PI_HOLE_SCRIPT_DIR="/opt/pihole"
# setupVars and PI_HOLE_BIN_DIR are not readonly here because in some functions (checkout),
# they might get set again when the installer is sourced. This causes an
# error due to modifying a readonly variable.
setupVars="/etc/pihole/setupVars.conf"
PI_HOLE_BIN_DIR="/usr/local/bin"
readonly FTL_PID_FILE="/run/pihole-FTL.pid"
readonly colfile="${PI_HOLE_SCRIPT_DIR}/COL_TABLE"
source "${colfile}"
webpageFunc() {
source /opt/pihole/webpage.sh
source "${PI_HOLE_SCRIPT_DIR}/webpage.sh"
main "$@"
exit 0
}
whitelistFunc() {
"${PI_HOLE_SCRIPT_DIR}"/list.sh "$@"
exit 0
}
blacklistFunc() {
"${PI_HOLE_SCRIPT_DIR}"/list.sh "$@"
exit 0
}
wildcardFunc() {
listFunc() {
"${PI_HOLE_SCRIPT_DIR}"/list.sh "$@"
exit 0
}
debugFunc() {
"${PI_HOLE_SCRIPT_DIR}"/piholeDebug.sh
local automated
local web
# Pull off the `debug` leaving passed call augmentation flags in $1
shift
if [[ "$@" == *"-a"* ]]; then
automated="true"
fi
if [[ "$@" == *"-w"* ]]; then
web="true"
fi
AUTOMATED=${automated:-} WEBCALL=${web:-} "${PI_HOLE_SCRIPT_DIR}"/piholeDebug.sh
exit 0
}
flushFunc() {
"${PI_HOLE_SCRIPT_DIR}"/piholeLogFlush.sh
"${PI_HOLE_SCRIPT_DIR}"/piholeLogFlush.sh "$@"
exit 0
}
arpFunc() {
"${PI_HOLE_SCRIPT_DIR}"/piholeARPTable.sh "$@"
exit 0
}
updatePiholeFunc() {
"${PI_HOLE_SCRIPT_DIR}"/update.sh
shift
"${PI_HOLE_SCRIPT_DIR}"/update.sh "$@"
exit 0
}
@@ -66,67 +72,12 @@ reconfigurePiholeFunc() {
updateGravityFunc() {
"${PI_HOLE_SCRIPT_DIR}"/gravity.sh "$@"
exit 0
}
scanList(){
domain="${1}"
list="${2}"
method="${3}"
if [[ ${method} == "-exact" ]] ; then
grep -i -E "(^|\s)${domain}($|\s)" "${list}"
else
grep -i "${domain}" "${list}"
fi
}
processWildcards() {
IFS="." read -r -a array <<< "${1}"
for (( i=${#array[@]}-1; i>=0; i-- )); do
ar=""
for (( j=${#array[@]}-1; j>${#array[@]}-i-2; j-- )); do
if [[ $j == $((${#array[@]}-1)) ]]; then
ar="${array[$j]}"
else
ar="${array[$j]}.${ar}"
fi
done
echo "${ar}"
done
exit $?
}
queryFunc() {
domain="${2}"
method="${3}"
lists=( /etc/pihole/list.* /etc/pihole/blacklist.txt)
for list in ${lists[@]}; do
if [ -e "${list}" ]; then
result=$(scanList ${domain} ${list} ${method})
# Remove empty lines before couting number of results
count=$(sed '/^\s*$/d' <<< "$result" | wc -l)
echo "::: ${list} (${count} results)"
if [[ ${count} > 0 ]]; then
echo "${result}"
fi
echo ""
else
echo "::: ${list} does not exist"
echo ""
fi
done
# Scan for possible wildcard matches
local wildcards=($(processWildcards "${domain}"))
for domain in ${wildcards[@]}; do
result=$(scanList "\/${domain}\/" ${wildcardlist})
# Remove empty lines before couting number of results
count=$(sed '/^\s*$/d' <<< "$result" | wc -l)
if [[ ${count} > 0 ]]; then
echo "::: Wildcard blocking ${domain} (${count} results)"
echo "${result}"
echo ""
fi
done
shift
"${PI_HOLE_SCRIPT_DIR}"/query.sh "$@"
exit 0
}
@@ -148,155 +99,391 @@ versionFunc() {
exit 0
}
# Get PID of main pihole-FTL process
getFTLPID() {
local pid
if [ -s "${FTL_PID_FILE}" ]; then
# -s: FILE exists and has a size greater than zero
pid="$(<"$FTL_PID_FILE")"
# Exploit prevention: unset the variable if there is malicious content
# Verify that the value read from the file is numeric
[[ "$pid" =~ [^[:digit:]] ]] && unset pid
fi
# If FTL is not running, or the PID file contains malicious stuff, substitute
# negative PID to signal this to the caller
echo "${pid:=-1}"
}
restartDNS() {
dnsmasqPid=$(pidof dnsmasq)
if [[ ${dnsmasqPid} ]]; then
# service already running - reload config
if [ -x "$(command -v systemctl)" ]; then
systemctl restart dnsmasq
local svcOption svc str output status pid icon
svcOption="${1:-restart}"
# Determine if we should reload or restart
if [[ "${svcOption}" =~ "reload-lists" ]]; then
# Reloading of the lists has been requested
# Note 1: This will NOT re-read any *.conf files
# Note 2: We cannot use killall here as it does
# not know about real-time signals
pid="$(getFTLPID)"
if [[ "$pid" -eq "-1" ]]; then
svc="true"
str="FTL is not running"
icon="${INFO}"
else
service dnsmasq restart
svc="kill -RTMIN ${pid}"
str="Reloading DNS lists"
icon="${TICK}"
fi
elif [[ "${svcOption}" =~ "reload" ]]; then
# Reloading of the DNS cache has been requested
# Note: This will NOT re-read any *.conf files
pid="$(getFTLPID)"
if [[ "$pid" -eq "-1" ]]; then
svc="true"
str="FTL is not running"
icon="${INFO}"
else
svc="kill -HUP ${pid}"
str="Flushing DNS cache"
icon="${TICK}"
fi
else
# service not running, start it up
if [ -x "$(command -v systemctl)" ]; then
systemctl start dnsmasq
else
service dnsmasq start
fi
# A full restart has been requested
svc="service pihole-FTL restart"
str="Restarting DNS server"
icon="${TICK}"
fi
# Print output to Terminal, but not to Web Admin
[[ -t 1 ]] && echo -ne " ${INFO} ${str}..."
output=$( { ${svc}; } 2>&1 )
status="$?"
if [[ "${status}" -eq 0 ]]; then
[[ -t 1 ]] && echo -e "${OVER} ${icon} ${str}"
return 0
else
[[ ! -t 1 ]] && local OVER=""
echo -e "${OVER} ${CROSS} ${output}"
return 1
fi
}
piholeEnable() {
if [[ "${1}" == "0" ]] ; then
#Disable Pihole
sed -i 's/^addn-hosts=\/etc\/pihole\/gravity.list/#addn-hosts=\/etc\/pihole\/gravity.list/' /etc/dnsmasq.d/01-pihole.conf
echo "::: Blocking has been disabled!"
if [[ $# > 1 ]] ; then
if [[ ${2} == *"s"* ]] ; then
if [[ "${2}" == "-h" ]] || [[ "${2}" == "--help" ]]; then
echo "Usage: pihole disable [time]
Example: 'pihole disable', or 'pihole disable 5m'
Disable Pi-hole subsystems
Time:
#s Disable Pi-hole functionality for # second(s)
#m Disable Pi-hole functionality for # minute(s)"
exit 0
elif [[ "${1}" == "0" ]]; then
# Disable Pi-hole
if grep -cq "BLOCKING_ENABLED=false" "${setupVars}"; then
echo -e " ${INFO} Blocking already disabled, nothing to do"
exit 0
fi
if [[ $# > 1 ]]; then
local error=false
if [[ "${2}" == *"s" ]]; then
tt=${2%"s"}
echo "::: Blocking will be re-enabled in ${tt} seconds"
nohup bash -c "sleep ${tt}; pihole enable" </dev/null &>/dev/null &
elif [[ ${2} == *"m"* ]] ; then
if [[ "${tt}" =~ ^-?[0-9]+$ ]];then
local str="Disabling blocking for ${tt} seconds"
echo -e " ${INFO} ${str}..."
local str="Blocking will be re-enabled in ${tt} seconds"
nohup "${PI_HOLE_SCRIPT_DIR}"/pihole-reenable.sh ${tt} </dev/null &>/dev/null &
else
local error=true
fi
elif [[ "${2}" == *"m" ]]; then
tt=${2%"m"}
echo "::: Blocking will be re-enabled in ${tt} minutes"
tt=$((${tt}*60))
nohup bash -c "sleep ${tt}; pihole enable" </dev/null &>/dev/null &
if [[ "${tt}" =~ ^-?[0-9]+$ ]];then
local str="Disabling blocking for ${tt} minutes"
echo -e " ${INFO} ${str}..."
local str="Blocking will be re-enabled in ${tt} minutes"
tt=$((${tt}*60))
nohup "${PI_HOLE_SCRIPT_DIR}"/pihole-reenable.sh ${tt} </dev/null &>/dev/null &
else
local error=true
fi
elif [[ -n "${2}" ]]; then
local error=true
else
echo "::: Unknown format for delayed reactivation of the blocking!"
echo "::: Example:"
echo "::: pihole disable 5s - will disable blocking for 5 seconds"
echo "::: pihole disable 7m - will disable blocking for 7 minutes"
echo "::: Blocking will not automatically be re-enabled!"
echo -e " ${INFO} Disabling blocking"
fi
if [[ ${error} == true ]];then
echo -e " ${COL_LIGHT_RED}Unknown format for delayed reactivation of the blocking!${COL_NC}"
echo -e " Try 'pihole disable --help' for more information."
exit 1
fi
local str="Pi-hole Disabled"
sed -i "/BLOCKING_ENABLED=/d" "${setupVars}"
echo "BLOCKING_ENABLED=false" >> "${setupVars}"
fi
else
#Enable pihole
echo "::: Blocking has been enabled!"
sed -i 's/^#addn-hosts/addn-hosts/' /etc/dnsmasq.d/01-pihole.conf
# Enable Pi-hole
killall -q pihole-reenable
if grep -cq "BLOCKING_ENABLED=true" "${setupVars}"; then
echo -e " ${INFO} Blocking already enabled, nothing to do"
exit 0
fi
echo -e " ${INFO} Enabling blocking"
local str="Pi-hole Enabled"
sed -i "/BLOCKING_ENABLED=/d" "${setupVars}"
echo "BLOCKING_ENABLED=true" >> "${setupVars}"
fi
restartDNS
restartDNS reload
echo -e "${OVER} ${TICK} ${str}"
}
piholeLogging() {
shift
if [[ "${1}" == "-h" ]] || [[ "${1}" == "--help" ]]; then
echo "Usage: pihole logging [options]
Example: 'pihole logging on'
Specify whether the Pi-hole log should be used
if [[ "${1}" == "off" ]] ; then
#Disable Logging
Options:
on Enable the Pi-hole log at /var/log/pihole.log
off Disable and flush the Pi-hole log at /var/log/pihole.log
off noflush Disable the Pi-hole log at /var/log/pihole.log"
exit 0
elif [[ "${1}" == "off" ]]; then
# Disable logging
sed -i 's/^log-queries/#log-queries/' /etc/dnsmasq.d/01-pihole.conf
sed -i 's/^QUERY_LOGGING=true/QUERY_LOGGING=false/' /etc/pihole/setupVars.conf
pihole -f
echo "::: Logging has been disabled!"
elif [[ "${1}" == "on" ]] ; then
#Enable logging
if [[ "${2}" != "noflush" ]]; then
# Flush logs
"${PI_HOLE_BIN_DIR}"/pihole -f
fi
echo -e " ${INFO} Disabling logging..."
local str="Logging has been disabled!"
elif [[ "${1}" == "on" ]]; then
# Enable logging
sed -i 's/^#log-queries/log-queries/' /etc/dnsmasq.d/01-pihole.conf
sed -i 's/^QUERY_LOGGING=false/QUERY_LOGGING=true/' /etc/pihole/setupVars.conf
echo "::: Logging has been enabled!"
echo -e " ${INFO} Enabling logging..."
local str="Logging has been enabled!"
else
echo "::: Invalid option passed, please pass 'on' or 'off'"
echo -e " ${COL_LIGHT_RED}Invalid option${COL_NC}
Try 'pihole logging --help' for more information."
exit 1
fi
restartDNS
echo -e "${OVER} ${TICK} ${str}"
}
piholeStatus() {
if [[ $(netstat -plnt | grep -c ':53 ') > 0 ]]; then
if [[ "${1}" != "web" ]] ; then
echo "::: DNS service is running"
analyze_ports() {
# FTL is listening at least on at least one port when this
# function is getting called
echo -e " ${TICK} DNS service is listening"
# Check individual address family/protocol combinations
# For a healthy Pi-hole, they should all be up (nothing printed)
if grep -q "IPv4.*UDP" <<< "${1}"; then
echo -e " ${TICK} UDP (IPv4)"
else
echo -e " ${CROSS} UDP (IPv4)"
fi
if grep -q "IPv4.*TCP" <<< "${1}"; then
echo -e " ${TICK} TCP (IPv4)"
else
echo -e " ${CROSS} TCP (IPv4)"
fi
if grep -q "IPv6.*UDP" <<< "${1}"; then
echo -e " ${TICK} UDP (IPv6)"
else
echo -e " ${CROSS} UDP (IPv6)"
fi
if grep -q "IPv6.*TCP" <<< "${1}"; then
echo -e " ${TICK} TCP (IPv6)"
else
echo -e " ${CROSS} TCP (IPv6)"
fi
echo ""
}
statusFunc() {
# Determine if there is a pihole service is listening on port 53
local listening
listening="$(lsof -Pni:53)"
if grep -q "pihole" <<< "${listening}"; then
if [[ "${1}" != "web" ]]; then
analyze_ports "${listening}"
fi
else
if [[ "${1}" == "web" ]] ; then
echo "-1";
else
echo "::: DNS service is NOT running"
fi
return
case "${1}" in
"web") echo "-1";;
*) echo -e " ${CROSS} DNS service is NOT listening";;
esac
return 0
fi
if [[ $(grep -i "^#addn-hosts=/" /etc/dnsmasq.d/01-pihole.conf) ]] ; then
#list is commented out
if [[ "${1}" == "web" ]] ; then
echo 0;
else
echo "::: Pi-hole blocking is Disabled";
fi
elif [[ $(grep -i "^addn-hosts=/" /etc/dnsmasq.d/01-pihole.conf) ]] ; then
#list set
if [[ "${1}" == "web" ]] ; then
echo 1;
else
echo "::: Pi-hole blocking is Enabled";
fi
# Determine if Pi-hole's blocking is enabled
if grep -q "BLOCKING_ENABLED=false" /etc/pihole/setupVars.conf; then
# A config is commented out
case "${1}" in
"web") echo 0;;
*) echo -e " ${CROSS} Pi-hole blocking is disabled";;
esac
elif grep -q "BLOCKING_ENABLED=true" /etc/pihole/setupVars.conf; then
# Configs are set
case "${1}" in
"web") echo 1;;
*) echo -e " ${TICK} Pi-hole blocking is enabled";;
esac
else
#addn-host not found
if [[ "${1}" == "web" ]] ; then
echo 99
else
echo "::: No hosts file linked to dnsmasq, adding it in enabled state"
fi
#add addn-host= to dnsmasq
echo "addn-hosts=/etc/pihole/gravity.list" >> /etc/dnsmasq.d/01-pihole.conf
restartDNS
# No configs were found
case "${1}" in
"web") echo 99;;
*) echo -e " ${INFO} Pi-hole blocking will be enabled";;
esac
# Enable blocking
"${PI_HOLE_BIN_DIR}"/pihole enable
fi
}
tailFunc() {
echo "Press Ctrl-C to exit"
tail -F /var/log/pihole.log
# Warn user if Pi-hole's logging is disabled
local logging_enabled=$(grep -c "^log-queries" /etc/dnsmasq.d/01-pihole.conf)
if [[ "${logging_enabled}" == "0" ]]; then
# No "log-queries" lines are found.
# Commented out lines (such as "#log-queries") are ignored
echo " ${CROSS} Warning: Query logging is disabled"
fi
echo -e " ${INFO} Press Ctrl-C to exit"
# Retrieve IPv4/6 addresses
source /etc/pihole/setupVars.conf
# Strip date from each line
# Color blocklist/blacklist/wildcard entries as red
# Color A/AAAA/DHCP strings as white
# Color everything else as gray
tail -f /var/log/pihole.log | sed -E \
-e "s,($(date +'%b %d ')| dnsmasq\[[0-9]*\]),,g" \
-e "s,(.*(blacklisted |gravity blocked ).* is (0.0.0.0|::|NXDOMAIN|${IPV4_ADDRESS%/*}|${IPV6_ADDRESS:-NULL}).*),${COL_RED}&${COL_NC}," \
-e "s,.*(query\\[A|DHCP).*,${COL_NC}&${COL_NC}," \
-e "s,.*,${COL_GRAY}&${COL_NC},"
exit 0
}
piholeCheckoutFunc() {
if [[ "$2" == "-h" ]] || [[ "$2" == "--help" ]]; then
echo "Usage: pihole checkout [repo] [branch]
Example: 'pihole checkout master' or 'pihole checkout core dev'
Switch Pi-hole subsystems to a different GitHub branch
Repositories:
core [branch] Change the branch of Pi-hole's core subsystem
web [branch] Change the branch of Web Interface subsystem
ftl [branch] Change the branch of Pi-hole's FTL subsystem
Branches:
master Update subsystems to the latest stable release
dev Update subsystems to the latest development release
branchname Update subsystems to the specified branchname"
exit 0
fi
source "${PI_HOLE_SCRIPT_DIR}"/piholeCheckout.sh
shift
checkout "$@"
}
tricorderFunc() {
if [[ ! -p "/dev/stdin" ]]; then
echo -e " ${INFO} Please do not call Tricorder directly"
exit 1
fi
if ! (echo > /dev/tcp/tricorder.pi-hole.net/9998) >/dev/null 2>&1; then
echo -e " ${CROSS} Unable to connect to Pi-hole's Tricorder server"
exit 1
fi
if command -v openssl &> /dev/null; then
openssl s_client -quiet -connect tricorder.pi-hole.net:9998 2> /dev/null < /dev/stdin
exit "$?"
else
echo -e " ${INFO} ${COL_YELLOW}Security Notice${COL_NC}: ${COL_WHITE}openssl${COL_NC} is not installed
Your debug log will be transmitted unencrypted via plain-text
There is a possibility that this could be intercepted by a third party
If you wish to cancel, press Ctrl-C to exit within 10 seconds"
secs="10"
while [[ "$secs" -gt "0" ]]; do
echo -ne "."
sleep 1
: $((secs--))
done
echo " "
nc tricorder.pi-hole.net 9999 < /dev/stdin
exit "$?"
fi
}
updateCheckFunc() {
"${PI_HOLE_SCRIPT_DIR}"/updatecheck.sh "$@"
exit 0
}
helpFunc() {
cat << EOM
::: Control all PiHole specific functions!
:::
::: Usage: pihole [options]
::: Add -h after -w (whitelist), -b (blacklist), -c (chronometer), or -a (admin) for more information on usage
:::
::: Options:
::: -w, whitelist Whitelist domains
::: -b, blacklist Blacklist domains
::: -d, debug Start a debugging session if having trouble
::: -f, flush Flush the pihole.log file
::: -t, tail Output the last lines of the pihole.log file. Lines are appended as the file grows
::: -up, updatePihole Update Pi-hole
::: -r, reconfigure Reconfigure or Repair Pi-hole
::: -g, updateGravity Update the list of ad-serving domains
::: -c, chronometer Calculates stats and displays to an LCD
::: -h, help Show this help dialog
::: -v, version Show current versions
::: -q, query Query the adlists for a specific domain
::: Use pihole -q domain -exact if you want to see exact matches only
::: -l, logging Enable or Disable logging (pass 'on' or 'off')
::: -a, admin Admin webpage options
::: uninstall Uninstall Pi-Hole from your system :(!
::: status Is Pi-Hole Enabled or Disabled
::: enable Enable Pi-Hole DNS Blocking
::: disable Disable Pi-Hole DNS Blocking
::: Blocking can also be disabled only temporarily, e.g.,
::: pihole disable 5m - will disable blocking for 5 minutes
::: restartdns Restart dnsmasq
EOM
echo "Usage: pihole [options]
Example: 'pihole -w -h'
Add '-h' after specific commands for more information on usage
Whitelist/Blacklist Options:
-w, whitelist Whitelist domain(s)
-b, blacklist Blacklist domain(s)
--regex, regex Regex blacklist domains(s)
--white-regex Regex whitelist domains(s)
--wild, wildcard Wildcard blacklist domain(s)
--white-wild Wildcard whitelist domain(s)
Add '-h' for more info on whitelist/blacklist usage
Debugging Options:
-d, debug Start a debugging session
Add '-a' to automatically upload the log to tricorder.pi-hole.net
-f, flush Flush the Pi-hole log
-r, reconfigure Reconfigure or Repair Pi-hole subsystems
-t, tail View the live output of the Pi-hole log
Options:
-a, admin Web interface options
Add '-h' for more info on Web Interface usage
-c, chronometer Calculates stats and displays to an LCD
Add '-h' for more info on chronometer usage
-g, updateGravity Update the list of ad-serving domains
-h, --help, help Show this help dialog
-l, logging Specify whether the Pi-hole log should be used
Add '-h' for more info on logging usage
-q, query Query the adlists for a specified domain
Add '-h' for more info on query usage
-up, updatePihole Update Pi-hole subsystems
Add '--check-only' to exit script before update is performed.
-v, version Show installed versions of Pi-hole, Web Interface & FTL
Add '-h' for more info on version usage
uninstall Uninstall Pi-hole from your system
status Display the running status of Pi-hole subsystems
enable Enable Pi-hole subsystems
disable Disable Pi-hole subsystems
Add '-h' for more info on disable usage
restartdns Full restart Pi-hole subsystems
Add 'reload' to update the lists and flush the cache without restarting the DNS server
Add 'reload-lists' to only update the lists WITHOUT flushing the cache or restarting the DNS server
checkout Switch Pi-hole subsystems to a different GitHub branch
Add '-h' for more info on checkout usage
arpflush Flush information stored in Pi-hole's network tables";
exit 0
}
@@ -304,14 +491,32 @@ if [[ $# = 0 ]]; then
helpFunc
fi
case "${1}" in
"-h" | "help" | "--help" ) helpFunc;;
esac
# Must be root to use this tool
if [[ ! $EUID -eq 0 ]];then
if [[ -x "$(command -v sudo)" ]]; then
exec sudo bash "$0" "$@"
exit $?
else
echo -e " ${CROSS} sudo is needed to run pihole commands. Please run this script as root or install sudo."
exit 1
fi
fi
# Handle redirecting to specific functions based on arguments
case "${1}" in
"-w" | "whitelist" ) whitelistFunc "$@";;
"-b" | "blacklist" ) blacklistFunc "$@";;
"-wild" | "wildcard" ) wildcardFunc "$@";;
"-d" | "debug" ) debugFunc;;
"-f" | "flush" ) flushFunc;;
"-up" | "updatePihole" ) updatePiholeFunc;;
"-w" | "whitelist" ) listFunc "$@";;
"-b" | "blacklist" ) listFunc "$@";;
"--wild" | "wildcard" ) listFunc "$@";;
"--regex" | "regex" ) listFunc "$@";;
"--white-regex" | "white-regex" ) listFunc "$@";;
"--white-wild" | "white-wild" ) listFunc "$@";;
"-d" | "debug" ) debugFunc "$@";;
"-f" | "flush" ) flushFunc "$@";;
"-up" | "updatePihole" ) updatePiholeFunc "$@";;
"-r" | "reconfigure" ) reconfigurePiholeFunc;;
"-g" | "updateGravity" ) updateGravityFunc "$@";;
"-c" | "chronometer" ) chronometerFunc "$@";;
@@ -321,10 +526,14 @@ case "${1}" in
"-l" | "logging" ) piholeLogging "$@";;
"uninstall" ) uninstallFunc;;
"enable" ) piholeEnable 1;;
"disable" ) piholeEnable 0 $2;;
"status" ) piholeStatus "$2";;
"restartdns" ) restartDNS;;
"disable" ) piholeEnable 0 "$2";;
"status" ) statusFunc "$2";;
"restartdns" ) restartDNS "$2";;
"-a" | "admin" ) webpageFunc "$@";;
"-t" | "tail" ) tailFunc;;
"checkout" ) piholeCheckoutFunc "$@";;
"tricorder" ) tricorderFunc;;
"updatechecker" ) updateCheckFunc "$@";;
"arpflush" ) arpFunc "$@";;
* ) helpFunc;;
esac

View File

@@ -1,5 +0,0 @@
docker-compose
pytest
pytest-xdist
pytest-cov
testinfra

5
supportedos.txt Normal file
View File

@@ -0,0 +1,5 @@
Raspbian=9,10
Ubuntu=16,18,20
Debian=9,10
Fedora=32,33
CentOS=7,8

25
test/README.md Normal file
View File

@@ -0,0 +1,25 @@
# Recommended way to run tests
Make sure you have Docker and Python w/pip package manager.
From command line all you need to do is:
- `pip install tox`
- `tox`
Tox handles setting up a virtual environment for python dependencies, installing dependencies, building the docker images used by tests, and finally running tests. It's an easy way to have travis-ci like build behavior locally.
## Alternative py.test method of running tests
You're responsible for setting up your virtual env and dependencies in this situation.
```
py.test -vv -n auto -m "build_stage"
py.test -vv -n auto -m "not build_stage"
```
The build_stage tests have to run first to create the docker images, followed by the actual tests which utilize said images. Unless you're changing your dockerfiles you shouldn't have to run the build_stage every time - but it's a good idea to rebuild at least once a day in case the base Docker images or packages change.
# How do I debug python?
Highly recommended: Setup PyCharm on a **Docker enabled** machine. Having a python debugger like PyCharm changes your life if you've never used it :)

View File

@@ -1,4 +1,4 @@
FROM debian:jessie
FROM centos:8
ENV GITDIR /etc/.pihole
ENV SCRIPTDIR /opt/pihole

View File

@@ -0,0 +1,16 @@
FROM buildpack-deps:buster-scm
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

16
test/_debian_9.Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM buildpack-deps:stretch-scm
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

View File

@@ -0,0 +1,16 @@
FROM fedora:32
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

View File

@@ -0,0 +1,16 @@
FROM fedora:33
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

View File

@@ -0,0 +1,16 @@
FROM buildpack-deps:xenial-scm
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

View File

@@ -0,0 +1,16 @@
FROM buildpack-deps:bionic-scm
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

View File

@@ -0,0 +1,17 @@
FROM buildpack-deps:focal-scm
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
RUN true && \
chmod +x $SCRIPTDIR/*
ENV PH_TEST true
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \

View File

@@ -1,14 +1,30 @@
import pytest
import testinfra
from textwrap import dedent
check_output = testinfra.get_backend(
"local://"
).get_module("Command").check_output
SETUPVARS = {
'PIHOLE_INTERFACE': 'eth99',
'IPV4_ADDRESS': '1.1.1.1',
'IPV6_ADDRESS': 'FE80::240:D0FF:FE48:4672',
'PIHOLE_DNS_1': '4.2.2.1',
'PIHOLE_DNS_2': '4.2.2.2'
}
tick_box = "[\x1b[1;32m\u2713\x1b[0m]"
cross_box = "[\x1b[1;31m\u2717\x1b[0m]"
info_box = "[i]"
@pytest.fixture
def Pihole(Docker):
''' used to contain some script stubbing, now pretty much an alias.
Also provides bash as the default run function shell '''
'''
used to contain some script stubbing, now pretty much an alias.
Also provides bash as the default run function shell
'''
def run_bash(self, command, *args, **kwargs):
cmd = self.get_command(command, *args)
if self.user is not None:
@@ -22,12 +38,16 @@ def Pihole(Docker):
return out
funcType = type(Docker.run)
Docker.run = funcType(run_bash, Docker, testinfra.backend.docker.DockerBackend)
Docker.run = funcType(run_bash, Docker)
return Docker
@pytest.fixture
def Docker(request, args, image, cmd):
''' combine our fixtures into a docker run command and setup finalizer to cleanup '''
'''
combine our fixtures into a docker run command and setup finalizer to
cleanup
'''
assert 'docker' in check_output('id'), "Are you in the docker group?"
docker_run = "docker run {} {} {}".format(args, image, cmd)
docker_id = check_output(docker_run)
@@ -40,22 +60,97 @@ def Docker(request, args, image, cmd):
docker_container.id = docker_id
return docker_container
@pytest.fixture
def args(request):
''' -t became required when tput began being used '''
'''
-t became required when tput began being used
'''
return '-t -d'
@pytest.fixture(params=['debian', 'centos'])
@pytest.fixture(params=[
'test_container'
])
def tag(request):
''' consumed by image to make the test matrix '''
'''
consumed by image to make the test matrix
'''
return request.param
@pytest.fixture()
def image(request, tag):
''' built by test_000_build_containers.py '''
'''
built by test_000_build_containers.py
'''
return 'pytest_pihole:{}'.format(tag)
@pytest.fixture()
def cmd(request):
''' default to doing nothing by tailing null, but don't exit '''
'''
default to doing nothing by tailing null, but don't exit
'''
return 'tail -f /dev/null'
# Helper functions
def mock_command(script, args, container):
'''
Allows for setup of commands we don't really want to have to run for real
in unit tests
'''
full_script_path = '/usr/local/bin/{}'.format(script)
mock_script = dedent('''\
#!/bin/bash -e
echo "\$0 \$@" >> /var/log/{script}
case "\$1" in'''.format(script=script))
for k, v in args.items():
case = dedent('''
{arg})
echo {res}
exit {retcode}
;;'''.format(arg=k, res=v[0], retcode=v[1]))
mock_script += case
mock_script += dedent('''
esac''')
container.run('''
cat <<EOF> {script}\n{content}\nEOF
chmod +x {script}
rm -f /var/log/{scriptlog}'''.format(script=full_script_path,
content=mock_script,
scriptlog=script))
def mock_command_2(script, args, container):
'''
Allows for setup of commands we don't really want to have to run for real
in unit tests
'''
full_script_path = '/usr/local/bin/{}'.format(script)
mock_script = dedent('''\
#!/bin/bash -e
echo "\$0 \$@" >> /var/log/{script}
case "\$1 \$2" in'''.format(script=script))
for k, v in args.items():
case = dedent('''
\"{arg}\")
echo \"{res}\"
exit {retcode}
;;'''.format(arg=k, res=v[0], retcode=v[1]))
mock_script += case
mock_script += dedent('''
esac''')
container.run('''
cat <<EOF> {script}\n{content}\nEOF
chmod +x {script}
rm -f /var/log/{scriptlog}'''.format(script=full_script_path,
content=mock_script,
scriptlog=script))
def run_script(Pihole, script):
result = Pihole.run(script)
assert result.rc == 0
return result

6
test/requirements.txt Normal file
View File

@@ -0,0 +1,6 @@
docker-compose==1.23.2
pytest==4.3.0
pytest-xdist==1.26.1
pytest-cov==2.6.1
testinfra==1.19.0
tox==3.7.0

6
test/setup.py Normal file
View File

@@ -0,0 +1,6 @@
from setuptools import setup
setup(
setup_requires=['pytest-runner'],
tests_require=['pytest'],
)

View File

@@ -1,18 +0,0 @@
''' This file starts with 000 to make it run first '''
import pytest
import testinfra
run_local = testinfra.get_backend(
"local://"
).get_module("Command").run
@pytest.mark.parametrize("image,tag", [
( 'test/debian.Dockerfile', 'pytest_pihole:debian' ),
( 'test/centos.Dockerfile', 'pytest_pihole:centos' ),
])
def test_build_pihole_image(image, tag):
build_cmd = run_local('docker build -f {} -t {} .'.format(image, tag))
if build_cmd.rc != 0:
print build_cmd.stdout
print build_cmd.stderr
assert build_cmd.rc == 0

View File

@@ -1,20 +1,40 @@
import pytest
from textwrap import dedent
import re
from .conftest import (
SETUPVARS,
tick_box,
info_box,
cross_box,
mock_command,
mock_command_2,
run_script
)
def test_supported_operating_system(Pihole):
'''
confirm installer exists on unsupported distribution
'''
# break supported package managers to emulate an unsupported distribution
Pihole.run('rm -rf /usr/bin/apt-get')
Pihole.run('rm -rf /usr/bin/rpm')
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = cross_box + ' OS distribution not supported'
assert expected_stdout in distro_check.stdout
# assert distro_check.rc == 1
SETUPVARS = {
'PIHOLE_INTERFACE' : 'eth99',
'IPV4_ADDRESS' : '1.1.1.1',
'IPV6_ADDRESS' : 'FE80::240:D0FF:FE48:4672',
'PIHOLE_DNS_1' : '4.2.2.1',
'PIHOLE_DNS_2' : '4.2.2.2'
}
def test_setupVars_are_sourced_to_global_scope(Pihole):
''' currently update_dialogs sources setupVars with a dot,
'''
currently update_dialogs sources setupVars with a dot,
then various other functions use the variables.
This confirms the sourced variables are in scope between functions '''
This confirms the sourced variables are in scope between functions
'''
setup_var_file = 'cat <<EOF> /etc/pihole/setupVars.conf\n'
for k,v in SETUPVARS.iteritems():
for k, v in SETUPVARS.items():
setup_var_file += "{}={}\n".format(k, v)
setup_var_file += "EOF\n"
Pihole.run(setup_var_file)
@@ -39,13 +59,17 @@ def test_setupVars_are_sourced_to_global_scope(Pihole):
output = run_script(Pihole, script).stdout
for k,v in SETUPVARS.iteritems():
for k, v in SETUPVARS.items():
assert "{}={}".format(k, v) in output
def test_setupVars_saved_to_file(Pihole):
''' confirm saved settings are written to a file for future updates to re-use '''
set_setup_vars = '\n' # dedent works better with this and padding matching script below
for k,v in SETUPVARS.iteritems():
'''
confirm saved settings are written to a file for future updates to re-use
'''
# dedent works better with this and padding matching script below
set_setup_vars = '\n'
for k, v in SETUPVARS.items():
set_setup_vars += " {}={}\n".format(k, v)
Pihole.run(set_setup_vars).stdout
@@ -55,248 +79,521 @@ def test_setupVars_saved_to_file(Pihole):
TERM=xterm
source /opt/pihole/basic-install.sh
{}
mkdir -p /etc/dnsmasq.d
version_check_dnsmasq
echo "" > /etc/pihole/pihole-FTL.conf
finalExports
cat /etc/pihole/setupVars.conf
'''.format(set_setup_vars))
output = run_script(Pihole, script).stdout
for k,v in SETUPVARS.iteritems():
for k, v in SETUPVARS.items():
assert "{}={}".format(k, v) in output
def test_configureFirewall_firewalld_running_no_errors(Pihole):
''' confirms firewalld rules are applied when firewallD is running '''
# firewallD returns 'running' as status
mock_command('firewall-cmd', {'*':('running', 0)}, Pihole)
# Whiptail dialog returns Ok for user prompt
mock_command('whiptail', {'*':('', 0)}, Pihole)
configureFirewall = Pihole.run('''
source /opt/pihole/basic-install.sh
configureFirewall
''')
expected_stdout = 'Configuring FirewallD for httpd and dnsmasq.'
assert expected_stdout in configureFirewall.stdout
firewall_calls = Pihole.run('cat /var/log/firewall-cmd').stdout
assert 'firewall-cmd --state' in firewall_calls
assert 'firewall-cmd --permanent --add-port=80/tcp --add-port=53/tcp --add-port=53/udp' in firewall_calls
assert 'firewall-cmd --reload' in firewall_calls
def test_configureFirewall_firewalld_disabled_no_errors(Pihole):
''' confirms firewalld rules are not applied when firewallD is not running '''
# firewallD returns non-running status
mock_command('firewall-cmd', {'*':('not running', '1')}, Pihole)
configureFirewall = Pihole.run('''
def test_selinux_not_detected(Pihole):
'''
confirms installer continues when SELinux configuration file does not exist
'''
check_selinux = Pihole.run('''
rm -f /etc/selinux/config
source /opt/pihole/basic-install.sh
configureFirewall
checkSelinux
''')
expected_stdout = 'No active firewall detected.. skipping firewall configuration.'
assert expected_stdout in configureFirewall.stdout
expected_stdout = info_box + ' SELinux not detected'
assert expected_stdout in check_selinux.stdout
assert check_selinux.rc == 0
def test_configureFirewall_firewalld_enabled_declined_no_errors(Pihole):
''' confirms firewalld rules are not applied when firewallD is running, user declines ruleset '''
# firewallD returns running status
mock_command('firewall-cmd', {'*':('running', 0)}, Pihole)
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*':('', 1)}, Pihole)
configureFirewall = Pihole.run('''
source /opt/pihole/basic-install.sh
configureFirewall
''')
expected_stdout = 'Not installing firewall rulesets.'
assert expected_stdout in configureFirewall.stdout
def test_configureFirewall_no_firewall(Pihole):
''' confirms firewall skipped no daemon is running '''
configureFirewall = Pihole.run('''
source /opt/pihole/basic-install.sh
configureFirewall
''')
expected_stdout = 'No active firewall detected'
assert expected_stdout in configureFirewall.stdout
def test_configureFirewall_IPTables_enabled_declined_no_errors(Pihole):
''' confirms IPTables rules are not applied when IPTables is running, user declines ruleset '''
# iptables command exists
mock_command('iptables', {'*':('', '0')}, Pihole)
# modinfo returns always true (ip_tables module check)
mock_command('modinfo', {'*':('', '0')}, Pihole)
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*':('', '1')}, Pihole)
configureFirewall = Pihole.run('''
source /opt/pihole/basic-install.sh
configureFirewall
''')
expected_stdout = 'Not installing firewall rulesets.'
assert expected_stdout in configureFirewall.stdout
def test_configureFirewall_IPTables_enabled_rules_exist_no_errors(Pihole):
''' confirms IPTables rules are not applied when IPTables is running and rules exist '''
# iptables command exists and returns 0 on calls (should return 0 on iptables -C)
mock_command('iptables', {'-S':('-P INPUT DENY', '0')}, Pihole)
# modinfo returns always true (ip_tables module check)
mock_command('modinfo', {'*':('', '0')}, Pihole)
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*':('', '0')}, Pihole)
configureFirewall = Pihole.run('''
source /opt/pihole/basic-install.sh
configureFirewall
''')
expected_stdout = 'Installing new IPTables firewall rulesets'
assert expected_stdout in configureFirewall.stdout
firewall_calls = Pihole.run('cat /var/log/iptables').stdout
assert 'iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT' not in firewall_calls
assert 'iptables -I INPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT' not in firewall_calls
assert 'iptables -I INPUT 1 -p udp -m udp --dport 53 -j ACCEPT' not in firewall_calls
def test_configureFirewall_IPTables_enabled_not_exist_no_errors(Pihole):
''' confirms IPTables rules are applied when IPTables is running and rules do not exist '''
# iptables command and returns 0 on calls (should return 1 on iptables -C)
mock_command('iptables', {'-S':('-P INPUT DENY', '0'), '-C':('', 1), '-I':('', 0)}, Pihole)
# modinfo returns always true (ip_tables module check)
mock_command('modinfo', {'*':('', '0')}, Pihole)
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*':('', '0')}, Pihole)
configureFirewall = Pihole.run('''
source /opt/pihole/basic-install.sh
configureFirewall
''')
expected_stdout = 'Installing new IPTables firewall rulesets'
assert expected_stdout in configureFirewall.stdout
firewall_calls = Pihole.run('cat /var/log/iptables').stdout
assert 'iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT' in firewall_calls
assert 'iptables -I INPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT' in firewall_calls
assert 'iptables -I INPUT 1 -p udp -m udp --dport 53 -j ACCEPT' in firewall_calls
def test_installPiholeWeb_fresh_install_no_errors(Pihole):
''' confirms all web page assets from Core repo are installed on a fresh build '''
'''
confirms all web page assets from Core repo are installed on a fresh build
'''
installWeb = Pihole.run('''
source /opt/pihole/basic-install.sh
installPiholeWeb
''')
assert 'Installing pihole custom index page...' in installWeb.stdout
assert 'No default index.lighttpd.html file found... not backing up' in installWeb.stdout
expected_stdout = info_box + ' Installing blocking page...'
assert expected_stdout in installWeb.stdout
expected_stdout = tick_box + (' Creating directory for blocking page, '
'and copying files')
assert expected_stdout in installWeb.stdout
expected_stdout = info_box + ' Backing up index.lighttpd.html'
assert expected_stdout in installWeb.stdout
expected_stdout = ('No default index.lighttpd.html file found... '
'not backing up')
assert expected_stdout in installWeb.stdout
expected_stdout = tick_box + ' Installing sudoer file'
assert expected_stdout in installWeb.stdout
web_directory = Pihole.run('ls -r /var/www/html/pihole').stdout
assert 'index.php' in web_directory
assert 'index.js' in web_directory
assert 'blockingpage.css' in web_directory
def test_installPiholeWeb_empty_directory_no_errors(Pihole):
''' confirms all web page assets from Core repo are installed in an emtpy directory '''
installWeb = Pihole.run('''
def test_update_package_cache_success_no_errors(Pihole):
'''
confirms package cache was updated without any errors
'''
updateCache = Pihole.run('''
source /opt/pihole/basic-install.sh
mkdir -p /var/www/html/pihole
installPiholeWeb
distro_check
update_package_cache
''')
assert 'Installing pihole custom index page...' in installWeb.stdout
assert 'No default index.lighttpd.html file found... not backing up' not in installWeb.stdout
assert 'index.php missing, replacing...' in installWeb.stdout
assert 'index.js missing, replacing...' in installWeb.stdout
assert 'blockingpage.css missing, replacing...' in installWeb.stdout
web_directory = Pihole.run('ls -r /var/www/html/pihole').stdout
assert 'index.php' in web_directory
assert 'index.js' in web_directory
assert 'blockingpage.css' in web_directory
expected_stdout = tick_box + ' Update local cache of available packages'
assert expected_stdout in updateCache.stdout
assert 'error' not in updateCache.stdout.lower()
def test_installPiholeWeb_index_php_no_errors(Pihole):
''' confirms all web page assets from Core repo are installed when necessary '''
installWeb = Pihole.run('''
def test_update_package_cache_failure_no_errors(Pihole):
'''
confirms package cache was not updated
'''
mock_command('apt-get', {'update': ('', '1')}, Pihole)
updateCache = Pihole.run('''
source /opt/pihole/basic-install.sh
mkdir -p /var/www/html/pihole
touch /var/www/html/pihole/index.php
installPiholeWeb
distro_check
update_package_cache
''')
assert 'Installing pihole custom index page...' in installWeb.stdout
assert 'No default index.lighttpd.html file found... not backing up' not in installWeb.stdout
assert 'Existing index.php detected, not overwriting' in installWeb.stdout
assert 'index.js missing, replacing...' in installWeb.stdout
assert 'blockingpage.css missing, replacing...' in installWeb.stdout
web_directory = Pihole.run('ls -r /var/www/html/pihole').stdout
assert 'index.php' in web_directory
assert 'index.js' in web_directory
assert 'blockingpage.css' in web_directory
expected_stdout = cross_box + ' Update local cache of available packages'
assert expected_stdout in updateCache.stdout
assert 'Error: Unable to update package cache.' in updateCache.stdout
def test_installPiholeWeb_index_js_no_errors(Pihole):
''' confirms all web page assets from Core repo are installed when necessary '''
installWeb = Pihole.run('''
def test_FTL_detect_aarch64_no_errors(Pihole):
'''
confirms only aarch64 package is downloaded for FTL engine
'''
# mock uname to return aarch64 platform
mock_command('uname', {'-m': ('aarch64', '0')}, Pihole)
# mock ldd to respond with aarch64 shared library
mock_command(
'ldd',
{
'/bin/ls': (
'/lib/ld-linux-aarch64.so.1',
'0'
)
},
Pihole
)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
mkdir -p /var/www/html/pihole
touch /var/www/html/pihole/index.js
installPiholeWeb
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
assert 'Installing pihole custom index page...' in installWeb.stdout
assert 'No default index.lighttpd.html file found... not backing up' not in installWeb.stdout
assert 'index.php missing, replacing...' in installWeb.stdout
assert 'Existing index.js detected, not overwriting' in installWeb.stdout
assert 'blockingpage.css missing, replacing...' in installWeb.stdout
web_directory = Pihole.run('ls -r /var/www/html/pihole').stdout
assert 'index.php' in web_directory
assert 'index.js' in web_directory
assert 'blockingpage.css' in web_directory
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Detected AArch64 (64 Bit ARM) processor'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
def test_installPiholeWeb_blockingpage_css_no_errors(Pihole):
''' confirms all web page assets from Core repo are installed when necessary '''
installWeb = Pihole.run('''
def test_FTL_detect_armv4t_no_errors(Pihole):
'''
confirms only armv4t package is downloaded for FTL engine
'''
# mock uname to return armv4t platform
mock_command('uname', {'-m': ('armv4t', '0')}, Pihole)
# mock ldd to respond with ld-linux shared library
mock_command('ldd', {'/bin/ls': ('/lib/ld-linux.so.3', '0')}, Pihole)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
mkdir -p /var/www/html/pihole
touch /var/www/html/pihole/blockingpage.css
installPiholeWeb
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
assert 'Installing pihole custom index page...' in installWeb.stdout
assert 'No default index.lighttpd.html file found... not backing up' not in installWeb.stdout
assert 'index.php missing, replacing...' in installWeb.stdout
assert 'index.js missing, replacing...' in installWeb.stdout
assert 'Existing blockingpage.css detected, not overwriting' in installWeb.stdout
web_directory = Pihole.run('ls -r /var/www/html/pihole').stdout
assert 'index.php' in web_directory
assert 'index.js' in web_directory
assert 'blockingpage.css' in web_directory
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + (' Detected ARMv4 processor')
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
def test_installPiholeWeb_already_populated_no_errors(Pihole):
''' confirms all web page assets from Core repo are installed when necessary '''
installWeb = Pihole.run('''
def test_FTL_detect_armv5te_no_errors(Pihole):
'''
confirms only armv5te package is downloaded for FTL engine
'''
# mock uname to return armv5te platform
mock_command('uname', {'-m': ('armv5te', '0')}, Pihole)
# mock ldd to respond with ld-linux shared library
mock_command('ldd', {'/bin/ls': ('/lib/ld-linux.so.3', '0')}, Pihole)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
mkdir -p /var/www/html/pihole
touch /var/www/html/pihole/index.php
touch /var/www/html/pihole/index.js
touch /var/www/html/pihole/blockingpage.css
installPiholeWeb
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
assert 'Installing pihole custom index page...' in installWeb.stdout
assert 'No default index.lighttpd.html file found... not backing up' not in installWeb.stdout
assert 'Existing index.php detected, not overwriting' in installWeb.stdout
assert 'index.php missing, replacing...' not in installWeb.stdout
assert 'Existing index.js detected, not overwriting' in installWeb.stdout
assert 'index.js missing, replacing...' not in installWeb.stdout
assert 'Existing blockingpage.css detected, not overwriting' in installWeb.stdout
assert 'blockingpage.css missing, replacing... ' not in installWeb.stdout
web_directory = Pihole.run('ls -r /var/www/html/pihole').stdout
assert 'index.php' in web_directory
assert 'index.js' in web_directory
assert 'blockingpage.css' in web_directory
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + (' Detected ARMv5 (or newer) processor')
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
# Helper functions
def mock_command(script, args, container):
''' Allows for setup of commands we don't really want to have to run for real in unit tests '''
full_script_path = '/usr/local/bin/{}'.format(script)
mock_script = dedent('''\
#!/bin/bash -e
echo "\$0 \$@" >> /var/log/{script}
case "\$1" in'''.format(script=script))
for k, v in args.iteritems():
case = dedent('''
{arg})
echo {res}
exit {retcode}
;;'''.format(arg=k, res=v[0], retcode=v[1]))
mock_script += case
mock_script += dedent('''
esac''')
container.run('''
cat <<EOF> {script}\n{content}\nEOF
chmod +x {script}
rm -f /var/log/{scriptlog}'''.format(script=full_script_path, content=mock_script, scriptlog=script))
def run_script(Pihole, script):
result = Pihole.run(script)
assert result.rc == 0
return result
def test_FTL_detect_armv6l_no_errors(Pihole):
'''
confirms only armv6l package is downloaded for FTL engine
'''
# mock uname to return armv6l platform
mock_command('uname', {'-m': ('armv6l', '0')}, Pihole)
# mock ldd to respond with ld-linux-armhf shared library
mock_command('ldd', {'/bin/ls': ('/lib/ld-linux-armhf.so.3', '0')}, Pihole)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + (' Detected ARMv6 processor '
'(with hard-float support)')
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
def test_FTL_detect_armv7l_no_errors(Pihole):
'''
confirms only armv7l package is downloaded for FTL engine
'''
# mock uname to return armv7l platform
mock_command('uname', {'-m': ('armv7l', '0')}, Pihole)
# mock ldd to respond with ld-linux-armhf shared library
mock_command('ldd', {'/bin/ls': ('/lib/ld-linux-armhf.so.3', '0')}, Pihole)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + (' Detected ARMv7 processor '
'(with hard-float support)')
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
def test_FTL_detect_armv8a_no_errors(Pihole):
'''
confirms only armv8a package is downloaded for FTL engine
'''
# mock uname to return armv8a platform
mock_command('uname', {'-m': ('armv8a', '0')}, Pihole)
# mock ldd to respond with ld-linux-armhf shared library
mock_command('ldd', {'/bin/ls': ('/lib/ld-linux-armhf.so.3', '0')}, Pihole)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Detected ARMv8 (or newer) processor'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
def test_FTL_detect_x86_64_no_errors(Pihole):
'''
confirms only x86_64 package is downloaded for FTL engine
'''
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
expected_stdout = info_box + ' FTL Checks...'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Detected x86_64 processor'
assert expected_stdout in detectPlatform.stdout
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in detectPlatform.stdout
def test_FTL_detect_unknown_no_errors(Pihole):
''' confirms only generic package is downloaded for FTL engine '''
# mock uname to return generic platform
mock_command('uname', {'-m': ('mips', '0')}, Pihole)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
''')
expected_stdout = 'Not able to detect processor (unknown: mips)'
assert expected_stdout in detectPlatform.stdout
def test_FTL_download_aarch64_no_errors(Pihole):
'''
confirms only aarch64 package is downloaded for FTL engine
'''
# mock whiptail answers and ensure installer dependencies
mock_command('whiptail', {'*': ('', '0')}, Pihole)
Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
install_dependent_packages ${INSTALLER_DEPS[@]}
''')
download_binary = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
FTLinstall "pihole-FTL-aarch64-linux-gnu"
''')
expected_stdout = tick_box + ' Downloading and Installing FTL'
assert expected_stdout in download_binary.stdout
assert 'error' not in download_binary.stdout.lower()
def test_FTL_binary_installed_and_responsive_no_errors(Pihole):
'''
confirms FTL binary is copied and functional in installed location
'''
installed_binary = Pihole.run('''
source /opt/pihole/basic-install.sh
create_pihole_user
funcOutput=$(get_binary_name)
binary="pihole-FTL${funcOutput##*pihole-FTL}"
theRest="${funcOutput%pihole-FTL*}"
FTLdetect "${binary}" "${theRest}"
pihole-FTL version
''')
expected_stdout = 'v'
assert expected_stdout in installed_binary.stdout
# def test_FTL_support_files_installed(Pihole):
# '''
# confirms FTL support files are installed
# '''
# support_files = Pihole.run('''
# source /opt/pihole/basic-install.sh
# FTLdetect
# stat -c '%a %n' /var/log/pihole-FTL.log
# stat -c '%a %n' /run/pihole-FTL.port
# stat -c '%a %n' /run/pihole-FTL.pid
# ls -lac /run
# ''')
# assert '644 /run/pihole-FTL.port' in support_files.stdout
# assert '644 /run/pihole-FTL.pid' in support_files.stdout
# assert '644 /var/log/pihole-FTL.log' in support_files.stdout
def test_IPv6_only_link_local(Pihole):
'''
confirms IPv6 blocking is disabled for Link-local address
'''
# mock ip -6 address to return Link-local address
mock_command_2(
'ip',
{
'-6 address': (
'inet6 fe80::d210:52fa:fe00:7ad7/64 scope link',
'0'
)
},
Pihole
)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
useIPv6dialog
''')
expected_stdout = ('Unable to find IPv6 ULA/GUA address, '
'IPv6 adblocking will not be enabled')
assert expected_stdout in detectPlatform.stdout
def test_IPv6_only_ULA(Pihole):
'''
confirms IPv6 blocking is enabled for ULA addresses
'''
# mock ip -6 address to return ULA address
mock_command_2(
'ip',
{
'-6 address': (
'inet6 fda2:2001:5555:0:d210:52fa:fe00:7ad7/64 scope global',
'0'
)
},
Pihole
)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
useIPv6dialog
''')
expected_stdout = 'Found IPv6 ULA address, using it for blocking IPv6 ads'
assert expected_stdout in detectPlatform.stdout
def test_IPv6_only_GUA(Pihole):
'''
confirms IPv6 blocking is enabled for GUA addresses
'''
# mock ip -6 address to return GUA address
mock_command_2(
'ip',
{
'-6 address': (
'inet6 2003:12:1e43:301:d210:52fa:fe00:7ad7/64 scope global',
'0'
)
},
Pihole
)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
useIPv6dialog
''')
expected_stdout = 'Found IPv6 GUA address, using it for blocking IPv6 ads'
assert expected_stdout in detectPlatform.stdout
def test_IPv6_GUA_ULA_test(Pihole):
'''
confirms IPv6 blocking is enabled for GUA and ULA addresses
'''
# mock ip -6 address to return GUA and ULA addresses
mock_command_2(
'ip',
{
'-6 address': (
'inet6 2003:12:1e43:301:d210:52fa:fe00:7ad7/64 scope global\n'
'inet6 fda2:2001:5555:0:d210:52fa:fe00:7ad7/64 scope global',
'0'
)
},
Pihole
)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
useIPv6dialog
''')
expected_stdout = 'Found IPv6 ULA address, using it for blocking IPv6 ads'
assert expected_stdout in detectPlatform.stdout
def test_IPv6_ULA_GUA_test(Pihole):
'''
confirms IPv6 blocking is enabled for GUA and ULA addresses
'''
# mock ip -6 address to return ULA and GUA addresses
mock_command_2(
'ip',
{
'-6 address': (
'inet6 fda2:2001:5555:0:d210:52fa:fe00:7ad7/64 scope global\n'
'inet6 2003:12:1e43:301:d210:52fa:fe00:7ad7/64 scope global',
'0'
)
},
Pihole
)
detectPlatform = Pihole.run('''
source /opt/pihole/basic-install.sh
useIPv6dialog
''')
expected_stdout = 'Found IPv6 ULA address, using it for blocking IPv6 ads'
assert expected_stdout in detectPlatform.stdout
def test_validate_ip(Pihole):
'''
Tests valid_ip for various IP addresses
'''
def test_address(addr, success=True):
output = Pihole.run('''
source /opt/pihole/basic-install.sh
valid_ip "{addr}"
'''.format(addr=addr))
assert output.rc == 0 if success else 1
test_address('192.168.1.1')
test_address('127.0.0.1')
test_address('255.255.255.255')
test_address('255.255.255.256', False)
test_address('255.255.256.255', False)
test_address('255.256.255.255', False)
test_address('256.255.255.255', False)
test_address('1092.168.1.1', False)
test_address('not an IP', False)
test_address('8.8.8.8#', False)
test_address('8.8.8.8#0')
test_address('8.8.8.8#1')
test_address('8.8.8.8#42')
test_address('8.8.8.8#888')
test_address('8.8.8.8#1337')
test_address('8.8.8.8#65535')
test_address('8.8.8.8#65536', False)
test_address('8.8.8.8#-1', False)
test_address('00.0.0.0', False)
test_address('010.0.0.0', False)
test_address('001.0.0.0', False)
test_address('0.0.0.0#00', False)
test_address('0.0.0.0#01', False)
test_address('0.0.0.0#001', False)
test_address('0.0.0.0#0001', False)
test_address('0.0.0.0#00001', False)
def test_os_check_fails(Pihole):
''' Confirms install fails on unsupported OS '''
Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
install_dependent_packages ${INSTALLER_DEPS[@]}
cat <<EOT > /etc/os-release
ID=UnsupportedOS
VERSION_ID="2"
EOT
''')
detectOS = Pihole.run('''t
source /opt/pihole/basic-install.sh
os_check
''')
expected_stdout = 'Unsupported OS detected: UnsupportedOS'
assert expected_stdout in detectOS.stdout
def test_os_check_passes(Pihole):
''' Confirms OS meets the requirements '''
Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
install_dependent_packages ${INSTALLER_DEPS[@]}
''')
detectOS = Pihole.run('''
source /opt/pihole/basic-install.sh
os_check
''')
expected_stdout = 'Supported OS detected'
assert expected_stdout in detectOS.stdout

View File

@@ -0,0 +1,60 @@
from .conftest import (
tick_box,
info_box,
mock_command,
)
def test_php_upgrade_default_optout_centos_eq_7(Pihole):
'''
confirms the default behavior to opt-out of installing PHP7 from REMI
'''
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
'Deprecated PHP may be in use.')
assert expected_stdout in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed
def test_php_upgrade_user_optout_centos_eq_7(Pihole):
'''
confirms installer behavior when user opt-out of installing PHP7 from REMI
(php not currently installed)
'''
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*': ('', '1')}, Pihole)
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
'Deprecated PHP may be in use.')
assert expected_stdout in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed
def test_php_upgrade_user_optin_centos_eq_7(Pihole):
'''
confirms installer behavior when user opt-in to installing PHP7 from REMI
(php not currently installed)
'''
# Whiptail dialog returns Continue for user prompt
mock_command('whiptail', {'*': ('', '0')}, Pihole)
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
assert 'opt-out' not in distro_check.stdout
expected_stdout = info_box + (' Enabling Remi\'s RPM repository '
'(https://rpms.remirepo.net)')
assert expected_stdout in distro_check.stdout
expected_stdout = tick_box + (' Remi\'s RPM repository has '
'been enabled for PHP7')
assert expected_stdout in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert remi_package.is_installed

View File

@@ -0,0 +1,65 @@
from .conftest import (
tick_box,
info_box,
mock_command,
)
def test_php_upgrade_default_continue_centos_gte_8(Pihole):
'''
confirms the latest version of CentOS continues / does not optout
(should trigger on CentOS7 only)
'''
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
unexpected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS.'
' Deprecated PHP may be in use.')
assert unexpected_stdout not in distro_check.stdout
# ensure remi was not installed on latest CentOS
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed
def test_php_upgrade_user_optout_skipped_centos_gte_8(Pihole):
'''
confirms installer skips user opt-out of installing PHP7 from REMI on
latest CentOS (should trigger on CentOS7 only)
(php not currently installed)
'''
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*': ('', '1')}, Pihole)
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
unexpected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS.'
' Deprecated PHP may be in use.')
assert unexpected_stdout not in distro_check.stdout
# ensure remi was not installed on latest CentOS
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed
def test_php_upgrade_user_optin_skipped_centos_gte_8(Pihole):
'''
confirms installer skips user opt-in to installing PHP7 from REMI on
latest CentOS (should trigger on CentOS7 only)
(php not currently installed)
'''
# Whiptail dialog returns Continue for user prompt
mock_command('whiptail', {'*': ('', '0')}, Pihole)
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
assert 'opt-out' not in distro_check.stdout
unexpected_stdout = info_box + (' Enabling Remi\'s RPM repository '
'(https://rpms.remirepo.net)')
assert unexpected_stdout not in distro_check.stdout
unexpected_stdout = tick_box + (' Remi\'s RPM repository has '
'been enabled for PHP7')
assert unexpected_stdout not in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed

View File

@@ -0,0 +1,120 @@
import pytest
from .conftest import (
tick_box,
info_box,
cross_box,
mock_command,
)
def test_release_supported_version_check_centos(Pihole):
'''
confirms installer exits on unsupported releases of CentOS
'''
# modify /etc/redhat-release to mock an unsupported CentOS release
Pihole.run('echo "CentOS Linux release 6.9" > /etc/redhat-release')
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = cross_box + (' CentOS 6 is not supported.')
assert expected_stdout in distro_check.stdout
expected_stdout = 'Please update to CentOS release 7 or later'
assert expected_stdout in distro_check.stdout
def test_enable_epel_repository_centos(Pihole):
'''
confirms the EPEL package repository is enabled when installed on CentOS
'''
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = info_box + (' Enabling EPEL package repository '
'(https://fedoraproject.org/wiki/EPEL)')
assert expected_stdout in distro_check.stdout
expected_stdout = tick_box + ' Installed epel-release'
assert expected_stdout in distro_check.stdout
epel_package = Pihole.package('epel-release')
assert epel_package.is_installed
def test_php_version_lt_7_detected_upgrade_default_optout_centos(Pihole):
'''
confirms the default behavior to opt-out of upgrading to PHP7 from REMI
'''
# first we will install the default php version to test installer behavior
php_install = Pihole.run('yum install -y php')
assert php_install.rc == 0
php_package = Pihole.package('php')
default_centos_php_version = php_package.version.split('.')[0]
if int(default_centos_php_version) >= 7: # PHP7 is supported/recommended
pytest.skip("Test deprecated . Detected default PHP version >= 7")
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
'Deprecated PHP may be in use.')
assert expected_stdout in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed
def test_php_version_lt_7_detected_upgrade_user_optout_centos(Pihole):
'''
confirms installer behavior when user opt-out to upgrade to PHP7 via REMI
'''
# first we will install the default php version to test installer behavior
php_install = Pihole.run('yum install -y php')
assert php_install.rc == 0
php_package = Pihole.package('php')
default_centos_php_version = php_package.version.split('.')[0]
if int(default_centos_php_version) >= 7: # PHP7 is supported/recommended
pytest.skip("Test deprecated . Detected default PHP version >= 7")
# Whiptail dialog returns Cancel for user prompt
mock_command('whiptail', {'*': ('', '1')}, Pihole)
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
'Deprecated PHP may be in use.')
assert expected_stdout in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed
def test_php_version_lt_7_detected_upgrade_user_optin_centos(Pihole):
'''
confirms installer behavior when user opt-in to upgrade to PHP7 via REMI
'''
# first we will install the default php version to test installer behavior
php_install = Pihole.run('yum install -y php')
assert php_install.rc == 0
php_package = Pihole.package('php')
default_centos_php_version = php_package.version.split('.')[0]
if int(default_centos_php_version) >= 7: # PHP7 is supported/recommended
pytest.skip("Test deprecated . Detected default PHP version >= 7")
# Whiptail dialog returns Continue for user prompt
mock_command('whiptail', {'*': ('', '0')}, Pihole)
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
install_dependent_packages PIHOLE_WEB_DEPS[@]
''')
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
'Deprecated PHP may be in use.')
assert expected_stdout not in distro_check.stdout
expected_stdout = info_box + (' Enabling Remi\'s RPM repository '
'(https://rpms.remirepo.net)')
assert expected_stdout in distro_check.stdout
expected_stdout = tick_box + (' Remi\'s RPM repository has '
'been enabled for PHP7')
assert expected_stdout in distro_check.stdout
remi_package = Pihole.package('remi-release')
assert remi_package.is_installed
updated_php_package = Pihole.package('php')
updated_php_version = updated_php_package.version.split('.')[0]
assert int(updated_php_version) == 7

View File

@@ -0,0 +1,65 @@
from .conftest import (
tick_box,
cross_box,
mock_command,
)
def mock_selinux_config(state, Pihole):
'''
Creates a mock SELinux config file with expected content
'''
# validate state string
valid_states = ['enforcing', 'permissive', 'disabled']
assert state in valid_states
# getenforce returns the running state of SELinux
mock_command('getenforce', {'*': (state.capitalize(), '0')}, Pihole)
# create mock configuration with desired content
Pihole.run('''
mkdir /etc/selinux
echo "SELINUX={state}" > /etc/selinux/config
'''.format(state=state.lower()))
def test_selinux_enforcing_exit(Pihole):
'''
confirms installer prompts to exit when SELinux is Enforcing by default
'''
mock_selinux_config("enforcing", Pihole)
check_selinux = Pihole.run('''
source /opt/pihole/basic-install.sh
checkSelinux
''')
expected_stdout = cross_box + ' Current SELinux: Enforcing'
assert expected_stdout in check_selinux.stdout
expected_stdout = 'SELinux Enforcing detected, exiting installer'
assert expected_stdout in check_selinux.stdout
assert check_selinux.rc == 1
def test_selinux_permissive(Pihole):
'''
confirms installer continues when SELinux is Permissive
'''
mock_selinux_config("permissive", Pihole)
check_selinux = Pihole.run('''
source /opt/pihole/basic-install.sh
checkSelinux
''')
expected_stdout = tick_box + ' Current SELinux: Permissive'
assert expected_stdout in check_selinux.stdout
assert check_selinux.rc == 0
def test_selinux_disabled(Pihole):
'''
confirms installer continues when SELinux is Disabled
'''
mock_selinux_config("disabled", Pihole)
check_selinux = Pihole.run('''
source /opt/pihole/basic-install.sh
checkSelinux
''')
expected_stdout = tick_box + ' Current SELinux: Disabled'
assert expected_stdout in check_selinux.stdout
assert check_selinux.rc == 0

View File

@@ -0,0 +1,15 @@
def test_epel_and_remi_not_installed_fedora(Pihole):
'''
confirms installer does not attempt to install EPEL/REMI repositories
on Fedora
'''
distro_check = Pihole.run('''
source /opt/pihole/basic-install.sh
distro_check
''')
assert distro_check.stdout == ''
epel_package = Pihole.package('epel-release')
assert not epel_package.is_installed
remi_package = Pihole.package('remi-release')
assert not remi_package.is_installed

View File

@@ -1,13 +0,0 @@
import pytest
import testinfra
run_local = testinfra.get_backend(
"local://"
).get_module("Command").run
def test_scripts_pass_shellcheck():
''' Make sure shellcheck does not find anything wrong with our shell scripts '''
shellcheck = "find . -type f \( -name 'update.sh' -o -name 'piholeDebug.sh' \) | while read file; do shellcheck \"$file\"; done;"
results = run_local(shellcheck)
print results.stdout
assert '' == results.stdout

8
test/tox.centos_7.ini Normal file
View File

@@ -0,0 +1,8 @@
[tox]
envlist = py37
[testenv]
whitelist_externals = docker
deps = -rrequirements.txt
commands = docker build -f _centos_7.Dockerfile -t pytest_pihole:test_container ../
pytest {posargs:-vv -n auto} ./test_automated_install.py ./test_centos_fedora_common_support.py ./test_centos_common_support.py ./test_centos_7_support.py

8
test/tox.centos_8.ini Normal file
View File

@@ -0,0 +1,8 @@
[tox]
envlist = py37
[testenv]
whitelist_externals = docker
deps = -rrequirements.txt
commands = docker build -f _centos_8.Dockerfile -t pytest_pihole:test_container ../
pytest {posargs:-vv -n auto} ./test_automated_install.py ./test_centos_fedora_common_support.py ./test_centos_common_support.py ./test_centos_8_support.py

8
test/tox.debian_10.ini Normal file
View File

@@ -0,0 +1,8 @@
[tox]
envlist = py37
[testenv]
whitelist_externals = docker
deps = -rrequirements.txt
commands = docker build -f _debian_10.Dockerfile -t pytest_pihole:test_container ../
pytest {posargs:-vv -n auto} ./test_automated_install.py

8
test/tox.debian_9.ini Normal file
View File

@@ -0,0 +1,8 @@
[tox]
envlist = py37
[testenv]
whitelist_externals = docker
deps = -rrequirements.txt
commands = docker build -f _debian_9.Dockerfile -t pytest_pihole:test_container ../
pytest {posargs:-vv -n auto} ./test_automated_install.py

Some files were not shown because too many files have changed in this diff Show More