A rust implementation of chickadee
This is under development. Please do not use.
This crate is not yet available on crates.io. You can install it with
cargo install --git https://github.com/chapinb/chickadee-rs
This is a command line application that extracts a collection of IP addresses from a source and enriches them with the ip-api.com API.
More APIs to come in the future.
- One IP:
chickadee --ips 1.1.1.1
- Select a few columns:
chickadee --ips 1.1.1.1 --columns query,city,country
- Multiple IPs:
chickadee --ips "1.1.1.1,2.2.2.2 3.3.3.3 4.4.4.4"
- Note: as long as they are delimited, they are likely to be detected and resolved.
- A plain text file containing IPs:
chickadee --ips firewall.log
- A gzip file containing IPs:
chickadee --ips cloudtrail.log.gz
After checking out this repository, run the following commands from the root:
- Install cargo-checkmate:
cargo install cargo-checkmate
- Pre-commit install:
pre-commit install --install-hooks
- Pre-commit checks:
pre-commit run --all
- Rust tests:
cargo checkmate
Open a merge request for each new feature, keeping the commits and overall diffs as small as possible. Only submit one new feature per merge request.
You can run tests with cargo test
. You may want to use cargo watch -x test
to continuously run tests as you work.
The CI will automatically run 2 tests, seen in detail in .github/workflows
:
cargo checkmate
cargo run -- ...
with 3 scenarios- A single IP, with a set of columns
- A file of IPs, with a set of columns
- A single IP with all columns
Run the ./tools/post-bom.sh
script from the same directory as this README with the args:
- API Endpoint, ie.
http://localhost:8081
- API Key
- UUID of the project in dependency track
- Install perf
- Install flamegraph,
cargo install flamegraph
- Build the binary in debug mode,
cargo build
- Run the tool with the args,
flamegraph -- target/debug/chickadee --ips test_data/test.ips.txt --columns query,lat,lon