From afee192d2a77afa1c11d25156d0a44df94e19aed Mon Sep 17 00:00:00 2001
From: A. Täffner <darkalex@firesplash.de>
Date: Sat, 23 Jan 2016 07:30:37 -0500
Subject: [PATCH] fixed the cronjob and noticed a bug in ISPC but not able to report as FlySpray is offline

---
 server/lib/classes/file.inc.php |  512 ++++++++++++++++++++++++++------------------------------
 1 files changed, 242 insertions(+), 270 deletions(-)

diff --git a/server/lib/classes/file.inc.php b/server/lib/classes/file.inc.php
index e0bd12f..eadb38b 100644
--- a/server/lib/classes/file.inc.php
+++ b/server/lib/classes/file.inc.php
@@ -1,6 +1,7 @@
 <?php
+
 /*
-Copyright (c) 2007, projektfarm Gmbh, Till Brehm, Falko Timme
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -27,293 +28,264 @@
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-
 class file{
 
-function rf($file){
-  global $app;
-  clearstatcache();
-  if(!$fp = fopen ($file, "rb")){
-    $app->log("WARNING: could not open file ".$file, 2);
-    return false;
-  } else {
-    if(filesize($file) > 0){
-      $content = fread($fp, filesize($file));
-    } else {
-      $content = "";
-    }
-    fclose($fp);
-    return $content;
-  }
-}
+	function rf($file){
+		global $app;
+		clearstatcache();
+		if(!$fp = fopen($file, 'rb')){
+			$app->log('WARNING: Could not open file '.$file, 2);
+			return false;
+		} else {
+			if(filesize($file) > 0){
+				$content = fread($fp, filesize($file));
+			} else {
+				$content = '';
+			}
+			fclose($fp);
+			return $content;
+		}
+	}
 
-function wf($file, $content){
-  global $app;
-  $this->mkdirs(dirname($file));
-  if(!$fp = fopen ($file, "wb")){
-    $app->log("WARNING: could not open file ".$file, 2);
-    return false;
-  } else {
-    fwrite($fp,$content);
-    fclose($fp);
-    return true;
-  }
-}
+	function wf($file, $content){
+		global $app;
+		$this->mkdirs(dirname($file));
+		if(!$fp = fopen($file, 'wb')){
+			$app->log('WARNING: Could not open file '.$file, 2);
+			return false;
+		} else {
+			fwrite($fp, $content);
+			fclose($fp);
+			return true;
+		}
+	}
 
-function af($file, $content){
-  global $app;
-  $this->mkdirs(dirname($file));
-  if(!$fp = fopen ($file, "ab")){
-    $app->log("WARNING: could not open file ".$file, 2);
-    return false;
-  } else {
-    fwrite($fp,$content);
-    fclose($fp);
-    return true;
-  }
-}
+	function af($file, $content){
+		global $app;
+		$this->mkdirs(dirname($file));
+		if(!$fp = fopen($file, 'ab')){
+			$app->log('WARNING: Could not open file '.$file, 2);
+			return false;
+		} else {
+			fwrite($fp, $content);
+			fclose($fp);
+			return true;
+		}
+	}
 
-function no_comments($file, $comment = '#'){
-  $content = $this->unix_nl($this->rf($file));
-  $lines = explode("\n", $content);
-  if(!empty($lines)){
-    foreach($lines as $line){
-      if(strstr($line, $comment)){
-        $pos = strpos($line, $comment);
-        if($pos != 0){
-          $new_lines[] = substr($line,0,$pos);
-        } else {
-          $new_lines[] = "";
-        }
-      } else {
-        $new_lines[] = $line;
-      }
-    }
-  }
-  if(is_array($new_lines)){
-    $content_without_comments = implode("\n", $new_lines);
-    $new_lines = NULL;
-    return $content_without_comments;
-  } else {
-    return "";
-  }
-}
+	function no_comments($file, $comment = '#'){
+		$content = $this->unix_nl($this->rf($file));
+		$lines = explode("\n", $content);
+		if(!empty($lines)){
+			foreach($lines as $line){
+				if(strstr($line, $comment)){
+					$pos = strpos($line, $comment);
+					if($pos != 0){
+						$new_lines[] = substr($line, 0, $pos);
+					} else {
+						$new_lines[] = '';
+					}
+				} else {
+					$new_lines[] = $line;
+				}
+			}
+		}
+		if(is_array($new_lines)){
+			$content_without_comments = implode("\n", $new_lines);
+			$new_lines = NULL;
+			return $content_without_comments;
+		} else {
+			return '';
+		}
+	}
 
-function manual_entries($file, $separator = '#### MAKE MANUAL ENTRIES BELOW THIS LINE! ####'){
-  if(is_file($file)){
-    $content = $this->rf($file);
-    $parts = explode($separator, $content);
-    $manual = "\n".trim($parts[1]);
-    return $manual;
-  } else {
-    return "";
-  }
-}
+	function manual_entries($file, $separator = '#### MAKE MANUAL ENTRIES BELOW THIS LINE! ####'){
+		if(is_file($file)){
+			$content = $this->rf($file);
+			$parts = explode($separator, $content);
+			$manual = "\n".trim($parts[1]);
+			return $manual;
+		} else {
+			return '';
+		}
+	}
 
-function remove_blank_lines($input, $file = 1){
-  //Leerzeilen l�schen
-  if($file){
-    $content = $this->unix_nl($this->rf($input));
-  } else {
-    $content = $input;
-  }
-  $lines = explode("\n", $content);
-  if(!empty($lines)){
-    foreach($lines as $line){
-      if(trim($line) != "") $new_lines[] = $line;
-    }
-  }
-  if(is_array($new_lines)){
-    $content = implode("\n", $new_lines);
-  } else {
-    $content = "";
-  }
-  if($file){
-    $this->wf($input, $content);
-  } else {
-    return $content;
-  }
-}
+	function remove_blank_lines($input, $file = 1){
+		//Leerzeilen löschen
+		if($file){
+			$content = $this->unix_nl($this->rf($input));
+		} else {
+			$content = $input;
+		}
+		$lines = explode("\n", $content);
+		if(!empty($lines)){
+			foreach($lines as $line){
+				if(trim($line) != '') $new_lines[] = $line;
+			}
+		}
+		if(is_array($new_lines)){
+			$content = implode("\n", $new_lines);
+		} else {
+			$content = '';
+		}
+		if($file){
+			$this->wf($input, $content);
+		} else {
+			return $content;
+		}
+	}
 
-function unix_nl($input){
-  $output = str_replace("\r\n", "\n", $input);
-  $output = str_replace("\r", "\n", $output);
-  return $output;
-}
+	function unix_nl($input){
+		$output = str_replace("\r\n", "\n", $input);
+		$output = str_replace("\r", "\n", $output);
+		return $output;
+	}
 
-function fileowner($file){
-  $owner_id = fileowner($file);
-  clearstatcache();
-  return $owner_id;
-}
+	function fileowner($file){
+		$owner_id = fileowner($file);
+		clearstatcache();
+		return $owner_id;
+	}
 
-function mkdirs($strPath, $mode = '0755'){
-  // Verzeichnisse rekursiv erzeugen
-  if(is_dir($strPath)) return true;
-  $pStrPath = dirname($strPath);
-  if(!$this->mkdirs($pStrPath, $mode)) return false;
-  $old_umask = umask(0);
-  $ret_val = mkdir($strPath, octdec($mode));
-  umask($old_umask);
-  return $ret_val;
-}
+	function mkdirs($strPath, $mode = '0755'){
+		// Verzeichnisse rekursiv erzeugen
+		if(is_dir($strPath)) return true;
+		$pStrPath = dirname($strPath);
+		if(!$this->mkdirs($pStrPath, $mode)) return false;
+		$old_umask = umask(0);
+		$ret_val = mkdir($strPath, octdec($mode));
+		umask($old_umask);
+		return $ret_val;
+	}
 
-function find_includes($file){
-  ob_start();
-  $httpd_root = system('httpd -V | awk -F"\"" \'$1==" -D HTTPD_ROOT="{print $2}\'');
-  ob_end_clean();
-  clearstatcache();
-  if(is_file($file) && filesize($file) > 0){
-    $includes[] = $file;
-    $inhalt = $this->unix_nl($this->no_comments($file));
-    $lines = explode("\n", $inhalt);
-    if(!empty($lines)){
-      foreach($lines as $line){
-        if(stristr($line, "include ")){
-          $include_file = str_replace("\n", "", trim(shell_exec("echo \"$line\" | awk '{print \$2}'")));
-          if(substr($include_file,0,1) != "/"){
-            $include_file = $httpd_root."/".$include_file;
-          }
-          if(is_file($include_file)){
-            if($further_includes = $this->find_includes($include_file)){
-              $includes = array_merge($includes, $further_includes);
-            }
-          } else {
-            if(strstr($include_file, "*")){
-              $more_files = explode("\n", shell_exec("ls -l $include_file | awk '{print \$9}'"));
-              if(!empty($more_files)){
-                foreach($more_files as $more_file){
-                  if(is_file($more_file)){
-                    if($further_includes = $this->find_includes($more_file)){
-                      $includes = array_merge($includes, $further_includes);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-  if(is_array($includes)){
-    $includes = array_unique($includes);
-    return $includes;
-  } else {
-    return false;
-  }
-}
+	function edit_dist($var, $val){
+		global $$var;
+		$files = array('/root/ispconfig/dist.inc.php');
+		foreach($files as $file){
+			if(is_file($file)){
+				$file_content = $this->unix_nl($this->rf($file));
+				$lines = explode("\n", $file_content);
+				for($i=0;$i<sizeof($lines);$i++){
+					$parts = explode('=', $lines[$i]);
+					if($parts[0] == $var || $parts[0] == '$'.$var.' '){
+						$parts[1] = str_replace($$var, $val, $parts[1]);
+					}
+					$lines[$i] = implode('=', $parts);
+				}
+				$file_content = implode("\n", $lines);
+				$this->wf($file, $file_content);
+			}
+		}
+	}
 
-function edit_dist($var, $val){
-  global $$var;
-  $files = array("/root/ispconfig/dist.inc.php");
-  foreach($files as $file){
-    if(is_file($file)){
-      $file_content = $this->unix_nl($this->rf($file));
-      $lines = explode("\n", $file_content);
-      for($i=0;$i<sizeof($lines);$i++){
-        $parts = explode("=", $lines[$i]);
-        if($parts[0] == $var || $parts[0] == '$'.$var.' '){
-          $parts[1] = str_replace($$var, $val, $parts[1]);
-        }
-        $lines[$i] = implode("=", $parts);
-      }
-      $file_content = implode("\n", $lines);
-      $this->wf($file, $file_content);
-    }
-  }
-}
+	function getDirectoryListing($dirname, $sortorder = 'a', $show_subdirs = 0, $show_subdirfiles = 0, $exts = '', $ext_save = 1){
+		// This function will return an array with filenames based on the criteria you can set in the variables
+		// @sortorder : a for ascending (the standard) or d for descending (you can use the "r" for reverse as well, works the same)
+		// @show_subdirs : 0 for NO, 1 for YES - meaning it will show the names of subdirectories if there are any
+		// Logically subdirnames will not be checked for the required extentions
+		// @show_subdirfiles : 0 for NO, 1 for YES - meaning it will show files from the subdirs
+		// Files from subdirs will be prefixed with the subdir name and checked for the required extentions.
+		// @exts can be either a string or an array, if not passed to the function, then the default will be a check for common image files
+		// If exts is set to "all" then all extentions are allowed
+		// @ext_save : 1 for YES, 0 for NO - meaning it will filter out system files or not (such as .htaccess)
 
-function getDirectoryListing($dirname, $sortorder = "a", $show_subdirs = 0, $show_subdirfiles = 0, $exts = "", $ext_save = 1){
-// This function will return an array with filenames based on the criteria you can set in the variables
-// @sortorder : a for ascending (the standard) or d for descending (you can use the "r" for reverse as well, works the same)
-// @show_subdirs : 0 for NO, 1 for YES - meaning it will show the names of subdirectories if there are any
-// Logically subdirnames will not be checked for the required extentions
-// @show_subdirfiles : 0 for NO, 1 for YES - meaning it will show files from the subdirs
-// Files from subdirs will be prefixed with the subdir name and checked for the required extentions.
-// @exts can be either a string or an array, if not passed to the function, then the default will be a check for common image files
-// If exts is set to "all" then all extentions are allowed
-// @ext_save : 1 for YES, 0 for NO - meaning it will filter out system files or not (such as .htaccess)
+		$dirname = realpath($dirname);
+		if (empty($exts)) {
+			$exts = array('jpg', 'gif', 'jpeg', 'png');
+		}
+		if ($handle = opendir($dirname)) {
+			$filelist = array();
+			while (false !== ($file = readdir($handle))) {
 
-   $dirname = realpath($dirname);
-   if (!$exts || empty($exts) || $exts == "") {
-       $exts = array("jpg", "gif", "jpeg", "png");
-   }
-   if ($handle = opendir($dirname)) {
-       $filelist = array();
-       while (false !== ($file = readdir($handle))) {
+				// Filter out higher directory references
+				if ($file != '.' && $file != '..') {
+					// Only look at directories or files, filter out symbolic links
+					if ( filetype($dirname.'/'.$file) != 'link') {
+						// If it's a file, check against valid extentions and add to the list
+						if ( filetype($dirname.'/'.$file) == 'file' ) {
+							if ($this->checkFileExtension($file, $exts, $ext_save)) {
+								$filelist[] = $file;
+							}
+						}
+						// If it's a directory and either subdirs should be listed or files from subdirs add relevant names to the list
+						else if ( filetype($dirname.'/'.$file) == 'dir' && ($show_subdirs == 1 || $show_subdirfiles == 1)) {
+								if ($show_subdirs == 1) {
+									$filelist[] = $file;
+								}
+								if ($show_subdirfiles == 1) {
+									$subdirname = $file;
+									$subdirfilelist = $this->getDirectoryListing($dirname.'/'.$subdirname.'/', $sortorder, $show_subdirs, $show_subdirfiles, $exts, $ext_save);
+									for ($i = 0 ; $i < count($subdirfilelist) ; $i++) {
+										$subdirfilelist[$i] = $subdirname.'/'.$subdirfilelist[$i];
+									}
+									$filelist = array_merge($filelist, $subdirfilelist);
+								}
 
-           // Filter out higher directory references
-           if ($file != "." && $file != "..") {
-               // Only look at directories or files, filter out symbolic links
-               if ( filetype ($dirname."/".$file) != "link") {
-                   // If it's a file, check against valid extentions and add to the list
-                   if ( filetype ($dirname."/".$file) == "file" ) {
-                       if ($this->checkFileExtension($file, $exts, $ext_save)) {
-                                       $filelist[] = $file;
-                       }
-                   }
-                   // If it's a directory and either subdirs should be listed or files from subdirs add relevant names to the list
-                   else if ( filetype ($dirname."/".$file) == "dir" && ($show_subdirs == 1 || $show_subdirfiles == 1)) {
-                       if ($show_subdirs == 1) {
-                           $filelist[] = $file;
-                       }
-                       if ($show_subdirfiles == 1) {
-                           $subdirname = $file;
-                           $subdirfilelist = $this->getDirectoryListing($dirname."/".$subdirname."/", $sortorder, $show_subdirs, $show_subdirfiles, $exts, $ext_save);
-                           for ($i = 0 ; $i < count($subdirfilelist) ; $i++) {
-                               $subdirfilelist[$i] = $subdirname."/".$subdirfilelist[$i];
-                           }
-                           $filelist = array_merge($filelist, $subdirfilelist);
-                       }
+							}
 
-                   }
+					}
+				}
+			}
+			closedir($handle);
 
-               }
-           }
-       }
-       closedir($handle);
+			// Sort the results
+			if (count($filelist) > 1) {
+				natcasesort($filelist);
+				if ($sortorder == 'd' || $sortorder == 'r' ) {
+					$filelist = array_reverse($filelist, TRUE);
+				}
+			}
+			return $filelist;
+		}
+		else {
+			return false;
+		}
+	}
 
-       // Sort the results
-       if (count($filelist) > 1) {
-           natcasesort($filelist);
-           if ($sortorder == "d" || $sortorder == "r" ) {
-               $filelist = array_reverse($filelist, TRUE);
-           }
-       }
-       return $filelist;
-   }
-   else {
-       return false;
-   }
-}
+	function checkFileExtension($filename, $exts, $ext_save = 1){
+		$passed = FALSE;
+		if ($ext_save == 1) {
+			if (preg_match("/^\./", $filename)) {
+				return $passed;
+			}
+		}
+		if ($exts == 'all') {
+			$passed = TRUE;
+			return $passed;
+		}
+		if (is_string($exts)) {
+			if (preg_match("/\.". $exts ."$/i", $filename)) {
+				$passed = TRUE;
+				return $passed;
+			}
+		} else if (is_array($exts)) {
+				foreach ($exts as $theExt) {
+					if (preg_match("/\.". $theExt ."$/i", $filename)) {
+						$passed = TRUE;
+						return $passed;
+					}
+				}
+			}
+		return $passed;
+	}
 
-function checkFileExtension($filename, $exts, $ext_save = 1){
-   $passed = FALSE;
-   if ($ext_save == 1) {
-       if (preg_match("/^\./", $filename)) {
-           return $passed;
-       }
-   }
-   if ($exts == "all") {
-                   $passed = TRUE;
-       return $passed;
-   }
-   if (is_string($exts)) {
-       if (eregi("\.". $exts ."$", $filename)) {
-                       $passed = TRUE;
-           return $passed;
-       }
-   } else if (is_array($exts)) {
-       foreach ($exts as $theExt) {
-           if (eregi("\.". $theExt ."$", $filename)) {
-               $passed = TRUE;
-               return $passed;
-           }
-       }
-   }
-   return $passed;
-}
+	function removeDirectory($dir){
+		//TODO: implement something to delete files/directories recursively that are owned by a certain user or group
+		if(is_dir($dir)){
+			$files = array_diff(scandir($dir), array('.', '..'));
+			if(is_array($files) && !empty($files)){
+				foreach($files as $file){
+					if(is_dir($dir.'/'.$file)){
+						$this->removeDirectory($dir.'/'.$file);
+					} else {
+						@unlink($dir.'/'.$file);
+					}
+				}
+			}
+			@rmdir($dir);
+		}
+	}
 
 }
-?>
\ No newline at end of file
+
+?>

--
Gitblit v1.9.1