/static/SaveZoneFile.php

https://bitbucket.org/droidzone/dns-manager · PHP · 183 lines · 135 code · 30 blank · 18 comment · 34 complexity · 7efb0ddc9a182f06a24508b3ead5e39b MD5 · raw file

  1. <?php
  2. global $DATASAVED, $DATAUNSAVED_ALERT;
  3. $DATASAVED=true;
  4. global $DEBUGON;
  5. //$DEBUGON=false;
  6. if ($DEBUGON) {
  7. debug_print_backtrace();
  8. var_dump($_POST);
  9. }
  10. #Saves to disk
  11. global $filehandle;
  12. global $DEBUGMSG;
  13. global $MAIN_DOMAINNAME,$MAIN_NS,$MAIN_ADMINMAIL,$NS;
  14. global $A_REC, $A_VAL;
  15. global $MX_PREF,$MX_VAL;
  16. global $CN_PREF,$CN_VAL,$CN_NAME;
  17. global $TXT_VAL, $TXT_PREF;
  18. global $CONF_FILE,$DOMAIN_SERIAL,$DOMAIN_REFRESH, $DOMAIN_RETRY, $DOMAIN_EXPIRE, $DOMAIN_NEGTTL;
  19. global $NO_TXT_BANNER;
  20. //print_r($_POST);
  21. global $CONF_FILE;
  22. $CONF_FILE=$_POST['CONF_FILE'];
  23. $domain=$MAIN_DOMAINNAME=$_POST['MAIN_DOMAINNAME'];
  24. $att_filename="db.".$domain.".txt";
  25. #Note $file is a handle
  26. global $TEMP_FILE;
  27. $filehandle = fopen($TEMP_FILE, 'w');
  28. $MAIN_NS=$_POST['MAIN_NS'];
  29. $MAIN_ADMINMAIL=$_POST['MAIN_ADMINMAIL'];
  30. $DOMAIN_SERIAL=$_POST['DOMAIN_SERIAL'];
  31. //print "<p>Serial is ".$DOMAIN_SERIAL;
  32. $DOMAIN_REFRESH=$_POST['DOMAIN_REFRESH'];
  33. $DOMAIN_RETRY=$_POST['DOMAIN_RETRY'];
  34. $DOMAIN_EXPIRE=$_POST['DOMAIN_EXPIRE'];
  35. $DOMAIN_NEGTTL=$_POST['DOMAIN_NEGTTL'];
  36. $DOMAIN_REFRESH=$_POST['DOMAIN_REFRESH'];
  37. fprint( $domain. "." . tpc() ."IN". tpc() . "SOA". tpc() . $MAIN_NS. tpc() . $MAIN_ADMINMAIL. tpc() . '(');
  38. fprint( tpc(5).$DOMAIN_SERIAL.tpc(5).'; Serial');
  39. fprint( tpc(5).$DOMAIN_REFRESH.tpc(5).'; Refresh');
  40. fprint( tpc(5).$DOMAIN_RETRY.tpc(5).'; Retry');
  41. fprint( tpc(5).$DOMAIN_EXPIRE.tpc(5).'; Expire');
  42. fprint( tpc(5).$DOMAIN_NEGTTL.tpc(3).')'.tpc(5).'; Negative Cache TTL');
  43. if (isset($_POST['NS']) )
  44. {
  45. $NS=$_POST['NS'];
  46. foreach ($_POST['NS'] as &$value) {
  47. if ( $value != "" ) {
  48. fprint ($domain. ".". tpc(5)."IN".tpc(5).'NS'.tpc(5).$value);
  49. }
  50. }
  51. }
  52. $i=0;
  53. if (isset($_POST['MX_PREF']) && isset($_POST['MX_VAL'] ) ) {
  54. $MX_PREF=$_POST['MX_PREF'];
  55. $MX_VAL=$_POST['MX_VAL'];
  56. $i=0;
  57. $MX_PREF=$_POST['MX_PREF'];
  58. $MX_VAL=$_POST['MX_VAL'];
  59. foreach ($_POST['MX_PREF'] as &$value) {
  60. if ( $MX_PREF[$i] != "" && $MX_VAL[$i] != "") {
  61. fprint ($domain. ".". tpc(5)."IN".tpc(5).'MX'.tpc(5).$MX_PREF[$i].tpc(5).$MX_VAL[$i]);
  62. $i++;
  63. }
  64. }
  65. }
  66. $A_REC=$_POST['A_REC'];
  67. $A_VAL=$_POST['A_VAL'];
  68. $i=0;
  69. foreach ($_POST['A_VAL'] as $key => $value) {
  70. if ( isset($A_VAL[$key]) ) {
  71. if ( $A_VAL[$key] !== "") {
  72. //print "<h4>Entered if block</h4>";
  73. $domain=rtrim($domain, ".");
  74. if ( $A_REC[$key] !== "") {
  75. fprint( $A_REC[$key].".".$domain. ".". tpc(5)."IN".tpc(5).'A'.tpc(5).$A_VAL[$key]);
  76. } else {
  77. fprint( $domain. ".". tpc(5)."IN".tpc(5).'A'.tpc(5).$A_VAL[$key]);
  78. }
  79. }
  80. }
  81. }
  82. if (isset( $_POST['TXT_PREF']) && isset($_POST['TXT_VAL'] )) {
  83. $TXT_PREF=$_POST['TXT_PREF'];
  84. $TXT_VAL=$_POST['TXT_VAL'];
  85. $i=0;
  86. foreach ($_POST['TXT_VAL'] as &$value) {
  87. if ( $TXT_PREF[$i] != "" && $TXT_VAL[$i] != "") {
  88. fprint( $domain. ".". tpc(5).$TXT_PREF[$i]. tpc(5)."IN".tpc(5).'TXT'.tpc(5).$TXT_VAL[$i]);
  89. $i++;
  90. }
  91. }
  92. }
  93. if (isset( $_POST['CN_PREF']) && isset($_POST['CN_VAL']) && isset($_POST['CN_NAME'] )) {
  94. $CN_PREF=$_POST['CN_PREF'];
  95. $CN_VAL=$_POST['CN_VAL'];
  96. $CN_NAME=$_POST['CN_NAME'];
  97. $i=0;
  98. foreach ($_POST['CN_VAL'] as &$value) {
  99. if ( $CN_VAL[$i] != "" && $CN_PREF[$i] != "" && $CN_NAME[$i] != "") {
  100. fprint( $CN_VAL[$i].".".$domain. ".". tpc(5).$CN_PREF[$i]. tpc(5)."IN".tpc(5).'CNAME'.tpc(5).$CN_NAME[$i]);
  101. $i++;
  102. }
  103. }
  104. }
  105. $dl_name="db.".$domain.".txt";
  106. // /root/cpbind dbupdate /tmpfile db.mydomain.com mydomain.com
  107. $coman='sudo /root/cpbind dbupdate '.$TEMP_FILE." "."db.".$domain.' '.$domain;
  108. #print "<h4>Command is ".$coman."</h4>";
  109. $output = shell_exec($coman);
  110. #print "<h4>Output is ".$output."</h4>";
  111. $err = strpos($output, "errors");
  112. #print "<h1>Error val is ".$err."<h1>";
  113. if ( $err !== false) {
  114. GenErrorBanner("An error occured!",$output);
  115. } else {
  116. GenBanner("Changes saved!",$output);
  117. }
  118. //ReadAndProcessFile();
  119. PrintPageFormatted();
  120. //Write to conf file
  121. //See if the domain existed previously
  122. $dataw="";
  123. $dataw .= "zone \"".$domain."\" {\n";
  124. $dataw .= "\ttype master;\n";
  125. $dataw .= "\tfile \"".$CONF_FILE."\";\n";
  126. $dataw .= "\tallow-update { key rndc-key; };\n";
  127. $dataw .= "};\n";
  128. $File_to_write = "dummy.conf";
  129. if (!SearchFile($File_to_write, $CONF_FILE) ) {
  130. WritetoConfFile($File_to_write, $dataw);
  131. }
  132. hpfooter();
  133. function WritetoConfFile ($filename, $data) {
  134. #print "<p>About to open</p>";
  135. $file = fopen($filename, 'a');
  136. #print "file param is ".$file." which is a ".gettype($file);
  137. #print "<p>Writing</p>";
  138. fwrite($file, $data);
  139. #print "<p>About to close</p>";
  140. fclose($file);
  141. }
  142. function SearchFile($file,$searchfor) {
  143. //header('Content-Type: text/plain');
  144. $contents = file_get_contents($file);
  145. $pattern = preg_quote($searchfor, '/');
  146. $pattern = "/^.*$pattern.*\$/m";
  147. if(preg_match_all($pattern, $contents, $matches)){
  148. return true;
  149. } else {
  150. return false;
  151. }
  152. }
  153. ?>