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