array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w') ); $pipes = array(); $cwd = '/tmp'; $env = array(); $proc = proc_open($g_nsupdate, $desc, $pipes, $cwd, $env); if (!is_resource($proc)) { Error("Unable to execute " . $g_nsupdate); } Debug("Sending this to nsupdate:\n" . $input); fwrite($pipes[0], $input); $output = stream_get_contents($pipes[1]); $errors = stream_get_contents($pipes[2]); fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); $ret = proc_close($proc); if ($ret > 0) { Error($g_nsupdate . " return code " . $ret . ": " . $errors); } return $output; } function dig($parameters) { global $g_dig; return shell_exec($g_dig . " " . $parameters); } function get_zone_data($zone) { global $g_domains; $zone_servers = $g_domains[$zone]; $data = dig("axfr " . $zone . " @" . $zone_servers["transfer_server"]); return $data; }