From 13d32306f89a9a4d8c59405d6e75d610b28cc6ce Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Fri, 21 Nov 2008 17:13:35 +0000 Subject: [PATCH] Added Wizard to create DNS records. --- install/sql/ispconfig3.sql | 27 +++ interface/lib/classes/db_mysql.inc.php | 2 +- interface/web/dns/dns_template_del.php | 58 +++++ interface/web/dns/dns_template_edit.php | 58 +++++ interface/web/dns/dns_template_list.php | 24 ++ interface/web/dns/dns_wizard.php | 211 ++++++++++++++++++ interface/web/dns/form/dns_template.tform.php | 101 +++++++++ .../web/dns/lib/lang/en_dns_template.lng | 8 + .../web/dns/lib/lang/en_dns_template_list.lng | 12 + interface/web/dns/lib/lang/en_dns_wizard.lng | 16 ++ interface/web/dns/lib/module.conf.php | 29 +++ interface/web/dns/list/dns_template.list.php | 80 +++++++ .../web/dns/templates/dns_template_edit.htm | 35 +++ .../web/dns/templates/dns_template_list.htm | 52 +++++ interface/web/dns/templates/dns_wizard.htm | 62 +++++ 15 files changed, 774 insertions(+), 1 deletion(-) create mode 100644 interface/web/dns/dns_template_del.php create mode 100644 interface/web/dns/dns_template_edit.php create mode 100644 interface/web/dns/dns_template_list.php create mode 100644 interface/web/dns/dns_wizard.php create mode 100644 interface/web/dns/form/dns_template.tform.php create mode 100644 interface/web/dns/lib/lang/en_dns_template.lng create mode 100644 interface/web/dns/lib/lang/en_dns_template_list.lng create mode 100644 interface/web/dns/lib/lang/en_dns_wizard.lng create mode 100644 interface/web/dns/list/dns_template.list.php create mode 100644 interface/web/dns/templates/dns_template_edit.htm create mode 100644 interface/web/dns/templates/dns_template_list.htm create mode 100644 interface/web/dns/templates/dns_wizard.htm diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 10cd86732b..2c00fece94 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -133,6 +133,33 @@ CREATE TABLE `dns_soa` ( KEY `active` (`active`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `dns_template` +-- + +CREATE TABLE `dns_template` ( + `template_id` bigint(20) NOT NULL auto_increment, + `sys_userid` int(11) NOT NULL default '0', + `sys_groupid` int(11) NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `name` varchar(255) default NULL, + `fields` varchar(255) default NULL, + `template` text, + `visible` varchar(255) NOT NULL default 'Y', + PRIMARY KEY (`template_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + +-- +-- Daten für Tabelle `dns_template` +-- + +INSERT INTO `dns_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES (1, 1, 1, 'riud', 'riud', '', 'Default', 'DOMAIN,IP,NS1,NS2,EMAIL', '[ZONE]\norigin={DOMAIN}.\nns={NS1}.\nmbox={EMAIL}.\nrefresh=28800\nretry=7200\nexpire=604800\nminimum=86400\nttl=86400\n\n[DNS_RECORDS]\nA|{DOMAIN}.|{IP}|0|86400\nA|www|{IP}|0|86400\nA|mail|{IP}|0|86400\nNS|{DOMAIN}.|{NS1}.|0|86400\nNS|{DOMAIN}.|{NS2}.|0|86400\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|86400', 'y'); + + -- -------------------------------------------------------- diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 8084443280..ec9a1f311c 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -292,7 +292,7 @@ class db $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); $this->datalogSave($tablename, 'INSERT', $index_field, $index_value, $old_rec, $new_rec); - return true; + return $index_value; } //** Updates a record and saves the changes into the datalog diff --git a/interface/web/dns/dns_template_del.php b/interface/web/dns/dns_template_del.php new file mode 100644 index 0000000000..bfb343cbf8 --- /dev/null +++ b/interface/web/dns/dns_template_del.php @@ -0,0 +1,58 @@ +<?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. +*/ + +/****************************************** +* Begin Form configuration +******************************************/ + +$list_def_file = "list/dns_template.list.php"; +$tform_def_file = "form/dns_template.tform.php"; + +/****************************************** +* End Form configuration +******************************************/ + +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +//* Check permissions for module +$app->auth->check_module_permissions('dns'); + +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + +} + +$page = new page_action; +$page->onDelete(); + +?> \ No newline at end of file diff --git a/interface/web/dns/dns_template_edit.php b/interface/web/dns/dns_template_edit.php new file mode 100644 index 0000000000..3f59627839 --- /dev/null +++ b/interface/web/dns/dns_template_edit.php @@ -0,0 +1,58 @@ +<?php +/* +Copyright (c) 2007, 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. +*/ + + +/****************************************** +* Begin Form configuration +******************************************/ + +$tform_def_file = "form/dns_template.tform.php"; + +/****************************************** +* End Form configuration +******************************************/ + +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +//* Check permissions for module +$app->auth->check_module_permissions('dns'); + +// Loading classes +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + +} + +$page = new page_action; +$page->onLoad(); + +?> \ No newline at end of file diff --git a/interface/web/dns/dns_template_list.php b/interface/web/dns/dns_template_list.php new file mode 100644 index 0000000000..20efa8d43d --- /dev/null +++ b/interface/web/dns/dns_template_list.php @@ -0,0 +1,24 @@ +<?php +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +/****************************************** +* Begin Form configuration +******************************************/ + +$list_def_file = "list/dns_template.list.php"; + +/****************************************** +* End Form configuration +******************************************/ + +//* Check permissions for module +$app->auth->check_module_permissions('dns'); + +$app->uses('listform_actions'); +// $app->listform_actions->SQLExtWhere = "access = 'REJECT'"; + +$app->listform_actions->onLoad(); + + +?> \ No newline at end of file diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php new file mode 100644 index 0000000000..642d3714f4 --- /dev/null +++ b/interface/web/dns/dns_wizard.php @@ -0,0 +1,211 @@ +<?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('dns'); + + +// Loading the template +$app->uses('tpl'); +$app->tpl->newTemplate("form.tpl.htm"); +$app->tpl->setInclude('content_tpl','templates/dns_wizard.htm'); + +// import variables +$template_id = (isset($_POST['template_id']))?intval($_POST['template_id']):1; +$server_id = (isset($_POST['server_id']))?intval($_POST['server_id']):1; +$sys_groupid = (isset($_POST['client_group_id']))?intval($_POST['client_group_id']):0; + + + +// Load the templates +$records = $app->db->queryAllRecords("SELECT * FROM dns_template WHERE visible = 'y'"); +$template_id_option = ''; +foreach($records as $rec){ + $checked = ($rec['template_id'] == $template_id)?' SELECTED':''; + $template_id_option .= '<option value="'.$rec['template_id'].'"'.$checked.'>'.$rec['name'].'</option>'; +} +$app->tpl->setVar("template_id_option",$template_id_option); + +// If the user is administrator +if($_SESSION['s']['user']['typ'] == 'admin') { + + // Load the list of servers + $records = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE dns_server = 1 ORDER BY server_name"); + $server_id_option = ''; + foreach($records as $rec){ + $checked = ($rec['server_id'] == $server_id)?' SELECTED':''; + $server_id_option .= '<option value="'.$rec['server_id'].'"'.$checked.'>'.$rec['server_name'].'</option>'; + } + $app->tpl->setVar("server_id",$server_id_option); + + // load the list of clients + $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0"; + $clients = $app->db->queryAllRecords($sql); + $client_select = ''; + if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>"; + if(is_array($clients)) { + foreach( $clients as $client) { + $selected = ($client["groupid"] == $sys_groupid)?'SELECTED':''; + $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n"; + } + } + + $app->tpl->setVar("client_group_id",$client_select); + +} + +$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE template_id = '$template_id'"); +$fields = explode(',',$template_record['fields']); +if(is_array($fields)) { + foreach($fields as $field) { + $app->tpl->setVar($field."_VISIBLE",1); + $field = strtolower($field); + $app->tpl->setVar($field,$_POST[$field]); + } +} + +if($_POST['create'] == 1) { + + $error = ''; + + if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty'); + if(isset($_POST['ip']) && $_POST['ip'] == '') $error .= $app->lng('error_ip_empty'); + if(isset($_POST['ns1']) && $_POST['ns1'] == '') $error .= $app->lng('error_ns1_empty'); + if(isset($_POST['ns2']) && $_POST['ns2'] == '') $error .= $app->lng('error_ns2_empty'); + if(isset($_POST['email']) && $_POST['email'] == '') $error .= $app->lng('error_email_empty'); + + + // replace template placeholders + $tpl_content = $template_record['template']; + if($_POST['domain'] != '') $tpl_content = str_replace('{DOMAIN}',$_POST['domain'],$tpl_content); + if($_POST['ip'] != '') $tpl_content = str_replace('{IP}',$_POST['ip'],$tpl_content); + if($_POST['ns1'] != '') $tpl_content = str_replace('{NS1}',$_POST['ns1'],$tpl_content); + if($_POST['ns2'] != '') $tpl_content = str_replace('{NS2}',$_POST['ns2'],$tpl_content); + if($_POST['email'] != '') $tpl_content = str_replace('{EMAIL}',$_POST['email'],$tpl_content); + + // Parse the template + $tpl_rows = explode("\n",$tpl_content); + $section = ''; + $vars = array(); + $dns_rr = array(); + foreach($tpl_rows as $row) { + $row = trim($row); + if(substr($row,0,1) == '[') { + if($row == '[ZONE]') { + $section = 'zone'; + } elseif($row == '[DNS_RECORDS]') { + $section = 'dns_records'; + } else { + die('Unknown section type'); + } + } else { + if($row != '') { + // Handle zone section + if($section == 'zone') { + $parts = explode('=',$row); + $key = trim($parts[0]); + $val = trim($parts[1]); + if($key != '') $vars[$key] = $val; + } + // Handle DNS Record rows + if($section == 'dns_records') { + $parts = explode('|',$row); + $dns_rr[] = array( + 'name' => $app->db->quote($parts[1]), + 'type' => $app->db->quote($parts[0]), + 'data' => $app->db->quote($parts[2]), + 'aux' => $app->db->quote($parts[3]), + 'ttl' => $app->db->quote($parts[4]) + ); + } + } + } + + } // end foreach + + if($vars['origin'] == '') $error .= $app->lng('error_origin_empty'); + if($vars['ns'] == '') $error .= $app->lng('error_ns_empty'); + if($vars['mbox'] == '') $error .= $app->lng('error_mbox_empty'); + if($vars['refresh'] == '') $error .= $app->lng('error_refresh_empty'); + if($vars['retry'] == '') $error .= $app->lng('error_retry_empty'); + if($vars['expire'] == '') $error .= $app->lng('error_expire_empty'); + if($vars['minimum'] == '') $error .= $app->lng('error_minimum_empty'); + if($vars['ttl'] == '') $error .= $app->lng('error_ttl_empty'); + + if($error == '') { + // Insert the soa record + $sys_userid = $_SESSION['s']['user']['userid']; + $origin = $app->db->quote($vars['origin']); + $ns = $app->db->quote($vars['ns']); + $mbox = $app->db->quote(str_replace('@','.',$vars['mbox'])); + $refresh = $app->db->quote($vars['refresh']); + $retry = $app->db->quote($vars['retry']); + $expire = $app->db->quote($vars['expire']); + $minimum = $app->db->quote($vars['minimum']); + $ttl = $app->db->quote($vars['ttl']); + + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `origin`, `ns`, `mbox`, `serial`, `refresh`, `retry`, `expire`, `minimum`, `ttl`, `active`, `xfer`) VALUES + ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$origin', '$ns', '$mbox', '1', '$refresh', '$retry', '$expire', '$minimum', '$ttl', 'Y', '')"; + $dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id'); + + // Insert the dns_rr records + if(is_array($dns_rr) && $dns_soa_id > 0) { + foreach($dns_rr as $rr) { + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `zone`, `name`, `type`, `data`, `aux`, `ttl`, `active`) VALUES + ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$dns_soa_id', '$rr[name]', '$rr[type]', '$rr[data]', '$rr[aux]', '$rr[ttl]', 'Y')"; + $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id'); + } + } + + header("Location: dns_soa_list.php"); + exit; + + } else { + $app->tpl->setVar("error",$error); + } + +} + + + +$app->tpl->setVar("title",'DNS Wizard'); + +$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dns_wizard.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/dns/form/dns_template.tform.php b/interface/web/dns/form/dns_template.tform.php new file mode 100644 index 0000000000..f40b5336a0 --- /dev/null +++ b/interface/web/dns/form/dns_template.tform.php @@ -0,0 +1,101 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ + +$form["title"] = "DNS Wizard template"; +$form["description"] = ""; +$form["name"] = "dns_template"; +$form["action"] = "dns_template_edit.php"; +$form["db_table"] = "dns_template"; +$form["db_table_idx"] = "template_id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "template"; +$form["list_default"] = "dns_template_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['template'] = array ( + 'title' => "DNS Template", + 'width' => 100, + 'template' => "templates/dns_template_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'name' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'name_error_empty'), + ), + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fields' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOXARRAY', + 'default' => '', + 'separator' => ',', + 'value' => array('DOMAIN' => 'Domain','IP' => 'IP Address','NS1' => 'NS 1','NS2' => 'NS 2','EMAIL' => 'Email') + ), + 'template' => array ( + 'datatype' => 'TEXT', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'cols' => '40', + 'rows' => '15' + ), + 'visible' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n',1 => 'y') + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + + +?> \ No newline at end of file diff --git a/interface/web/dns/lib/lang/en_dns_template.lng b/interface/web/dns/lib/lang/en_dns_template.lng new file mode 100644 index 0000000000..78cc34d544 --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_template.lng @@ -0,0 +1,8 @@ +<?php +$wb["name_txt"] = 'Name'; +$wb["fields_txt"] = 'Fields'; +$wb["template_txt"] = 'Template'; +$wb["visible_txt"] = 'Visible'; +$wb["btn_save_txt"] = 'Save'; +$wb["btn_cancel_txt"] = 'Cancel'; +?> \ No newline at end of file diff --git a/interface/web/dns/lib/lang/en_dns_template_list.lng b/interface/web/dns/lib/lang/en_dns_template_list.lng new file mode 100644 index 0000000000..26781e977f --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_template_list.lng @@ -0,0 +1,12 @@ +<?php +$wb["list_head_txt"] = 'DNS Wizard Template'; +$wb["visible_txt"] = 'Visible'; +$wb["name_txt"] = 'Name'; +$wb["page_txt"] = 'Page'; +$wb["page_of_txt"] = 'of'; +$wb["page_next_txt"] = 'Next'; +$wb["page_back_txt"] = 'Back'; +$wb["delete_txt"] = 'Delete'; +$wb["filter_txt"] = 'Filter'; +$wb["add_new_record_txt"] = 'Add new record'; +?> \ No newline at end of file diff --git a/interface/web/dns/lib/lang/en_dns_wizard.lng b/interface/web/dns/lib/lang/en_dns_wizard.lng new file mode 100644 index 0000000000..251f85034f --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_wizard.lng @@ -0,0 +1,16 @@ +<?php + +$wb['template_id_txt'] = 'Template'; +$wb['server_id_txt'] = 'Server'; +$wb['client_txt'] = 'Client'; +$wb["btn_save_txt"] = 'Create DNS Record'; +$wb["btn_cancel_txt"] = 'Cancel'; +$wb['domain_txt'] = 'Domain'; +$wb['email_txt'] = 'Email'; +$wb['ns1_txt'] = 'NS 1'; +$wb['ns2_txt'] = 'NS 2'; +$wb['ip_txt'] = 'IP Address'; + +$wb['error_origin_empty'] = 'Origin empty.'; + +?> \ No newline at end of file diff --git a/interface/web/dns/lib/module.conf.php b/interface/web/dns/lib/module.conf.php index 41e6d058fd..d233ba271c 100644 --- a/interface/web/dns/lib/module.conf.php +++ b/interface/web/dns/lib/module.conf.php @@ -24,4 +24,33 @@ $items[] = array( 'title' => "A-Records", $module["nav"][] = array( 'title' => 'DNS', 'open' => 1, 'items' => $items); + +unset($items); + + +$items[] = array( 'title' => "Add DNS Zone", + 'target' => 'content', + 'link' => 'dns/dns_wizard.php'); + + +$items[] = array( 'title' => "Templates", + 'target' => 'content', + 'link' => 'dns/dns_template_list.php'); + + + +$module["nav"][] = array( 'title' => 'DNS Wizard', + 'open' => 1, + 'items' => $items); + + + + + + + + + + + ?> \ No newline at end of file diff --git a/interface/web/dns/list/dns_template.list.php b/interface/web/dns/list/dns_template.list.php new file mode 100644 index 0000000000..ca34596f6e --- /dev/null +++ b/interface/web/dns/list/dns_template.list.php @@ -0,0 +1,80 @@ +<?php + +/* + Datatypes: + - INTEGER + - DOUBLE + - CURRENCY + - VARCHAR + - TEXT + - DATE +*/ + + + +// Name of the list +$liste["name"] = "dns_template"; + +// Database table +$liste["table"] = "dns_template"; + +// Index index field of the database table +$liste["table_idx"] = "template_id"; + +// Search Field Prefix +$liste["search_prefix"] = "search_"; + +// Records per page +$liste["records_per_page"] = 15; + +// Script File of the list +$liste["file"] = "dns_template_list.php"; + +// Script file of the edit form +$liste["edit_file"] = "dns_template_edit.php"; + +// Script File of the delete script +$liste["delete_file"] = "dns_template_del.php"; + +// Paging Template +$liste["paging_tpl"] = "templates/paging.tpl.htm"; + +// Enable auth +$liste["auth"] = "yes"; + + +/***************************************************** +* Suchfelder +*****************************************************/ + + +$liste["item"][] = array( 'field' => "visible", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>")); + + +$liste["item"][] = array( 'field' => "name", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + + + + + + + + + + + +?> \ No newline at end of file diff --git a/interface/web/dns/templates/dns_template_edit.htm b/interface/web/dns/templates/dns_template_edit.htm new file mode 100644 index 0000000000..d6d387d66c --- /dev/null +++ b/interface/web/dns/templates/dns_template_edit.htm @@ -0,0 +1,35 @@ +<h2><tmpl_var name="list_head_txt"></h2> + +<div class="panel panel_dns_template"> + + <div class="pnl_formsarea"> + <fieldset id="wf_area_dns_template"><legend>DNS Template</legend> + <span class="wf_oneField"> + <label for="name" class="wf_preField">{tmpl_var name='name_txt'}</label> + <input type="text" id="name" name="name" value="{tmpl_var name='name'}" size="40" maxlength="255"> + </span> + <span class="wf_oneField"> + <span class="wf_label wf_preField">{tmpl_var name='fields_txt'}</span> <fieldset> + {tmpl_var name='fields'} + </fieldset> + </span> + <span class="wf_oneField"> + <label for="template" class="wf_preField">{tmpl_var name='template_txt'}</label> + <textarea id="template" name="template" cols='40' rows='15'>{tmpl_var name='template'}</textarea> + </span> + <span class="wf_oneField"> + <label for="visible" class="wf_preField">{tmpl_var name='visible_txt'}</label> <span class=""> + {tmpl_var name='visible'} + </span> + </span> + </fieldset> + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> + + <div class="wf_actions buttons"> + <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','dns/dns_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button> + <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('dns/dns_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button> + </div> + </div> + +</div> diff --git a/interface/web/dns/templates/dns_template_list.htm b/interface/web/dns/templates/dns_template_list.htm new file mode 100644 index 0000000000..c19a04b19e --- /dev/null +++ b/interface/web/dns/templates/dns_template_list.htm @@ -0,0 +1,52 @@ +<h2><tmpl_var name="list_head_txt"></h2> + +<div class="panel panel_list_dns_template"> + + <div class="pnl_toolsarea"> + <fieldset><legend>Tools</legend> + <div class="buttons"> + <button class="iconstxt icoAdd" type="button" onClick="loadContent('dns/dns_template_edit.php');"> + <span>{tmpl_var name="add_new_record_txt"}</span> + </button> + </div> + </fieldset> + </div> + + <div class="pnl_listarea"> + <fieldset><legend><tmpl_var name="list_head_txt"></legend> + <table class="list"> + <thead> + <tr> + <th class="tbl_col_visible" scope="col"><tmpl_var name="visible_txt"></th> + <th class="tbl_col_name" scope="col"><tmpl_var name="name_txt"></th> + <th class="tbl_col_buttons" scope="col"> </th> + </tr> + <tr> + <td class="tbl_col_visible"><select name="search_visible" onChange="submitForm('pageForm','dns/dns_template_list.php');">{tmpl_var name='search_visible'}</select></td> + <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td> + <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','dns/dns_template_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td> + </tr> + </thead> + <tbody> + <tmpl_loop name="records"> + <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> + <td class="tbl_col_visible"><a href="#" onClick="loadContent('dns/dns_template_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="visible"}</a></td> + <td class="tbl_col_name"><a href="#" onClick="loadContent('dns/dns_template_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="name"}</a></td> + <td class="tbl_col_buttons"> + <div class="buttons icons16"> + <a class="icons16 icoDelete" href="javascript: del_record('dns/dns_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a> + </div> + </td> + </tr> + </tmpl_loop> + </tbody> + <tfoot> + <tr> + <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td> + </tr> + </tfoot> + </table> + </fieldset> + </div> + +</div> diff --git a/interface/web/dns/templates/dns_wizard.htm b/interface/web/dns/templates/dns_wizard.htm new file mode 100644 index 0000000000..42fce51cd6 --- /dev/null +++ b/interface/web/dns/templates/dns_wizard.htm @@ -0,0 +1,62 @@ +<h2><tmpl_var name="title"></h2> + +<div class="panel panel_dns_wizard"> + + <div class="pnl_formsarea"> + <fieldset><legend><tmpl_var name="title"></legend> + <tmpl_if name="error"> + <div class="error"><tmpl_var name="error"></div> + </tmpl_if> + <span class="wf_oneField"> + <label for="template_id" class="wf_preField">{tmpl_var name='template_id_txt'}</label> + <select id="template_id" name="template_id" onChange="submitForm('pageForm','dns/dns_wizard.php')">{tmpl_var name='template_id_option'}</select> + </span> + <tmpl_if name="is_admin"> + <span class="wf_oneField"> + <label for="server_id" class="wf_preField">{tmpl_var name='server_id_txt'}</label> + <select id="server_id" name="server_id">{tmpl_var name='server_id'}</select> + </span> + <span class="wf_oneField"> + <label for="client_group_id" class="wf_preField">{tmpl_var name='client_txt'}</label> + <select id="client_group_id" name="client_group_id">{tmpl_var name='client_group_id'}</select> + </span> + </tmpl_if> + <tmpl_if name="DOMAIN_VISIBLE"> + <span class="wf_oneField"> + <label for="domain" class="wf_preField">{tmpl_var name='domain_txt'}</label> + <input type="text" id="domain" name="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255"> + </span> + </tmpl_if> + <tmpl_if name="IP_VISIBLE"> + <span class="wf_oneField"> + <label for="ip" class="wf_preField">{tmpl_var name='ip_txt'}</label> + <input type="text" id="ip" name="ip" value="{tmpl_var name='ip'}" size="30" maxlength="255"> + </span> + </tmpl_if> + <tmpl_if name="NS1_VISIBLE"> + <span class="wf_oneField"> + <label for="ns1" class="wf_preField">{tmpl_var name='ns1_txt'}</label> + <input type="text" id="ns1" name="ns1" value="{tmpl_var name='ns1'}" size="30" maxlength="255"> + </span> + </tmpl_if> + <tmpl_if name="NS2_VISIBLE"> + <span class="wf_oneField"> + <label for="ns2" class="wf_preField">{tmpl_var name='ns2_txt'}</label> + <input type="text" id="ns2" name="ns2" value="{tmpl_var name='ns2'}" size="30" maxlength="255"> + </span> + </tmpl_if> + <tmpl_if name="EMAIL_VISIBLE"> + <span class="wf_oneField"> + <label for="email" class="wf_preField">{tmpl_var name='email_txt'}</label> + <input type="text" id="email" name="email" value="{tmpl_var name='email'}" size="30" maxlength="255"> + </span> + </tmpl_if> + <div class="wf_actions buttons"> + <input type="hidden" name="create" value="0" /> + <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" name="btn_create" onClick="document.pageForm.create.value=1; submitForm('pageForm','dns/dns_wizard.php');"><span>{tmpl_var name='btn_save_txt'}</span></button> + <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('dns/dns_wizard.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button> + </div> + </fieldset> + </div> + +</div> -- GitLab