MDM-VPN-Pivot (Phase F.2 done): - ops/mdm/profiles/rebreak-iphone-protection.mobileconfig auf v5 mit com.apple.vpn.managed Payload + OnDemandUserOverrideDisabled. iPhone-User kann ReBreak-VPN-Profile nicht entfernen und "Bedarf verbinden"-Toggle ist disabled. allowEnablingRestrictions empirisch widerlegt für FC-Toggle- Lock — out. - DEV-removable Variante als Test-Profile dazu. - Bootstrap-Tool (rebreak-supervise.sh) + Supervision-Identity-Setup-Doc. - PHASES.md updated mit empirischen Befunden. App-side MDM-Detect (Pfad-a Banner-Logic): - modules/rebreak-protection: getDeviceState() returnt mdmManaged via Heuristik NETunnelProviderManager.count > 1 (App selbst kann nur einen eigenen erstellen, MDM-Push fügt einen zweiten hinzu). - DeviceLayers.mdmManaged?: boolean Type. - blocker.tsx: lockedIn-Bedingung erweitert um mdmManaged. Bei MDM-managed iPhones wird der App-Lock-Card (FC-Authorization-Toggle UI) ausgeblendet weil der per-App FC-Toggle nicht lockbar ist und durch den MDM-VPN-Layer redundant. Layer-2-Country-Curated-Pivot: - backend: vip-swap.post.ts raus, suggest.post.ts rein. Curated-domains durch admin (separate Tabelle/Pfad), getrennt von User-Custom-Domains. - Admin-APIs für curated-domain Pflege (index.get + [id].patch). - seed-country-blocklists Script für initiale Curated-Domain-Liste. - protection/webcontent-domains.get refactored für Country-Curated-Pfad. - Migration drop_vip_swap_fields.sql + schema.prisma adjusted. - docs/concepts/layer2-country-pivot.md mit Architektur + Decision-Trail. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
90 lines
3.4 KiB
XML
90 lines
3.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<!--
|
|
ReBreak iPhone Protection Profile — DEV-REMOVABLE
|
|
=================================================
|
|
WARNUNG: Dieses Profil ist NUR FÜR TESTS gedacht.
|
|
Im Gegensatz zur Produktions-Variante (rebreak-iphone-protection.mobileconfig):
|
|
- PayloadRemovalDisallowed = false → User kann via Settings entfernen
|
|
- allowEraseContentAndSettings = true → User kann iPhone notfalls wipen
|
|
Damit du nach dem Test einfach wieder los wirst.
|
|
|
|
Alle anderen Restrictions sind identisch — perfekt um zu prüfen ob
|
|
allowAppRemoval/VPN-Lock/DNS-Lock greifen, ohne dich in die Falle zu sperren.
|
|
|
|
Andere PayloadIdentifier + UUIDs als die Produktions-Variante,
|
|
damit beide parallel koexistieren können.
|
|
-->
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>PayloadType</key>
|
|
<string>Configuration</string>
|
|
<key>PayloadVersion</key>
|
|
<integer>1</integer>
|
|
<key>PayloadIdentifier</key>
|
|
<string>org.rebreak.protection.iphone.DEV.20260524</string>
|
|
<key>PayloadUUID</key>
|
|
<string>D1B2C3D4-E5F6-4789-ABCD-EF1234567899</string>
|
|
<key>PayloadDisplayName</key>
|
|
<string>ReBreak Schutz (DEV-Test)</string>
|
|
<key>PayloadDescription</key>
|
|
<string>TEST-Profil — via Settings entfernbar. NICHT für Produktion.</string>
|
|
<key>PayloadOrganization</key>
|
|
<string>ReBreak DEV</string>
|
|
<key>PayloadRemovalDisallowed</key>
|
|
<false/>
|
|
|
|
<key>PayloadContent</key>
|
|
<array>
|
|
|
|
<dict>
|
|
<key>PayloadType</key>
|
|
<string>com.apple.applicationaccess</string>
|
|
<key>PayloadVersion</key>
|
|
<integer>1</integer>
|
|
<key>PayloadIdentifier</key>
|
|
<string>org.rebreak.protection.iphone.DEV.restrictions</string>
|
|
<key>PayloadUUID</key>
|
|
<string>D2234567-ABCD-4F01-9345-67890ABCDED1</string>
|
|
<key>PayloadDisplayName</key>
|
|
<string>ReBreak Restrictions (DEV)</string>
|
|
|
|
<!-- Die Restrictions die wir testen wollen -->
|
|
<key>allowAppRemoval</key>
|
|
<false/>
|
|
<key>allowUIConfigurationProfileInstallation</key>
|
|
<false/>
|
|
|
|
<!-- VPN-Restrictions raus (Scope-Pivot 2026-05-24):
|
|
allowVPNCreation/Modification blockt auch unsere eigene App via NEVPNManager.
|
|
Schutz läuft jetzt über DNS-Settings-Payload, VPN bleibt App-managed. -->
|
|
|
|
<!-- DEV: bewusst NICHT gesetzt damit du raus kannst falls was schief geht -->
|
|
<!-- allowEraseContentAndSettings bleibt default true -->
|
|
</dict>
|
|
|
|
<dict>
|
|
<key>PayloadType</key>
|
|
<string>com.apple.dnsSettings.managed</string>
|
|
<key>PayloadVersion</key>
|
|
<integer>1</integer>
|
|
<key>PayloadIdentifier</key>
|
|
<string>org.rebreak.protection.iphone.DEV.dns</string>
|
|
<key>PayloadUUID</key>
|
|
<string>D3234567-ABCD-4F01-9345-67890ABCDED2</string>
|
|
<key>PayloadDisplayName</key>
|
|
<string>ReBreak DNS-Filter (DEV)</string>
|
|
|
|
<key>DNSSettings</key>
|
|
<dict>
|
|
<key>DNSProtocol</key>
|
|
<string>HTTPS</string>
|
|
<key>ServerURL</key>
|
|
<string>https://dns.rebreak.org/dns-query</string>
|
|
</dict>
|
|
</dict>
|
|
|
|
</array>
|
|
</dict>
|
|
</plist>
|