error('Invalid service '.$service); if(isset($_SESSION['s']['user']) && $_SESSION['s']['user']['typ'] == 'admin') return true; //* We do not check admin-users // simple query cache if($this->client_service===null) $this->client_service = $app->db->queryOneRecord("SELECT client.* FROM sys_user, client WHERE sys_user.userid = ? AND sys_user.client_id = client.client_id", $userid); // isn't service if(!$this->client_service) return false; if($this->client_service['default_'.$service.'server'] > 0 || $this->client_service[$service.'_servers'] != '') { return true; } else { return false; } } public function last_exec_out() { return $this->_last_exec_out; } public function last_exec_retcode() { return $this->_last_exec_retcode; } public function exec_safe($cmd) { $arg_count = func_num_args(); if($arg_count != substr_count($cmd, '?') + 1) { trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); return false; } if($arg_count > 1) { $args = func_get_args(); array_shift($args); $pos = 0; $a = 0; foreach($args as $value) { $a++; $pos = strpos($cmd, '?', $pos); if($pos === false) { break; } $value = escapeshellarg($value); $cmd = substr_replace($cmd, $value, $pos, 1); $pos += strlen($value); } } $this->_last_exec_out = null; $this->_last_exec_retcode = null; return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); } public function system_safe($cmd) { call_user_func_array(array($this, 'exec_safe'), func_get_args()); return implode("\n", $this->_last_exec_out); } //* Check if a application is installed public function is_installed($appname) { $this->exec_safe('which ? 2> /dev/null', $appname); $out = $this->last_exec_out(); $returncode = $this->last_exec_retcode(); if(isset($out[0]) && stristr($out[0], $appname) && $returncode == 0) { return true; } else { return false; } } } //* End Class