Mikrotik export dns to zonefile

Iš Žinynas.
Jump to navigation Jump to search

Panaudota php klasė

<?php
$DEBUG = false;
$ip = "192.168.1.1";
$user = "apiuser";
$password = "password";

require('routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = $DEBUG;
if ($API->connect($ip, $user, $password)) {
$ARRAY = $API->comm("/ip/dns/static/print");

usort($ARRAY, function ($a, $b) {
    // Split the domain into the main part and suffix
    $partsA = explode('.', $a['name']);
    $partsB = explode('.', $b['name']);

    // Extract suffix (everything after the first dot)
    $suffixA = implode('.', array_slice($partsA, 1));
    $suffixB = implode('.', array_slice($partsB, 1));

    // If suffixes are the same, sort by the full name
    if ($suffixA === $suffixB) {
        return strcmp($a['name'], $b['name']);
    }

    // Sort by suffix alphabetically
    return strcmp($suffixA, $suffixB);
});


$count = 0;
foreach ($ARRAY as $dns) {
  $count++;
  if ($dns["disabled"] == "true") continue;
    $type = "A";
  if (isset($dns["type"])) $type = $dns["type"];
    $address = "";
  if ($type !== "A") {
    $address = $dns[strtolower($type)];
  } else {
    $address = $dns["address"];
  }
  echo $dns["name"]," IN ".$type." ".$address."<br>";
}
echo "Total entries: $count<br>";
$API->disconnect();
} else {
echo "Unable to connect to the router";
}
?>