feat: tunnel WireGuard vers le serveur familyd et mode propriétaire de l'appareil

- Firebase et le pare-feu local (trou noir, liste blanche par application, coupure cyclique locale) sont retirés
- Client WireGuard officiel (GoBackend) : tout le trafic passe par le serveur familyd, qui filtre
- Appairage par code ou lien familyd:// ; clé privée WireGuard et jeton chiffrés par l'Android Keystore
- Remontées par le tunnel : état, temps d'écran, applications installées, évènements (file persistante)
- Mode propriétaire (Device Owner) : VPN toujours actif avec blocage hors VPN, réglages verrouillés,
  garde-fou si le serveur ne répond plus pendant 15 min
- Plan de la refonte : docs/PLAN-wireguard.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R9CBCVP5oDu2sfoYPisNCQ
This commit is contained in:
tuxgyverandClaude Opus 5.5 committed 2026-10-25 14:44:18 +01:00
1 parent f382eeb4fe
commit 33ea4ff947
40 files changed
+1680 -1635

No files matched your search

@@ -13,7 +13,7 @@ import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import com.jttools.datacontrol.service.FirewallVpnService
import com.jttools.datacontrol.vpn.TunnelManager
/**
* Regroupe les autorisations système nécessaires (VPN, notifications, batterie) pour que
@@ -88,7 +88,7 @@ class SystemActions(private val activity: ComponentActivity) {
fun deactivateAdmin() = com.jttools.datacontrol.admin.AdminController.deactivate(activity)
fun isVpnPrepared(): Boolean = FirewallVpnService.isPrepared(activity)
fun isVpnPrepared(): Boolean = TunnelManager.isPrepared(activity)
fun requestVpnPermission(onResult: (Boolean) -> Unit) {
val intent = VpnService.prepare(activity)