Files
adguard-dns-tools/README.md
moritzrfs 9c6556eb55
Some checks failed
CI/CD Workflow / Test (push) Failing after 16s
CI/CD Workflow / Deploy (push) Has been skipped
Test CI
2025-05-04 14:54:53 +02:00

54 lines
1.2 KiB
Markdown

# AdGuard DNS Rewrite Sync Tool
This script synchronizes DNS rewrite rules between a local YAML configuration and an AdGuard Home instance using its REST API.
## Features
- Logs into AdGuard Home via its control API
- Loads desired DNS rewrite entries from a YAML file
- Retrieves current DNS rewrite rules from AdGuard
- Compares current vs. desired state and:
- Adds new entries
- Updates existing ones with changed IPs
- Deletes entries no longer needed
- Merges local and remote rules and writes back to the YAML file
## Requirements
- Python 3.7+
- [`requests`](https://pypi.org/project/requests/)
- [`pyyaml`](https://pypi.org/project/PyYAML/)
- [`python-dotenv`](https://pypi.org/project/python-dotenv/)
Install dependencies:
```bash
pip install -r requirements.txt
## Configuration
Create a .env file in the same directory with the following variables:
```env
ADGUARD_URL=http://<adguard-host>:3000
ADGUARD_USER=admin
PASSWORD=yourpassword
YAML_FILE=rewrites.yaml
```
# YAML File Format
The YAML file should contain rewrite entries under the rewrites key:
```yaml
rewrites:
- domain: "example.org"
answer: "127.0.0.1"
- domain: "another.example.org"
answer: "192.168.1.1"
```
# Usage
Run the script:
```bash
python main.py
```