print.php 885 B

123456789101112131415161718192021222324252627
  1. <?php declare(strict_types=1);
  2. nsCheckZonePossession($_POST['zone']);
  3. $data['zone_name'] = $_POST['zone'];
  4. rateLimit();
  5. $zone_content = file_get_contents(CONF['ns']['knot_zones_path'] . '/' . $data['zone_name'] . 'zone');
  6. if ($zone_content === false)
  7. output(500, 'Unable to read zone file.');
  8. if ($_POST['print'] === 'raw')
  9. $data['zone-raw'] = $zone_content;
  10. elseif ($_POST['print'] === 'table')
  11. $data['zone-table'] = parseZoneFile($zone_content, NS_ALLOWED_TYPES);
  12. elseif ($_POST['print'] === 'ds') {
  13. $found = preg_match('/^' . preg_quote($data['zone_name'], '/') . '[\t ]+0[\t ]+CDS[\t ]+(?<tag>[0-9]{1,5})[\t ]+(?<algo>[0-9]{1,2})[\t ]+(?<digest_type>[0-9])[\t ]+(?<digest>[0-9A-F]{64})$/Dm', $zone_content, $data['zone-ds']);
  14. if ($found !== 1)
  15. output(500, 'Unable to get public key record from zone file.');
  16. }
  17. else
  18. output(403, 'Wrong <code>print</code> method.');