Files

1.4 KiB

IP Filter

A set of crates for the construction and use of optimized IP filtering mechanisms.

Setup

  1. Create private/secret.sh containing export IP2LOCATION_TOKEN=''
  2. Run ./private/dl.sh DB1LITECSV DB1LITECSVIPV6
  3. List available countries using cargo run -- -i private/DB1-LITE-V4.CSV list
  4. Generate a filter using cargo run -- -i ./private/DB1-LITE-V4.CSV merge -c CA -o ./private/filter4.bin
  5. Generate a filter using cargo run -- -i ./private/DB1-LITE-V6.CSV merge -c CA -6 -o ./private/filter6.bin
  6. Verify IP ranges using cargo run -- -i ./private/filter4.bin load or cargo run -- -i ./private/filter6.bin load -6
Round trip checks
  1. diff <(cargo run -- -i ./private/DB1-LITE-V4.CSV merge -c CA) <(cargo run -- -i ./private/filter4.bin load)
  2. diff <(cargo run -- -i ./private/DB1-LITE-V6.CSV merge -c CA -6) <(cargo run -- -i ./private/filter6.bin load -6)

Various builds

  • build: cargo hack --feature-powerset build
  • clippy: cargo hack --feature-powerset clippy -- -D warnings
  • test: cargo hack --feature-powerset test
  • test old: cargo +1.85 hack --feature-powerset test
  • miri: cargo +nightly hack --feature-powerset miri test
  • fmt: cargo fmt --check
  • docs: RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features
  • semver: cargo semver-checks --all-features
  • publish: cargo publish --dry-run -p ipfilter