rebreak-monorepo/ops/mdm/profiles/rebreak-iphone-protect.mobileconfig
chahinebrini b31066a04c feat(chat): native action sheet + Insta-style heart for DM messages
- ChatBubble: useActionSheet replaces custom Modal (native iOS popup, Android bottom sheet)
- DM mode (isDM prop): hides like-count, shows Insta-style heart badge under bubble when liked
- Group chat unchanged
- Cleanup: remove unused Modal/Platform imports, sheet styles, actionsOpen state
- deploy.sh: auto-detect ANDROID_HOME + auto-create local.properties for local Gradle
- NEXT_RELEASE.md: DM reactions release note
- Includes other staged work across binder-mac, marketing, ops/mdm, ios/
2026-05-30 09:14:32 +02:00

136 lines
6.2 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 Protect Profile (Sideload-Variante)
===================================================
Scope (2026-05-26, NEFilter-Pivot):
1. ReBreak nicht entfernbar → Restrictions.allowAppRemoval=false
2. Profil selbst nicht entfernbar → PayloadRemovalDisallowed=true
3. System-DNS auf dns.rebreak.org locken → com.apple.dnsSettings.managed (DoH, Belt+Suspenders)
4. Anti-Tampering → allowEraseContentAndSettings=false,
allowUIConfigurationProfileInstallation=false
Was dieses Profil NICHT mehr macht:
- KEIN com.apple.vpn.managed (VPN-Toggle entfällt — supervised-Pfad nutzt
stattdessen NEFilter, der hat keinen User-Toggle in Settings)
- KEIN MDM-Payload (kein com.apple.mdm) — dieses Profile wird AirDrop-
sideloaded, NICHT über MDM gepushed. Konsequenz: empirisch verifiziert
2026-05-24 (feedback_ios_mdm_sideloaded_non_removable_impossible) — pure
Restrictions-Profile ohne MDM-Payload können sideloaded non-removable
sein (Remove nur via cfgutil + USB).
Ablauf:
1. iPhone supervised mit Apple Configurator 2 (bringt Apple-Configurator-MDM-Profile mit)
2. Dieses `rebreak-iphone-protect.mobileconfig` via AirDrop ans iPhone
3. Settings → Profile installieren → Schutz aktiv, App nicht löschbar
4. Separater MDM-Push via NanoMDM für `mdmSupervised=true`
(siehe `rebreak-iphone-mdm-supervised.json`) — schaltet App in NEFilter-Pfad
Voraussetzungen:
- Supervised-Mode aktiv (sonst greifen allowAppRemoval / PayloadRemovalDisallowed NICHT)
- iOS 14+ (DNS-Settings-Payload erfordert iOS 14)
- ReBreak-App MIT ContentFilter-Extension installed BEVOR Profile-Install
Apple-Referenzen:
- Restrictions: https://developer.apple.com/documentation/devicemanagement/restrictions
- DNS Settings: https://developer.apple.com/documentation/devicemanagement/dnssettings
- Profile Format: https://developer.apple.com/documentation/devicemanagement/toplevel
Stand: 2026-05-26, Profile-Version 3 (NEFilter-Pivot — VPN-Payload entfernt)
-->
<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.20260526</string>
<key>PayloadUUID</key>
<string>A1B2C3D9-E5F6-4789-ABCD-EF1234567895</string>
<key>PayloadDisplayName</key>
<string>ReBreak Schutz</string>
<key>PayloadDescription</key>
<string>Schützt dich vor Glücksspiel-Rückfall: Rebreak nicht entfernbar, DNS-Filter auf dns.rebreak.org gelocked. Profil kann nicht selbst entfernt werden — Notfall-Entfernung via deinem Trustee oder Factory-Reset.</string>
<key>PayloadOrganization</key>
<string>ReBreak</string>
<key>PayloadRemovalDisallowed</key>
<true/>
<key>ConsentText</key>
<dict>
<key>default</key>
<string>Du installierst hiermit das ReBreak-Schutz-Profil. Dieses Profil bindet dich freiwillig an folgende Einschränkungen:
• Apps können während des Schutzes nicht über Long-Press gelöscht werden
• System-DNS-Anfragen laufen über dns.rebreak.org (verschlüsselt via DoH)
• Du kannst dieses Profil nicht selbst entfernen
Das ist gewollt. Der Schutz wirkt, weil er gegen deine impulsive Selbst-Override-Tendenz steht. Die Entfernung läuft über deinen Trustee oder deinen 7-Tage-Cooldown in der App.
Bei Verlust deines iPhones: das Profil verschwindet mit Factory-Reset, das ist normal.</string>
</dict>
<key>PayloadContent</key>
<array>
<!-- ===================================================================
1) RESTRICTIONS-PAYLOAD
Supervised-only Restrictions: blockt App-Removal + Erase-All
=================================================================== -->
<dict>
<key>PayloadType</key>
<string>com.apple.applicationaccess</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>org.rebreak.protection.iphone.restrictions</string>
<key>PayloadUUID</key>
<string>B3234568-ABCD-4F01-9345-67890ABCDEF7</string>
<key>PayloadDisplayName</key>
<string>ReBreak Restrictions</string>
<key>PayloadDescription</key>
<string>Verhindert App-Löschung und Factory-Reset.</string>
<key>allowAppRemoval</key>
<false/>
<key>allowEraseContentAndSettings</key>
<false/>
<key>allowUIConfigurationProfileInstallation</key>
<false/>
</dict>
<!-- ===================================================================
2) DNS-SETTINGS-PAYLOAD
Lockt System-DNS auf unseren DoH-Endpoint
Belt+Suspenders: greift auch wenn NEFilter aus irgendeinem Grund
nicht aktiv ist (Crash, Reinstall, etc.).
=================================================================== -->
<dict>
<key>PayloadType</key>
<string>com.apple.dnsSettings.managed</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>org.rebreak.protection.iphone.dns</string>
<key>PayloadUUID</key>
<string>C1234568-ABCD-4F01-9345-67890ABCDEF3</string>
<key>PayloadDisplayName</key>
<string>ReBreak DNS-Filter</string>
<key>PayloadDescription</key>
<string>Leitet alle DNS-Anfragen verschlüsselt über dns.rebreak.org. Glücksspiel-Domains werden blockiert.</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>