PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: PathTool.php Size: 3.02 KB
/usr/local/lsws/admin/html.6.3.2/classes/PathTool.php

<?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;
	}

}

Directory Contents

Dirs: 1 × Files: 18

Name Size Perms Modified Actions
ws DIR
- drwxr-xr-x 2025-04-06 18:27:24
Edit Download
25.68 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
860 B lrw-r--r-- 2025-04-06 18:27:24
Edit Download
13.87 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
4.68 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
2.19 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
26.65 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
12.42 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
773 B lrw-r--r-- 2025-04-06 18:27:24
Edit Download
2.53 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
582 B lrw-r--r-- 2025-04-06 18:27:24
Edit Download
4.36 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
3.75 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
17.52 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
4.22 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
3.25 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
15.92 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
3.02 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download
3.27 KB lrw-r--r-- 2025-04-06 18:27:24
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI