ok
Direktori : /proc/thread-self/root/proc/self/root/usr/local/lsws/admin/html.5.4.12/classes/ |
Current File : //proc/thread-self/root/proc/self/root/usr/local/lsws/admin/html.5.4.12/classes/PathTool.php |
<?php class PathTool { public static function getAbsolutePath($root, $path) { if ( $path{-1} != '/' ) $path .= '/'; $newPath = $this->getAbsoluteFile($root, $path); return $newPath; } public static function getAbsoluteFile($root, $path) { if ( $path{0} != '/' ) $path = $root . '/' . $path; $newPath = $this->clean($path); return $newPath; } public static function hasSymbolLink($path) { if ( $path != realpath($path) ) return true; else return false; } public static function clean($path) { do { $newS1 = $path; $newS = str_replace('//', '/', $path); $path = $newS; } while ( $newS != $newS1 ); do { $newS1 = $path; $newS = str_replace('/./', '/', $path); $path = $newS; } while ( $newS != $newS1 ); do { $newS1 = $path; $newS = preg_replace('/\/[^\/^\.]+\/\.\.\//', '/', $path); $path = $newS; } while ( $newS != $newS1 ); return $path; } public static function createFile($path, &$err, $htmlname) { if ( file_exists($path) ) { if ( is_file($path) ) { $err = 'Already exists '.$path; return false; } else { $err = 'name conflicting with an existing directory '.$path; return false; } } $dirmode = 0700; // default $filemode = 0600; $specials = ['userDB:location', 'groupDB:location']; if (in_array($htmlname, $specials) && strpos($path, '/lsws/conf/') !== false) { $dirmode = 0755; // conf dir will be group protected $filemode = 0644; } $dir = substr($path, 0, (strrpos($path, '/'))); if ( PathTool::createDir($dir, $dirmode, $err) ) { if ( touch($path) ) { chmod($path, $filemode); //populate vhconf tags $type = 'vh'; if ($htmlname == 'templateFile') $type = 'tp'; $newconf = new ConfData($type, $path, 'newconf'); $config = new ConfigFile(); $res = $config->save($newconf); if ( !$res ) { $err = 'failed to save to file ' . $path; return false; } return true; } else $err = 'failed to create file '. $path; } return false; } public static function createDir($path, $mode, &$err) { if ( file_exists($path) ) { if ( is_dir($path) ) return true; else { $err = "$path is not a directory"; return false; } } $parent = substr($path, 0, (strrpos($path, '/'))); if ( strlen($parent) <= 1 ) { $err = "invalid path: $path"; return false; } if ( !file_exists($parent) && !PathTool::createDir($parent, $mode, $err) ) return false; if ( mkdir($path, $mode) ) return true; else { $err = "fail to create directory $path"; return false; } } public static function isDenied($path) { $absname = realpath($path); if ( strncmp( $absname, '/etc/', 5 ) == 0 ) return true; else return false; } }