$properties) { if (!IsAuthorizedToRead($domain)) continue; $result[$domain] = [ 'domain' => $domain, 'update_server' => $properties['update_server'], 'transfer_server' => $properties['transfer_server'] ]; if (isset($properties['in_transfer'])) $result[$domain]['in_transfer'] = $properties['in_transfer']; if (isset($properties['maintenance_note'])) $result[$domain]['maintenance_note'] = $properties['maintenance_note']; if (isset($properties['read_only'])) $result[$domain]['read_only'] = $properties['read_only']; } return $result; } public static function IsEditable($domain) { global $g_domains; if (!array_key_exists($domain, $g_domains)) die("No such zone: $domain"); $domain_info = $g_domains[$domain]; if (array_key_exists('read_only', $domain_info) && $domain_info['read_only'] === true) return false; return true; } public static function GetZoneForFQDN($fqdn) { global $g_domains; do { if (!array_key_exists($fqdn, $g_domains)) { $fqdn= substr($fqdn, strpos($fqdn, '.') + 1); continue; } return $fqdn; } while (psf_string_contains($fqdn, '.')); return NULL; } public static function HasPTRZones() { global $g_domains; foreach ($g_domains as $key => $info) { if (psf_string_endsWith($key, ".in-addr.arpa")) return true; } return false; } }