From 37b29231e47a0c4458dc1c15d98588f16f07e1e2 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Thu, 06 Aug 2015 03:18:44 -0400
Subject: [PATCH] - don't set password via remoting if field is empty

---
 server/lib/app.inc.php |  221 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 148 insertions(+), 73 deletions(-)

diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php
old mode 100644
new mode 100755
index dd52be1..dd8be5a
--- a/server/lib/app.inc.php
+++ b/server/lib/app.inc.php
@@ -1,6 +1,7 @@
 <?php
+
 /*
-Copyright (c) 2006, Till Brehm, projektfarm Gmbh
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -27,102 +28,176 @@
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+//* Set timezone
+if(isset($conf['timezone']) && $conf['timezone'] != '') date_default_timezone_set($conf['timezone']);
+
 class app {
+
+	var $loaded_modules = array();
+	var $loaded_plugins = array();
+	var $_calling_script = '';
+
+	function __construct() {
+
+		global $conf;
+
+		if($conf['start_db'] == true) {
+			$this->load('db_'.$conf['db_type']);
+			$this->db = new db;
+
+			/*
+					Initialize the connection to the master DB,
+					if we are in a multiserver setup
+					*/
+
+			if($conf['dbmaster_host'] != '' && ($conf['dbmaster_host'] != $conf['db_host'] || ($conf['dbmaster_host'] == $conf['db_host'] && $conf['dbmaster_database'] != $conf['db_database']))) {
+				$this->dbmaster = new db($conf['dbmaster_host'], $conf['dbmaster_user'], $conf['dbmaster_password'], $conf['dbmaster_database'], $conf['dbmaster_port']);
+			} else {
+				$this->dbmaster = $this->db;
+			}
+
+
+		}
+
+	}
+
+	function setCaller($caller) {
+		$this->_calling_script = $caller;
+	}
+	
+	function getCaller() {
+		return $this->_calling_script;
+	}
+	
+	function forceErrorExit($errmsg = 'undefined') {
+		global $conf;
 		
-		var $loaded_modules = array();
-		var $loaded_plugins = array();
-        
-		function app() {
+		if($this->_calling_script == 'server') {
+			@unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_lock');
+		}
+		die('Exiting because of error: ' . $errmsg);
+	}
 
-                global $conf;
+	function uses($classes) {
 
-                if($conf["start_db"] == true) {
-                	$this->load('db_'.$conf["db_type"]);
-                	$this->db = new db;
-                }
+		global $conf;
 
-        }
-
-        function uses($classes) {
-			global $conf;
-
-			$cl = explode(',',$classes);
-			if(is_array($cl)) {
-				foreach($cl as $classname) {
-					if(!is_object($this->$classname)) {
-						if(is_file($conf['classpath'] . "/".$classname.".inc.php") && !is_link($conf['classpath'] . "/".$classname.".inc.php")) {
-							include_once($conf['classpath'] . "/".$classname.".inc.php");
-							$this->$classname = new $classname;
-						}
+		$cl = explode(',', $classes);
+		if(is_array($cl)) {
+			foreach($cl as $classname) {
+				if(!@is_object($this->$classname)) {
+					if(is_file($conf['classpath'].'/'.$classname.'.inc.php') && (DEVSYSTEM ||  !is_link($conf['classpath'].'/'.$classname.'.inc.php'))) {
+						include_once $conf['classpath'].'/'.$classname.'.inc.php';
+						$this->$classname = new $classname;
 					}
 				}
 			}
-        }
+		}
+	}
 
-        function load($classes) {
+	function load($classes) {
 
-            global $conf;
-            $cl = explode(',',$classes);
-			if(is_array($cl)) {
-				foreach($cl as $classname) {
-					if(is_file($conf['classpath'] . "/".$classname.".inc.php") && !is_link($conf['classpath'] . "/".$classname.".inc.php")) {
-						include_once($conf['classpath'] . "/".$classname.".inc.php");
-					} else {
-						die('Unable to load: '.$conf['classpath'] . "/".$classname.".inc.php");
-					}
+		global $conf;
+
+		$cl = explode(',', $classes);
+		if(is_array($cl)) {
+			foreach($cl as $classname) {
+				if(is_file($conf['classpath'].'/'.$classname.'.inc.php') && (DEVSYSTEM || !is_link($conf['classpath'].'/'.$classname.'.inc.php'))) {
+					include_once $conf['classpath'].'/'.$classname.'.inc.php';
+				} else {
+					die('Unable to load: '.$conf['classpath'].'/'.$classname.'.inc.php');
 				}
 			}
-        }
+		}
+	}
 
-        /*
+	/*
          0 = DEBUG
          1 = WARNING
          2 = ERROR
         */
 
-        function log($msg, $priority = 0) {
-				
-				global $conf;
-				
-                if($priority >= $conf["log_priority"]) {
-                        //if (is_writable($conf["log_file"])) {
-                            if (!$fp = fopen ($conf["log_file"], "a")) {
-                                die("Unable to open Logfile.");
-                            }
-							switch ($priority) {
-								case 0:
-									$priority_txt = "DEBUG";
-								break;
-								case 1:
-									$priority_txt = "WARNING";
-								break;
-								case 2:
-									$priority_txt = "ERROR";
-								break;
-							}
-							
-                            if (!fwrite($fp, date("d.m.Y-H:i")." - ".$priority_txt." - ". $msg."\r\n")) {
-                                die("Unable to write to logfile.");
-                            }
-							echo date("d.m.Y-H:i")." - ".$priority_txt." - ". $msg."<br>";
-                            fclose($fp);
+	function log($msg, $priority = 0) {
 
-                        //} else {
-                        //    die("Unable to write to logfile.");
-                        //}
-                } // if
-        } // func
+		global $conf;
 
-        /*
+		switch ($priority) {
+		case 0:
+			$priority_txt = 'DEBUG';
+			break;
+		case 1:
+			$priority_txt = 'WARNING';
+			break;
+		case 2:
+			$priority_txt = 'ERROR';
+			break;
+		}
+		$log_msg = @date('d.m.Y-H:i').' - '.$priority_txt.' - '. $msg;
+
+		if($priority >= $conf['log_priority']) {
+			//if (is_writable($conf["log_file"])) {
+			if (!$fp = fopen($conf['log_file'], 'a')) {
+				die('Unable to open logfile.');
+			}
+
+			if (!fwrite($fp, $log_msg."\r\n")) {
+				die('Unable to write to logfile.');
+			}
+
+			echo $log_msg."\n";
+			fclose($fp);
+
+			// Log to database
+			if(isset($this->dbmaster)) {
+				$server_id = $conf['server_id'];
+				$loglevel = $priority;
+				$message = $msg;
+				$datalog_id = (isset($this->modules->current_datalog_id) && $this->modules->current_datalog_id > 0)?$this->modules->current_datalog_id:0;
+				if($datalog_id > 0) {
+					$tmp_rec = $this->dbmaster->queryOneRecord("SELECT count(syslog_id) as number FROM sys_log WHERE datalog_id = ? AND loglevel = ?", $datalog_id, LOGLEVEL_ERROR);
+					//* Do not insert duplicate errors into the web log.
+					if($tmp_rec['number'] == 0) {
+						$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES (?, ?, ?, UNIX_TIMESTAMP(), ?)";
+						$this->dbmaster->query($sql, $server_id, $datalog_id, $loglevel, $message);
+					}
+				} else {
+					$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES (?, 0, ?, UNIX_TIMESTAMP(), ?)";
+					$this->dbmaster->query($sql, $server_id, $loglevel, $message);
+				}
+			}
+
+			//} else {
+			//    die("Unable to write to logfile.");
+			//}
+
+
+		} // if
+
+		if(isset($conf['admin_notify_priority']) && $priority >= $conf['admin_notify_priority'] && $conf['admin_mail'] != '') {
+			// send notification to admin
+			$mailBody = $log_msg;
+			$mailSubject = substr($log_msg, 0, 50).'...';
+			$mailHeaders      = "MIME-Version: 1.0" . "\n";
+			$mailHeaders     .= "Content-type: text/plain; charset=utf-8" . "\n";
+			$mailHeaders     .= "Content-Transfer-Encoding: 8bit" . "\n";
+			$mailHeaders     .= "From: ". $conf['admin_mail'] . "\n";
+			$mailHeaders     .= "Reply-To: ". $conf['admin_mail'] . "\n";
+
+			mail($conf['admin_mail'], $mailSubject, $mailBody, $mailHeaders);
+		}
+	} // func
+
+
+	/*
          0 = DEBUG
          1 = WARNING
          2 = ERROR
         */
 
-        function error($msg) {
-        	$this->log($msg,3);
-			die($msg);
-        }
+	function error($msg) {
+		$this->log($msg, 3);
+		die($msg);
+	}
 
 }
 
@@ -132,4 +207,4 @@
 
 $app = new app;
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1