PageRenderTime 71ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/contrib/generate-vegadns.php

https://bitbucket.org/MelFlynn/observium
PHP | 157 lines | 110 code | 30 blank | 17 comment | 32 complexity | 93f8ae15a575342a21a91e745ef3404b MD5 | raw file
Possible License(s): GPL-3.0, MIT
  1. #!/usr/bin/env php
  2. <?php
  3. include("config.php");
  4. include("includes/functions.php");
  5. $dnsdblink = mysql_connect('localhost', 'user', 'pass');
  6. $dnsdb = mysql_select_db('tinydns', $dnsdblink);
  7. $link = mysql_connect($config['db_host'], $config['db_user'], $config['db_pass']);
  8. $db = mysql_select_db($config['db_name'], $link);
  9. $query = "SELECT * FROM ipaddr AS A, ports as I, devices as D WHERE A.interface_id = I.interface_id AND I.device_id = D.device_id AND D.hostname LIKE '%.vostron.net' AND D.hostname NOT LIKE '%.cust.%' AND D.os = 'ios'";
  10. $data = mysql_query($query, $link);
  11. while($ip = mysql_fetch_array($data)) {
  12. unset($sub);
  13. $hostname = $ip['hostname'];
  14. $real_hostname = $hostname;
  15. $hostname = str_replace(".vostron.net", "", $hostname);
  16. list($loc, $host) = explode("-", $hostname);
  17. if($host) {
  18. $hostname = "$host.$loc.v4.vostron.net";
  19. } else {
  20. $host = $loc; unset ($loc);
  21. $hostname = "$host.v4.vostron.net";
  22. }
  23. $interface = $ip['ifDescr'];
  24. $address = $ip['addr'];
  25. $cidr = $ip['cidr'];
  26. $interface = strtolower(makeshortif(fixifname($interface)));
  27. $interface = str_replace("/", "-", $interface);
  28. list($interface, $sub) = explode(".", $interface);
  29. if($sub) {
  30. $sub = str_replace(" ", "", $sub);
  31. $sub = str_replace("aal5", "", $sub);
  32. $interface = "$sub.$interface";
  33. }
  34. $hostip = trim(gethostbyname($real_hostname));
  35. if(strstr($hostname, ".vostron.net")) {
  36. list($first, $second, $third, $fourth) = explode(".", $address);
  37. $revzone = "$third.$second.$first.in-addr.arpa";
  38. $reverse = "$fourth.$revzone";
  39. $dnsname = "$interface.$hostname";
  40. $rev_sql = "SELECT `domain_id` FROM `domains` WHERE domain = '" . $revzone . "'";
  41. $rev_domain_id = @mysql_result(mysql_query($rev_sql, $dnsdblink),0);
  42. $rows_exist = mysql_result(mysql_query("SELECT COUNT(record_id) FROM `records` WHERE `host` = '$reverse'", $dnsdblink),0);
  43. if($rows_exist > '1') { $rows_exist = 1; echo("DELETE FROM `records` WHERE `host` = '$reverse' LIMIT $rows_exist;\n"); }
  44. if($address == $hostip) {
  45. if($rows_exist < '1') {
  46. $reverse_query = "INSERT INTO `records` (`host`, `ttl`, `type`, `val`, `domain_id`) ";
  47. $reverse_query .= "VALUES ('$reverse','38400','P','$real_hostname','$rev_domain_id')";
  48. } else {
  49. $reverse_query = "UPDATE `records` SET `val` = '$real_hostname' WHERE `host` = '".$reverse.".'";
  50. }
  51. } else {
  52. if($rows_exist < '1') {
  53. $reverse_query = "INSERT INTO `records` (`host`, `ttl`, `type`, `val`, `domain_id`) ";
  54. $reverse_query .= "VALUES ('$reverse','38400','P','$dnsname','$rev_domain_id')";
  55. } else {
  56. $reverse_query = "UPDATE `records` SET `val` = '".$dnsname.".' WHERE `host` = '".$reverse."'";
  57. }
  58. }
  59. if($rev_domain_id) {
  60. echo("$reverse_query; \n");
  61. #mysql_query($reverse_query, $dnsdblink);
  62. } else {
  63. #echo("$hostname - $interface - $reverse FAILED\n");
  64. }
  65. $i = 1;
  66. unset($exist);
  67. while ($i <= count($zoneupdated)) {
  68. $thiszone = "$revzone";
  69. if ($zoneupdated[$i] == $thiszone) { $exist = "yes"; }
  70. $i++;
  71. }
  72. if(!$exist) { $zoneupdated[] = "$revzone"; }
  73. unset ($forward_query);
  74. if($address != $hostip) {
  75. $rows_exist = mysql_result(mysql_query("SELECT COUNT(record_id) FROM `records` WHERE `host` = '$dnsname'", $dnsdblink),0);
  76. if($rows_exist > '1') { $rows_exist--; echo("DELETE FROM `records` WHERE `host` = '$hostname' LIMIT $rows_exist;\n"); }
  77. if($rows_exist < '1') {
  78. $forward_query = "INSERT INTO `records` (`host`, `ttl`, `type`, `val`, `domain_id`) ";
  79. $forward_query .= "VALUES ('$dnsname','38400','A','$address','381')";
  80. } elseif ($address != $hostip) {
  81. $forward_query = "UPDATE `records` SET `val` = '$address' WHERE `host` = '$dnsname'";
  82. }
  83. }
  84. if($forward_query && $rev_domain_id) {
  85. echo("$forward_query; \n");
  86. }
  87. mysql_query($forward_query, $dnsdblink);
  88. # $i = 1;
  89. # unset($exist)
  90. # while ($i <= count($linkdone)) {
  91. # $thiszone = "$";
  92. # if ($zoneupdated[$i] == $thiszone) { $exist = "yes"; }
  93. # $i++;
  94. # }
  95. }
  96. }
  97. $i = 0;
  98. while ($i < count($zoneupdated)) {
  99. # $sSQL = "update zones set name = '" . $name . "', ttl = " . $ttl . ", rdtype =
  100. # '" . $rdtype1 . "', rdata = '" . $rdata . "' where zoneid = " . $id;
  101. # $result = mysql_query($sSQL, $dnsdblink);
  102. $domain = $zoneupdated[$i];
  103. $sSQL = "select rdata, zoneid from zones where domain_name = '" . $domain . "' and rdtype = 'SOA'";
  104. # $result = mysql_query($sSQL, $dnsdblink);
  105. # $row = mysql_fetch_array($result);
  106. $soa = explode(" ", $row[0]);
  107. $year = substr($soa[2],0,4);
  108. $month = substr($soa[2],4,2);
  109. $day = substr($soa[2],6,2);
  110. $serial = substr($soa[2],8,2);
  111. $thisday = date("d",time());
  112. $thismonth = date("m",time());
  113. $thisyear = date("Y", time());
  114. if($day == $thisday && $month == $thismonth && $year = $thisyear) {
  115. $serial++;
  116. }
  117. else {
  118. $serial = "01";
  119. }
  120. $date = $thisyear . $thismonth . $thisday . sprintf("%02s",$serial);
  121. $rdata = $soa[0] . " " . $soa[1] . " " . $date . " " . $soa[3] . " " . $soa[4] . " " . $soa[5] . " " . $soa[6];
  122. $sSQL = "update zones set rdata = '" . $rdata . "' where zoneid = " . $row[1];
  123. # echo("$sSQL\n");
  124. # $result = mysql_query($sSQL, $dnsdblink);
  125. $i++;
  126. }
  127. ?>