How celzero/rethink-app works
Rethink DNS + Firewall + VPN is an Android network-protection client: users choose DNS, firewall, or VPN/proxy behavior, then app traffic is routed, filtered, and monitored. The README documents multiple DNS protocols, per-app split tunneling, WireGuard and proxy transports, and activity-based firewall rules. Source excerpts support the VPN service, DNS transport selection, and firewall decision components; broader endpoint configuration and monitoring capabilities are represented at their exact enclosing directories because their implementation was not sampled.
Main entry points: TunFlowManager.kt Tunnel flow · TunFirewallManager.kt Flow firewall · TunDnsManager.kt DNS routing · BraveVPNService.kt VPN service
Components 22
App interface
- Home and settings
app/src/main/java/com/celzero/bravedns/ui/HomeScreenActivity.kt - Logs and statistics
app/src/main/java/com/celzero/bravedns/ui
Traffic protection
- VPN service
app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt - Tunnel flow
app/src/main/java/com/celzero/bravedns/service/TunFlowManager.kt - Flow firewall
app/src/main/java/com/celzero/bravedns/service/TunFirewallManager.kt - DNS routing
app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt - WireGuard tunnels
app/src/main/java/com/celzero/bravedns/service/WireguardManager.kt - Proxy transports
app/src/main/java/com/celzero/bravedns/service/ProxyManager.kt - Rethink Proxy Network
app/src/main/java/com/celzero/bravedns/rpnproxy
Rules and transports
- App firewall rules
app/src/main/java/com/celzero/bravedns/service/FirewallManager.kt - Domain rules
app/src/main/java/com/celzero/bravedns/service/DomainRulesManager.kt - IP rules
app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt - DNS transports
app/src/main/java/com/celzero/bravedns/database - DNS blocklists
app/src/main/java/com/celzero/bravedns/service/RethinkBlocklistManager.kt - Foreground tracking
app/src/main/java/com/celzero/bravedns/util/BackgroundAccessibilityService.kt
Network monitoring
- Connection monitor
app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt - DNS query logs
app/src/main/java/com/celzero/bravedns/service/DnsLogTracker.kt - Network logs
app/src/main/java/com/celzero/bravedns/service/NetLogTracker.kt
Persistent state
- App and rules store
app/src/main/java/com/celzero/bravedns/database/AppDatabase.kt - Traffic log store
app/src/main/java/com/celzero/bravedns/database/LogDatabase.kt
Other components
- Android user
- Network
Connections 26
- Android user → Home and settings: configures modes
- Home and settings → VPN service: starts protection
- VPN service → Tunnel flow: captures traffic
- Tunnel flow → Flow firewall: evaluates flows
- Flow firewall → App firewall rules: checks app rules
- Flow firewall → IP rules: checks IP rules
- Flow firewall → Domain rules: checks domain rules
- Flow firewall → Network: allows or blocks
- Foreground tracking → App firewall rules: updates foreground state
- Tunnel flow → DNS routing: routes DNS queries
- DNS routing → DNS transports: selects transport
- DNS routing → App firewall rules: checks connection policy
- DNS routing → DNS blocklists: applies DNS policy
- Tunnel flow → WireGuard tunnels: uses configured tunnels
- Tunnel flow → Proxy transports: uses proxy routes
- Proxy transports → Rethink Proxy Network: dispatches RPN traffic
- VPN service → Connection monitor: starts tracking
- VPN service → Network logs: starts tracking
- DNS routing → DNS query logs: tracks query decisions
- Connection monitor → Traffic log store: persists connections
- Network logs → Traffic log store: persists network events
- DNS query logs → Traffic log store: persists DNS events
- App firewall rules → App and rules store: reads and writes rules
- DNS transports → App and rules store: stores endpoints
- DNS blocklists → App and rules store: stores list settings
- Logs and statistics → Traffic log store: reads activity