Tags: Ali7Zeynalli/S-RCS
Tags
Release v1.3.4: Fix GPO page hanging on loading spinner
The Group Policy page would hang on the loading spinner indefinitely on
many domains. Root cause analysis identified four issues, all fixed in
api/gpo.php. Pure bug fix, fully backward-compatible.
Root causes (all fixed)
1. Binary AD attributes broke json_encode(). gPCMachineExtensionNames
and gPCUserExtensionNames are stored as binary octet strings in
Active Directory. PHP's json_encode() returns false on invalid
UTF-8, producing an empty response body. Added
JSON_INVALID_UTF8_SUBSTITUTE | JSON_UNESCAPED_UNICODE flags.
2. ob_clean() without ob_start() leaked a PHP notice into the JSON
response. The notice prefixed the JSON, frontend JSON.parse() failed
silently inside the catch handler. Replaced with proper
ob_start() / ob_end_clean() pattern matching the rest of the API
endpoints.
3. No display_errors suppression. Set ini_set('display_errors', '0') +
error_reporting(E_ALL) so errors still log via error_log() but never
leak into the JSON response.
4. No LDAP timeouts. ldap_search() could hang past PHP's 30s
max_execution_time when the LDAP server was slow or unreachable.
Added LDAP_OPT_NETWORK_TIMEOUT=10 and LDAP_OPT_TIMELIMIT=20.
Performance impact
Small domains (< 100 GPOs) 1-3s (was: hung forever)
Large domains (1000+ GPOs) 5-15s with proper error feedback
Very large (5000+ OUs) may approach 20s, future cache release
Documentation and notification
- VERSION bumped 1.3.3 -> 1.3.4
- CHANGELOG.md : v1.3.4 entry with root-cause breakdown
- CHANGELOG_AZ.md : back-filled from v1.3.0 to v1.3.4 (was 4 versions
behind — v1.3.1, v1.3.2, v1.3.3, v1.3.4 all translated to Azerbaijani)
- README.md / README_AZ.md : "What's New in v1.3.4" callout
- notifications.json : new entry id=6, priority=3 (Critical), category
security_alerts. Appears in the in-app notifications page within the
10-minute cache TTL after pushed to GitHub.
- Footer UPDATE badge will detect the version automatically (24h cycle)
Affected files
www/api/gpo.php single endpoint, frontend untouched
www/VERSION
CHANGELOG.md
CHANGELOG_AZ.md
README.md
README_AZ.md
notifications.json