The Pi-hole FTL engine
Latest commit 8493df4 Aug 5, 2018
Permalink
Failed to load latest commit information.
.circleci Fix config Aug 5, 2018
.github Sync PR template and PullApprove settings into master branch (#26) May 1, 2017
dnsmasq Fix negative display of read domains May 13, 2018
docker Use pre-compiled static libraries when building on arm (for Raspbian) Mar 22, 2018
test Merge pull request #224 from pi-hole/new/DB_integrated_counters Mar 2, 2018
.gitignore Properly track the git modules instead of ignoring Jan 11, 2018
.gitmodules Properly track the git modules instead of ignoring Jan 11, 2018
.pullapprove.yml Sync PR template and PullApprove settings into master branch (#26) May 1, 2017
FTL.h Merge pull request #326 from pi-hole/new/regex-deebug-mode Jul 19, 2018
FTLtest.sh Minor change to FTLtest.sh Mar 12, 2017
LICENSE Improve formating Jun 3, 2017
Makefile Merge branch 'development' into new/regex-lists May 27, 2018
README.md add patreon and adjust affiliate links Jun 5, 2018
api.c Client names of new clients may be invalid strings. Test against NULL… Jul 25, 2018
api.h Remove memory sub-structure Jun 23, 2018
args.c Merge branch 'development' into ftldns/remove_old_debug_options May 12, 2018
config.c Review comments Jul 18, 2018
daemon.c Remove obsolete test singularity function May 12, 2018
database.c Don't set regex status for domains read from database as we don't add… May 19, 2018
datastructure.c Remove memory sub-structure Jun 23, 2018
dnsmasq_interface.c For privacylevel > 0, we obfuscate the domain early on by replacing i… Jul 30, 2018
dnsmasq_interface.h Revert "No forking" May 12, 2018
dnsmasq_interface_actions.c Initial commit for FTLDNS Feb 22, 2018
gc.c Run DB cleaning once GC is finished (defaults to once per hour) Jul 31, 2018
grep.c Don't use regex filters if blocking is disabled Jul 16, 2018
log.c Remove memory sub-structure Jun 23, 2018
main.c Remove obsolete variables May 19, 2018
memory.c Review comments 2 Jul 18, 2018
msgpack.c Fix signedness of integer constant. This was a problem on 32bit platf… Feb 3, 2018
privacy.c Initial commit for FTLDNS Feb 22, 2018
regex.c it should be "regex on line ..." not "regex in line ..." + avoid doub… Aug 5, 2018
request.c Remove memory sub-structure Jun 23, 2018
resolve.c Provacy mode: Actually return host name "hidden" instead of trying to… Apr 12, 2018
routines.h Move in_whitelist() check into FTL_new_query) routine to keep the mat… Jun 5, 2018
setupVars.c Implement name resolving power back for FTLDNS. This re-implements lo… Apr 11, 2018
signals.c Remove special support for old type of wildcard lists as dnsmasq conf… May 19, 2018
socket.c Merge branch 'development' into ftldns/remove_old_debug_options May 12, 2018
socket_client.c Handle possible pack_fixstr or pack_str32 error Jan 21, 2018
sqlite3.c Update SQLite from 3.23.1 to 3.24.0 Jun 5, 2018
sqlite3.h Update SQLite from 3.23.1 to 3.24.0 Jun 5, 2018
threads.c Initial commit for FTLDNS Feb 22, 2018

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.