false); while (!feof($fsock) && !$info['timed_out']) { $buffer .= fread($fsock, 1024); $info = stream_get_meta_data($fsock); } fclose($fsock); if ($info['timed_out'] || !$buffer) { return null; } if (substr($buffer, 9, 3) != "200") { return null; } $result = explode("\r\n\r\n", $buffer, 2); if (count($result) < 2) { return null; } return $result[1]; } /** * Load config xml-file * * @param string $fileName * @return \SimpleXMLElement */ public static function loadConfig($fileName) { $fileLocation = ManiaControlDir . '/configs/' . $fileName; if (!file_exists($fileLocation)) { trigger_error("Config file doesn't exist! ({$fileName})"); return null; } if (!is_readable($fileLocation)) { trigger_error("Config file isn't readable! Please check your file permissions. ({$fileName})"); return null; } return simplexml_load_file($fileLocation); } /** * Return file name cleared from special characters * * @param string $fileName * @return string */ public static function getClearedFileName($fileName) { $fileName = Formatter::stripCodes($fileName); $fileName = str_replace(array('\\', '/', ':', '*', '?', '"', '<', '>', '|'), '_', $fileName); $fileName = preg_replace('/[^[:print:]]/', '', $fileName); return $fileName; } /** * Get the Temporary Folder and create it if necessary * * @param bool $createIfNecessary * @return string */ public static function getTempFolder($createIfNecessary = true) { $tempFolder = ManiaControlDir . self::FOLDER_NAME_TEMP; if ($createIfNecessary && !is_dir($tempFolder)) { mkdir($tempFolder); } return $tempFolder; } /** * Delete the Temporary Folder if it's empty * * @return bool */ public static function removeTempFolder() { $tempFolder = self::getTempFolder(false); return @rmdir($tempFolder); } /** * Check if ManiaControl has sufficient Access to write to Files in the given Directories * * @param mixed $directories * @return bool */ public static function checkWritePermissions($directories) { if (!is_array($directories)) { $directories = array($directories); } foreach ($directories as $directory) { $dir = new \RecursiveDirectoryIterator(ManiaControlDir . $directory); foreach (new \RecursiveIteratorIterator($dir) as $fileName => $file) { if (substr($fileName, 0, 1) === '.') { continue; } if (!is_writable($fileName)) { $message = "Write-Access missing for File '{$fileName}'!"; logMessage($message); return false; } } } return true; } }