The Pi-hole FTL engine
Go to file
DL6ER b60d63f448
Merge pull request #570 from pi-hole/hotfix/v4.3.1
Hotfix v4.3.1
2019-05-25 21:37:26 +02:00
.circleci Move -m32 flag from CI config to docker container 2019-01-03 15:35:45 -05:00
.github Add .github/PULL_REQUEST_TEMPLATE.md (#24) 2017-05-01 14:44:03 +02:00
aux Further review comments. Always allocate vendor so we can always free this pointer. Add a callback for the update subroutine. 2019-01-07 18:46:57 +01:00
dnsmasq Merge branch 'development' into fix/externally_blocked_use_RA 2019-03-11 22:47:20 -04:00
docker Add ghr to the docker build container 2019-02-22 19:54:53 -08:00
test Use new customizable paths for Travis' tests. Fallback to searching for a local pihole-FTL.conf if none was found in the default locations 2018-11-07 17:04:19 +01:00
.gitignore Add generated aux files to .gitignore 2019-01-08 21:07:32 +01:00
.gitmodules Properly track the git modules instead of ignoring 2018-01-10 22:00:26 -05:00
.pullapprove.yml Add PullApprove settings file (copied from core repo) (#23) 2017-05-01 14:47:46 +02:00
FTL.h Move global constants RESOLVE_INTERVAL and RERESOLVE_INTERVAL to FTL.h 2019-04-12 16:23:50 +02:00
FTLtest.sh Minor change to FTLtest.sh 2017-03-12 11:02:20 +01:00
LICENSE Improve formating 2017-06-03 15:05:41 +02:00
Makefile Check capabilities with kernel methods. Removes the need for libcap on the target system. 2019-03-17 10:57:48 +01:00
README.md Update cryptocoin addresses 2019-05-03 07:42:26 +01:00
api.c Merge branch 'development' into fix/externally_blocked_use_RA 2019-03-11 22:47:20 -04:00
api.h Similarly, neither of the API routines (that only return statistics) should be able to modify their input arguments. 2019-03-10 11:28:03 +01:00
args.c Use const char** for argv_dnsmasq 2019-03-10 20:38:01 +01:00
capabilities.c Type of capabilityIDs is const unsigned int 2019-03-19 07:35:50 +01:00
config.c Add capabilities debug mode that prints all capabilities which are enabled when pihole-FTL is started. 2019-03-17 14:53:27 +01:00
daemon.c Add -Wshadow to extra warning flags. It defaults to -Wshadow=global and implies -Wshadow=local. Apply correspsonding changes due to shadowing of variables in the current codebase. 2019-03-08 10:08:11 +01:00
database.c Merge branch 'development' into fix/externally_blocked_use_RA 2019-03-11 22:47:20 -04:00
datastructure.c Declare return value of getstr() as const char* because the returned strings should not be modifiable. Similarly, neither pack_fixstr() nor pack_str32() should be able to modify strings they are given. Furthermore, getDomainString(), getClientIPString(), getClientNameString(), getSetupVarsArray(), insetupVarsArray(), and getSetupVarsBool() should never modify the strings they receive as arguments. 2019-03-10 11:24:51 +01:00
dnsmasq_interface.c Print message that we received SIGHUP into pihole-FTL.log when this happens 2019-03-18 11:51:57 +01:00
dnsmasq_interface.h Merge branch 'development' into fix/externally_blocked_use_RA 2019-02-04 05:28:48 +01:00
gc.c Merge branch 'development' into fix/externally_blocked_use_RA 2019-03-11 17:16:22 +01:00
grep.c Enforce prototyping. This ensures that function that are not explicitly made globally available across files (through an explicit prototype in a header file) need to be marked static such that their scope is limited to where they are actually used. This also enforces strict prototyping, i.e., a function with zero arguments needs to be written explicitly as function(void) as a non-strict prototype such as function() would in fact allow an arbitrary amount of parameters. 2019-03-10 15:31:14 +01:00
log.c Enforce prototyping. This ensures that function that are not explicitly made globally available across files (through an explicit prototype in a header file) need to be marked static such that their scope is limited to where they are actually used. This also enforces strict prototyping, i.e., a function with zero arguments needs to be written explicitly as function(void) as a non-strict prototype such as function() would in fact allow an arbitrary amount of parameters. 2019-03-10 15:31:14 +01:00
main.c Remove redundant function declarations 2019-03-10 15:37:57 +01:00
memory.c Add further attributes that give the compiler a hint how large the returned pointers might be. 2019-03-11 11:58:10 +01:00
msgpack.c Declare input data for swrite() as const void* 2019-03-10 19:44:31 +01:00
networktable.c Fix accessing shared memory outside of lock in networktable.c 2019-05-22 17:50:21 -07:00
overTime.c Declare attributes for functions in FTL. These attributes help the compiler to optimize functions calls and to check our code more carefully during compilation. See pull reqeust text for details. 2019-03-08 11:36:11 +01:00
regex.c Improve inner-struct alignment of variables. Due to reduced padding, we save a lot of space. This will directly reduce FTL's memory footprint. 2019-03-12 11:45:38 +01:00
request.c Similarly, neither of the API routines (that only return statistics) should be able to modify their input arguments. 2019-03-10 11:28:03 +01:00
resolve.c Don't hold a reference to shared memory across locks in resolve.c 2019-05-22 17:47:00 -07:00
routines.h Use architecture-dependent size for strings. size_t is most suitable here any may lead to a bit of memory reduction on 32-bit architectures such as ARMv6. 2019-03-12 11:58:26 +01:00
setupVars.c Declare return value of getstr() as const char* because the returned strings should not be modifiable. Similarly, neither pack_fixstr() nor pack_str32() should be able to modify strings they are given. Furthermore, getDomainString(), getClientIPString(), getClientNameString(), getSetupVarsArray(), insetupVarsArray(), and getSetupVarsBool() should never modify the strings they receive as arguments. 2019-03-10 11:24:51 +01:00
shmem.c Use architecture-dependent size for strings. size_t is most suitable here any may lead to a bit of memory reduction on 32-bit architectures such as ARMv6. 2019-03-12 11:58:26 +01:00
shmem.h Add const to more char* which should have this qualifier. 2019-03-10 11:39:27 +01:00
signals.c Declare attributes for functions in FTL. These attributes help the compiler to optimize functions calls and to check our code more carefully during compilation. See pull reqeust text for details. 2019-03-08 11:36:11 +01:00
socket.c Declare input data for swrite() as const void* 2019-03-10 19:44:31 +01:00
socket_client.c Handle possible pack_fixstr or pack_str32 error 2018-01-21 15:40:58 -05:00
sqlite3.c Update SQLite3 from 3.26.0 to 3.27.1 (release 3.27.0 has been skipped because it contained a bug) 2019-02-16 09:22:22 +01:00
sqlite3.h Update SQLite3 from 3.26.0 to 3.27.1 (release 3.27.0 has been skipped because it contained a bug) 2019-02-16 09:22:22 +01:00

README.md

Pi-hole

Network-wide ad blocking via your own Linux hardware
FTLDNS

FTLDNS (pihole-FTL) provides an interactive API and also generates statistics for Pi-hole®'s Web interface.

  • Fast: stats are read directly from memory by coupling our codebase closely with dnsmasq
  • Versatile: upstream changes to dnsmasq can quickly be merged in without much conflict
  • Lightweight: runs smoothly with minimal hardware and software requirements such as Raspberry Pi Zero
  • Interactive: our API can be used to interface with your projects
  • Insightful: stats normally reserved inside of dnsmasq are made available so you can see what's really happening on your network


Official documentation

The official FTLDNS documentation can be found here.

Installation

FTLDNS (pihole-FTL) is installed by default when you choose to enable the Web interface when installing Pi-hole.

IMPORTANT!

FTLDNS will disable any existing installations of dnsmasq. This is because FTLDNS is dnsmasq + Pi-hole's code, so both cannot run simultaneously.

Post-install: Gain insight into your network's activity

As mentioned earlier, FTLDNS will be enabled by default when you install Pi-hole. To access the Web interface, navigate to http://pi.hole/admin or http://<IP OF YOUR PIHOLE>/admin.

Once logged in, (or authenticated to the API) you can view your network stats to see things like:

  • the domains being queried on your network
  • the time the queries were initiated
  • the amount of domains that were blocked
  • the upstream server queries were sent to
  • the type of queries (A, AAAA, CNAME, SRV, TXT, etc.)

Pi-hole is free, but powered by your support

There are many reoccurring costs involved with maintaining free, open source, and privacy respecting software; expenses which our volunteer developers 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.

Make no mistake: your support is absolutely vital to help keep us innovating!

Donations

Sending a donation using our links below is extremely helpful in offsetting a portion of our monthly expenses:

Alternative support

If you'd rather not donate (which is okay!), there are other ways you can help support us:

Contributing via GitHub

We welcome everyone to contribute to issue reports, suggest new features, and create pull requests.

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.

Presentations about Pi-hole

Word-of-mouth continues to help our project grow immensely, and so we are helping make this easier for people.

If you are going to be presenting Pi-hole at a conference, meetup or even a school project, get in touch with us so we can hook you up with free swag to hand out to your audience!


Getting in touch with us

While we are primarily reachable on our Discourse User Forum, we can also be found on a variety of social media outlets. Please be sure to check the FAQ's before starting a new discussion, as we do not have the spare time to reply to every request for assistance.