From 81d79a79e4b29e9314b64b2e4c49b48ae8319767 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 11 Oct 2011 08:50:45 -0400
Subject: [PATCH] - WebDAV Users: show only domains that run on Apache (because nginx does not have full WebDAV support).

---
 interface/lib/classes/remoting_lib.inc.php |  176 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 119 insertions(+), 57 deletions(-)

diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php
index 71b09fc..8f001cd 100644
--- a/interface/lib/classes/remoting_lib.inc.php
+++ b/interface/lib/classes/remoting_lib.inc.php
@@ -140,36 +140,39 @@
 		//* Load the user profile
 		function loadUserProfile($client_id = 0) {
 			global $app,$conf;
-			
+
 			$client_id = intval($client_id);
-			
+            
 			if($client_id == 0) {
-				$this->sys_username 		= 'admin';
-				$this->sys_userid			= 1;
-				$this->sys_default_group 	= 1;
-				$this->sys_groups			= 1;
+				$this->sys_username         = 'admin';
+				$this->sys_userid            = 1;
+				$this->sys_default_group     = 1;
+				$this->sys_groups            = 1;
+				$_SESSION["s"]["user"]["typ"] = 'admin';
 			} else {
-				//* Load the client data
-				$client = $app->db->queryOneRecord("SELECT username FROM client WHERE client_id = $client_id");
-				if($client["username"] == '') {
-					$this->errorMessage .= 'No client with ID $client_id found.';
-					return false;
-				}
-				//* load system user
-				$user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE username = '".$app->db->quote($client["username"])."'");
+				//* load system user - try with sysuser and before with userid (workarrond)
+				/*
+				$user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE sysuser_id = $client_id");
 				if(empty($user["userid"])) {
-					$this->errorMessage .= 'No user with the username '.$client['username'].' found.';
-					return false;
-				}
-				$this->sys_username 		= $user['username'];
-				$this->sys_userid			= $user['userid'];
-				$this->sys_default_group 	= $user['default_group'];
-				$this->sys_groups 			= $user['groups'];
+						$user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE userid = $client_id");		
+						if(empty($user["userid"])) {
+								$this->errorMessage .= "No sysuser with the ID $client_id found.";
+								return false;
+						}
+				}*/
+				
+				$user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE client_id = $client_id");
+				$this->sys_username         = $user['username'];
+				$this->sys_userid            = $user['userid'];
+				$this->sys_default_group     = $user['default_group'];
+				$this->sys_groups             = $user['groups'];
+				// $_SESSION["s"]["user"]["typ"] = $user['typ'];
+				// we have to force admin priveliges for the remoting API as some function calls might fail otherwise.
+				$_SESSION["s"]["user"]["typ"] = 'admin';
 			}
-			
-			return true;
-			
-		}
+
+		return true;
+	    }  
 
 
         /**
@@ -191,9 +194,16 @@
                                         $new_record[$key] = stripslashes($record[$key]);
                                 break;
 
-                                case 'DATE':
+                                case 'DATETSTAMP':
                                         if($record[$key] > 0) {
                                                 $new_record[$key] = date($this->dateformat,$record[$key]);
+                                        }
+                                break;
+								
+								case 'DATE':
+                                        if($record[$key] != '' && $record[$key] != '0000-00-00') {
+												$tmp = explode('-',$record[$key]);
+                                                $new_record[$key] = date($this->dateformat,mktime(0, 0, 0, $tmp[1]  , $tmp[2], $tmp[0]));
                                         }
                                 break;
 
@@ -305,12 +315,30 @@
                                                 $new_record[$key] = implode($field['separator'],$record[$key]);
                                         }
                                 break;
-                                case 'DATE':
+                                case 'DATETSTAMP':
                                         if($record[$key] > 0) {
                                                 list($tag,$monat,$jahr) = explode('.',$record[$key]);
                                                 $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
                                         } else {
 											$new_record[$key] = 0;
+										}
+                                break;
+								case 'DATE':
+                                        if($record[$key] != '' && $record[$key] != '0000-00-00') {
+												if(function_exists('date_parse_from_format')) {
+													$date_parts = date_parse_from_format($this->dateformat,$record[$key]);
+													//list($tag,$monat,$jahr) = explode('.',$record[$key]);
+													$new_record[$key] = $date_parts['year'].'-'.$date_parts['month'].'-'.$date_parts['day'];
+													//$tmp = strptime($record[$key],$this->dateformat);
+													//$new_record[$key] = ($tmp['tm_year']+1900).'-'.($tmp['tm_mon']+1).'-'.$tmp['tm_mday'];
+												} else {
+													//$tmp = strptime($record[$key],$this->dateformat);
+													//$new_record[$key] = ($tmp['tm_year']+1900).'-'.($tmp['tm_mon']+1).'-'.$tmp['tm_mday'];
+													$tmp = strtotime($record[$key]);
+													$new_record[$key] = date('Y-m-d',$tmp);
+												}
+                                        } else {
+											$new_record[$key] = '0000-00-00';
 										}
                                 break;
                                 case 'INTEGER':
@@ -323,6 +351,18 @@
                                 break;
                                 case 'CURRENCY':
                                         $new_record[$key] = str_replace(",",".",$record[$key]);
+                                break;
+                                
+                                case 'DATETIME':
+                                		if (is_array($record[$key]))
+                                		{
+	                                		$filtered_values = array_map(create_function('$item','return (int)$item;'), $record[$key]);
+                                			extract($filtered_values, EXTR_PREFIX_ALL, '_dt');
+                                			
+                                			if ($_dt_day != 0 && $_dt_month != 0 && $_dt_year != 0) {
+	                                			$new_record[$key] = date( 'Y-m-d H:i:s', mktime($_dt_hour, $_dt_minute, $_dt_second, $_dt_month, $_dt_day, $_dt_year) );
+	                                		}
+                                		}
                                 break;
                                 }
 
@@ -373,7 +413,7 @@
                                         }
                                 break;
                                 case 'UNIQUE':
-                                        if($this->action == 'NEW') {
+                                        if($this->action == 'INSERT') {
                                                 $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'");
                                                 if($num_rec["number"] > 0) {
                                                         $errmsg = $validator['errmsg'];
@@ -490,13 +530,7 @@
                                                 if($field['formtype'] == 'PASSWORD') {
                                                         $sql_insert_key .= "`$key`, ";
                                                         if($field['encryption'] == 'CRYPT') {
-                                                                $salt="$1$";
-																for ($n=0;$n<8;$n++) {
-																	$salt.=chr(mt_rand(64,126));
-																}
-																$salt.="$";
-																// $salt = substr(md5(time()),0,2);
-																$record[$key] = crypt($record[$key],$salt);
+                                                                $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
                                                         } else {
                                                                 $record[$key] = md5($record[$key]);
                                                         }
@@ -517,13 +551,7 @@
                                         } else {
                                                 if($field['formtype'] == 'PASSWORD') {
 														if($field['encryption'] == 'CRYPT') {
-                                                                $salt="$1$";
-																for ($n=0;$n<8;$n++) {
-																	$salt.=chr(mt_rand(64,126));
-																}
-																$salt.="$";
-																// $salt = substr(md5(time()),0,2);
-																$record[$key] = crypt($record[$key],$salt);
+                                                                $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
                                                         } else {
                                                                 $record[$key] = md5($record[$key]);
                                                         }
@@ -615,7 +643,7 @@
 				}
 				$sql_where = substr($sql_where,0,-5);
 				$sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$sql_where;
-            	return $app->db->queryOneRecord($sql);
+				return $app->db->queryAllRecords($sql);
 			} else {
 				$this->errorMessage = 'The ID must be either an integer or an array.';
 				return array();
@@ -624,25 +652,63 @@
 			
 		}
 
-		function dodaj_usera($params,$insert_id){
-			global $app,$sql1;
-			$username = $params["username"];
-			$password = $params["password"];
-			$modules = 'mail,sites,dns,tools';
-			$startmodule = 'mail';
-			$usertheme = $params["usertheme"];
+		function ispconfig_sysuser_add($params,$insert_id){
+			global $conf,$app,$sql1;
+			$username = $app->db->quote($params["username"]);
+			$password = $app->db->quote($params["password"]);
+			if(!isset($params['modules'])) {
+				$modules = $conf['interface_modules_enabled'];
+			} else {
+				$modules = $app->db->quote($params['modules']);
+			}
+			if(!isset($params['startmodule'])) {			
+				$startmodule = 'dashboard';
+			} else {						
+				$startmodule = $app->db->quote($params["startmodule"]);
+				if(!preg_match('/'.$startmodule.'/',$modules)) {
+					$_modules = explode(',',$modules);
+					$startmodule=$_modules[0];
+				}
+			}
+			$usertheme = $app->db->quote($params["usertheme"]);
 			$type = 'user';
 			$active = 1;
-			$language = $params["language"];
+			$insert_id = intval($insert_id);
+			$language = $app->db->quote($params["language"]);
 			$groupid = $app->db->datalogInsert('sys_group', "(name,description,client_id) VALUES ('$username','','$insert_id')", 'groupid');
 			$groups = $groupid;
+			$password = $app->auth->crypt_password(stripslashes($password));
 			$sql1 = "INSERT INTO sys_user (username,passwort,modules,startmodule,app_theme,typ,active,language,groups,default_group,client_id)
-			VALUES ('$username',md5('$password'),'$modules','$startmodule','$usertheme','$type','$active','$language',$groups,$groupid,$insert_id)";
+			VALUES ('$username','$password','$modules','$startmodule','$usertheme','$type','$active','$language',$groups,$groupid,$insert_id)";
 			$app->db->query($sql1);
+		}
+		
+		function ispconfig_sysuser_update($params,$client_id){
+			global $app;
+			$username = $app->db->quote($params["username"]);
+			$clear_password = $app->db->quote($params["password"]);
+			$client_id = intval($client_id);
+			$password = $app->auth->crypt_password(stripslashes($clear_password));
+			if ($clear_password) $pwstring = ", passwort = '$password'"; else $pwstring ="" ;
+			$sql = "UPDATE sys_user set username = '$username' $pwstring WHERE client_id = $client_id";
+			$app->db->query($sql);
+		}
+		
+		function ispconfig_sysuser_delete($client_id){
+			global $app;
+			$client_id = intval($client_id);
+			$sql = "DELETE FROM sys_user WHERE client_id = $client_id";
+			$app->db->query($sql);
+			$sql = "DELETE FROM sys_group WHERE client_id = $client_id";
+			$app->db->query($sql);
 		}
 
         function datalogSave($action,$primary_id, $record_old, $record_new) {
                 global $app,$conf;
+				
+				$app->db->datalogSave($this->formDef['db_table'], $action, $this->formDef['db_table_idx'], $primary_id, $record_old, $record_new);
+				return true;
+				/*
 
                 if(stristr($this->formDef['db_table'],'.')) {
                         $escape = '';
@@ -699,11 +765,6 @@
                         }
                 }
 				
-				/*
-				echo "<pre>";
-				print_r($diffrec_full);
-				echo "</pre>";
-				*/
 				
 				// Insert the server_id, if the record has a server_id
 				$server_id = (isset($record_old["server_id"]) && $record_old["server_id"] > 0)?$record_old["server_id"]:0;
@@ -723,6 +784,7 @@
                 }
 
                 return true;
+				*/
 
         }
 

--
Gitblit v1.9.1