resolverx 0.1.0

A fast, async DNS + RDAP resolver with bulk mode, caching, and JSON/NDJSON or table output.
# resolverx ๐Ÿง โšก

[![Build](https://github.com/evozeus/resolverx/actions/workflows/ci.yml/badge.svg)](https://github.com/evozeus/resolverx/actions)
[![Crates.io](https://img.shields.io/crates/v/resolverx.svg)](https://crates.io/crates/resolverx)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Rust](https://img.shields.io/badge/rust-โ‰ฅ1.75-orange.svg)](https://www.rust-lang.org)

A fast, async DNS + RDAP resolver written in Rust โ€” supporting **single** and **bulk** queries with output in **table**, **JSON**, or **NDJSON** formats.

---

## ๐Ÿ”ง Installation

### From crates.io (once published)
```bash
cargo install resolverx
```

### From source (current dev build)
```bash
git clone https://github.com/evozeus/resolverx.git
cd resolverx
cargo build --release
./target/release/resolverx --help
```

---

## ๐Ÿš€ Usage

### Single query
```bash
resolverx query example.com
resolverx query example.com --format json
resolverx query example.com --rdap
resolverx query 1.1.1.1 --rdap
```

### Bulk mode
Create a file of targets:
```bash
printf "example.com\ncloudflare.com\n1.1.1.1\nAS13335\n" > targets.txt
```
Run in bulk:
```bash
resolverx bulk targets.txt --rdap --format ndjson -v
```

---

## ๐Ÿงฉ Features

- โšก **Asynchronous DNS resolution** (A, AAAA, MX, NS, TXT, CNAME)
- ๐ŸŒ **Integrated RDAP client** with caching
- ๐Ÿง  **Automatic type detection** (domain, IP, ASN)
- ๐Ÿ“ฆ **Multi-target bulk mode** with concurrency control
- ๐Ÿงพ **Multiple output formats:** table / JSON / NDJSON
- ๐Ÿ” **Verbose diagnostics** for tracing queries
- ๐Ÿงฐ **CI-ready project:** `fmt`, `clippy`, `build`, and smoke tests on every push

---

## ๐Ÿง  Example Outputs

### Table
```bash
resolverx query example.com
```
```
resolverx โ€” DNS results
Name: example.com
Elapsed: 89 ms
A: 23.215.0.138, 23.220.75.245, 23.192.228.84, 23.192.228.80, 23.215.0.136
AAAA: 2600:1408:ec00:36::1736:7f24, 2600:1406:bc00:53::b81e:94c8, ...
```

### JSON
```bash
resolverx query example.com --rdap --format json
```
```json
{
  "name": "example.com",
  "a": ["23.215.0.138", "23.215.0.136"],
  "ns": ["a.iana-servers.net.", "b.iana-servers.net."],
  "rdap": {
    "handle": "2336799_DOMAIN_COM-VRSN",
    "events": [
      {"eventAction": "registration", "eventDate": "1995-08-14T04:00:00Z"}
    ]
  }
}
```

---

## ๐Ÿง‘โ€๐Ÿ’ป Development

```bash
cargo fmt
cargo clippy -- -D warnings
cargo run -- query example.com
cargo test
```

### CI
ResolverX uses GitHub Actions (`.github/workflows/ci.yml`) to:
- enforce formatting and linting
- build and run smoke tests on push/PR
- prepare for automated releases

---

## ๐Ÿ“ฆ Publishing (maintainers only)

```bash
cargo publish --dry-run
git tag v0.1.0
git push origin v0.1.0
```

---

## ๐Ÿงญ Roadmap

**v2.0 ideas**
- Recursive / authoritative path tracing  
- DNSSEC validation indicators  
- DNS + HTTP timing correlation  
- Interactive TUI mode (with `ratatui`)

---

## ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Contributing

Contributions, issues, and feature requests are welcome!  
Open a PR or discussion at **[github.com/evozeus/resolverx](https://github.com/evozeus/resolverx)**.

---

## ๐Ÿ“œ License

MIT ยฉ 2025 Evozeus