Metadata-Version: 2.4
Name: dnspropagation
Version: 0.0.8
Summary: DNS propagation checker
Author-email: Simon Berka <berka@berkasimon.com>
Project-URL: Homepage, https://github.com/berkas1/dnspropagation
Project-URL: Bug Tracker, https://github.com/berkas1/dnspropagation/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: PyYAML>=6.0
Requires-Dist: argcomplete>=2.0.0
Requires-Dist: dnspython>=2.3.0
Requires-Dist: prettytable>=3.6.0
Dynamic: license-file

# dnspropagation

CLI utility to check propagation of DNS records using multiple DNS servers simultaneously.

## Installation
```
pip install dnspropagation
# or
pipx install dnspropagation
# or run in docker
docker run berkas1/dnspropagation a google.com
```

## Usage

Specify the record type and domain name:
```
dnspropagation a google.com

# docker
docker run berkas1/dnspropagation a google.com
```

Queries six default public nameservers and prints a formatted table. Use `--json` or `--yaml` for machine-readable output.

![Table 1](extras/table1.png)

## Parameters

### Custom DNS servers

Supply one or more servers with `--server`:
```shell
dnspropagation --server 1.1.1.1 --server 8.8.8.8 a google.com
```

Or provide a YAML-formatted server list via `--custom_list` using a local file path or an `http(s)://` URL:
```shell
dnspropagation --custom_list custom-list.yaml a google.com
dnspropagation --custom_list https://example.com/my-servers.yaml a google.com
```
See [custom-list.yaml](custom-list.yaml) for the expected format. Remote lists are fetched over HTTPS (recommended) or HTTP with a 10-second timeout and a 1 MB size limit. Every entry must contain a valid `ipv4` field.

### Expected results

Use `--expected` to assert a specific value. Matching values are highlighted green; non-matching values are highlighted red. The flag can be used multiple times.

![expect1](extras/expect1.png)

### Filtering DNS servers

`--tags` and `--owner` filter which servers from the default list or a custom list are queried. Both flags accept multiple values and are combined with AND logic.

### TTL

`--ttl` adds a TTL column to the output table. Works with `--json`, `--yaml`, and `--html` output modes as well.

### Generate HTML output

`--html` writes a self-contained HTML page to STDOUT.

## Other features

- `--no-color` - disable ANSI color codes in terminal output.
- `--timeout <seconds>` - per-query timeout in seconds (float). Defaults to dnspython's built-in timeout.
- `--random <N>` - randomly select N servers from the active server list before querying.
- `--show-default` - print the built-in default DNS server list to STDOUT (add `--yaml` for YAML format).
- `--file <path>` - run multiple record/domain checks defined in a YAML file and output results as JSON.
- `--version` - print the current version and exit.
