From 911d45c65bcdd9b8d53c8762ef0e62a5437f8734 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Tue, 2 Nov 2010 15:05:41 +0000
Subject: [PATCH] Added a new tool to force DNS Resyncs.

---
 interface/web/tools/dns_resync.php            | 82 +++++++++++++++++++
 .../web/tools/lib/menu.d/dns_resync.menu.php  | 22 +++++
 interface/web/tools/templates/dns_resync.htm  | 31 +++++++
 3 files changed, 135 insertions(+)
 create mode 100644 interface/web/tools/dns_resync.php
 create mode 100644 interface/web/tools/lib/menu.d/dns_resync.menu.php
 create mode 100644 interface/web/tools/templates/dns_resync.htm

diff --git a/interface/web/tools/dns_resync.php b/interface/web/tools/dns_resync.php
new file mode 100644
index 0000000000..aed2f4e7c2
--- /dev/null
+++ b/interface/web/tools/dns_resync.php
@@ -0,0 +1,82 @@
+<?php
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/dns_resync.htm');
+$msg = '';
+$error = '';
+
+// Resyncing dns zones
+if(isset($_POST['resync']) && $_POST['resync'] == 1) {
+	$zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
+	if(is_array($zones)) {
+		foreach($zones as $zone) {
+			$records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
+			if(is_array($records)) {
+				foreach($records as $rec) {
+					$new_serial = $app->validate_dns->increase_serial($rec["serial"]);
+					$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);
+					
+				}
+			}
+			$new_serial = $app->validate_dns->increase_serial($zone["serial"]);
+			$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
+			$msg .= "Resynced: ".$zone['origin'].'<br />';
+		}
+	}
+	
+}
+
+$app->tpl->setVar('msg',$msg);
+$app->tpl->setVar('error',$error);
+
+
+//* load language file
+/*
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_mailbox_import.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+*/
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/menu.d/dns_resync.menu.php b/interface/web/tools/lib/menu.d/dns_resync.menu.php
new file mode 100644
index 0000000000..f6b6ae00a6
--- /dev/null
+++ b/interface/web/tools/lib/menu.d/dns_resync.menu.php
@@ -0,0 +1,22 @@
+<?php
+
+
+// Menu
+
+if($app->auth->is_admin()) {
+
+$items = array();
+
+$items[] = array( 'title' 	=> 'Resync',
+				  'target' 	=> 'content',
+				  'link'	=> 'tools/dns_resync.php');
+
+
+$module['nav'][] = array(	'title'	=> 'DNS Tools',
+							'open' 	=> 1,
+							'items'	=> $items);
+
+unset($items);
+}
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/templates/dns_resync.htm b/interface/web/tools/templates/dns_resync.htm
new file mode 100644
index 0000000000..2c2320815c
--- /dev/null
+++ b/interface/web/tools/templates/dns_resync.htm
@@ -0,0 +1,31 @@
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>DNS Resync</legend>
+	  <div class="ctrlHolder">
+				<p class="label">Resync DNS Records</p>
+					<div class="multiField">
+						<input id="resync" type="checkbox" value="1" name="resync" checked/>
+					</div>
+	  </div>
+    </fieldset>
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitUploadForm('pageForm','tools/dns_resync.php');"><span>Start</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>Cancel</span></button>
+    </div>
+  </div>
+  
+</div>
-- 
GitLab