<?php
/**
 * Observium
 *
 * /opt/observium/includes/polling/applications/knot_resolver.inc.php
 *
 * @package        observium
 *
 */
if (!empty($agent_data['app']['knot_resolver'])) {
    $app_id = discover_app($device, 'knot_resolver');

    $kres = [];
    foreach (explode("\n", trim($agent_data['app']['knot_resolver'])) as $line) {

        if (strpos($line, '=') === false) { continue; }
        [$key, $value] = explode("=", $line, 2);
        $kres[$key] = $value;
    }

    $g = function ($k) use ($kres) {
        return (isset($kres[$k]) && is_numeric($kres[$k])) ? $kres[$k] : 0;
    };

    $data = [
      'reqTotal'    => $g('request.total'),
      'reqUdp'      => $g('request.udp'),
      'reqTcp'      => $g('request.tcp'),
      'reqDot'      => $g('request.dot'),
      'reqDoh'      => $g('request.doh'),
      'reqDoq'      => $g('request.doq'),
      'reqXdp'      => $g('request.xdp'),
      'reqTotal4'   => $g('request.total4'),
      'reqTotal6'   => $g('request.total6'),
      'reqInternal' => $g('request.internal'),
      'ansTotal'    => $g('answer.total'),
      'ansCached'   => $g('answer.cached'),
      'ansStale'    => $g('answer.stale'),
      'ansNoerror'  => $g('answer.noerror'),
      'ansNodata'   => $g('answer.nodata'),
      'ansNxdomain' => $g('answer.nxdomain'),
      'ansServfail' => $g('answer.servfail'),
      'ansSumMs'    => $g('answer.sum_ms'),
      'lat1ms'      => $g('answer.1ms'),
      'lat10ms'     => $g('answer.10ms'),
      'lat50ms'     => $g('answer.50ms'),
      'lat100ms'    => $g('answer.100ms'),
      'lat250ms'    => $g('answer.250ms'),
      'lat500ms'    => $g('answer.500ms'),
      'lat1000ms'   => $g('answer.1000ms'),
      'lat1500ms'   => $g('answer.1500ms'),
      'latSlow'     => $g('answer.slow'),
      'flagAD'      => $g('answer.ad'),
      'flagDO'      => $g('answer.do'),
      'flagTC'      => $g('answer.tc'),
      'flagRA'      => $g('answer.ra'),
      'flagRD'      => $g('answer.rd'),
      'flagCD'      => $g('answer.cd'),
      'flagAA'      => $g('answer.aa'),
      'qDnssec'     => $g('query.dnssec'),
      'qEdns'       => $g('query.edns'),
    ];

    rrdtool_update_ng($device, 'knot_resolver', $data, $app_id);

    update_application($app_id, $data);

    unset($kres, $app_id, $data);
}

// EOF
