Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

igloo

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.

Server

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

Logs

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.log

Query 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 latency

Available queries: errors latency throughput drops by_kind top_talkers top_errors

Client

Client is vibe coded until I get time to do it.

See build/ directory for build instructions.

Desktop client

cargo run -p igloo

# debug mode connects to local igloo server.
# shows DebugPanel
cargo run -p igloo -- --debug

macOS

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

Linux prerequisites

https://dioxuslabs.com/learn/0.7/tutorial/bundle/

CLI client

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

Settings

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.

Android

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"

About

chat with friends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages