diff --git a/apps/rebreak-native/hooks/useWebContentDomains.ts b/apps/rebreak-native/hooks/useWebContentDomains.ts index 8f506bd..c4154b2 100644 --- a/apps/rebreak-native/hooks/useWebContentDomains.ts +++ b/apps/rebreak-native/hooks/useWebContentDomains.ts @@ -12,7 +12,7 @@ import { apiFetch } from '../lib/api'; * Filter nutzt (`Locale.current.region`). */ -const VIP_COUNTRIES = ['DE', 'GB', 'FR'] as const; +const VIP_COUNTRIES = ['DE', 'GB', 'FR', 'TN'] as const; export type VipCountry = (typeof VIP_COUNTRIES)[number]; /** Geräte-Region → unterstützter VIP-Ländercode. Fallback DE. */ diff --git a/apps/rebreak-native/modules/rebreak-protection/ios/gambling-domains.json b/apps/rebreak-native/modules/rebreak-protection/ios/gambling-domains.json index 53e7600..ee1991d 100644 --- a/apps/rebreak-native/modules/rebreak-protection/ios/gambling-domains.json +++ b/apps/rebreak-native/modules/rebreak-protection/ios/gambling-domains.json @@ -1,7 +1,7 @@ { "_comment": "STARTER — kuratierte Starter-Liste der bekanntesten Gambling-Domains pro Land. NICHT die Endliste. Die finale, traffic-rangbasierte Kuratierung (via Similarweb-Ranking / GGL-Whitelist für DE) ist noch offen. Apple-Hartlimit: max. 50 Domains pro Land — diese Grenze darf NIE überschritten werden. Schlüssel = ISO-3166-1-alpha-2-Ländercode (Locale.current.region). Werte = registrierbare Domains ohne Schema/Subdomain (ManagedSettings WebDomain matched die Domain inkl. Subdomains).", "_meta": { - "version": 2, + "version": 3, "updatedAt": "2026-05-22", "maxDomainsPerCountry": 50, "status": "starter" @@ -97,5 +97,12 @@ "lucien-barriere.com", "casinobarriere.com", "circus.be" + ], + "TN": [ + "mbet216.com", + "2xbet365.com", + "cesar365.com", + "icombet.com", + "unibet365.net" ] } diff --git a/backend/server/api/custom-domains/index.post.ts b/backend/server/api/custom-domains/index.post.ts index 81c18ed..3f26dc4 100644 --- a/backend/server/api/custom-domains/index.post.ts +++ b/backend/server/api/custom-domains/index.post.ts @@ -16,15 +16,13 @@ const DOMAIN_RE = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9]) // Kuratierte Layer-2-VIP-Listen pro Land (gambling-domains.json). const CURATED_LISTS = gamblingDomains as unknown as Record; -const VIP_COUNTRIES = ["DE", "GB", "FR"] as const; +const VIP_COUNTRIES = ["DE", "GB", "FR", "TN"] as const; // Die VIP-Layer-2-Liste fasst max. 50 Domains; 20 davon sind für die // kuratierte Liste reserviert (RESERVED_CURATED in webcontent-domains.get.ts) // → max. 30 eigene Custom-Domains. Wird die überschritten, greift der // VIP-Slot-Replace-Flow (Swap mit 24h-Cooldown). -// ⚠️ TEMP-TEST-WERT: 3 statt 30 — damit der Swap-Dialog schon ab der -// 4. Web-Domain triggert. NACH DEM TEST auf 30 ZURÜCKSETZEN! -const MAX_VIP_CUSTOM = 3; +const MAX_VIP_CUSTOM = 30; const SWAP_COOLDOWN_MS = 24 * 60 * 60 * 1000; /** Client-`country` (Geräte-Region) → unterstützter VIP-Ländercode. Fallback DE. */ diff --git a/backend/server/api/protection/webcontent-domains.get.ts b/backend/server/api/protection/webcontent-domains.get.ts index 10e94e4..c75274f 100644 --- a/backend/server/api/protection/webcontent-domains.get.ts +++ b/backend/server/api/protection/webcontent-domains.get.ts @@ -1,7 +1,7 @@ import gamblingDomains from "../../data/gambling-domains.json"; import { getWebCustomDomains } from "../../db/domains"; -const COUNTRY_KEYS = ["DE", "GB", "FR"] as const; +const COUNTRY_KEYS = ["DE", "GB", "FR", "TN"] as const; type CountryKey = (typeof COUNTRY_KEYS)[number]; const GLOBAL_LISTS = gamblingDomains as unknown as Record; diff --git a/backend/server/data/gambling-domains.json b/backend/server/data/gambling-domains.json index d8c83d5..de990d1 100644 --- a/backend/server/data/gambling-domains.json +++ b/backend/server/data/gambling-domains.json @@ -1,6 +1,6 @@ { "_meta": { - "version": 2, + "version": 3, "updatedAt": "2026-05-22", "maxDomainsPerCountry": 50, "status": "starter" @@ -96,5 +96,12 @@ "lucien-barriere.com", "casinobarriere.com", "circus.be" + ], + "TN": [ + "mbet216.com", + "2xbet365.com", + "cesar365.com", + "icombet.com", + "unibet365.net" ] }