Unbound Ads Generator
A tool to generate Unbound DNS server configuration for blocking advertising domains.
Overview
This program fetches lists of advertising domains from multiple sources and generates a configuration file for the Unbound DNS server to block these domains. It supports multiple input formats and automatically deduplicates domains.
Usage
unbound-ads-generator <url-list> <output-file>
Where:
- url-list is a URL pointing to a text file containing a list of URLs (one per line) that provide domain lists
- output-file is the path where the Unbound configuration will be written
Input Format
The URL list file should contain URLs (one per line) pointing to domain lists. Lines starting with # are treated as comments.
Example URL list file:
# Ad blocking lists
https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
The domain lists can be in either of these formats:
# IP and domain format
0.0.0.0 advertising.example.com
# Plain domain format
advertising.example.com
Output Format
The program generates Unbound configuration in this format:
local-zone: "advertising.example.com" refuse
local-zone: "another-ad.example.com" refuse
Features
- Supports multiple domain list formats
- Automatically deduplicates domains
- Case-insensitive domain matching
- Progress logging
- Comment handling
- Basic domain validation
Building
go build
Testing
go test -v
unbound-ads
A tool to generate Unbound DNS server configuration for domain blocking. It fetches domain lists from URLs and converts them into Unbound's local-zone configuration format for DNS-based ad and malware blocking.
Features
- Fetches domain lists from multiple URLs
- Supports various domain list formats (hosts file format, plain domain lists)
- Deduplicates domains automatically
- Generates Unbound-compatible configuration
- Progress logging with slog
- Docker support
Installation
Using Docker
docker pull public.ecr.aws/s0f9o2k5/unbound-ads:latest
Usage
Binary
unbound-ads <url-list> <output-file>
Where:
- url-list is a URL containing a list of domain list URLs (one per line)
- output-file is the path where the Unbound configuration will be written
Example:
unbound-ads https://v.firebog.net/hosts/lists.php?type=tick blocking.conf
Docker
docker run --rm -v "$PWD:/data" ghcr.io/yourusername/unbound-ads \
https://v.firebog.net/hosts/lists.php?type=tick /data/blocking.conf
Building from Source
Requirements: - Go 1.21 or later - just command runner - Docker (optional)
# Build binary
just build
# Build Docker image
just docker-build
# Run tests
just test
Output Format
The tool generates Unbound configuration in this format:
local-zone: "example.com" refuse
local-zone: "ads.example.com" refuse
When added to your Unbound configuration, these entries will cause Unbound to return NXDOMAIN for queries to blocked domains.