From a7069883ae7d838f8144589c25df61f45d983572 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Fri, 9 Sep 2011 13:58:13 +0000 Subject: [PATCH] - Added new fields to serverIP list and form. - Added a new IP validator to the tform library which validates IPv4 and IPv6 addresses. --- interface/lib/classes/tform.inc.php | 30 +++++++++++++ interface/web/admin/form/server_ip.tform.php | 30 ++++++++++++- interface/web/admin/lib/lang/en_server_ip.lng | 3 ++ .../web/admin/lib/lang/en_server_ip_list.lng | 4 ++ interface/web/admin/list/server_ip.list.php | 42 ++++++++++++++++++- .../web/admin/templates/server_ip_edit.htm | 22 ++++++++-- .../web/admin/templates/server_ip_list.htm | 17 ++++++-- 7 files changed, 140 insertions(+), 8 deletions(-) diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index e58af0dfa0..dbaf686e11 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -805,6 +805,36 @@ class tform { $this->errorMessage .= $errmsg."<br />\r\n"; } } + break; + case 'ISIP': + //* Check if its a IPv4 or IPv6 address + if(function_exists('filter_var')) { + if(!filter_var($field_value,FILTER_VALIDATE_IP)) { + $errmsg = $validator['errmsg']; + if(isset($this->wordbook[$errmsg])) { + $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n"; + } else { + $this->errorMessage .= $errmsg."<br />\r\n"; + } + } + } else { + //* Check content with regex, if we use php < 5.2 + $ip_ok = 0; + if(preg_match("/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i", $field_value)){ + $ip_ok = 1; + } + if(preg_match("/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/", $field_value)){ + $ip_ok = 1; + } + if($ip_ok == 0) { + $errmsg = $validator['errmsg']; + if(isset($this->wordbook[$errmsg])) { + $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n"; + } else { + $this->errorMessage .= $errmsg."<br />\r\n"; + } + } + } break; case 'CUSTOM': // Calls a custom class to validate this record diff --git a/interface/web/admin/form/server_ip.tform.php b/interface/web/admin/form/server_ip.tform.php index 62851daa03..2832efbc4b 100644 --- a/interface/web/admin/form/server_ip.tform.php +++ b/interface/web/admin/form/server_ip.tform.php @@ -95,10 +95,27 @@ $form["tabs"]['server_ip'] = array ( ), 'value' => '' ), + 'client_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT client_id,contact_name FROM client WHERE {AUTHSQL} ORDER BY contact_name', + 'keyfield'=> 'client_id', + 'valuefield'=> 'contact_name' + ), + 'value' => array(0 => ' ') + ), + 'ip_type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('IPv4' => 'IPv4', 'IPv6' => 'IPv6') + ), 'ip_address' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'ISIPV4', + 'validators' => array ( 0 => array ( 'type' => 'ISIP', 'errmsg'=> 'ip_error_wrong'), 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'ip_error_unique'), @@ -117,6 +134,17 @@ $form["tabs"]['server_ip'] = array ( 'default' => 'y', 'value' => array(0 => 'n',1 => 'y') ), + 'virtualhost_port' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'separator' => '', + 'width' => '15', + 'maxlength' => '15', + 'rows' => '', + 'cols' => '' + ), ################################## # ENDE Datenbankfelder ################################## diff --git a/interface/web/admin/lib/lang/en_server_ip.lng b/interface/web/admin/lib/lang/en_server_ip.lng index ae4717c538..f67e8e82cb 100644 --- a/interface/web/admin/lib/lang/en_server_ip.lng +++ b/interface/web/admin/lib/lang/en_server_ip.lng @@ -1,7 +1,10 @@ <?php $wb["server_id_txt"] = 'Server'; +$wb["client_id_txt"] = 'Client'; +$wb["ip_type_txt"] = 'Type'; $wb["ip_address_txt"] = 'IP Address'; $wb["virtualhost_txt"] = 'HTTP NameVirtualHost'; +$wb["virtualhost_port_txt"] = 'HTTP Ports'; $wb["ip_error_wrong"] = 'The IP address is invalid'; $wb["ip_error_unique"] = 'The IP address must be unique'; ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_server_ip_list.lng b/interface/web/admin/lib/lang/en_server_ip_list.lng index 008dfc4e00..489967b20e 100644 --- a/interface/web/admin/lib/lang/en_server_ip_list.lng +++ b/interface/web/admin/lib/lang/en_server_ip_list.lng @@ -1,6 +1,10 @@ <?php $wb["list_head_txt"] = 'IP Addresses'; $wb["server_id_txt"] = 'Server'; +$wb["client_id_txt"] = 'Client'; $wb["ip_address_txt"] = 'IP Address'; $wb["add_new_record_txt"] = 'Add new IP Address'; +$wb["virtualhost_txt"] = 'HTTP Vhost'; +$wb["virtualhost_port_txt"] = 'HTTP Ports'; +$wb["ip_type_txt"] = 'Type'; ?> \ No newline at end of file diff --git a/interface/web/admin/list/server_ip.list.php b/interface/web/admin/list/server_ip.list.php index d589a63bb8..10001fb114 100644 --- a/interface/web/admin/list/server_ip.list.php +++ b/interface/web/admin/list/server_ip.list.php @@ -1,4 +1,4 @@ -<?php +<?php /* Datatypes: - INTEGER @@ -58,6 +58,29 @@ $liste['item'][] = array( 'field' => 'server_id', 'width' => '', 'value' => ''); +$liste['item'][] = array( 'field' => 'client_id', + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'op' => 'like', + 'prefix' => '%', + 'suffix' => '%', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT client_id,contact_name FROM client WHERE {AUTHSQL} ORDER BY contact_name', + 'keyfield'=> 'client_id', + 'valuefield'=> 'contact_name' + ), + 'width' => '', + 'value' => ''); + +$liste['item'][] = array( 'field' => 'ip_type', + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'op' => '=', + 'prefix' => '', + 'suffix' => '', + 'width' => '', + 'value' => array('IPv4' => 'IPv4', 'IPv6' => 'IPv6')); + $liste['item'][] = array( 'field' => 'ip_address', 'datatype' => 'VARCHAR', 'op' => '=', @@ -65,4 +88,21 @@ $liste['item'][] = array( 'field' => 'ip_address', 'suffix' => '', 'width' => ''); +$liste["item"][] = array( 'field' => "virtualhost", + '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' => 'virtualhost_port', + 'datatype' => 'VARCHAR', + 'op' => '=', + 'prefix' => '', + 'suffix' => '', + 'width' => ''); + ?> \ No newline at end of file diff --git a/interface/web/admin/templates/server_ip_edit.htm b/interface/web/admin/templates/server_ip_edit.htm index 87e3d4bb77..513a32f058 100644 --- a/interface/web/admin/templates/server_ip_edit.htm +++ b/interface/web/admin/templates/server_ip_edit.htm @@ -2,18 +2,30 @@ <p><tmpl_var name="list_desc_txt"></p> <div class="panel panel_server_ip"> - + <div class="pnl_formsarea"> - <fieldset class="inlineLabels"> + <fieldset class="inlineLabels"><legend>IP Address</legend> <div class="ctrlHolder"> <label for="server_id">{tmpl_var name='server_id_txt'}</label> <select name="server_id" id="server_id" class="selectInput"> {tmpl_var name='server_id'} </select> </div> + <div class="ctrlHolder"> + <label for="client_id">{tmpl_var name='client_id_txt'}</label> + <select name="client_id" id="client_id" class="selectInput"> + {tmpl_var name='client_id'} + </select> + </div> + <div class="ctrlHolder"> + <label for="ip_type">{tmpl_var name='ip_type_txt'}</label> + <select name="ip_type" id="ip_type" class="selectInput"> + {tmpl_var name='ip_type'} + </select> + </div> <div class="ctrlHolder"> <label for="ip_address">{tmpl_var name='ip_address_txt'}</label> - <input name="ip_address" id="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="15" type="text" class="textInput formLengthIPv4" /> + <input name="ip_address" id="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="255" type="text" class="textInput" /> </div> <div class="ctrlHolder"> <p class="label">{tmpl_var name='virtualhost_txt'}</p> @@ -21,6 +33,10 @@ {tmpl_var name='virtualhost'} </div> </div> + <div class="ctrlHolder"> + <label for="virtualhost_port">{tmpl_var name='virtualhost_port_txt'}</label> + <input name="virtualhost_port" id="virtualhost_port" value="{tmpl_var name='virtualhost_port'}" size="15" maxlength="15" type="text" class="textInput" /> + </div> </fieldset> <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/admin/templates/server_ip_list.htm b/interface/web/admin/templates/server_ip_list.htm index 67e03fc9b1..03e1be12b9 100644 --- a/interface/web/admin/templates/server_ip_list.htm +++ b/interface/web/admin/templates/server_ip_list.htm @@ -1,5 +1,4 @@ <h2><tmpl_var name="list_head_txt"></h2> -<p><tmpl_var name="list_desc_txt"></p> <div class="panel panel_list_server_ip"> @@ -19,12 +18,20 @@ <thead> <tr> <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th> + <th class="tbl_col_client_id" scope="col"><tmpl_var name="client_id_txt"></th> + <th class="tbl_col_ip_type" scope="col"><tmpl_var name="ip_type_txt"></th> <th class="tbl_col_ip_address" scope="col"><tmpl_var name="ip_address_txt"></th> + <th class="tbl_col_virtualhost" scope="col"><tmpl_var name="virtualhost_txt"></th> + <th class="tbl_col_virtualhost_port" scope="col"><tmpl_var name="virtualhost_port_txt"></th> <th class="tbl_col_buttons" scope="col"> </th> </tr> <tr> <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','admin/server_ip_list.php');">{tmpl_var name='search_server_id'}</select></td> - <td class="tbl_col_ip_address"><input type="text" name="search_ip_address" value="{tmpl_var name='search_ip_address'}" onblur="submitForm('pageForm','admin/server_ip_list.php');" /></td> + <td class="tbl_col_client_id"><select name="search_client_id" onChange="submitForm('pageForm','admin/server_ip_list.php');">{tmpl_var name='search_client_id'}</select></td> + <td class="tbl_col_ip_type"><select name="search_ip_type" onChange="submitForm('pageForm','admin/server_ip_list.php');">{tmpl_var name='search_ip_type'}</select></td> + <td class="tbl_col_ip_address"><input type="text" name="search_ip_address" value="{tmpl_var name='search_ip_address'}" /></td> + <td class="tbl_col_virtualhost"><select name="search_virtualhost" onChange="submitForm('pageForm','admin/server_ip_list.php');">{tmpl_var name='search_virtualhost'}</select></td> + <td class="tbl_col_virtualhost_port"><input type="text" name="search_virtualhost_port" value="{tmpl_var name='search_virtualhost_port'}" /></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','admin/server_ip_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td> </tr> </thead> @@ -32,7 +39,11 @@ <tmpl_loop name="records"> <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> <td class="tbl_col_server_id"><a href="#" onClick="loadContent('admin/server_ip_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td> + <td class="tbl_col_client_id"><a href="#" onClick="loadContent('admin/server_ip_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="client_id"}</a></td> + <td class="tbl_col_ip_type"><a href="#" onClick="loadContent('admin/server_ip_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="ip_type"}</a></td> <td class="tbl_col_ip_address"><a href="#" onClick="loadContent('admin/server_ip_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="ip_address"}</a></td> + <td class="tbl_col_virtualhost"><a href="#" onClick="loadContent('admin/server_ip_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="virtualhost"}</a></td> + <td class="tbl_col_virtualhost_port"><a href="#" onClick="loadContent('admin/server_ip_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="virtualhost_port"}</a></td> <td class="tbl_col_buttons"> <div class="buttons icons16"> <a class="icons16 icoDelete" href="javascript: del_record('admin/server_ip_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> @@ -43,7 +54,7 @@ </tbody> <tfoot> <tr> - <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td> + <td class="tbl_footer tbl_paging" colspan="7"><tmpl_var name="paging"></td> </tr> </tfoot> </table> -- GitLab