@@ -7,44 +7,24 @@ function safeJsonParse(str, fallback) {
77 try { return JSON . parse ( str || '[]' ) ; } catch { return fallback ; }
88}
99
10- // Cache for KV data
11- const kvCache = {
12- data : null ,
13- timestamp : 0 ,
14- ttl : 300000 // Cache TTL in milliseconds (5 minutes)
15- } ;
16-
17- // Read maintenance and banner states from KV with caching
10+ // Read maintenance and banner states from KV
1811async function getMaintenanceState ( env , host ) {
19- const now = Date . now ( ) ;
20-
21- // Return cached data if valid
22- if ( kvCache . data && ( now - kvCache . timestamp < kvCache . ttl ) ) {
23- return kvCache . data ;
24- }
25-
26- // Fetch fresh data from KV
2712 const globalMaintenance = await env . MAINTENANCE_KV . get ( 'MAINTENANCE_GLOBAL' ) ;
2813 const subdomainsMaintenanceRaw = await env . MAINTENANCE_KV . get ( 'MAINTENANCE_SUBDOMAINS' ) ;
14+ const subdomainsMaintenance = safeJsonParse ( subdomainsMaintenanceRaw , [ ] ) ;
2915 const bannerSubdomainsRaw = await env . MAINTENANCE_KV . get ( 'BANNER_SUBDOMAINS' ) ;
3016 const bannerMessage = await env . MAINTENANCE_KV . get ( 'BANNER_MESSAGE' ) ;
31- const is4gMode = await env . MAINTENANCE_KV . get ( 'wan-is-4g' ) ;
32-
33- const subdomainsMaintenance = safeJsonParse ( subdomainsMaintenanceRaw , [ ] ) ;
3417 const bannerSubdomains = safeJsonParse ( bannerSubdomainsRaw , [ ] ) ;
35-
36- // Update cache
37- kvCache . data = {
18+ const is4gMode = await env . MAINTENANCE_KV . get ( 'wan-is-4g' ) ;
19+
20+ return {
3821 isGlobalMaintenance : globalMaintenance === 'true' ,
3922 subdomainsMaintenance,
4023 isSubdomainMaintenance : subdomainsMaintenance . includes ( host ) ,
4124 bannerSubdomains,
4225 bannerMessage : typeof bannerMessage === 'string' ? bannerMessage : '' ,
4326 is4gMode : is4gMode === 'true'
4427 } ;
45- kvCache . timestamp = now ;
46-
47- return kvCache . data ;
4828}
4929
5030// Inject banner into HTML response
0 commit comments