From 7fe908c50c8dbc5cc05f571dbe11d66141caacd4 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Thu, 14 Nov 2013 09:01:22 -0500
Subject: [PATCH] Cleaning up code to match coding guidelines

---
 server/lib/classes/system.inc.php | 2085 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 1,098 insertions(+), 987 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index a1e7c00..a393384 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -34,21 +34,25 @@
 	var $server_id;
 	var $server_conf;
 	var $data;
-	
+
 	/**
 	 * Construct for this class
 	 *
 	 * @return system
 	 */
+
+
 	public function system(){
 		//global $go_info;
-	  	//$this->server_id = $go_info['isp']['server_id'];
-	  	//$this->server_conf = $go_info['isp']['server_conf'];
-	  	$this->server_conf['passwd_datei'] = '/etc/passwd';
-	  	$this->server_conf['shadow_datei'] = '/etc/shadow';
-	  	$this->server_conf['group_datei'] = '/etc/group';
+		//$this->server_id = $go_info['isp']['server_id'];
+		//$this->server_conf = $go_info['isp']['server_conf'];
+		$this->server_conf['passwd_datei'] = '/etc/passwd';
+		$this->server_conf['shadow_datei'] = '/etc/shadow';
+		$this->server_conf['group_datei'] = '/etc/group';
 	}
-	
+
+
+
 	/**
 	 * Get the hostname from the server
 	 *
@@ -56,68 +60,74 @@
 	 */
 	public function hostname(){
 		$dist = $this->server_conf['dist'];
-	
-	 	ob_start();
-	  	passthru('hostname');
-	  	$hostname = ob_get_contents();
-	  	ob_end_clean();
+
+		ob_start();
+		passthru('hostname');
+		$hostname = ob_get_contents();
+		ob_end_clean();
 		$hostname = trim($hostname);
-	  	ob_start();
-	  	if(!strstr($dist, 'freebsd')){
-	    	passthru('dnsdomainname');
-	  	} else {
-	    	passthru('domainname');
-	  	}
-	  	$domainname = ob_get_contents();
-	  	ob_end_clean();
-	  	$domainname = trim($domainname);
-	  	if($domainname != ""){
-		    if(!strstr($hostname, $domainname)) $hostname .= ".".$domainname;
-	  	}
-	  	return $hostname;
+		ob_start();
+		if(!strstr($dist, 'freebsd')){
+			passthru('dnsdomainname');
+		} else {
+			passthru('domainname');
+		}
+		$domainname = ob_get_contents();
+		ob_end_clean();
+		$domainname = trim($domainname);
+		if($domainname != ""){
+			if(!strstr($hostname, $domainname)) $hostname .= ".".$domainname;
+		}
+		return $hostname;
 	}
-	
+
+
+
 	/**
 	 * Add an user to the system
-	 * 
+	 *
 	 */
 	public function adduser($user_username, $uid, $gid, $username, $homedir, $shell, $passwort = '*'){
 		global $app;
-	  	if($this->is_user($user_username)){
-	    	return false;
-	  	} else {
-	    	if(trim($user_username) != '') {
-	        	$user_datei = $this->server_conf['passwd_datei'];
-	            $shadow_datei = $this->server_conf['shadow_datei'];
-	            $shell = realpath($shell);
-	            if(trim($passwort) == '') $passwort = '*';
-	            $new_user = "\n$user_username:x:$uid:$gid:$username:$homedir:$shell\n";
-	            $app->log->msg('USER: '.$new_user);
-	            $app->file->af($user_datei, $new_user);
-	            if($shadow_datei == '/etc/shadow'){
-	            	$datum = time();
-	                $tage = floor($datum/86400);
-	                $new_passwd = "\n$user_username:$passwort:$tage:0:99999:7:::\n";
-	            } else {
-	                $new_passwd = "\n$user_username:$passwort:$uid:$gid::0:0:$username:$homedir:$shell\n";
-	            }
-	            $app->file->af($shadow_datei, $new_passwd);
+		if($this->is_user($user_username)){
+			return false;
+		} else {
+			if(trim($user_username) != '') {
+				$user_datei = $this->server_conf['passwd_datei'];
+				$shadow_datei = $this->server_conf['shadow_datei'];
+				$shell = realpath($shell);
+				if(trim($passwort) == '') $passwort = '*';
+				$new_user = "\n$user_username:x:$uid:$gid:$username:$homedir:$shell\n";
+				$app->log->msg('USER: '.$new_user);
+				$app->file->af($user_datei, $new_user);
+				if($shadow_datei == '/etc/shadow'){
+					$datum = time();
+					$tage = floor($datum/86400);
+					$new_passwd = "\n$user_username:$passwort:$tage:0:99999:7:::\n";
+				} else {
+					$new_passwd = "\n$user_username:$passwort:$uid:$gid::0:0:$username:$homedir:$shell\n";
+				}
+				$app->file->af($shadow_datei, $new_passwd);
 				// TB: leere Zeilen entfernen
-	            $app->file->remove_blank_lines($shadow_datei);
-	            $app->file->remove_blank_lines($user_datei);
-	            // TB: user Sortierung deaktiviert
-	            //$this->order_users_groups();
-	            if($shadow_datei != '/etc/shadow'){
-	            	$app->file->af($shadow_datei, "\n");
+				$app->file->remove_blank_lines($shadow_datei);
+				$app->file->remove_blank_lines($user_datei);
+				// TB: user Sortierung deaktiviert
+				//$this->order_users_groups();
+				if($shadow_datei != '/etc/shadow'){
+					$app->file->af($shadow_datei, "\n");
 					// TB: leere Zeilen entfernen
-	                $app->file->remove_blank_lines($shadow_datei);
+					$app->file->remove_blank_lines($shadow_datei);
 					$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
-	            }
-	            return true;
-	        }
-	  }
+				}
+				return true;
+			}
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Update users when someone edit it
 	 *
@@ -126,344 +136,376 @@
 		//* First delete the users
 		$this->deluser($user_username);
 		//* Add the user again
-	  	$this->adduser($user_username, $uid, $gid, $username, $homedir, $shell, $passwort);
+		$this->adduser($user_username, $uid, $gid, $username, $homedir, $shell, $passwort);
 	}
-	
+
+
+
+
+
 	/**
 	 * Lock the user
 	 *
 	 */
 	function deactivateuser($user_username){
 		$passwort = str_rot13($this->getpasswd($user_username));
-	  	$user_attr = $this->get_user_attributes($user_username);
-	  	$uid = $user_attr['uid'];
-	  	$gid = $user_attr['gid'];
-	  	$username = $user_attr['name'];
-	  	$homedir = $user_attr['homedir'];
-	  	$shell = '/dev/null';
-	  	$this->deluser($user_username);
-	  	$this->adduser($user_username, $uid, $gid, $username, $homedir, $shell, $passwort);
+		$user_attr = $this->get_user_attributes($user_username);
+		$uid = $user_attr['uid'];
+		$gid = $user_attr['gid'];
+		$username = $user_attr['name'];
+		$homedir = $user_attr['homedir'];
+		$shell = '/dev/null';
+		$this->deluser($user_username);
+		$this->adduser($user_username, $uid, $gid, $username, $homedir, $shell, $passwort);
 	}
+
+
 	/**
 	 * Delete a user from the system
 	 *
 	 */
 	function deluser($user_username){
 		global $app;
-	  	if($this->is_user($user_username)){
-	    	$user_datei = $this->server_conf['passwd_datei'];
-	    	$shadow_datei = $this->server_conf['shadow_datei'];
-	    	$users = $app->file->rf($user_datei);
-	    	$lines = explode("\n", $users);
-	    	if(is_array($lines)){
-	      		$num_lines = sizeof($lines);
-	      		for($i=0;$i<$num_lines;$i++){
-	        		if(trim($lines[$i]) != ''){
-	          			list($f1,) = explode(':', $lines[$i]);
-	          			if($f1 != $user_username) $new_lines[] = $lines[$i];
-	        		}
-	      		}
-	      		$new_users = implode("\n", $new_lines);
-	      		$app->file->wf($user_datei, $new_users);
-	      		unset($new_lines);
-	      		unset($lines);
-	      		unset($new_users);
-	    	}
-	    	$app->file->remove_blank_lines($user_datei);
-	
-	    	$passwds = $app->file->rf($shadow_datei);
-	    	$lines = explode("\n", $passwds);
-	    	if(is_array($lines)){
-	      		$num_lines = sizeof($lines);
-	      		for($i=0;$i<$num_lines;$i++){
-	        		if(trim($lines[$i]) != ''){
-	          			list($f1,) = explode(':', $lines[$i]);
-	          			if($f1 != $user_username) $new_lines[] = $lines[$i];
-	        		}
-	      		}
-	      		$new_passwds = implode("\n", $new_lines);
-	      		$app->file->wf($shadow_datei, $new_passwds);
-	      		unset($new_lines);
-	      		unset($lines);
-	      		unset($new_passwds);
-	    	}
-	    	$app->file->remove_blank_lines($shadow_datei);
-	
-	    	$group_file = $app->file->rf($this->server_conf['group_datei']);
-	    	$group_file_lines = explode("\n", $group_file);
-	    	foreach($group_file_lines as $group_file_line){
-	      		if(trim($group_file_line) != ''){
-	        		list($f1, $f2, $f3, $f4) = explode(':', $group_file_line);
-	        		$group_users = explode(',', str_replace(' ', '', $f4));
-	        		if(in_array($user_username, $group_users)){
-	          			$g_users = array();
-	          			foreach($group_users as $group_user){
-	            			if($group_user != $user_username) $g_users[] = $group_user;
-	          			}
-	          			$f4 = implode(',', $g_users);
-	        		}
-	        		$new_group_file[] = $f1.':'.$f2.':'.$f3.':'.$f4;
-	      		}
-	    	}
-	    	$new_group_file = implode("\n", $new_group_file);
-	    	$app->file->wf($this->server_conf['group_datei'], $new_group_file);
-	    	// TB: auskommentiert
-	        //$this->order_users_groups();
-	
-	    	if($shadow_datei != '/etc/shadow'){
-	      		$app->file->af($shadow_datei, "\n");
-	      		$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
-	    	}
-	    	return true;
-	  	} else {
-	    	return false;
-	  	}
+		if($this->is_user($user_username)){
+			$user_datei = $this->server_conf['passwd_datei'];
+			$shadow_datei = $this->server_conf['shadow_datei'];
+			$users = $app->file->rf($user_datei);
+			$lines = explode("\n", $users);
+			if(is_array($lines)){
+				$num_lines = sizeof($lines);
+				for($i=0;$i<$num_lines;$i++){
+					if(trim($lines[$i]) != ''){
+						list($f1, ) = explode(':', $lines[$i]);
+						if($f1 != $user_username) $new_lines[] = $lines[$i];
+					}
+				}
+				$new_users = implode("\n", $new_lines);
+				$app->file->wf($user_datei, $new_users);
+				unset($new_lines);
+				unset($lines);
+				unset($new_users);
+			}
+			$app->file->remove_blank_lines($user_datei);
+
+			$passwds = $app->file->rf($shadow_datei);
+			$lines = explode("\n", $passwds);
+			if(is_array($lines)){
+				$num_lines = sizeof($lines);
+				for($i=0;$i<$num_lines;$i++){
+					if(trim($lines[$i]) != ''){
+						list($f1, ) = explode(':', $lines[$i]);
+						if($f1 != $user_username) $new_lines[] = $lines[$i];
+					}
+				}
+				$new_passwds = implode("\n", $new_lines);
+				$app->file->wf($shadow_datei, $new_passwds);
+				unset($new_lines);
+				unset($lines);
+				unset($new_passwds);
+			}
+			$app->file->remove_blank_lines($shadow_datei);
+
+			$group_file = $app->file->rf($this->server_conf['group_datei']);
+			$group_file_lines = explode("\n", $group_file);
+			foreach($group_file_lines as $group_file_line){
+				if(trim($group_file_line) != ''){
+					list($f1, $f2, $f3, $f4) = explode(':', $group_file_line);
+					$group_users = explode(',', str_replace(' ', '', $f4));
+					if(in_array($user_username, $group_users)){
+						$g_users = array();
+						foreach($group_users as $group_user){
+							if($group_user != $user_username) $g_users[] = $group_user;
+						}
+						$f4 = implode(',', $g_users);
+					}
+					$new_group_file[] = $f1.':'.$f2.':'.$f3.':'.$f4;
+				}
+			}
+			$new_group_file = implode("\n", $new_group_file);
+			$app->file->wf($this->server_conf['group_datei'], $new_group_file);
+			// TB: auskommentiert
+			//$this->order_users_groups();
+
+			if($shadow_datei != '/etc/shadow'){
+				$app->file->af($shadow_datei, "\n");
+				$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
+			}
+			return true;
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Add a usergroup to the system
 	 *
 	 */
 	function addgroup($group, $gid, $members = ''){
 		global $app;
-	  	if($this->is_group($group)){
-		    return false;
-	  	} else {
-	    	$group_datei = $this->server_conf['group_datei'];
-	    	$shadow_datei = $this->server_conf['shadow_datei'];
-	    	$new_group = "\n$group:x:$gid:$members\n";
-	    	$app->file->af($group_datei, $new_group);
-	
-	        // TB: auskommentiert
-	        //$this->order_users_groups();
-	    	if($shadow_datei != '/etc/shadow'){
-	      		$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
-	    	}
-	    	return true;
-	  	}
+		if($this->is_group($group)){
+			return false;
+		} else {
+			$group_datei = $this->server_conf['group_datei'];
+			$shadow_datei = $this->server_conf['shadow_datei'];
+			$new_group = "\n$group:x:$gid:$members\n";
+			$app->file->af($group_datei, $new_group);
+
+			// TB: auskommentiert
+			//$this->order_users_groups();
+			if($shadow_datei != '/etc/shadow'){
+				$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
+			}
+			return true;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Update usersgroup in way to delete and add it again
 	 *
 	 */
 	function updategroup($group, $gid, $members = ''){
 		$this->delgroup($group);
-	  	$this->addgroup($group, $gid, $members);
+		$this->addgroup($group, $gid, $members);
 	}
-	
+
+
+
+
+
 	/**
 	 * Delete a usergroup from the system
 	 *
 	 */
 	function delgroup($group){
 		global $app;
-	  	if($this->is_group($group)){
-	    	$group_datei = $this->server_conf['group_datei'];
-	    	$shadow_datei = $this->server_conf['shadow_datei'];
-	    	$groups = $app->file->rf($group_datei);
-	    	$lines = explode("\n", $groups);
-	    	if(is_array($lines)){
-	      		$num_lines = sizeof($lines);
-	      		for($i=0;$i<$num_lines;$i++){
-	        		if(trim($lines[$i]) != ''){
-	          			list($f1,) = explode(':', $lines[$i]);
-	          			if($f1 != $group) $new_lines[] = $lines[$i];
-	        		}
-	      		}
-	      		$new_groups = implode("\n", $new_lines);
-	      		$app->file->wf($group_datei, $new_groups);
-	      		unset($new_lines);
-	      		unset($lines);
-	      		unset($new_groups);
-	    	}
-	        // TB: auskommentiert
-	    	//$this->order_users_groups();
-	    	if($shadow_datei != '/etc/shadow'){
-	      		$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
-	    	}
-	    	return true;
-	  	} else {
-	    	return false;
-	  	}
+		if($this->is_group($group)){
+			$group_datei = $this->server_conf['group_datei'];
+			$shadow_datei = $this->server_conf['shadow_datei'];
+			$groups = $app->file->rf($group_datei);
+			$lines = explode("\n", $groups);
+			if(is_array($lines)){
+				$num_lines = sizeof($lines);
+				for($i=0;$i<$num_lines;$i++){
+					if(trim($lines[$i]) != ''){
+						list($f1, ) = explode(':', $lines[$i]);
+						if($f1 != $group) $new_lines[] = $lines[$i];
+					}
+				}
+				$new_groups = implode("\n", $new_lines);
+				$app->file->wf($group_datei, $new_groups);
+				unset($new_lines);
+				unset($lines);
+				unset($new_groups);
+			}
+			// TB: auskommentiert
+			//$this->order_users_groups();
+			if($shadow_datei != '/etc/shadow'){
+				$app->log->caselog("pwd_mkdb $shadow_datei &> /dev/null", $this->FILE, __LINE__);
+			}
+			return true;
+		} else {
+			return false;
+		}
 	}
+
+
 	/**
 	 * Order usergroups
 	 *
 	 */
 	function order_users_groups(){
 		global $app;
-	  	$user_datei = $this->server_conf['passwd_datei'];
-	  	$shadow_datei = $this->server_conf['shadow_datei'];
-	  	$group_datei = $this->server_conf['group_datei'];
-	
-	  	$groups = $app->file->no_comments($group_datei);
-	  	$lines = explode("\n", $groups);
-	  	if(is_array($lines)){
-		    foreach($lines as $line){
-	      		if(trim($line) != ''){
-	        		list($f1, $f2, $f3, $f4) = explode(':', $line);
-	        		$arr[$f3] = $line;
-	      		}
-	    	}
-	  	}
-	  	ksort($arr);
-	  	reset($arr);
-	  	if($shadow_datei != '/etc/shadow'){
-	    	$app->file->wf($group_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0)."\n");
-	  	}else {
-		    $app->file->wf($group_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0));
-	  	}
-	  	unset($arr);
-	
-	  	$users = $app->file->no_comments($user_datei);
-	  	$lines = explode("\n", $users);
-	  	if(is_array($lines)){
-		    foreach($lines as $line){
-	      		if(trim($line) != ""){
-	        		list($f1, $f2, $f3,) = explode(':', $line);
-	        		if($f1 != 'toor'){
-	          			$arr[$f3] = $line;
-	        		} else {
-	          			$arr[70000] = $line;
-	        		}
-	      		}
-	    	}
-	  	}
-	  	ksort($arr);
-	  	reset($arr);
-	  	$app->file->wf($user_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0));
-	  	unset($arr);
-	
-	  	$passwds = $app->file->no_comments($shadow_datei);
-	  	$lines = explode("\n", $passwds);
-	  	if(is_array($lines)){
-		    foreach($lines as $line){
-	    		if(trim($line) != ''){
-	        		list($f1, $f2, $f3,) = explode(':', $line);
-	        		if($f1 != 'toor'){
-	          			$uid = $this->getuid($f1);
-	          			if(!is_bool($uid)) $arr[$uid] = $line;
-	        		} else {
-	          			$arr[70000] = $line;
-	        		}
-	      		}
-	    	}
-	  	}
-	  	ksort($arr);
-	  	reset($arr);
-	  	$app->file->wf($shadow_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0));
-	  	unset($arr);
+		$user_datei = $this->server_conf['passwd_datei'];
+		$shadow_datei = $this->server_conf['shadow_datei'];
+		$group_datei = $this->server_conf['group_datei'];
+
+		$groups = $app->file->no_comments($group_datei);
+		$lines = explode("\n", $groups);
+		if(is_array($lines)){
+			foreach($lines as $line){
+				if(trim($line) != ''){
+					list($f1, $f2, $f3, $f4) = explode(':', $line);
+					$arr[$f3] = $line;
+				}
+			}
+		}
+		ksort($arr);
+		reset($arr);
+		if($shadow_datei != '/etc/shadow'){
+			$app->file->wf($group_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0)."\n");
+		}else {
+			$app->file->wf($group_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0));
+		}
+		unset($arr);
+
+		$users = $app->file->no_comments($user_datei);
+		$lines = explode("\n", $users);
+		if(is_array($lines)){
+			foreach($lines as $line){
+				if(trim($line) != ""){
+					list($f1, $f2, $f3, ) = explode(':', $line);
+					if($f1 != 'toor'){
+						$arr[$f3] = $line;
+					} else {
+						$arr[70000] = $line;
+					}
+				}
+			}
+		}
+		ksort($arr);
+		reset($arr);
+		$app->file->wf($user_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0));
+		unset($arr);
+
+		$passwds = $app->file->no_comments($shadow_datei);
+		$lines = explode("\n", $passwds);
+		if(is_array($lines)){
+			foreach($lines as $line){
+				if(trim($line) != ''){
+					list($f1, $f2, $f3, ) = explode(':', $line);
+					if($f1 != 'toor'){
+						$uid = $this->getuid($f1);
+						if(!is_bool($uid)) $arr[$uid] = $line;
+					} else {
+						$arr[70000] = $line;
+					}
+				}
+			}
+		}
+		ksort($arr);
+		reset($arr);
+		$app->file->wf($shadow_datei, $app->file->remove_blank_lines(implode("\n", $arr), 0));
+		unset($arr);
 	}
-	
+
+
+
+
+
 	/**
 	 * Find a user / group id
 	 *
 	 */
 	function find_uid_gid($min, $max){
 		global $app;
-	  	if($min < $max && $min >= 0 && $max >= 0 && $min <= 65536 && $max <= 65536 && is_int($min) && is_int($max)){
-	    	for($i=$min;$i<=$max;$i++){
-	      		$uid_arr[$i] = $gid_arr[$i] = 1;
-	    	}
-	    	$user_datei = $this->server_conf['passwd_datei'];
-	    	$group_datei = $this->server_conf['group_datei'];
-	
-	    	$users = $app->file->no_comments($user_datei);
-	    	$lines = explode("\n", $users);
-	    	if(is_array($lines)){
-	      		foreach($lines as $line){
-	        		if(trim($line) != ''){
-	          			list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
-	          			if($f3 >= $min && $f3 <= $max) unset($uid_arr[$f3]);
-	        		}
-	      		}
-	      		if(!empty($uid_arr)){
-	        		foreach($uid_arr as $key => $val){
-	          			$uids[] = $key;
-	        		}
-	        		$min_uid = min($uids);
-	        		unset($uid_arr);
-	      		} else {
-	        		return false;
-	      		}
-	    	}
-	
-	    	$groups = $app->file->no_comments($group_datei);
-	    	$lines = explode("\n", $groups);
-	    	if(is_array($lines)){
-	      		foreach($lines as $line){
-	        		if(trim($line) != ''){
-	          			list($f1, $f2, $f3, $f4) = explode(':', $line);
-	          			if($f3 >= $min && $f3 <= $max) unset($gid_arr[$f3]);
-	        		}
-	      		}
-	      		if(!empty($gid_arr)){
-	        		foreach($gid_arr as $key => $val){
-	          			$gids[] = $key;
-	        		}
-	        		$min_gid = min($gids);
-	        		unset($gid_arr);
-	      		} else {
-	        		return false;
-	      		}
-	    	}
-	
-	    	$result = array_intersect($uids, $gids);
-	    	$new_id = (max($result));
-	    	unset($uids);
-	    	unset($gids);
-	    	unset($result);
-	    	if($new_id <= $max){
-	      		return $new_id;
-	    	} else {
-	      		return false;
-	    	}
-	  	} else {
-	    	return false;
-	  	}
+		if($min < $max && $min >= 0 && $max >= 0 && $min <= 65536 && $max <= 65536 && is_int($min) && is_int($max)){
+			for($i=$min;$i<=$max;$i++){
+				$uid_arr[$i] = $gid_arr[$i] = 1;
+			}
+			$user_datei = $this->server_conf['passwd_datei'];
+			$group_datei = $this->server_conf['group_datei'];
+
+			$users = $app->file->no_comments($user_datei);
+			$lines = explode("\n", $users);
+			if(is_array($lines)){
+				foreach($lines as $line){
+					if(trim($line) != ''){
+						list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
+						if($f3 >= $min && $f3 <= $max) unset($uid_arr[$f3]);
+					}
+				}
+				if(!empty($uid_arr)){
+					foreach($uid_arr as $key => $val){
+						$uids[] = $key;
+					}
+					$min_uid = min($uids);
+					unset($uid_arr);
+				} else {
+					return false;
+				}
+			}
+
+			$groups = $app->file->no_comments($group_datei);
+			$lines = explode("\n", $groups);
+			if(is_array($lines)){
+				foreach($lines as $line){
+					if(trim($line) != ''){
+						list($f1, $f2, $f3, $f4) = explode(':', $line);
+						if($f3 >= $min && $f3 <= $max) unset($gid_arr[$f3]);
+					}
+				}
+				if(!empty($gid_arr)){
+					foreach($gid_arr as $key => $val){
+						$gids[] = $key;
+					}
+					$min_gid = min($gids);
+					unset($gid_arr);
+				} else {
+					return false;
+				}
+			}
+
+			$result = array_intersect($uids, $gids);
+			$new_id = (max($result));
+			unset($uids);
+			unset($gids);
+			unset($result);
+			if($new_id <= $max){
+				return $new_id;
+			} else {
+				return false;
+			}
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Check if the users is really a user into the system
 	 *
 	 */
 	function is_user($user){
 		global $app;
-	  	$user_datei = $this->server_conf['passwd_datei'];
-	  	$users = $app->file->no_comments($user_datei);
-	  	$lines = explode("\n", $users);
-	  	if(is_array($lines)){
+		$user_datei = $this->server_conf['passwd_datei'];
+		$users = $app->file->no_comments($user_datei);
+		$lines = explode("\n", $users);
+		if(is_array($lines)){
 			foreach($lines as $line){
-	      		if(trim($line) != ''){
-	        		list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
-	        		if($f1 == $user) return true;
-	      		}
-	    	}
-	  	}
-	  	return false;
+				if(trim($line) != ''){
+					list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
+					if($f1 == $user) return true;
+				}
+			}
+		}
+		return false;
 	}
-	
+
+
+
+
+
 	/**
 	 * Check if the group is on this system
 	 *
 	 */
 	function is_group($group){
 		global $app;
-	  	$group_datei = $this->server_conf['group_datei'];
-	  	$groups = $app->file->no_comments($group_datei);
-	  	$lines = explode("\n", $groups);
-	  	if(is_array($lines)){
-		    foreach($lines as $line){
-	      		if(trim($line) != ""){
-	        		list($f1, $f2, $f3, $f4) = explode(':', $line);
-	        		if($f1 == $group) return true;
-	      		}
-	    	}
-	  	}
-	  	return false;
+		$group_datei = $this->server_conf['group_datei'];
+		$groups = $app->file->no_comments($group_datei);
+		$lines = explode("\n", $groups);
+		if(is_array($lines)){
+			foreach($lines as $line){
+				if(trim($line) != ""){
+					list($f1, $f2, $f3, $f4) = explode(':', $line);
+					if($f1 == $group) return true;
+				}
+			}
+		}
+		return false;
 	}
-	
+
 	/*
 	// Alternative implementation of the is_group function. Should be faster then the old one To be tested.
 	function is_group($group) {
@@ -485,122 +527,142 @@
 	return false;
 	}
 	*/
-	
+
 	function root_group(){
 		global $app;
-	  	$group_datei = $this->server_conf['group_datei'];
-	  	$groups = $app->file->no_comments($group_datei);
-	  	$lines = explode("\n", $groups);
-	  	if(is_array($lines)){
-		    foreach($lines as $line){
-	      		if(trim($line) != ''){
-	        		list($f1, $f2, $f3, $f4) = explode(':', $line);
-	        		if($f3 == 0) return $f1;
-	      		}
-	    	}
-	  	}
-	  	return false;
+		$group_datei = $this->server_conf['group_datei'];
+		$groups = $app->file->no_comments($group_datei);
+		$lines = explode("\n", $groups);
+		if(is_array($lines)){
+			foreach($lines as $line){
+				if(trim($line) != ''){
+					list($f1, $f2, $f3, $f4) = explode(':', $line);
+					if($f3 == 0) return $f1;
+				}
+			}
+		}
+		return false;
 	}
-	
+
+
+
+
+
 	/**
 	 * Get the groups of an user
 	 *
 	 */
 	function get_user_groups($username){
 		global $app;
-	  	$user_groups = array();
-	  	$group_datei = $this->server_conf['group_datei'];
-	  	$groups = $app->file->no_comments($group_datei);
-	  	$lines = explode("\n", $groups);
-	  	if(is_array($lines)){
-	    	foreach($lines as $line){
-	      		if(trim($line) != ''){
-	        		list($f1, $f2, $f3, $f4) = explode(':', $line);
-	        		if(intval($f3) < intval($this->server_conf['groupid_von']) && trim($f1) != 'users'){
-	          			$tmp_group_users = explode(',', str_replace(' ', '', $f4));
-	          			if(in_array($username, $tmp_group_users) && trim($f1) != '') $user_groups[] = $f1;
-	          			unset($tmp_group_users);
-	        		}
-	      		}
-	    	}
-	  	}
-	  	if(!empty($user_groups)) return implode(',', $user_groups);
-	  	return '';
+		$user_groups = array();
+		$group_datei = $this->server_conf['group_datei'];
+		$groups = $app->file->no_comments($group_datei);
+		$lines = explode("\n", $groups);
+		if(is_array($lines)){
+			foreach($lines as $line){
+				if(trim($line) != ''){
+					list($f1, $f2, $f3, $f4) = explode(':', $line);
+					if(intval($f3) < intval($this->server_conf['groupid_von']) && trim($f1) != 'users'){
+						$tmp_group_users = explode(',', str_replace(' ', '', $f4));
+						if(in_array($username, $tmp_group_users) && trim($f1) != '') $user_groups[] = $f1;
+						unset($tmp_group_users);
+					}
+				}
+			}
+		}
+		if(!empty($user_groups)) return implode(',', $user_groups);
+		return '';
 	}
-	
+
+
+
+
+
 	/**
 	 * Get a user password
 	 *
 	 */
 	function getpasswd($user){
 		global $app;
-	  	if($this->is_user($user)){
-		    $shadow_datei = $this->server_conf['shadow_datei'];
-	    	$passwds = $app->file->no_comments($shadow_datei);
-	    	$lines = explode("\n", $passwds);
-	    	if(is_array($lines)){
-	      		foreach($lines as $line){
-	        		if(trim($line) != ''){
-	          			list($f1, $f2,) = explode(':', $line);
-	          			if($f1 == $user) return $f2;
-	        		}
-	      		}
-	    	}
-	  	} else {
-		    return false;
-	  	}
+		if($this->is_user($user)){
+			$shadow_datei = $this->server_conf['shadow_datei'];
+			$passwds = $app->file->no_comments($shadow_datei);
+			$lines = explode("\n", $passwds);
+			if(is_array($lines)){
+				foreach($lines as $line){
+					if(trim($line) != ''){
+						list($f1, $f2, ) = explode(':', $line);
+						if($f1 == $user) return $f2;
+					}
+				}
+			}
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Get the user id from an user
 	 *
 	 */
 	function getuid($user){
 		global $app;
-	  	if($this->is_user($user)){
-		    $user_datei = $this->server_conf['passwd_datei'];
-	    	$users = $app->file->no_comments($user_datei);
-	    	$lines = explode("\n", $users);
-	    	if(is_array($lines)){
-	      		foreach($lines as $line){
-	        		if(trim($line) != ''){
-	          			list($f1, $f2, $f3,) = explode(':', $line);
-	          			if($f1 == $user) return $f3;
-	        		}
-	      		}
-	    	}
-	  	} else {
-		    return false;
-	  	}
+		if($this->is_user($user)){
+			$user_datei = $this->server_conf['passwd_datei'];
+			$users = $app->file->no_comments($user_datei);
+			$lines = explode("\n", $users);
+			if(is_array($lines)){
+				foreach($lines as $line){
+					if(trim($line) != ''){
+						list($f1, $f2, $f3, ) = explode(':', $line);
+						if($f1 == $user) return $f3;
+					}
+				}
+			}
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Get the group id from an group
 	 *
 	 */
 	function getgid($group){
 		global $app;
-	  	if($this->is_group($group)){
-		    $group_datei = $this->server_conf['group_datei'];
+		if($this->is_group($group)){
+			$group_datei = $this->server_conf['group_datei'];
 			$groups = $app->file->no_comments($group_datei);
 			$lines = explode("\n", $groups);
 			if(is_array($lines)){
-		    foreach($lines as $line){
+				foreach($lines as $line){
 					if(trim($line) != ""){
 						list($f1, $f2, $f3, $f4) = explode(':', $line);
 						if($f1 == $group) return $f3;
 					}
 				}
 			}
-	  	} else {
-		    return false;
-	  	}
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
-	* Return info about a group by name
-	*
-	*/
+	 * Return info about a group by name
+	 *
+	 */
 	function posix_getgrnam($group) {
 		if(!function_exists('posix_getgrnam')){
 			$group_datei = $this->server_conf['group_datei'];
@@ -616,213 +678,225 @@
 			} else {
 				$members = array();
 			}
-			$group_details = array(	'name' => $group,
-									'passwd' => $f2,
-									'members' => $members,
-									'gid' => $f3);
-			return $group_details;	
+			$group_details = array( 'name' => $group,
+				'passwd' => $f2,
+				'members' => $members,
+				'gid' => $f3);
+			return $group_details;
 		} else {
 			return posix_getgrnam($group);
 		}
-    }
-	
+	}
+
+
+
+
+
 	/**
 	 * Get all information from a user
 	 *
 	 */
 	function get_user_attributes($user){
 		global $app;
-	  	if($this->is_user($user)){
-	    	$user_datei = $this->server_conf['passwd_datei'];
-	    	$users = $app->file->no_comments($user_datei);
-	    	$lines = explode("\n", $users);
-	    	if(is_array($lines)){
-	      		foreach($lines as $line){
-	        		if(trim($line) != ''){
-	          			list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
-	          			if($f1 == $user){
-	            			$user_attr['username'] = $f1;
-	            			$user_attr['x'] = $f2;
-	            			$user_attr['uid'] = $f3;
-	            			$user_attr['gid'] = $f4;
-	            			$user_attr['name'] = $f5;
-	            			$user_attr['homedir'] = $f6;
-	            			$user_attr['shell'] = $f7;
-	            			return $user_attr;
-	          			}
-	        		}
-	      		}
-	    	}
-	  	} else {
-	    	return false;
-	  	}
+		if($this->is_user($user)){
+			$user_datei = $this->server_conf['passwd_datei'];
+			$users = $app->file->no_comments($user_datei);
+			$lines = explode("\n", $users);
+			if(is_array($lines)){
+				foreach($lines as $line){
+					if(trim($line) != ''){
+						list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
+						if($f1 == $user){
+							$user_attr['username'] = $f1;
+							$user_attr['x'] = $f2;
+							$user_attr['uid'] = $f3;
+							$user_attr['gid'] = $f4;
+							$user_attr['name'] = $f5;
+							$user_attr['homedir'] = $f6;
+							$user_attr['shell'] = $f7;
+							return $user_attr;
+						}
+					}
+				}
+			}
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Edit the owner of a file
 	 *
 	 */
 	function chown($file, $owner, $allow_symlink = false){
-	  global $app;
-	  if($allow_symlink == false && $this->checkpath($file) == false) {
-		$app->log("Action aborted, file is a symlink: $file",LOGLEVEL_WARN);
-		return false;
-	  }
-	  if(file_exists($file)) {
-		if(@chown($file, $owner)) {
-			return true;
-		} else {
-			$app->log("chown failed: $file : $owner",LOGLEVEL_DEBUG);
+		global $app;
+		if($allow_symlink == false && $this->checkpath($file) == false) {
+			$app->log("Action aborted, file is a symlink: $file", LOGLEVEL_WARN);
 			return false;
 		}
-	  }
+		if(file_exists($file)) {
+			if(@chown($file, $owner)) {
+				return true;
+			} else {
+				$app->log("chown failed: $file : $owner", LOGLEVEL_DEBUG);
+				return false;
+			}
+		}
 	}
-	
+
 	function chgrp($file, $group = '', $allow_symlink = false){
-	  global $app;
-	  if($allow_symlink == false && $this->checkpath($file) == false) {
-		$app->log("Action aborted, file is a symlink: $file",LOGLEVEL_WARN);
-		return false;
-	  }
-	  if(file_exists($file)) {
-		if(@chgrp($file, $group)) {
-			return true;
-		} else {
-			$app->log("chgrp failed: $file : $group",LOGLEVEL_DEBUG);
+		global $app;
+		if($allow_symlink == false && $this->checkpath($file) == false) {
+			$app->log("Action aborted, file is a symlink: $file", LOGLEVEL_WARN);
 			return false;
 		}
-	  }
+		if(file_exists($file)) {
+			if(@chgrp($file, $group)) {
+				return true;
+			} else {
+				$app->log("chgrp failed: $file : $group", LOGLEVEL_DEBUG);
+				return false;
+			}
+		}
 	}
-	
+
 	//* Change the mode of a file
 	function chmod($file, $mode, $allow_symlink = false) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($file) == false) {
-			$app->log("Action aborted, file is a symlink: $file",LOGLEVEL_WARN);
+			$app->log("Action aborted, file is a symlink: $file", LOGLEVEL_WARN);
 			return false;
 		}
 		if(@chmod($file, $mode)) {
 			return true;
 		} else {
-			$app->log("chmod failed: $file : $mode",LOGLEVEL_DEBUG);
+			$app->log("chmod failed: $file : $mode", LOGLEVEL_DEBUG);
 			return false;
 		}
 	}
-	
+
 	function file_put_contents($filename, $data, $allow_symlink = false) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($filename) == false) {
-			$app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
+			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
 			return false;
 		}
 		if(file_exists($filename)) unlink($filename);
 		return file_put_contents($filename, $data);
 	}
-	
+
 	function file_get_contents($filename, $allow_symlink = false) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($filename) == false) {
-			$app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
+			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
 			return false;
 		}
 		return file_get_contents($filename, $data);
 	}
-	
+
 	function rename($filename, $new_filename, $allow_symlink = false) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($filename) == false) {
-			$app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
+			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
 			return false;
 		}
 		return rename($filename, $new_filename);
 	}
-	
+
 	function mkdir($dirname, $allow_symlink = false) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($dirname) == false) {
-			$app->log("Action aborted, file is a symlink: $dirname",LOGLEVEL_WARN);
+			$app->log("Action aborted, file is a symlink: $dirname", LOGLEVEL_WARN);
 			return false;
 		}
 		if(@mkdir($dirname)) {
 			return true;
 		} else {
-			$app->log("mkdir failed: $dirname",LOGLEVEL_DEBUG);
+			$app->log("mkdir failed: $dirname", LOGLEVEL_DEBUG);
 			return false;
 		}
 	}
-	
+
 	function unlink($filename) {
 		if(file_exists($filename) || is_link($filename)) {
 			return unlink($filename);
 		}
 	}
-	
-	function copy($file1,$file2) {
-		return copy($file1,$file2);
+
+	function copy($file1, $file2) {
+		return copy($file1, $file2);
 	}
-	
+
 	function touch($file, $allow_symlink = false){
-	  global $app;
-	  if($allow_symlink == false && @file_exists($file) && $this->checkpath($file) == false) {
-		$this->unlink($file);
-	  }
-	  if(@touch($file)) {
+		global $app;
+		if($allow_symlink == false && @file_exists($file) && $this->checkpath($file) == false) {
+			$this->unlink($file);
+		}
+		if(@touch($file)) {
 			return true;
-	  } else {
-			$app->log("touch failed: $file",LOGLEVEL_DEBUG);
+		} else {
+			$app->log("touch failed: $file", LOGLEVEL_DEBUG);
 			return false;
-	  }
+		}
 	}
-	
+
 	function checkpath($path) {
 		$path = trim($path);
 		//* We allow only absolute paths
-		if(substr($path,0,1) != '/') return false;
-		
+		if(substr($path, 0, 1) != '/') return false;
+
 		//* We allow only some characters in the path
 		// * is allowed, for example it is part of wildcard certificates/keys: *.example.com.crt
-		if(!preg_match('@^/[-a-zA-Z0-9_/.*~]{1,}$@',$path)) return false;
-		
+		if(!preg_match('@^/[-a-zA-Z0-9_/.*~]{1,}$@', $path)) return false;
+
 		//* Check path for symlinks
-		$path_parts = explode('/',$path);
+		$path_parts = explode('/', $path);
 		$testpath = '';
 		foreach($path_parts as $p) {
 			$testpath .= '/'.$p;
 			if(is_link($testpath)) return false;
 		}
-		
+
 		return true;
 	}
-	
+
+
+
+
+
 	/**
 	 * Add an user to a specific group
 	 *
 	 */
 	function add_user_to_group($group, $user = 'admispconfig'){
 		global $app;
-	  	$group_file = $app->file->rf($this->server_conf['group_datei']);
-	  	$group_file_lines = explode("\n", $group_file);
-	  	foreach($group_file_lines as $group_file_line){
-		    list($group_name,$group_x,$group_id,$group_users) = explode(':',$group_file_line);
-	    	if($group_name == $group){
-	      		$group_users = explode(',', str_replace(' ', '', $group_users));
-	      		if(!in_array($user, $group_users)){
-	        		$group_users[] = $user;
-	      		}
-	      		$group_users = implode(',', $group_users);
-	      		if(substr($group_users,0,1) == ',') $group_users = substr($group_users,1);
-	      		$group_file_line = $group_name.':'.$group_x.':'.$group_id.':'.$group_users;
-	    	}
-	    	$new_group_file[] = $group_file_line;
-	  	}
-	  	$new_group_file = implode("\n", $new_group_file);
-	  	$app->file->wf($this->server_conf['group_datei'], $new_group_file);
-	  	$app->file->remove_blank_lines($this->server_conf['group_datei']);
-	  	if($this->server_conf['shadow_datei'] != '/etc/shadow'){
-		    $app->log->caselog('pwd_mkdb '.$this->server_conf['shadow_datei'].' &> /dev/null', $this->FILE, __LINE__);
-	  	}
+		$group_file = $app->file->rf($this->server_conf['group_datei']);
+		$group_file_lines = explode("\n", $group_file);
+		foreach($group_file_lines as $group_file_line){
+			list($group_name, $group_x, $group_id, $group_users) = explode(':', $group_file_line);
+			if($group_name == $group){
+				$group_users = explode(',', str_replace(' ', '', $group_users));
+				if(!in_array($user, $group_users)){
+					$group_users[] = $user;
+				}
+				$group_users = implode(',', $group_users);
+				if(substr($group_users, 0, 1) == ',') $group_users = substr($group_users, 1);
+				$group_file_line = $group_name.':'.$group_x.':'.$group_id.':'.$group_users;
+			}
+			$new_group_file[] = $group_file_line;
+		}
+		$new_group_file = implode("\n", $new_group_file);
+		$app->file->wf($this->server_conf['group_datei'], $new_group_file);
+		$app->file->remove_blank_lines($this->server_conf['group_datei']);
+		if($this->server_conf['shadow_datei'] != '/etc/shadow'){
+			$app->log->caselog('pwd_mkdb '.$this->server_conf['shadow_datei'].' &> /dev/null', $this->FILE, __LINE__);
+		}
 	}
-	
+
 	/*
 	function usermod($user, $groups){
 		global $app;
@@ -864,449 +938,485 @@
 	  	}
 	}
 	*/
-	
+
 	/**boot autostart etc
 	 *
 	 */
 	function rc_edit($service, $rl, $action){
 		// $action = "on|off";
-	  	global $app;
-	  	$dist_init_scripts = $app->system->server_conf['dist_init_scripts'];
-	  	$dist_runlevel = $app->system->server_conf['dist_runlevel'];
-	  	$dist = $app->system->server_conf['dist'];
-	  	if(trim($dist_runlevel) == ''){ // falls es keine runlevel gibt (FreeBSD)
-		    if($action == 'on'){
-	    		@symlink($dist_init_scripts.'/'.$service, $dist_init_scripts.'/'.$service.'.sh');
-	    	}
-	    	if($action == 'off'){
-	      		if(is_link($dist_init_scripts.'/'.$service.'.sh')){
-	        		unlink($dist_init_scripts.'/'.$service.'.sh');
-	      		} else {
-	        		rename($dist_init_scripts.'/'.$service.'.sh',$dist_init_scripts.'/'.$service);
-	      		}
-	    	}
-	  	} else { // Linux
-	    	if(substr($dist, 0,4) == 'suse'){
-	      		if($action == 'on'){
-	        		exec("chkconfig --add $service &> /dev/null");
-	      		}
-	      		if($action == 'off'){
-	        		exec("chkconfig --del $service &> /dev/null");
-	      		}
-	    	} else {
-	      		$runlevels = explode(',', $rl);
-	      		foreach($runlevels as $runlevel){
-	        		$runlevel = trim($runlevel);
-	        		if($runlevel != '' && is_dir($dist_runlevel.'/rc'.$runlevel.'.d')){
-	          			$handle=opendir($dist_runlevel.'/rc'.$runlevel.'.d');
-	          			while($file = readdir($handle)){
-	            			if($file != '.' && $file != '..'){
-	              				$target = @readlink($dist_runlevel.'/rc'.$runlevel.'.d/'.$file);
-	              				if(strstr($file, $service) && strstr($target, $service) && substr($file,0,1) == 'S') $ln_arr[$runlevel][] = $dist_runlevel.'/rc'.$runlevel.'.d/'.$file;
-	            			}
-	          			}
-	          			closedir($handle);
-	        		}
-	        		if($action == 'on'){
-	          			if(!is_array($ln_arr[$runlevel])) @symlink($dist_init_scripts.'/'.$service, $dist_runlevel.'/rc'.$runlevel.'.d/S99'.$service);
-	        		}
-	        		if($action == 'off'){
-	          			if(is_array($ln_arr[$runlevel])){
-	            			foreach($ln_arr[$runlevel] as $link){
-	              				unlink($link);
-	            			}
-	          			}
-	        		}
-	      		}
-	    	}
-	  	}
+		global $app;
+		$dist_init_scripts = $app->system->server_conf['dist_init_scripts'];
+		$dist_runlevel = $app->system->server_conf['dist_runlevel'];
+		$dist = $app->system->server_conf['dist'];
+		if(trim($dist_runlevel) == ''){ // falls es keine runlevel gibt (FreeBSD)
+			if($action == 'on'){
+				@symlink($dist_init_scripts.'/'.$service, $dist_init_scripts.'/'.$service.'.sh');
+			}
+			if($action == 'off'){
+				if(is_link($dist_init_scripts.'/'.$service.'.sh')){
+					unlink($dist_init_scripts.'/'.$service.'.sh');
+				} else {
+					rename($dist_init_scripts.'/'.$service.'.sh', $dist_init_scripts.'/'.$service);
+				}
+			}
+		} else { // Linux
+			if(substr($dist, 0, 4) == 'suse'){
+				if($action == 'on'){
+					exec("chkconfig --add $service &> /dev/null");
+				}
+				if($action == 'off'){
+					exec("chkconfig --del $service &> /dev/null");
+				}
+			} else {
+				$runlevels = explode(',', $rl);
+				foreach($runlevels as $runlevel){
+					$runlevel = trim($runlevel);
+					if($runlevel != '' && is_dir($dist_runlevel.'/rc'.$runlevel.'.d')){
+						$handle=opendir($dist_runlevel.'/rc'.$runlevel.'.d');
+						while($file = readdir($handle)){
+							if($file != '.' && $file != '..'){
+								$target = @readlink($dist_runlevel.'/rc'.$runlevel.'.d/'.$file);
+								if(strstr($file, $service) && strstr($target, $service) && substr($file, 0, 1) == 'S') $ln_arr[$runlevel][] = $dist_runlevel.'/rc'.$runlevel.'.d/'.$file;
+							}
+						}
+						closedir($handle);
+					}
+					if($action == 'on'){
+						if(!is_array($ln_arr[$runlevel])) @symlink($dist_init_scripts.'/'.$service, $dist_runlevel.'/rc'.$runlevel.'.d/S99'.$service);
+					}
+					if($action == 'off'){
+						if(is_array($ln_arr[$runlevel])){
+							foreach($ln_arr[$runlevel] as $link){
+								unlink($link);
+							}
+						}
+					}
+				}
+			}
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Filter information from the commands
 	 *
 	 */
 	function grep($content, $string, $params = ''){
 		global $app;
-	  	// params: i, v, w
-	  	$content = $app->file->unix_nl($content);
-	  	$lines = explode("\n", $content);
-	  	foreach($lines as $line){
-	    	if(!strstr($params, 'w')){
-	      		if(strstr($params, 'i')){
-	        		if(strstr($params, 'v')){
-	          			if(!stristr($line, $string)) $find[] = $line;
-	        		} else {
-	          			if(stristr($line, $string)) $find[] = $line;
-	        		}
-	      		} else {
-	        		if(strstr($params, 'v')){
-	          			if(!strstr($line, $string)) $find[] = $line;
-	        		} else {
-	          			if(strstr($line, $string)) $find[] = $line;
-	        		}
-	      		}
-	    	} else {
-	      		if(strstr($params, 'i')){
-	        		if(strstr($params, 'v')){
-	          			if(!$app->string->is_word($string, $line, 'i')) $find[] = $line;
-	        		} else {
-	          			if($app->string->is_word($string, $line, 'i')) $find[] = $line;
-	        		}
-	      		} else {
-	        		if(strstr($params, 'v')){
-	          			if(!$app->string->is_word($string, $line)) $find[] = $line;
-	        		} else {
-	          			if($app->string->is_word($string, $line)) $find[] = $line;
-	        		}
-	      		}
-	    	}
-	  	}
-	  	if(is_array($find)){
-		    $ret_val = implode("\n", $find);
-	    	if(substr($ret_val,-1) != "\n") $ret_val .= "\n";
-	    	$find = NULL;
-	    	return $ret_val;
-	  	} else {
-		    return false;
-	  	}
+		// params: i, v, w
+		$content = $app->file->unix_nl($content);
+		$lines = explode("\n", $content);
+		foreach($lines as $line){
+			if(!strstr($params, 'w')){
+				if(strstr($params, 'i')){
+					if(strstr($params, 'v')){
+						if(!stristr($line, $string)) $find[] = $line;
+					} else {
+						if(stristr($line, $string)) $find[] = $line;
+					}
+				} else {
+					if(strstr($params, 'v')){
+						if(!strstr($line, $string)) $find[] = $line;
+					} else {
+						if(strstr($line, $string)) $find[] = $line;
+					}
+				}
+			} else {
+				if(strstr($params, 'i')){
+					if(strstr($params, 'v')){
+						if(!$app->string->is_word($string, $line, 'i')) $find[] = $line;
+					} else {
+						if($app->string->is_word($string, $line, 'i')) $find[] = $line;
+					}
+				} else {
+					if(strstr($params, 'v')){
+						if(!$app->string->is_word($string, $line)) $find[] = $line;
+					} else {
+						if($app->string->is_word($string, $line)) $find[] = $line;
+					}
+				}
+			}
+		}
+		if(is_array($find)){
+			$ret_val = implode("\n", $find);
+			if(substr($ret_val, -1) != "\n") $ret_val .= "\n";
+			$find = NULL;
+			return $ret_val;
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Strip content from fields
 	 *
 	 */
 	function cut($content, $field, $delimiter = ':'){
 		global $app;
-	  	$content = $app->file->unix_nl($content);
-	  	$lines = explode("\n", $content);
-	  	foreach($lines as $line){
-	    	$elms = explode($delimiter, $line);
-	    	$find[] = $elms[($field-1)];
-	  	}
-	  	if(is_array($find)){
-		    $ret_val = implode("\n", $find);
-		    if(substr($ret_val,-1) != "\n") $ret_val .= "\n";
-		    $find = NULL;
-	    	return $ret_val;
-	  	} else {
-		    return false;
-	  	}
+		$content = $app->file->unix_nl($content);
+		$lines = explode("\n", $content);
+		foreach($lines as $line){
+			$elms = explode($delimiter, $line);
+			$find[] = $elms[($field-1)];
+		}
+		if(is_array($find)){
+			$ret_val = implode("\n", $find);
+			if(substr($ret_val, -1) != "\n") $ret_val .= "\n";
+			$find = NULL;
+			return $ret_val;
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Get the content off a file
 	 *
 	 */
 	function cat($file){
 		global $app;
-	  	return $app->file->rf($file);
+		return $app->file->rf($file);
 	}
-	
+
+
+
+
+
 	/**
 	 * Control services to restart etc
 	 *
 	 */
 	function daemon_init($daemon, $action){
 		//* $action = start|stop|restart|reload
-	  	global $app;
-	  	$dist = $this->server_conf['dist'];
-	  	$dist_init_scripts = $this->server_conf['dist_init_scripts'];
-	  	if(!strstr($dist, 'freebsd')){
-		    $app->log->caselog("$dist_init_scripts/$daemon $action &> /dev/null", $this->FILE, __LINE__);
-	  	} else {
-		    if(is_file($dist_init_scripts.'/'.$daemon.'.sh') || is_link($dist_init_scripts.'/'.$daemon.'.sh')){
-	      		if($action == 'start' || $action == 'stop'){
-	        		$app->log->caselog($dist_init_scripts.'/'.$daemon.'.sh '.$action.' &> /dev/null', $this->FILE, __LINE__);
-	      		} else {
-	        		$app->log->caselog($dist_init_scripts.'/'.$daemon.'.sh stop &> /dev/null', $this->FILE, __LINE__);
-	        		sleep(3);
-	        		$app->log->caselog($dist_init_scripts.'/'.$daemon.'.sh start &> /dev/null', $this->FILE, __LINE__);
-	      		}
-	    	} else {
-	      		if(is_file($dist_init_scripts.'/'.$daemon) || is_link($dist_init_scripts.'/'.$daemon)){
-	        		if($action == 'start' || $action == 'stop'){
-	          			$app->log->caselog($dist_init_scripts.'/'.$daemon.' '.$action.' &> /dev/null', $this->FILE, __LINE__);
-	        		} else {
-	          			$app->log->caselog($dist_init_scripts.'/'.$daemon.' stop &> /dev/null', $this->FILE, __LINE__);
-	          			sleep(3);
-	          			$app->log->caselog($dist_init_scripts.'/'.$daemon.' start &> /dev/null', $this->FILE, __LINE__);
-	        		}
-	      		} else {
-	        		if(is_file('/etc/rc.d/'.$daemon) || is_link('/etc/rc.d/'.$daemon)){
-	          			if($action == 'start' || $action == 'stop'){
-	            			$app->log->caselog('/etc/rc.d/'.$daemon.' '.$action.' &> /dev/null', $this->FILE, __LINE__);
-	          			} else {
-	            			$app->log->caselog('/etc/rc.d/'.$daemon.' stop &> /dev/null', $this->FILE, __LINE__);
-	            			sleep(3);
-	            			$app->log->caselog('/etc/rc.d/'.$daemon.' start &> /dev/null', $this->FILE, __LINE__);
-	          			}
-	        		}
-		      	}
-	    	}
-	  	}
+		global $app;
+		$dist = $this->server_conf['dist'];
+		$dist_init_scripts = $this->server_conf['dist_init_scripts'];
+		if(!strstr($dist, 'freebsd')){
+			$app->log->caselog("$dist_init_scripts/$daemon $action &> /dev/null", $this->FILE, __LINE__);
+		} else {
+			if(is_file($dist_init_scripts.'/'.$daemon.'.sh') || is_link($dist_init_scripts.'/'.$daemon.'.sh')){
+				if($action == 'start' || $action == 'stop'){
+					$app->log->caselog($dist_init_scripts.'/'.$daemon.'.sh '.$action.' &> /dev/null', $this->FILE, __LINE__);
+				} else {
+					$app->log->caselog($dist_init_scripts.'/'.$daemon.'.sh stop &> /dev/null', $this->FILE, __LINE__);
+					sleep(3);
+					$app->log->caselog($dist_init_scripts.'/'.$daemon.'.sh start &> /dev/null', $this->FILE, __LINE__);
+				}
+			} else {
+				if(is_file($dist_init_scripts.'/'.$daemon) || is_link($dist_init_scripts.'/'.$daemon)){
+					if($action == 'start' || $action == 'stop'){
+						$app->log->caselog($dist_init_scripts.'/'.$daemon.' '.$action.' &> /dev/null', $this->FILE, __LINE__);
+					} else {
+						$app->log->caselog($dist_init_scripts.'/'.$daemon.' stop &> /dev/null', $this->FILE, __LINE__);
+						sleep(3);
+						$app->log->caselog($dist_init_scripts.'/'.$daemon.' start &> /dev/null', $this->FILE, __LINE__);
+					}
+				} else {
+					if(is_file('/etc/rc.d/'.$daemon) || is_link('/etc/rc.d/'.$daemon)){
+						if($action == 'start' || $action == 'stop'){
+							$app->log->caselog('/etc/rc.d/'.$daemon.' '.$action.' &> /dev/null', $this->FILE, __LINE__);
+						} else {
+							$app->log->caselog('/etc/rc.d/'.$daemon.' stop &> /dev/null', $this->FILE, __LINE__);
+							sleep(3);
+							$app->log->caselog('/etc/rc.d/'.$daemon.' start &> /dev/null', $this->FILE, __LINE__);
+						}
+					}
+				}
+			}
+		}
 	}
-	
+
 	function netmask($netmask){
-	  list($f1,$f2,$f3,$f4) = explode('.', trim($netmask));
-	  $bin = str_pad(decbin($f1),8,'0',STR_PAD_LEFT).str_pad(decbin($f2),8,'0',STR_PAD_LEFT).str_pad(decbin($f3),8,'0',STR_PAD_LEFT).str_pad(decbin($f4),8,'0',STR_PAD_LEFT);
-	  $parts = explode('0', $bin);
-	  $bin = str_pad($parts[0], 32, '0', STR_PAD_RIGHT);
-	  $bin = wordwrap($bin, 8, '.', 1);
-	  list($f1,$f2,$f3,$f4) = explode('.', trim($bin));
-	  return bindec($f1).'.'.bindec($f2).'.'.bindec($f3).'.'.bindec($f4);
+		list($f1, $f2, $f3, $f4) = explode('.', trim($netmask));
+		$bin = str_pad(decbin($f1), 8, '0', STR_PAD_LEFT).str_pad(decbin($f2), 8, '0', STR_PAD_LEFT).str_pad(decbin($f3), 8, '0', STR_PAD_LEFT).str_pad(decbin($f4), 8, '0', STR_PAD_LEFT);
+		$parts = explode('0', $bin);
+		$bin = str_pad($parts[0], 32, '0', STR_PAD_RIGHT);
+		$bin = wordwrap($bin, 8, '.', 1);
+		list($f1, $f2, $f3, $f4) = explode('.', trim($bin));
+		return bindec($f1).'.'.bindec($f2).'.'.bindec($f3).'.'.bindec($f4);
 	}
-	
+
 	function binary_netmask($netmask){
-	  list($f1,$f2,$f3,$f4) = explode('.', trim($netmask));
-	  $bin = str_pad(decbin($f1),8,'0',STR_PAD_LEFT).str_pad(decbin($f2),8,'0',STR_PAD_LEFT).str_pad(decbin($f3),8,'0',STR_PAD_LEFT).str_pad(decbin($f4),8,'0',STR_PAD_LEFT);
-	  $parts = explode('0', $bin);
-	  return substr_count($parts[0], '1');
+		list($f1, $f2, $f3, $f4) = explode('.', trim($netmask));
+		$bin = str_pad(decbin($f1), 8, '0', STR_PAD_LEFT).str_pad(decbin($f2), 8, '0', STR_PAD_LEFT).str_pad(decbin($f3), 8, '0', STR_PAD_LEFT).str_pad(decbin($f4), 8, '0', STR_PAD_LEFT);
+		$parts = explode('0', $bin);
+		return substr_count($parts[0], '1');
 	}
-	
+
 	function network($ip, $netmask){
-	  $netmask = $this->netmask($netmask);
-	  list($f1,$f2,$f3,$f4) = explode('.', $netmask);
-	  $netmask_bin = str_pad(decbin($f1),8,'0',STR_PAD_LEFT).str_pad(decbin($f2),8,'0',STR_PAD_LEFT).str_pad(decbin($f3),8,'0',STR_PAD_LEFT).str_pad(decbin($f4),8,'0',STR_PAD_LEFT);
-	  list($f1,$f2,$f3,$f4) = explode('.', $ip);
-	  $ip_bin = str_pad(decbin($f1),8,'0',STR_PAD_LEFT).str_pad(decbin($f2),8,'0',STR_PAD_LEFT).str_pad(decbin($f3),8,'0',STR_PAD_LEFT).str_pad(decbin($f4),8,'0',STR_PAD_LEFT);
-	  for($i=0;$i<32;$i++){
-	    $network_bin .= substr($netmask_bin,$i,1) * substr($ip_bin,$i,1);
-	  }
-	  $network_bin = wordwrap($network_bin, 8, '.', 1);
-	  list($f1,$f2,$f3,$f4) = explode('.', trim($network_bin));
-	  return bindec($f1).'.'.bindec($f2).'.'.bindec($f3).'.'.bindec($f4);
+		$netmask = $this->netmask($netmask);
+		list($f1, $f2, $f3, $f4) = explode('.', $netmask);
+		$netmask_bin = str_pad(decbin($f1), 8, '0', STR_PAD_LEFT).str_pad(decbin($f2), 8, '0', STR_PAD_LEFT).str_pad(decbin($f3), 8, '0', STR_PAD_LEFT).str_pad(decbin($f4), 8, '0', STR_PAD_LEFT);
+		list($f1, $f2, $f3, $f4) = explode('.', $ip);
+		$ip_bin = str_pad(decbin($f1), 8, '0', STR_PAD_LEFT).str_pad(decbin($f2), 8, '0', STR_PAD_LEFT).str_pad(decbin($f3), 8, '0', STR_PAD_LEFT).str_pad(decbin($f4), 8, '0', STR_PAD_LEFT);
+		for($i=0;$i<32;$i++){
+			$network_bin .= substr($netmask_bin, $i, 1) * substr($ip_bin, $i, 1);
+		}
+		$network_bin = wordwrap($network_bin, 8, '.', 1);
+		list($f1, $f2, $f3, $f4) = explode('.', trim($network_bin));
+		return bindec($f1).'.'.bindec($f2).'.'.bindec($f3).'.'.bindec($f4);
 	}
-	
+
+
+
+
+
 	/**
 	 * Make a broadcast address from an IP number in combination with netmask
 	 *
 	 */
 	function broadcast($ip, $netmask){
 		$netmask = $this->netmask($netmask);
-	  	$binary_netmask = $this->binary_netmask($netmask);
-	  	list($f1,$f2,$f3,$f4) = explode('.', $ip);
-	  	$ip_bin = str_pad(decbin($f1),8,'0',STR_PAD_LEFT).str_pad(decbin($f2),8,'0',STR_PAD_LEFT).str_pad(decbin($f3),8,'0',STR_PAD_LEFT).str_pad(decbin($f4),8,'0',STR_PAD_LEFT);
-	  	$broadcast_bin = str_pad(substr($ip_bin, 0, $binary_netmask),32,'1',STR_PAD_RIGHT);
-	  	$broadcast_bin = wordwrap($broadcast_bin, 8, '.', 1);
-	  	list($f1,$f2,$f3,$f4) = explode('.', trim($broadcast_bin));
-	  	return bindec($f1).'.'.bindec($f2).'.'.bindec($f3).'.'.bindec($f4);
+		$binary_netmask = $this->binary_netmask($netmask);
+		list($f1, $f2, $f3, $f4) = explode('.', $ip);
+		$ip_bin = str_pad(decbin($f1), 8, '0', STR_PAD_LEFT).str_pad(decbin($f2), 8, '0', STR_PAD_LEFT).str_pad(decbin($f3), 8, '0', STR_PAD_LEFT).str_pad(decbin($f4), 8, '0', STR_PAD_LEFT);
+		$broadcast_bin = str_pad(substr($ip_bin, 0, $binary_netmask), 32, '1', STR_PAD_RIGHT);
+		$broadcast_bin = wordwrap($broadcast_bin, 8, '.', 1);
+		list($f1, $f2, $f3, $f4) = explode('.', trim($broadcast_bin));
+		return bindec($f1).'.'.bindec($f2).'.'.bindec($f3).'.'.bindec($f4);
 	}
-	
+
+
+
+
+
 	/**
 	 * Get the network address information
 	 *
 	 */
 	function network_info(){
 		$dist = $this->server_conf['dist'];
-	  	ob_start();
-	  	passthru('ifconfig');
-	  	$output = ob_get_contents();
-	  	ob_end_clean();
-	  	$lines = explode("\n", $output);
-	  	foreach($lines as $line){
-		    $elms = explode(' ', $line);
-	    	if(trim($elms[0]) != '' && substr($elms[0],0,1) != "\t"){
-	      		$elms[0] = trim($elms[0]);
-	      		if(strstr($dist, 'freebsd')) $elms[0] = substr($elms[0],0,-1);
-	      		$interfaces[] = $elms[0];
-	    	}
-	  	}
-	  	if(!empty($interfaces)){
-		    foreach($interfaces as $interface){
-	    		ob_start();
-	      		if(!strstr($dist, 'freebsd')){
-	        		passthru('ifconfig '.$interface." | grep -iw 'inet' | cut -f2 -d: | cut -f1 -d' '");
-	      		} else {
-	        		passthru('ifconfig '.$interface." | grep -iw 'inet' | grep -iv 'inet6' | cut -f2 -d' '");
-	      		}
-	      		$output = trim(ob_get_contents());
-	      		ob_end_clean();
-	      		if($output != ''){
-	        		$ifconfig['INTERFACE'][$interface] = $output;
-	        		$ifconfig['IP'][$output] = $interface;
-	      		}
-	    	}
-	    	if(!empty($ifconfig)){
-	      		return $ifconfig;
-	    	} else {
-	      		return false;
-	    	}
-	  	} else {
-	    	return false;
-	  	}
+		ob_start();
+		passthru('ifconfig');
+		$output = ob_get_contents();
+		ob_end_clean();
+		$lines = explode("\n", $output);
+		foreach($lines as $line){
+			$elms = explode(' ', $line);
+			if(trim($elms[0]) != '' && substr($elms[0], 0, 1) != "\t"){
+				$elms[0] = trim($elms[0]);
+				if(strstr($dist, 'freebsd')) $elms[0] = substr($elms[0], 0, -1);
+				$interfaces[] = $elms[0];
+			}
+		}
+		if(!empty($interfaces)){
+			foreach($interfaces as $interface){
+				ob_start();
+				if(!strstr($dist, 'freebsd')){
+					passthru('ifconfig '.$interface." | grep -iw 'inet' | cut -f2 -d: | cut -f1 -d' '");
+				} else {
+					passthru('ifconfig '.$interface." | grep -iw 'inet' | grep -iv 'inet6' | cut -f2 -d' '");
+				}
+				$output = trim(ob_get_contents());
+				ob_end_clean();
+				if($output != ''){
+					$ifconfig['INTERFACE'][$interface] = $output;
+					$ifconfig['IP'][$output] = $interface;
+				}
+			}
+			if(!empty($ifconfig)){
+				return $ifconfig;
+			} else {
+				return false;
+			}
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Configure the network settings from the system
 	 *
 	 */
 	function network_config(){
 		$ifconfig = $this->network_info();
-	  	if($ifconfig){
-	    	$main_interface = $ifconfig['IP'][$this->server_conf['server_ip']];
-	    	if(strstr($main_interface, ':')){
-	      		$parts = explode(':', $main_interface);
-	      		$main_interface = trim($parts[0]);
-	    	}
-	    	if($main_interface != ''){
-	      		$ips = $this->data['isp_server_ip'];
-	      		if(!empty($ips)){
-	        		foreach($ips as $ip){
-	          			if(!isset($ifconfig['IP'][$ip['server_ip']])){
-	            			$to_set[] = $ip['server_ip'];
-	          			} else {
-	            			unset($ifconfig['IP'][$ip['server_ip']]);
-	          			}
-	        		}
-	        		if(!empty($ifconfig['IP'])){
-	          			foreach($ifconfig['IP'] as $key => $val){
-	            			if(!strstr($val, 'lo') && !strstr($val, 'lp') && strstr($val, $main_interface)){
-	              				exec('ifconfig '.$val.' down &> /dev/null');
-	              				unset($ifconfig['INTERFACE'][$val]);
-	            			}
-	          			}
-	        		}
-	        		if(!empty($to_set)){
-	         			foreach($to_set as $to){
-	           				$i = 0;
-	           				while($i >= 0){
-	             				if(isset($ifconfig['INTERFACE'][$main_interface.':'.$i])){
-	               					$i++;
-					             } else {
-	               					$new_interface = $main_interface.':'.$i;
-	               					$i = -1;
-	             				}
-	           				}
-	           				exec('ifconfig '.$new_interface.' '.$to.' netmask '.$this->server_conf['server_netzmaske'].' up &> /dev/null');
-	           				$ifconfig['INTERFACE'][$new_interface] = $to;
-	          			}
-	        		}
-	      		}
-	    	}
-	  	}
+		if($ifconfig){
+			$main_interface = $ifconfig['IP'][$this->server_conf['server_ip']];
+			if(strstr($main_interface, ':')){
+				$parts = explode(':', $main_interface);
+				$main_interface = trim($parts[0]);
+			}
+			if($main_interface != ''){
+				$ips = $this->data['isp_server_ip'];
+				if(!empty($ips)){
+					foreach($ips as $ip){
+						if(!isset($ifconfig['IP'][$ip['server_ip']])){
+							$to_set[] = $ip['server_ip'];
+						} else {
+							unset($ifconfig['IP'][$ip['server_ip']]);
+						}
+					}
+					if(!empty($ifconfig['IP'])){
+						foreach($ifconfig['IP'] as $key => $val){
+							if(!strstr($val, 'lo') && !strstr($val, 'lp') && strstr($val, $main_interface)){
+								exec('ifconfig '.$val.' down &> /dev/null');
+								unset($ifconfig['INTERFACE'][$val]);
+							}
+						}
+					}
+					if(!empty($to_set)){
+						foreach($to_set as $to){
+							$i = 0;
+							while($i >= 0){
+								if(isset($ifconfig['INTERFACE'][$main_interface.':'.$i])){
+									$i++;
+								} else {
+									$new_interface = $main_interface.':'.$i;
+									$i = -1;
+								}
+							}
+							exec('ifconfig '.$new_interface.' '.$to.' netmask '.$this->server_conf['server_netzmaske'].' up &> /dev/null');
+							$ifconfig['INTERFACE'][$new_interface] = $to;
+						}
+					}
+				}
+			}
+		}
 	}
-	
+
 	function quota_dirs(){
-	  global $app;
-	  $content = $app->file->unix_nl($app->file->no_comments('/etc/fstab'));
-	  $lines = explode("\n", $content);
-	  foreach($lines as $line){
-	    $line = trim($line);
-	    if($line != ''){
-	      $elms = explode("\t", $line);
-	      foreach($elms as $elm){
-	        if(trim($elm) != '') $f[] = $elm;
-	      }
-	      if(!empty($f) && stristr($f[3], 'userquota') && stristr($f[3], 'groupquota')){
-	        $q_dirs[] = trim($f[1]);
-	      }
-	      unset($f);
-	    }
-	  }
-	  if(!empty($q_dirs)){
-	    return $q_dirs;
-	  } else {
-	    return false;
-	  }
+		global $app;
+		$content = $app->file->unix_nl($app->file->no_comments('/etc/fstab'));
+		$lines = explode("\n", $content);
+		foreach($lines as $line){
+			$line = trim($line);
+			if($line != ''){
+				$elms = explode("\t", $line);
+				foreach($elms as $elm){
+					if(trim($elm) != '') $f[] = $elm;
+				}
+				if(!empty($f) && stristr($f[3], 'userquota') && stristr($f[3], 'groupquota')){
+					$q_dirs[] = trim($f[1]);
+				}
+				unset($f);
+			}
+		}
+		if(!empty($q_dirs)){
+			return $q_dirs;
+		} else {
+			return false;
+		}
 	}
-	
+
+
+
+
+
 	/**
 	 * Scan the trash for virusses infection
 	 *
 	 */
 	function make_trashscan(){
 		global $app;
-	  	//trashscan erstellen
-	  	// Template Öffnen
-	  	$app->tpl->clear_all();
-	  	$app->tpl->define( array(table    => 'trashscan.master'));
-	
-	  	if(!isset($this->server_conf['virusadmin']) || trim($this->server_conf['virusadmin']) == '') $this->server_conf['virusadmin'] = 'admispconfig@localhost';
-	  	if(substr($this->server_conf['virusadmin'],0,1) == '#'){
-		    $notify = 'no';
-	  	} else {
-		    $notify = 'yes';
-	  	}
-	
-	  	// Variablen zuweisen
-	  	$app->tpl->assign( array(VIRUSADMIN => $this->server_conf['virusadmin'],
-	                           NOTIFICATION => $notify));
-	
-	  	$app->tpl->parse(TABLE, table);
-	
-	  	$trashscan_text = $app->tpl->fetch();
-	
-	  	$datei = '/home/admispconfig/ispconfig/tools/clamav/bin/trashscan';
-	  	$app->file->wf($datei, $trashscan_text);
-	
-	  	chmod($datei, 0755);
-	  	chown($datei,'admispconfig');
-	  	chgrp($datei,'admispconfig');
+		//trashscan erstellen
+		// Template Öffnen
+		$app->tpl->clear_all();
+		$app->tpl->define( array(table    => 'trashscan.master'));
+
+		if(!isset($this->server_conf['virusadmin']) || trim($this->server_conf['virusadmin']) == '') $this->server_conf['virusadmin'] = 'admispconfig@localhost';
+		if(substr($this->server_conf['virusadmin'], 0, 1) == '#'){
+			$notify = 'no';
+		} else {
+			$notify = 'yes';
+		}
+
+		// Variablen zuweisen
+		$app->tpl->assign( array(VIRUSADMIN => $this->server_conf['virusadmin'],
+				NOTIFICATION => $notify));
+
+		$app->tpl->parse(TABLE, table);
+
+		$trashscan_text = $app->tpl->fetch();
+
+		$datei = '/home/admispconfig/ispconfig/tools/clamav/bin/trashscan';
+		$app->file->wf($datei, $trashscan_text);
+
+		chmod($datei, 0755);
+		chown($datei, 'admispconfig');
+		chgrp($datei, 'admispconfig');
 	}
-	
+
+
+
+
+
 	/**
 	 * Get the current time
 	 *
 	 */
 	function get_time(){
-	  $addr = 'http://www.ispconfig.org/';
-	  $timeout = 1;
-	  $url_parts = parse_url($addr);
-	  $path = $url_parts['path'];
-	  $port = 80;
-	  $urlHandle = @fsockopen($url_parts['host'], $port, $errno, $errstr, $timeout);
-	  if ($urlHandle){
-	    socket_set_timeout($urlHandle, $timeout);
-	
-	    $urlString = 'GET '.$path." HTTP/1.0\r\nHost: ".$url_parts['host']."\r\nConnection: Keep-Alive\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
-	    if ($user) $urlString .= 'Authorization: Basic '.base64_encode($user.':'.$pass)."\r\n";
-	    $urlString .= "\r\n";
-	    fputs($urlHandle, $urlString);
-	
-	    $month['Jan'] = '01';
-	    $month['Feb'] = '02';
-	    $month['Mar'] = '03';
-	    $month['Apr'] = '04';
-	    $month['May'] = '05';
-	    $month['Jun'] = '06';
-	    $month['Jul'] = '07';
-	    $month['Aug'] = '08';
-	    $month['Sep'] = '09';
-	    $month['Oct'] = '10';
-	    $month['Nov'] = '11';
-	    $month['Dec'] = '12';
-	    $c = 0;
-	    $l = 0;
-	    $startzeit = time();
-	    while(!feof($urlHandle) && $c < 2 && $l == 0){
-	      $line = trim(fgets($urlHandle,128));
-	      $response .= $line;
-	      $c = time() - $startzeit;
-	      if($line == '' || substr($line, 0, 5) == 'Date:') $l += 1; // nur den Header auslesen
-	      if(substr($line, 0, 5) == 'Date:'){
-	        $parts = explode(' ', $line);
-	        $tag = $parts[2];
-	        $monat = $month[$parts[3]];
-	        $jahr = $parts[4];
-	        list($stunde, $minute, $sekunde) = explode(':', $parts[5]);
-	        $timestamp = mktime($stunde,$minute,$sekunde,$monat,$tag,$jahr);
-	      }
-	    }
-	
-	    @fclose($urlHandle);
-	
-	    return $timestamp;
-	  } else {
-	    @fclose($urlHandle);
-	    return false;
-	  }
+		$addr = 'http://www.ispconfig.org/';
+		$timeout = 1;
+		$url_parts = parse_url($addr);
+		$path = $url_parts['path'];
+		$port = 80;
+		$urlHandle = @fsockopen($url_parts['host'], $port, $errno, $errstr, $timeout);
+		if ($urlHandle){
+			socket_set_timeout($urlHandle, $timeout);
+
+			$urlString = 'GET '.$path." HTTP/1.0\r\nHost: ".$url_parts['host']."\r\nConnection: Keep-Alive\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
+			if ($user) $urlString .= 'Authorization: Basic '.base64_encode($user.':'.$pass)."\r\n";
+			$urlString .= "\r\n";
+			fputs($urlHandle, $urlString);
+
+			$month['Jan'] = '01';
+			$month['Feb'] = '02';
+			$month['Mar'] = '03';
+			$month['Apr'] = '04';
+			$month['May'] = '05';
+			$month['Jun'] = '06';
+			$month['Jul'] = '07';
+			$month['Aug'] = '08';
+			$month['Sep'] = '09';
+			$month['Oct'] = '10';
+			$month['Nov'] = '11';
+			$month['Dec'] = '12';
+			$c = 0;
+			$l = 0;
+			$startzeit = time();
+			while(!feof($urlHandle) && $c < 2 && $l == 0){
+				$line = trim(fgets($urlHandle, 128));
+				$response .= $line;
+				$c = time() - $startzeit;
+				if($line == '' || substr($line, 0, 5) == 'Date:') $l += 1; // nur den Header auslesen
+				if(substr($line, 0, 5) == 'Date:'){
+					$parts = explode(' ', $line);
+					$tag = $parts[2];
+					$monat = $month[$parts[3]];
+					$jahr = $parts[4];
+					list($stunde, $minute, $sekunde) = explode(':', $parts[5]);
+					$timestamp = mktime($stunde, $minute, $sekunde, $monat, $tag, $jahr);
+				}
+			}
+
+			@fclose($urlHandle);
+
+			return $timestamp;
+		} else {
+			@fclose($urlHandle);
+			return false;
+		}
 	}
-	
-	function replaceLine($filename,$search_pattern,$new_line,$strict = 0,$append = 1) {
+
+	function replaceLine($filename, $search_pattern, $new_line, $strict = 0, $append = 1) {
 		global $app;
 		if($this->checkpath($filename) == false) {
-			$app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
+			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
 			return false;
 		}
 		$lines = @file($filename);
@@ -1315,7 +1425,7 @@
 		if(is_array($lines)) {
 			foreach($lines as $line) {
 				if($strict == 0) {
-					if(stristr($line,$search_pattern)) {
+					if(stristr($line, $search_pattern)) {
 						$out .= $new_line."\n";
 						$found = 1;
 					} else {
@@ -1331,64 +1441,64 @@
 				}
 			}
 		}
-		
+
 		if($found == 0) {
 			//* add \n if the last line does not end with \n or \r
-			if(substr($out,-1) != "\n" && substr($out,-1) != "\r" && filesize($filename) > 0) $out .= "\n";
+			if(substr($out, -1) != "\n" && substr($out, -1) != "\r" && filesize($filename) > 0) $out .= "\n";
 			//* add the new line at the end of the file
 			if($append == 1) {
 				$out .= $new_line."\n";
 			}
 		}
-		file_put_contents($filename,$out);
+		file_put_contents($filename, $out);
 	}
-	
-	function removeLine($filename,$search_pattern,$strict = 0) {
-	global $app;
-	if($this->checkpath($filename) == false) {
-		$app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
-		return false;
-	}
-	if($lines = @file($filename)) {
-		$out = '';
-		foreach($lines as $line) {
-			if($strict == 0) {
-				if(!stristr($line,$search_pattern)) {
-					$out .= $line;
-				}
-			} else {
-				if(!trim($line) == $search_pattern) {
-					$out .= $line;
+
+	function removeLine($filename, $search_pattern, $strict = 0) {
+		global $app;
+		if($this->checkpath($filename) == false) {
+			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
+			return false;
+		}
+		if($lines = @file($filename)) {
+			$out = '';
+			foreach($lines as $line) {
+				if($strict == 0) {
+					if(!stristr($line, $search_pattern)) {
+						$out .= $line;
+					}
+				} else {
+					if(!trim($line) == $search_pattern) {
+						$out .= $line;
+					}
 				}
 			}
+			file_put_contents($filename, $out);
 		}
-		file_put_contents($filename,$out);
 	}
-	}
-	
+
 	function maildirmake($maildir_path, $user = '', $subfolder = '') {
-		
+
 		global $app;
-		
+
 		if($subfolder != '') {
 			$dir = escapeshellcmd($maildir_path.'/.'.$subfolder);
 		} else {
 			$dir = escapeshellcmd($maildir_path);
 		}
-		
+
 		if(!is_dir($dir)) mkdir($dir, 0700, true);
 
 		if($user != '' && $user != 'root' && $this->is_user($user)) {
 			$user = escapeshellcmd($user);
 			// I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3
 			$group = $user;
-			if(is_dir($dir)) $this->chown($dir,$user);
-			if(is_dir($dir)) $this->chgrp($dir,$group);
+			if(is_dir($dir)) $this->chown($dir, $user);
+			if(is_dir($dir)) $this->chgrp($dir, $group);
 
 			$chown_mdsub = true;
 		}
-		
-		$maildirsubs = array('cur','new','tmp');
+
+		$maildirsubs = array('cur', 'new', 'tmp');
 
 		foreach ($maildirsubs as $mdsub) {
 			if(!is_dir($dir.'/'.$mdsub)) mkdir($dir.'/'.$mdsub, 0700, true);
@@ -1399,7 +1509,7 @@
 		}
 
 		chmod($dir, 0700);
-		
+
 		/*
 		if($user != '' && $this->is_user($user) && $user != 'root') {
 			$user = escapeshellcmd($user);
@@ -1408,7 +1518,7 @@
 			exec("chown $user:$group $dir $dir_cur $dir_new $dir_tmp");
 		}
 		*/
-		
+
 		//* Add the subfolder to the subscriptions and courierimapsubscribed files
 		if($subfolder != '') {
 			// Courier
@@ -1416,188 +1526,188 @@
 				$tmp_file = escapeshellcmd($maildir_path.'/courierimapsubscribed');
 				touch($tmp_file);
 				chmod($tmp_file, 0744);
-				chown($tmp_file,'vmail');
-				chgrp($tmp_file,'vmail');
+				chown($tmp_file, 'vmail');
+				chgrp($tmp_file, 'vmail');
 			}
-			$this->replaceLine($maildir_path.'/courierimapsubscribed','INBOX.'.$subfolder,'INBOX.'.$subfolder,1,1);
-			
+			$this->replaceLine($maildir_path.'/courierimapsubscribed', 'INBOX.'.$subfolder, 'INBOX.'.$subfolder, 1, 1);
+
 			// Dovecot
 			if(!is_file($maildir_path.'/subscriptions')) {
 				$tmp_file = escapeshellcmd($maildir_path.'/subscriptions');
 				touch($tmp_file);
 				chmod($tmp_file, 0744);
-				chown($tmp_file,'vmail');
-				chgrp($tmp_file,'vmail');
+				chown($tmp_file, 'vmail');
+				chgrp($tmp_file, 'vmail');
 			}
-			$this->replaceLine($maildir_path.'/subscriptions',$subfolder,$subfolder,1,1);
+			$this->replaceLine($maildir_path.'/subscriptions', $subfolder, $subfolder, 1, 1);
 		}
-		
-		$app->log('Created Maildir '.$maildir_path.' with subfolder: '.$subfolder,LOGLEVEL_DEBUG);
-		
+
+		$app->log('Created Maildir '.$maildir_path.' with subfolder: '.$subfolder, LOGLEVEL_DEBUG);
+
 	}
-	
+
 	//* Function to create directory paths and chown them to a user and group
 	function mkdirpath($path, $mode = 0755, $user = '', $group = '') {
-		$path_parts = explode('/',$path);
+		$path_parts = explode('/', $path);
 		$new_path = '';
 		if(is_array($path_parts)) {
 			foreach($path_parts as $part) {
 				$new_path .= '/'.$part;
 				if(!@is_dir($new_path)) {
 					$this->mkdir($new_path);
-					$this->chmod($new_path,$mode);
-					if($user != '') $this->chown($new_path,$user);
-					if($group != '') $this->chgrp($new_path,$group);
+					$this->chmod($new_path, $mode);
+					if($user != '') $this->chown($new_path, $user);
+					if($group != '') $this->chgrp($new_path, $group);
 				}
 			}
 		}
-		
+
 	}
-	
+
 	//* Check if a application is installed
 	function is_installed($appname) {
-		exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out,$returncode);
-		if(isset($out[0]) && stristr($out[0],$appname) && $returncode == 0) {
+		exec('which '.escapeshellcmd($appname).' 2> /dev/null', $out, $returncode);
+		if(isset($out[0]) && stristr($out[0], $appname) && $returncode == 0) {
 			return true;
 		} else {
 			return false;
 		}
 	}
-	
-	function web_folder_protection($document_root,$protect) {
-		global $app,$conf;
-		
+
+	function web_folder_protection($document_root, $protect) {
+		global $app, $conf;
+
 		if($this->checkpath($document_root) == false) {
-			$app->log("Action aborted, target is a symlink: $document_root",LOGLEVEL_DEBUG);
+			$app->log("Action aborted, target is a symlink: $document_root", LOGLEVEL_DEBUG);
 			return false;
 		}
-		
+
 		//* load the server configuration options
 		$app->uses('getconf');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
-		
+
 		if($protect == true && $web_config['web_folder_protection'] == 'y') {
 			//* Add protection
-			if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root,'..')) exec('chattr +i '.escapeshellcmd($document_root));
+			if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) exec('chattr +i '.escapeshellcmd($document_root));
 		} else {
 			//* Remove protection
-			if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root,'..')) exec('chattr -i '.escapeshellcmd($document_root));
+			if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) exec('chattr -i '.escapeshellcmd($document_root));
 		}
 	}
-	
+
 	function usermod($username, $uid = 0, $gid = 0, $home = '', $shell = '', $password = '', $login = '') {
 		global $app;
-		
+
 		if($login == '') $login = $username;
-		
+
 		//* Change values in /etc/passwd
 		$passwd_file_array = file('/etc/passwd');
 		if(is_array($passwd_file_array)) {
 			foreach($passwd_file_array as $line) {
 				$line = trim($line);
-				$parts = explode(':',$line);
+				$parts = explode(':', $line);
 				if($parts[0] == $username) {
 					if(trim($login) != '' && trim($login) != trim($username)) $parts[0] = trim($login);
 					if(!empty($uid)) $parts[2] = trim($uid);
 					if(!empty($gid)) $parts[3] = trim($gid);
 					if(trim($home) != '') $parts[5] = trim($home);
 					if(trim($shell) != '') $parts[6] = trim($shell);
-					$new_line = implode(':',$parts);
-					copy('/etc/passwd','/etc/passwd~');
-					chmod('/etc/passwd~',0600);
+					$new_line = implode(':', $parts);
+					copy('/etc/passwd', '/etc/passwd~');
+					chmod('/etc/passwd~', 0600);
 					$app->uses('system');
-					$app->system->replaceLine('/etc/passwd',$line,$new_line,1,0);
+					$app->system->replaceLine('/etc/passwd', $line, $new_line, 1, 0);
 				}
 			}
 			unset($passwd_file_array);
 		}
-		
+
 		//* If username != login, change username in group and gshadow file
 		if($username  != $login) {
 			$group_file_array = file('/etc/group');
 			if(is_array($group_file_array)) {
 				foreach($group_file_array as $line) {
 					$line = trim($line);
-					$parts = explode(':',$line);
-					if(strstr($parts[3],$username)) {
-						$uparts = explode(',',$parts[3]);
+					$parts = explode(':', $line);
+					if(strstr($parts[3], $username)) {
+						$uparts = explode(',', $parts[3]);
 						if(is_array($uparts)) {
 							foreach($uparts as $key => $val) {
 								if($val == $username) $uparts[$key] = $login;
 							}
 						}
-						$parts[3] = implode(',',$uparts);
-						$new_line = implode(':',$parts);
-						copy('/etc/group','/etc/group~');
-						chmod('/etc/group~',0600);
-						$app->system->replaceLine('/etc/group',$line,$new_line,1,0);
+						$parts[3] = implode(',', $uparts);
+						$new_line = implode(':', $parts);
+						copy('/etc/group', '/etc/group~');
+						chmod('/etc/group~', 0600);
+						$app->system->replaceLine('/etc/group', $line, $new_line, 1, 0);
 					}
 				}
 			}
 			unset($group_file_array);
-			
+
 			$gshadow_file_array = file('/etc/gshadow');
 			if(is_array($gshadow_file_array)) {
 				foreach($gshadow_file_array as $line) {
 					$line = trim($line);
-					$parts = explode(':',$line);
-					if(strstr($parts[3],$username)) {
-						$uparts = explode(',',$parts[3]);
+					$parts = explode(':', $line);
+					if(strstr($parts[3], $username)) {
+						$uparts = explode(',', $parts[3]);
 						if(is_array($uparts)) {
 							foreach($uparts as $key => $val) {
 								if($val == $username) $uparts[$key] = $login;
 							}
 						}
-						$parts[3] = implode(',',$uparts);
-						$new_line = implode(':',$parts);
-						copy('/etc/gshadow','/etc/gshadow~');
-						chmod('/etc/gshadow~',0600);
-						$app->system->replaceLine('/etc/gshadow',$line,$new_line,1,0);
+						$parts[3] = implode(',', $uparts);
+						$new_line = implode(':', $parts);
+						copy('/etc/gshadow', '/etc/gshadow~');
+						chmod('/etc/gshadow~', 0600);
+						$app->system->replaceLine('/etc/gshadow', $line, $new_line, 1, 0);
 					}
 				}
 			}
 			unset($group_file_array);
 		}
-		
-		
+
+
 		//* When password or login name has been changed
 		if($password != '' || $username  != $login) {
 			$shadow_file_array = file('/etc/shadow');
 			if(is_array($shadow_file_array)) {
 				foreach($shadow_file_array as $line) {
 					$line = trim($line);
-					$parts = explode(':',$line);
+					$parts = explode(':', $line);
 					if($parts[0] == $username) {
 						if(trim($login) != '' && trim($login) != trim($username)) $parts[0] = trim($login);
 						if(trim($password) != '') $parts[1] = trim($password);
-						$new_line = implode(':',$parts);
-						copy('/etc/shadow','/etc/shadow~');
-						chmod('/etc/shadow~',0600);
-						$app->system->replaceLine('/etc/shadow',$line,$new_line,1,0);
+						$new_line = implode(':', $parts);
+						copy('/etc/shadow', '/etc/shadow~');
+						chmod('/etc/shadow~', 0600);
+						$app->system->replaceLine('/etc/shadow', $line, $new_line, 1, 0);
 					}
 				}
 			}
 			unset($shadow_file_array);
 		}
 	}
-	
+
 	function intval($string, $force_numeric = false) {
-        if(intval($string) == 2147483647) {
-            if($force_numeric == true) return floatval($string);
-            elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2];
-            else return 0;
-        } else {
-            return intval($string);
-        }
-    }
-	
+		if(intval($string) == 2147483647) {
+			if($force_numeric == true) return floatval($string);
+			elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2];
+			else return 0;
+		} else {
+			return intval($string);
+		}
+	}
+
 	function is_mounted($mountpoint){
 		//$cmd = 'df 2>/dev/null | grep " '.$mountpoint.'$"';
 		$cmd = 'mount 2>/dev/null | grep " on '.$mountpoint.' type "';
 		exec($cmd, $output, $return_var);
-		return $return_var == 0 ? true : false; 
+		return $return_var == 0 ? true : false;
 	}
-	
+
 	function getinitcommand($servicename, $action, $init_script_directory = ''){
 		global $conf;
 		// systemd
@@ -1616,4 +1726,5 @@
 	}
 
 }
+
 ?>

--
Gitblit v1.9.1