Control ftl remotely via 4711/tcp

I want to directly talk to and control ftl from another machine via 4711/tcp. I’ve seen some commands in the docs and I’ve seen how to get what has already been blocked but how can I query the list of domains/regexes in the blacklist and in the whitelist and how do I insert/delete/edit these lists on the fly? Is there any brief text describing these?

btw, 4711 was the name of some old fragrance, who chose this port??? B-)

FTL is our API engine and uses port 4711 on the localhost interface.

As it listens only on the local interface, you can’t reach it from remote.

Source: documentation

I can arrange that easily. Please suppose I have tcp connection there from another machine.

https://docs.pi-hole.net/ftldns/telnet-api/

Thx for the fast responses! I was right there searching before posting here. It does not include commands to manage the black/whitelists. Is it so in the code as well or are the calls missing from the doc page? (I could traverse the code but if there’s a direct answer from someone who already knows the project, I’d appreciate)

That is accurate.

Seen it in the code myself, both v4 and v5.

void process_request(const char *client_message, int *sock) etc…

I’ve looked the code and as far as I’ve seen up to now, FTL only queries the database (domain_in_list(), etc). It is not appearing to be the one who makes inserts/updates/deletes to the domainlist table. All that stuff seems to be living in the php side of the code. Is it so?

That is accurate.

Thanks Dan. Since you now have sqlite3 in v5, please consider offloading (via sqlite3-pcre) all the regex stuff from the C side into the database. By doing so, we users would instantly gain PCRE type regexes, way better than the EREs which C side library is only able to provide. I’d however, also propose to your team to consider quickly moving away from the file based db, for the sake of some db with more interface capabilities (sockets? api?) so that a programmer could integrate your project into something vaster. For example, the project could at least provide an option to use an external, existing database server, since it’s using databases now. This is at least… logical, don’t you think?

My proposals from living some weeks with it. I think it’s a good project which is on its verge to escape the pi- constellation and become a true hole :slight_smile:

Live well and prosper,
ab.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.