Chat over dns!
You can send messages to other people in a place where everything is blocked except for dns. The app sends all the traffic over dns. Client sends the message in domain labels. Server responds back with records.
Binds to 0.0.0.0:53 (requires privileges to bind the well-known port). Use a high
port for local testing:
cargo run -p server -- --port 5354
The server writes structured JSON to stdout. Export them for lnav with:
journalctl -u igloo-server --output=json | lnav
# or
journalctl -u igloo-server --output=json -f | lnav
journalctl -u igloo-server --output=json > server.log
lnav server.logQuery logs directly from journald, or fetch from a remote server first:
# read from journald (default)
bin/logs.py
bin/logs.py latency
# fetch from remote, then query locally
ssh -i ~/.ssh/my_key user@server 'journalctl -u igloo-server --output=json' > /tmp/igloo.log
bin/logs.py /tmp/igloo.log
bin/logs.py /tmp/igloo.log latencyAvailable queries: errors latency throughput drops by_kind
top_talkers top_errors
Client is vibe coded until I get time to do it.
See build/ directory for build instructions.
cargo run -p igloo
# debug mode connects to local igloo server.
# shows DebugPanel
cargo run -p igloo -- --debug
cargo run -p client-dioxus
You can install the Dioxus CLI and use hot reload:
cargo install dioxus-cli
dx serve --package client-dioxus --platform desktop
https://dioxuslabs.com/learn/0.7/tutorial/bundle/
Sends a signup request to a resolver. Defaults to --domain limoo.lol and --resolver 1.1.1.1:53:
cargo run -p client
cargo run -p client -- --domain limoo.lol --resolver 127.0.0.1:5353
The DNS server the app uses is configurable from the Settings screen. There is also an option to detect your system's DNS resolver and use that.
Follow https://dioxuslabs.com/learn/0.7/guides/platforms/mobile. Note the version in ndk.
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
export ANDROID_HOME="$HOME/Library/Android/sdk"
export NDK_HOME="$ANDROID_HOME/ndk/30.0.14904198"
export PATH="$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools"