ip-fetch
IP Geolocation data fetcher for Kodachi OS - Fetches and displays IP address information including geolocation, ISP, and network details
Version: 9.8.4 (build 319) | Size: 4.5MB | Author: Warith Al Maawali
License: Proprietary | Website: https://www.digi77.com
File Information
| Property | Value |
|---|---|
| Binary Name | ip-fetch |
| Version | 9.8.4 (build 319) |
| Build Date | REDACTED-BUILD-TIME |
| Rust Version | 1.82.0 |
| File Size | 4.5MB |
| Author | Warith Al Maawali |
| License | Proprietary |
| Category | Kodachi Binary |
| Description | IP Geolocation data fetcher for Kodachi OS - Fetches and displays IP address information including geolocation, ISP, and... |
| Git Commit | unknown |
| Metadata Generated | 2026-06-28T11:16:32Z |
| Binary Timestamp | Unknown |
| JSON Data | View Raw JSON |
SHA256 Checksum
03dcdf04bc4acffa65cfe9742124b624fe56c39e2b32fc27e69643ce4ed7c351
Features
| # | Feature |
|---|---|
| 1 | Multi-source IP geolocation with fallback support |
| 2 | IPv4 and IPv6 dual-stack support |
| 3 | Bulk IP lookup with optimized performance |
| 4 | Offline mode with cached data |
| 5 | VPN and proxy detection |
| 6 | ISP and organization information |
| 7 | Secure API communication with certificate pinning |
| 8 | Rate limiting and retry logic |
| 9 | Comprehensive error handling |
Security Features
| Feature | Description |
|---|---|
| Authentication | Not provided by cli-core (see online-auth) |
| Encryption | Not provided by cli-core |
| Input Validation | Argument parsing via clap; per-command validation is the consumer's responsibility |
| Rate Limiting | Not provided by cli-core |
System Requirements
| Requirement | Value |
|---|---|
| OS | Linux (Debian-based) |
| Privileges | root/sudo for system operations |
| Dependencies | OpenSSL, libcurl |
Global Options
| Flag | Description |
|---|---|
-h, --help |
Print help information |
-v, --version |
Print version information |
-n, --info |
Display detailed information |
-e, --examples |
Show usage examples |
--json |
Output in JSON format |
-o, --output-format <FORMAT> |
Force output format (text|json) |
--json-pretty |
Pretty-print JSON output with indentation |
--json-human |
Enhanced JSON output with improved formatting (like jq) |
--fields <FIELD_LIST> |
Select specific fields to include in output (comma-separated) |
--limit <NUMBER> |
Limit number of results returned |
--offset <NUMBER> |
Skip first N results (for pagination) |
-d, --work-dir <PATH> |
Working directory (defaults to auto-detected base directory) |
--port <PORT> |
Set custom port number (1024-65535) |
--log-level <LEVEL> |
Set log level (error|warn|info|debug) |
--verbose |
Enable verbose output |
--quiet |
Suppress non-essential output |
--no-color |
Disable colored output |
--config <FILE> |
Use custom configuration file |
--timeout <SECS> |
Set operation timeout in seconds (optional; no default applied) |
--retry <COUNT> |
Retry attempts (optional; no default applied) |
Commands
Basic Operations
plain-ip
Simple plain text IP address retrieval
Usage:
ip-fetch plain-ip [OPTIONS]
Cache Management
cache
Manage IP cache for improved performance
Usage:
ip-fetch cache [OPTIONS]
Comprehensive Testing
test-all
Complete test suites for all functionality
Usage:
ip-fetch test-all [OPTIONS]
DNS Operations
dns
DNS-based IP resolution and testing
Usage:
ip-fetch dns [OPTIONS]
Geolocation Services
geo
Geolocation API testing with various IPs
Usage:
ip-fetch geo [OPTIONS]
IP Operations
fetch
Fetch IP geolocation information (default command)
Usage:
ip-fetch fetch [OPTIONS]
Network Testing
tor
Test IP lookup through Tor SOCKS proxy
Usage:
ip-fetch tor [OPTIONS]
check-tor
Check if connection is using Tor network
Usage:
ip-fetch check-tor [OPTIONS]
Testing Operations
test-fallback
Test fallback mechanisms and multiple source verification
Usage:
ip-fetch test-fallback [OPTIONS]
verify-multi
Verify multiple sources
Usage:
ip-fetch verify-multi [OPTIONS]
random
Test random server selection functionality
Usage:
ip-fetch random [OPTIONS]
Operational Scenarios
Scenario-oriented workflows generated from the binary's built-in -e --json examples.
Scenario 1: Usage Examples
Common usage patterns for ip-fetch
Step 1: Get your current public IP
ip-fetch
Step 2: Show usage examples
ip-fetch --examples
Scenario 2: Basic Usage
Common IP lookup operations
Step 1: Get your current public IP from Kodachi Cloud (primary) with automatic fallback
ip-fetch
Step 2: Look up specific IP address
ip-fetch 8.8.8.8
Step 3: Look up multiple IP addresses
ip-fetch 8.8.8.8 1.1.1.1
Note
Automatically uses bulk mode for better performance
Step 4: Force refresh cache and get latest IP data
ip-fetch --refresh-cache
Scenario 3: Output Formats
Different ways to format output
Step 1: Get your current IP in JSON format from primary source with fallback
ip-fetch --json
Step 2: Formatted JSON with indentation
ip-fetch --json-pretty
Step 3: Enhanced human-readable JSON output with colors (like jq)
ip-fetch --json-human
Scenario 4: Basic IP Lookups
Own IP lookup and single IP lookup operations
Step 1: Explicitly request IPv4 from primary source with fallback
ip-fetch --ipv4
Step 2: Get your current public IPv6 from Kodachi Cloud (primary) with automatic fallback
ip-fetch --ipv6
Step 3: Get your IPv6 in JSON format from primary source with fallback
ip-fetch --ipv6 --json
Step 4: Get both IPv4 and IPv6 information from primary sources with fallback
ip-fetch --both
Step 5: Get both IPs in JSON format from primary sources with fallback
ip-fetch --both --json
Scenario 5: Fallback and Multi-Source Testing
Testing fallback mechanisms and multiple source verification
Step 1: Test IPv4 JSON sources with automatic fallback
ip-fetch test-fallback --ipv4 json
Step 2: Test IPv6 JSON sources with automatic fallback
ip-fetch test-fallback --ipv6 json --json
Step 3: Test IPv4 plain text sources with automatic fallback
ip-fetch test-fallback --ipv4 plain
Step 4: Test IPv6 plain text sources with automatic fallback
ip-fetch test-fallback --ipv6 plain
Step 5: Test ALL IPv4 sources to verify consistency
ip-fetch verify-multi --ipv4
Step 6: Test ALL IPv6 sources with JSON output
ip-fetch verify-multi --ipv6 --json
Scenario 6: Tor Detection
Check if your connection is using Tor
Step 1: Check if connection is using Tor and show IP
ip-fetch check-tor
Step 2: Get just the IP address
ip-fetch check-tor --ip-only
Step 3: Get just the Tor status
ip-fetch check-tor --status-only
Step 4: Get Tor status and IP in JSON format
ip-fetch check-tor --json
Step 5: Pretty-printed JSON output
ip-fetch check-tor --json-pretty
Step 6: Colorized JSON output (like jq)
ip-fetch check-tor --json-human
Scenario 7: Tor Network Testing
Testing IP lookup through Tor SOCKS proxy
Step 1: Get IPv4 through Tor SOCKS5 proxy from ONE random source
ip-fetch tor --ipv4
Step 2: Test ALL IPv4 sources through Tor SOCKS5 proxy
ip-fetch tor --ipv4 all
Step 3: Test ALL IPv6 sources through Tor SOCKS5 proxy with JSON output
ip-fetch tor --ipv6 all --json
Step 4: Get IPv4 JSON response through Tor SOCKS5 proxy
ip-fetch tor --ipv4 --json
Step 5: Default IPv4 source via Tor (auto-detects local SOCKS5: 9050, 9150, or Kodachi pool 10000-10019)
ip-fetch tor
Note
Pass --socks-port to disable auto-detect.
Step 6: Force the Tor Browser bundle SOCKS port (9150) — one random IPv4 source
ip-fetch tor --ipv4 --socks-port 9150
Step 7: Force a Kodachi multi-instance pool port (10000) — query ALL IPv4 sources
ip-fetch tor --ipv4 all --socks-port 10000
Scenario 8: DNS Resolution Testing
DNS-based IP resolution and testing
Step 1: Test DNS-based IPv4 resolution using ONE random DNS query
ip-fetch dns --ipv4
Step 2: Test DNS-based IPv6 resolution using ONE random DNS query
ip-fetch dns --ipv6
Step 3: Test specific DNS query by index
ip-fetch dns --ipv4 --query-index 0
Step 4: Test ALL available IPv6 DNS queries with JSON output
ip-fetch dns --ipv6 --query-index all --json
Scenario 9: Comprehensive Testing Suite
Complete test suites for all functionality
Step 1: Complete test suite results
ip-fetch test-all
Step 2: Complete test suite including Tor tests
ip-fetch test-all --include-tor
Step 3: Complete test suite including Tor tests, forced to Kodachi pool port 10000 (skip auto-detect)
ip-fetch test-all --include-tor --socks-port 10000 --json
Step 4: JSON formatted complete test results
ip-fetch test-all --json
Scenario 10: Random Source Testing
Test random IP sources for reliability
Step 1: Test ONE random IPv4 plain text source
ip-fetch random --type plain --ipv4
Step 2: Test ONE random IPv4 JSON source with JSON output
ip-fetch random --type json --ipv4 --json
Step 3: Test ONE random DNS IPv4 query
ip-fetch random --type dns --ipv4
Step 4: Test ONE random DNS IPv6 query with JSON output
ip-fetch random --type dns --ipv6 --json
Scenario 11: Geolocation API Testing
Test geolocation APIs with various IPs
Step 1: Test geo APIs with current IP
ip-fetch geo
Step 2: Test geo APIs with specific IP
ip-fetch geo --ip 8.8.8.8
Step 3: Show raw JSON responses
ip-fetch geo --verbose
Step 4: Geo data for IP in JSON
ip-fetch geo --ip 1.1.1.1 --json
Scenario 12: Plain Text IP Retrieval
Get IP addresses in plain text format
Step 1: Get IPv4 plain text
ip-fetch plain-ip --ipv4
Step 2: Get IPv6 plain text
ip-fetch plain-ip --ipv6
Step 3: Use specific server by index
ip-fetch plain-ip --ipv4 --server-index 5
Scenario 13: Bulk Operations
Efficient bulk IP lookups
Step 1: Efficient bulk lookup of multiple IPs
ip-fetch --bulk 1.1.1.1 9.9.9.9 8.8.8.8
Step 2: Bulk lookup with JSON output
ip-fetch --bulk 1.1.1.1 9.9.9.9 --json
Step 3: Disable bulk mode for individual lookups
ip-fetch --nobulk 1.1.1.1 9.9.9.9
Step 4: Bulk IPv4-only lookups
ip-fetch --bulk --ipv4 1.1.1.1 9.9.9.9
Step 5: Bulk lookup without saving to history
ip-fetch --bulk --nohistory 1.1.1.1 9.9.9.9 8.8.8.8
Scenario 14: Cache Management
Manage the IP cache for improved performance
Step 1: Show cache statistics and status
ip-fetch cache status
Step 2: List all cached IP addresses
ip-fetch cache list
Step 3: Clear the entire cache
ip-fetch cache clear
Note
Pass an IP to clear only that entry, e.g. 'ip-fetch cache clear 8.8.8.8'
Step 4: Clear a specific IP from the cache
ip-fetch cache clear 8.8.8.8
Step 5: Set the default cache TTL
ip-fetch cache set-ttl 24h
Note
Accepts duration strings such as '24h', '7d' or '1w'
Scenario 15: Custom Server Options
Use custom servers for IP lookup
Step 1: Use custom server for IP lookup
ip-fetch --server https://api.ipify.org
Step 2: Custom server with JSON output
ip-fetch --server https://api.ipify.org --json
Step 3: Custom IPv4 server
ip-fetch --server https://ipv4.icanhazip.com --ipv4
Step 4: Custom IPv6 server
ip-fetch --server https://ipv6.icanhazip.com --ipv6
Scenario 16: Output Formatting Options
Various output formatting options
Step 1: Bulk lookup in JSON
ip-fetch --bulk 1.1.1.1 9.9.9.9 --json
Step 2: Lookup without saving to history
ip-fetch --nohistory 8.8.8.8
Scenario 17: No History Operations
Operations without saving to history
Step 1: Get own IP without saving to history
ip-fetch --nohistory
Step 2: IPv6 multi-source verification without history
ip-fetch --nohistory verify-multi --ipv6 --json
Step 3: DNS resolution without saving to history
ip-fetch --nohistory dns --ipv4
Step 4: Tor test (ONE random source) without saving results to history
ip-fetch --nohistory tor --ipv4
Step 5: Tor test (ALL sources) without saving results to history
ip-fetch --nohistory tor --ipv4 all
Step 6: Random IP test without history in JSON
ip-fetch random --type plain --ipv4 --nohistory --json
Step 7: Geo lookup without saving to history
ip-fetch --nohistory geo --ip 1.1.1.1
Step 8: Comprehensive test without saving any results to history
ip-fetch --nohistory test-all --json
Environment Variables
| Variable | Description | Default | Values |
|---|---|---|---|
RUST_LOG |
Set logging level | info | error|warn|info|debug|trace |
NO_COLOR |
Disable all colored output when set | unset | 1|true|yes (any value disables color) |
Exit Codes
| Code | Description |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Invalid arguments |
| 3 | Permission denied |
| 4 | Network error |
| 5 | File not found |