From 3eeed9bdef1040d4f1f9343201cd8b30e21d273c Mon Sep 17 00:00:00 2001
From: bpssoft <bpssoft@ispconfig3>
Date: Fri, 09 Nov 2007 06:02:50 -0500
Subject: [PATCH] * Added bruteforge protection into login * Cleanup some stuff into login/index.php like globals * Add errors to the lang files

---
 interface/lib/classes/tform.inc.php |   53 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index cc29d27..c190512 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -135,10 +135,16 @@
                 $this->formDef = $form;
 
                 $this->module = $module;
+				$wb = array();
+				
                 if($module == '') {
+					if(is_file("lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng")) {
                         include_once("lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng");
+					}
                 } else {
+					if(is_file("../$module/lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng")) {
                         include_once("../$module/lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng");
+					}
                 }
                 $this->wordbook = $wb;
 
@@ -156,7 +162,8 @@
         */
         function decode($record,$tab) {
                 if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab).");
-                if(is_array($record)) {
+                $new_record = '';
+				if(is_array($record)) {
                         foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
                                 switch ($field['datatype']) {
                                 case 'VARCHAR':
@@ -191,6 +198,7 @@
                         }
 
                 }
+				
         return $new_record;
         }
 
@@ -216,7 +224,11 @@
                         $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring);
                         $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring);
                         $table_idx = $this->formDef['db_table_idx'];
-                        $querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring);
+						
+						$tmp_recordid = (isset($record[$table_idx]))?$record[$table_idx]:0;
+                        $querystring = str_replace("{RECORDID}",$tmp_recordid,$querystring);
+						unset($tmp_recordid);
+						
                         $querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring);
 
                         // Getting the records
@@ -273,14 +285,14 @@
                                         $val = $record[$key];
 
                                         // If Datasource is set, get the data from there
-                                        if(is_array($field['datasource'])) {
+                                        if(isset($field['datasource']) && is_array($field['datasource'])) {
                                                 $field["value"] = $this->getDatasourceData($field, $record);
                                         }
 
                                         switch ($field['formtype']) {
                                         case 'SELECT':
+												$out = '';
                                                 if(is_array($field['value'])) {
-                                                        $out = '';
                                                         foreach($field['value'] as $k => $v) {
                                                                 $selected = ($k == $val)?' SELECTED':'';
                                                                 $out .= "<option value='$k'$selected>$v</option>\r\n";
@@ -362,7 +374,7 @@
                         foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
 
                                 // If Datasource is set, get the data from there
-                                if(is_array($field['datasource'])) {
+                                if(@is_array($field['datasource'])) {
                                         $field["value"] = $this->getDatasourceData($field, $record);
                                 }
 
@@ -371,8 +383,9 @@
                                         if(is_array($field['value'])) {
                                                 $out = '';
                                                 foreach($field['value'] as $k => $v) {
-                                                        $selected = ($k == $val)?' SELECTED':'';
-                                                        $out .= "<option value='$k'$selected>$v</option>\r\n";
+                                                    //$selected = ($k == $val)?' SELECTED':'';
+													$selected = '';
+                                                    $out .= "<option value='$k'$selected>$v</option>\r\n";
                                                 }
                                         }
                                         $new_record[$key] = $out;
@@ -464,12 +477,12 @@
                 if(is_array($record)) {
                         foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
 
-                                if(is_array($field['validators'])) $this->validateField($key, $record[$key], $field['validators']);
+                                if(isset($field['validators']) && is_array($field['validators'])) $this->validateField($key, (isset($record[$key]))?$record[$key]:'', $field['validators']);
 
                                 switch ($field['datatype']) {
                                 case 'VARCHAR':
-                                        if(!is_array($record[$key])) {
-                                                $new_record[$key] = addslashes($record[$key]);
+                                        if(!@is_array($record[$key])) {
+                                                $new_record[$key] = (isset($record[$key]))?addslashes($record[$key]):'';
                                         } else {
                                                 $new_record[$key] = implode($field['separator'],$record[$key]);
                                         }
@@ -490,7 +503,7 @@
 										}
                                 break;
                                 case 'INTEGER':
-                                        $new_record[$key] = intval($record[$key]);
+                                        $new_record[$key] = (isset($record[$key]))?intval($record[$key]):0;
                                         //if($new_record[$key] != $record[$key]) $new_record[$key] = $field['default'];
                                         //if($key == 'refresh') die($record[$key]);
                                 break;
@@ -503,7 +516,7 @@
                                 }
 
                                 // The use of the field value is deprecated, use validators instead
-                                if($field['regex'] != '') {
+                                if(isset($field['regex']) && $field['regex'] != '') {
                                         // Enable that "." matches also newlines
                                         $field['regex'] .= 's';
                                         if(!preg_match($field['regex'], $record[$key])) {
@@ -530,6 +543,8 @@
         function validateField($field_name, $field_value, $validators) {
 
                 global $app;
+				
+				$escape = '`';
 				
                 // loop trough the validators
                 foreach($validators as $validator) {
@@ -845,6 +860,7 @@
 
 		function getDataRecord($primary_id) {
 			global $app;
+			$escape = '`';
 			$sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id;
             return $app->db->queryOneRecord($sql);
 		}
@@ -873,9 +889,9 @@
 				
                 if(is_array($record_new) && count($record_new) > 0) {
                         foreach($record_new as $key => $val) {
-                                if($record_old[$key] != $val) {
+                                if(@$record_old[$key] != $val) {
 										// Record has changed
-                                        $diffrec[$key] = array('old' => $record_old[$key],
+                                        $diffrec[$key] = array('old' => @$record_old[$key],
                                                                'new' => $val);
                                 }
                         }
@@ -925,7 +941,7 @@
 				*/
 				
 				// Insert the server_id, if the record has a server_id
-				$server_id = ($record_old["server_id"] > 0)?$record_old["server_id"]:0;
+				$server_id = (isset($record_old["server_id"]) && $record_old["server_id"] > 0)?$record_old["server_id"]:0;
 				if(isset($record_new["server_id"])) $server_id = $record_new["server_id"];
 
                 if(count($this->diffrec) > 0) {
@@ -949,9 +965,10 @@
 				if($_SESSION["s"]["user"]["typ"] == 'admin') {
 					return '1';
 				} else {
-                	$sql = '(';
+                	$groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
+					$sql = '(';
                 	$sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR  ";
-                	$sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR ";
+                	$sql .= "(sys_groupid IN (".$groups.") AND sys_perm_group like '%$perm%') OR ";
                 	$sql .= "sys_perm_other like '%$perm%'";
                 	$sql .= ')';
 
@@ -999,7 +1016,7 @@
                 // Welcher Tab wird angezeigt
                 if($this->errorMessage == '') {
                     // wenn kein Fehler vorliegt
-                        if($_REQUEST["next_tab"] != '') {
+                    if(isset($_REQUEST["next_tab"]) && $_REQUEST["next_tab"] != '') {
                                 // wenn n�chster Tab bekannt
                                 $active_tab = $_REQUEST["next_tab"];
                     } else {

--
Gitblit v1.9.1