404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.14.244.95: ~ $
<?php

class PathTool
{
	public static function getAbsolutePath($root, $path)
	{
		if ( substr($path, -1) != '/' ) {
			$path .= '/';
		}
		$newPath = $this->getAbsoluteFile($root, $path);
		return $newPath;
	}

	public static function getAbsoluteFile($root, $path)
	{
		if ( substr($path, 0, 1) != '/' ) {
			$path = $root . '/' . $path;
		}
		$newPath = $this->clean($path);
		return $newPath;
	}

	public static function hasSymbolLink($path)
	{
		return ( $path != realpath($path) );
	}

	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)) {
			$err = is_file($path) ? "Already exists $path" : "name conflicting with an existing directory $path";
			return false;
		}

		$dir = substr($path, 0, (strrpos($path, '/')));

		$dirmode = 0700; // default
		$filemode = 0600;
		$specials = ['userDB:location', 'groupDB:location'];
		if (in_array($htmlname, $specials)) {
			$dirmode = 0755; // conf dir will be group protected
			$filemode = 0644;
			$special_note = 'WebAdmin user does not have permission to create this file. You can manually create it and populate the data. Make sure it is readable by the user that web server is running as (usually nobody).';
			if (PathTool::createDir($dir, $dirmode, $err)) {
				if (touch($path)) {
					chmod($path, $filemode);
					return true;
				}
				$err = 'failed to create file ' . $path;
			}
			$err .= '. ' . $special_note;
			return false;
		}

		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;
			}
			$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;
			}
			$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;
		}
		$err = "fail to create directory $path";
		return false;
	}

	public static function isDenied($path)
	{
		$absname = realpath($path);
		if (strncmp($absname, '/etc/', 5) == 0) {
			return true;
		}
		return false;
	}

}


Filemanager

Name Type Size Permission Actions
ws Folder 0755
CValidation.php File 26.65 KB 0644
ConfData.php File 860 B 0644
ConfigFile.php File 13.87 KB 0644
ConfigFileEx.php File 4.68 KB 0644
CustStatusCode.php File 2.19 KB 0644
DATTR_HELP.php File 773 B 0644
DATTR_HELP_ITEM.php File 2.53 KB 0644
DAttrBase.php File 12.42 KB 0644
DFileSect.php File 582 B 0644
DPage.php File 3.75 KB 0644
DTbl.php File 17.52 KB 0644
DUtil.php File 4.22 KB 0644
DispInfo.php File 4.36 KB 0644
GUIBase.php File 3.25 KB 0644
PathTool.php File 3.02 KB 0644
XmlTreeBuilder.php File 3.27 KB 0644
blowfish.php File 25.68 KB 0644
jCryption.php File 15.92 KB 0644