Location: PHPKode > projects > PSlash > pslash-0.70/html/modules/webfile/index.php
<?
############################################################
#
#	WEBEXPLORER 2.0 BY SUNE ALEXANDERSEN
#		hide@address.com
#			11:41 23.02.01
#
#WebExplorer is a Windows Explorer style file manager
#through your webbrowser, but don't let the "Windows part"
#of it scare you away! Just upload the file to your designated
#"admin" directory on your PHP enabled website, edit the
#variable $basedir to reflect your website, and off you go!!
#
#This application lets you edit, browse, CHMOD, view, move,
#rename, copy, and create files/directories in any forms/tables
#enabled browser.
#You even have the option to create html skeleton-files. 
#
#PS: Let me stress out that WebExplorer does not have any
#"built in" authorization function. Use HTAccess or similar for this
#
# SETUP:::
#	Edit $basedir = "/PATH/TO/YOUR/DIR"; to reflect your site
#
#PRIVATE Licensing:
#The best things in life are free, and so is WebExplorer if
#plan on using it non-commercial.
#But if you appreciate the product, I would appreciate a
#small donation from you. Either by bank to my Norwegian
#account or by a gift certificate from Amazon.com. 
#
#COMMERCIAL Licensing
#If you should use it for commercial means though, you have
#to pay a one-time fee of $100. Contact me for details. You
#will then get all upgrades as they are released, and you can
#even ask for customized versions.
#
#Payment information:
#SWIFT CODE: DNBANOKK
#ACCOUNT NUMBER: 5136 11 55 487
#
#My postal adress is:
#
#Sune Alexandersen
#Kongsskogen 62
#1370 Asker
#Norway
#
#Please send me a postcard from your country letting me know
#you are using WebExplorer!
#
#If you are one of the people out there who are dying to
#learn programming, let me tell you one thing; 
#GET ON WITH IT!
#It isn't as hard as you might imagine. All you need is
#a plain, clear idea of your project and then start!
#
#New features in this upgrade:
#- All graphics have sizes specified, therefore HTML renders faster 
#- Fixed security hole when user entered .. chdir. User could go above the set basedir without this fix. 
#- Added support for PHTML, PNG, ZIP and WML as supported filetypes. 
#- Added "save & exit" and "restore original" button in edit mode and "edit" button in view mode. 
#- Added tiptext (title=" ") to some links. 
#- Added a BACK link when needed 
#- Added $webname to title tag. 
#- Added a check to see if there is an update available of WebExplorer. 
#- Added option to use Cascaded style sheets. 
#- The filetype detection is greatly improved. Now it is case-insensitive. 
#- The "select"'s on CHMOD now shows the current permissions. 
#- Security upgraded in many ways. 
#- Opportunity to "turn off" features.
#
#Newest version of this program can be found at www.suneworld.com/programs
#
#Live long and prosper my friend.
#Kind regards, Sune Alexandersen, hide@address.com 11:38 23.02.01
#	Modify by Derek Leung on May 29th 2001
############################################################
############### Set up some variables and functions
include("../../mainfile.php");
global $config;
$userArray = getCookie($config[user_cookie_name]);
if ($userArray[status] != "Admin" && $userArray[status] != "Moderator") {
	echo "Access Deny!";
	exit;
}

############### CHANGE THIS TO YOUR DESIRED ROOT DIRECTORY
############### Add a slash at the start of the line. NO slash at the end.
$basedir = $config[root_path] . $config[submitImg_relative_path];
$basepath = $config[submitImg_relative_path];



$updatecheck = "yes";

$enable_css = "yes";

$allow_move = "yes";
$allow_download = "yes";
$allow_copy = "yes";
$allow_touch = "yes";
$allow_rename = "yes";
$allow_edit = "yes";
$allow_chmod = "yes";
$allow_delete = "yes";
$allow_upload = "yes";
$allow_create_dir = "yes";
$allow_create_file = "no";


$not_allowed = "This action is not allowed. Consult your system administrator.";


############### Size for textarea
if($enable_css == "yes")
	{
	$textrows = "27";
	$textcols = "160";
	}
else
	{
	$textrows = "20";
	$textcols = "100";
	}

############### If $wdir (working directory) isn't specified, set it as a slash (/)
if(!$wdir) $wdir="/";

############### HTML ender
$html_ender = "</td></tr><tr><td colspan=\"2\"><hr></td></tr><tr><th colspan=\"2\" bgcolor=\"#4C4C99\"><font size=\"-1\" color=\"white\" face=\"arial, helvetica\">&nbsp;</font></th></tr></table>";

############### Calculate image size
function imagesize()
	{
	$size = GetImageSize("$image");
	}

############### HTML header
function html_header(){
	global $basedir;
	global $wdir;
	global $lastaction;

	global $HTTP_REFERER;
	global $action;
	global $config;
	global $display;
	global $file;
	global $browse;
	global $raw;
	global $image;
	global $fileurl;
	global $enable_css;


	ps_header("");
	echo "<BODY bgcolor=\"#C0C0C0\" link=\"#4C4C99\" vlink=\"#4C4C99\" alink=\"#4C4C99\">";
	echo "<table border=\"0\" align=\"center\" cellspacing=\"3\" cellpadding=\"3\" width=\"600\">";
	echo "<tr>";
	echo "	<th colspan=\"2\" width=\"100%\" bgcolor=\"#4C4C99\">";

	
	

	echo "	 &nbsp;<font size=\"6\" color=\"white\" face=\"arial, helvetica\">WebExplorer</font> &nbsp";
	
	echo "	</th>";
	echo "</tr>";
	echo "<tr>";
	echo " <td width\"50%\" align=\"left\"><A HREF=\"$PHP_SELF?action=root\"><font size=\"4\" face=\"arial, helvetica\">Back to root</font></a></td>";
	echo " <td width\"50%\" align=\"right\"><A HREF=\"$PHP_SELF?wdir=$wdir\" title=\"Refresh current dir\"><font size=\"4\" face=\"arial, helvetica\">$wdir</font><img src=\"explore.gif\" border=\"0\" width=\"15\" height=\"15\"></a></td>";
	echo "</tr>";
	echo "<tr>";
	echo " <td colspan=\"2\"><hr></td>";
	echo "</tr>";
	echo "<tr>";

	############ We want a BACK link when viewing pictures and raw text.
	if($action == "show")
		{
		echo " <td width=\"50%\" nobreak><b><font size=\"3\" color=\"#4C4C99\" face=\"arial, helvetica\">$lastaction</font></b></td>";
		echo " <td width=\"50%\" nobreak align=\"right\"><b><font size=\"3\" color=\"#4C4C99\" face=\"arial, helvetica\"><a href=\"$HTTP_REFERER\" title=\"Back to previous page\">Back</a></font></b></td>";
		}

	############ We dont want a BACK link
	else
		{
		echo " <td colspan=\"2\"><b><font size=\"3\" color=\"#4C4C99\" face=\"arial, helvetica\">$lastaction</font></b></td>";
		}

	echo "<tr>";
	echo "<td colspan=\"2\"><hr><td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td colspan=\"2\">";
}

############ File size calculations
function display_size($file){
$file_size = filesize($file);
if($file_size >= 1073741824)
 	{
        $file_size = round($file_size / 1073741824 * 100) / 100 . "g";
	}
elseif($file_size >= 1048576)
	{
        $file_size = round($file_size / 1048576 * 100) / 100 . "m";
	}
elseif($file_size >= 1024)
	{
        $file_size = round($file_size / 1024 * 100) / 100 . "k";
	}
else{
        $file_size = $file_size . "b";
	}
return $file_size;
}

############ List the files function
function list_files()
	{
	global $basedir;
	global $basepath;
	global $wdir;	
	global $single;
	global $key;
	global $config;
	global $allow_move;
	global $allow_chmod;
	global $allow_create_file;
	global $allow_create_dir;	
	global $allow_upload;

	global $allow_touch;
	global $allow_delete;

	################## Load directory into array
	$handle=opendir(".");
	while ($file = readdir($handle))
		{
		if(is_file($file)) $filelist[] = $file;
		}
	closedir($handle);

	############### List files
	if($filelist)
		{
		############### Sort the filelist alphabetically
		asort($filelist);
		while (list ($key, $file) = each ($filelist))
			{

			############### Registered filetypes. You can add more filetypes here at wish..
			############### Check what fileformat it is and give it the correct icon and attributes
			$ext = strrchr ( $file , "." );

			############### Image
			if((!strcasecmp ($ext, ".gif")) || (!strcasecmp ($ext, ".jpg")) || (!strcasecmp ($ext, ".png")) || (!strcasecmp ($ext, ".bmp")) || (!strcasecmp ($ext, ".jpeg")))
				{
				$icon = "<IMG SRC=\"image.gif\" alt=\"Image\" border=\"0\" width=\"16\" height=\"16\">";
				$browse = "1";
				$raw = "0";
				$image = "1";
				}
	
			############### Textfile
			elseif(!strcasecmp ($ext, ".txt"))
				{
				$icon = "<IMG SRC=\"text.gif\" alt=\"Text\" border=\"0\" width=\"13\" height=\"16\">";
				$browse = "1";
				$raw = "1";
				$image = "0";
				}
		
			############### Audiofile
			elseif((!strcasecmp ($ext, ".wav")) || (!strcasecmp ($ext, ".mp2")) || (!strcasecmp ($ext, ".mp3")) || (!strcasecmp ($ext, ".mp4")) || (!strcasecmp ($ext, ".vqf")) || (!strcasecmp ($ext, ".midi")) || (!strcasecmp ($ext, ".mid")))
				{
				$icon = "<IMG SRC=\"audio.gif\" alt=\"Audio\" border=\"0\" width=\"16\" height=\"16\">";
				$browse = "1";
				$raw = "0";
				$image = "0";
				}

			############### Webscript
			elseif((!strcasecmp ($ext, ".phps")) || (!strcasecmp ($ext, ".php")) || (!strcasecmp ($ext, ".php2")) || (!strcasecmp ($ext, ".php3")) || (!strcasecmp ($ext, ".php4")) || (!strcasecmp ($ext, ".phtml")) || (!strcasecmp ($ext, ".asp")) || (!strcasecmp ($ext, ".asa")) || (!strcasecmp ($ext, ".cgi")) || (!strcasecmp ($ext, ".shtml")) || (!strcasecmp ($ext, ".pl")))
				{
				$icon = "<IMG SRC=\"webscript.gif\" alt=\"Web program\" border=\"0\" width=\"15\" height=\"15\">";
				$browse = "1";
				$raw = "1";
				$image = "0";
				}

			############### Apache Webserver security settings
			elseif(!strcasecmp ($ext, ".htaccess"))
				{
				$icon = "<IMG SRC=\"security.gif\" alt=\"Apache Webserver security settings\" border=\"0\" width=\"15\" height=\"16\">" ;
				$browse = "0";
				$raw = "1";
				$image = "0";
				}

			############### Web page
			elseif ((!strcasecmp ($ext, ".html")) || (!strcasecmp ($ext, ".htm")))
				{
				$icon = "<IMG SRC=\"webpage.gif\" alt=\"Web page\" border=\"0\" width=\"15\" height=\"15\">";
				$browse = "1";
				$raw = "1";
				$image = "0";
				}

			############### WAP page
			elseif(!strcasecmp ($ext, ".wml"))
				{
				$icon = "<IMG SRC=\"webscript.gif\" alt=\"WAP page\" border=\"0\" width=\"15\" height=\"15\">";
				$browse = "0";
				$raw = "1";
				$image = "0";
				}

			############### Compressed file
			elseif((!strcasecmp ($ext, ".zip")) || (!strcasecmp ($ext, ".tar")) || (!strcasecmp ($ext, ".rar")) || (!strcasecmp ($ext, ".gz")))
				{
				$icon = "<IMG SRC=\"text.gif\" alt=\"Compressed file\" border=\"0\" width=\"15\" height=\"15\">";
				$browse = "0";
				$raw = "0";
				$image = "0";
				}
			
			############### Unknown
			else
				{ 
				$icon = "<IMG SRC=\"text.gif\" alt=\"Unknown filetype\" border=\"0\" width=\"15\" height=\"15\">";
				$browse = "1";
				$raw = "1";
				$image = "0";
				}
			
			############### List the file(s)
			$filename=$basedir.$wdir.$file;
			$fileurl=rawurlencode($wdir.$file);
			$lastchanged = filectime($filename);
			$changeddate = date("d-m-Y H:i:s", $lastchanged);
			echo "<TR>";
			echo "<TD align=\"center\" nobreak>";
			
			############### Make the fileicon clickable for quickviewing
			if($raw == "1")
				{
				echo "<A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl&object=file&browse=$browse&raw=$raw\">";
				}
			
			if($image == "1")
				{
				echo "<A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl&image=$image&object=file&browse=$browse&raw=$raw\">";
				}
			
			echo "$icon</TD>\n";
			echo "<TD nobreak><font size =\"-1\" face=\"arial, helvetica\">" . htmlspecialchars($file) . "</font></TD>\n";
			echo "<TD align=\"right\" nobreak><font size =\"-1\" face=\"arial, helvetica\">" . display_size($filename) . "</font></TD>";
			echo "<TD align=\"right\" nobreak><font size =\"-1\" face=\"arial, helvetica\">" . $changeddate . "</font></TD><TD align=\"right\">";
		
			############### CHMOD file?
			if($allow_chmod == "yes")
				{
				echo "<A HREF=\"$PHP_SELF?action=chmod&wdir=$wdir&file=$fileurl&browse=$browse&raw=$raw&image=$image&fileurl=$fileurl\" title=\"Change permission level on $file\">";
				}
			
			echo "<font size =\"-1\" face=\"arial, helvetica\">";
			printf("%o", (fileperms($filename)) & 0777);
			echo "</font>";
	
			if($allow_chmod == "yes")
				{
				echo "</A>";
				}
	
			echo "</TD><TD nobreak>";
				
			############### Move file?
			if($allow_move == "yes")
				{
				echo " <A HREF=\"$PHP_SELF?action=move&wdir=$wdir&file=$fileurl&object=file&browse=$browse&raw=$raw&image=$image&fileurl=$fileurl\"><img src=\"move.gif\" alt=\"Move, rename or copy $file\" border=\"0\" width=\"15\" height=\"15\"></A> ";
				}
		
			############### Touch file?
			if($allow_touch == "yes")
				{
				echo " <A HREF=\"$PHP_SELF?action=touch&wdir=$wdir&touchfile=$fileurl&browse=$browse&raw=$raw&image=$image&fileurl=$fileurl\"><img src=\"touch.gif\" alt=\"Touch $file\" border=\"0\" width=\"12\" height=\"16\"></A> ";
				}

			############### Delete file?
			if($allow_delete == "yes")
				{
				echo "<A HREF=\"$PHP_SELF?action=del&wdir=$wdir&file=$fileurl&browse=$browse&raw=$raw&image=$image&fileurl=$fileurl\"><img src=\"delete.gif\" alt=\"Delete $file\" border=\"0\" width=\"20\" height=\"16\"></A> ";
				}
	
			############### If the file can be browsed, give it the browse icon
			if($browse == "1")
				{
				echo " <A HREF=\"$basepath$wdir$file\"><img src=\"browse.gif\" alt=\"Browse $file\" border=\"0\" width=\"16\" height=\"16\"></A> ";
				}

			############### If the file can be edited, give it the edit icon
			if($raw =="1")
				{
				echo " <A HREF=\"$PHP_SELF?wdir=$wdir&action=edit&display=1&file=$fileurl&browse=$browse&raw=$raw&image=$image&fileurl=$fileurl\"><img src=\"edit.gif\" alt=\"Edit $file\" border=\"0\" width=\"16\" height=\"16\"></A> ";
				}
			}
		}
	}

############ List the directory function
function displaydir()
	{
	global $file;
	global $basedir;
	global $wdir;	
	global $allow_create_file;
	global $allow_create_dir;	
	global $allow_upload;
	global $allow_touch;
	global $allow_delete;
	global $allow_move;
	global $config;
	global $single;
	
	############### Draw the head table
	if(isset($single))
		{
		echo "<TABLE BORDER=\"0\" cellspacing=\"1\" cellpadding=\"1\" align=\"center\">";
		}
	else
		{
		echo "<TABLE BORDER=\"0\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">";	
		}
	
	echo "<tr>";
	echo "<th bgcolor=\"#4C4C99\"><font color=\"white\" face=\"arial, helvetica\">Type</font></th>";
	echo "<th bgcolor=\"#4C4C99\"><font color=\"white\" face=\"arial, helvetica\">Name</font></th>";
	echo "<th bgcolor=\"#4C4C99\"><font color=\"white\" face=\"arial, helvetica\">Size</font></th>";
	echo "<th bgcolor=\"#4C4C99\"><font color=\"white\" face=\"arial, helvetica\">Modified</font></th>";
	echo "<th bgcolor=\"#4C4C99\"><font color=\"white\" face=\"arial, helvetica\">Perm's</font></th>";
	echo "<th bgcolor=\"#4C4C99\"><font color=\"white\" face=\"arial, helvetica\">Action</font></th>";
	echo "</tr>";
	
	################## Load directory into array
	if(!isset($single))
		{
		error_reporting(0);
		$dirResult = chdir($basedir . $wdir);
		if ($dirResult == false) {
			echo "<center><font size=+2>";
			echo "Can not change dir, check setting in config.php";
			echo "<br><br></center></font>";
			exit;
		}
			
		$handle=opendir(".");
		while ($file = readdir($handle))
			{
			if(is_dir($file)) $dirlist[] = $file;
			}
		closedir($handle);

		############### List directories first		
		if($dirlist)
			{
			############### Sort alphabetically
			asort($dirlist);
			############### Walk through array
			while (list ($key, $file) = each ($dirlist))
				{
				################## Skip the tiresome "."
				if (!($file == "."))
					{
					$filename=$basedir.$wdir.$file;
					$fileurl=rawurlencode($wdir.$file);
					$lastchanged = filectime($filename);
					$changeddate = date("d-m-Y H:i:s", $lastchanged);
					echo "<TR>";

					############### Print PARENT arrow
					if($file == "..")
						{
						$downdir = dirname("$wdir");
						echo "<TD align=\"center\" nobreak><A HREF=\"$PHP_SELF?action=chdr&file=$downdir\"><img src=\"parent.gif\" alt=\"Parent directory\" border=\"0\" width=\"20\" height=\"16\"></a></TD>\n";
						echo "<TD></TD>\n";
						echo "<TD align=\"right\" nobreak><font size =\"-1\" face=\"arial, helvetica\">" . display_size($filename) . "</font></TD>";
						echo "<TD align=\"right\" nobreak><font size =\"-1\" face=\"arial, helvetica\">" . $changeddate . "</font></TD><TD align=\"right\">";
						printf("%o", (fileperms($filename)) & 0777);
						echo "</TD><TD nobreak>";
						echo "<A HREF=\"$PHP_SELF?action=chdr&file=$downdir\"><img src=\"parent.gif\" alt=\"Parent directory\" border=\"0\" width=\"20\" height=\"16\"></A> ";
						}

					############### List the directory
					else
						{
						$lastchanged = filectime($filename);
						echo "<TD align=\"center\" nobreak><A HREF=\"$PHP_SELF?action=chdr&file=$fileurl\"><img src=\"folder.gif\" alt=\"Change working directory to $file\" border=\"0\" width=\"15\" height=\"13\"></a></TD>\n";
						echo "<TD nobreak><font size =\"-1\" face=\"arial, helvetica\">" . htmlspecialchars($file) . "</font></TD>\n";
						echo "<TD align=\"right\" nobreak><font size =\"-1\" face=\"arial, helvetica\">" . display_size($filename) . "</font></TD>";
						echo "<TD align=\"right\" nobreak><font size =\"-1\" face=\"arial, helvetica\">" . $changeddate . "</font></TD><TD align=\"right\">";
						echo "<A HREF=\"$PHP_SELF?action=chmod&file=$filename\" title=\"Change permission level on $file\"><font size =\"-1\" face=\"arial, helvetica\">";
						printf("%o", (fileperms($filename)) & 0777);
						echo "</A>";
						echo "</font></TD><TD nobreak>";

						############### Move directory?
						if($allow_move == "yes")
							{
							echo " <A HREF=\"$PHP_SELF?action=move&wdir=$wdir&file=$fileurl\"><img src=\"move.gif\" alt=\"Rename $file\" border=\"0\" width=\"15\" height=\"15\"></A> ";
							}
						
						############### Touch directory?
						if($allow_touch == "yes")
							{
							echo " <A HREF=\"$PHP_SELF?action=touch&wdir=$wdir&touchfile=$fileurl\"><img src=\"touch.gif\" alt=\"Touch $file\" border=\"0\" width=\"12\" height=\"16\"></A> ";
							}

						############### Delete directory?
						if($allow_delete == "yes")
							{
							echo "<A HREF=\"$PHP_SELF?action=del&wdir=$wdir&file=$fileurl\"><img src=\"delete.gif\" alt=\"Delete $file\" border=\"0\" width=\"20\" height=\"16\"></A> ";
							}
						}
					}	
				}
			}
		list_files();
		echo "</TD></TR>\n";
		echo "</TABLE>";

		############### Display forms for different actions
		echo "<table border=\"0\" width=\"100%\">";
		echo "<TR><TD colspan=\"2\"><hr></td>";

		############### Upload file
		if($allow_upload  == "yes")
			{
			echo "<TR><TD><font size =\"-1\" face=\"arial, helvetica\">Upload file</font></td><td>";
			echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"POST\" ACTION=\"$PHP_SELF\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">";
			echo "<INPUT NAME=\"userfile\" TYPE=\"file\" size=\"40\">";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"upload\" VALUE=\"Go!\"></TD></TR>";
			echo "</FORM>";
			}

		############### Create directory
		if($allow_create_dir == "yes")
			{
			echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">";	
			echo "<TR><TD><font size =\"-1\" face=\"arial, helvetica\">Create directory</font></td><td>";
			echo "<INPUT TYPE=\"TEXT\" NAME=\"mkdirfile\" size=\"40\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"mkdir\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"mkdir\"  VALUE=\"Go!\"></TD></TR>";
			echo "</FORM>";
			}

		############### Create file
		if($allow_create_file == "yes")
			{
			echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">";
			echo "<TR><TD><font size =\"-1\" face=\"arial, helvetica\">Create File</font></td><td>";
			echo "<INPUT TYPE=\"TEXT\" NAME=\"file\" size=\"40\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"createfile\"> ";
			echo "<input type=\"checkbox\" name=\"html\" value=\"yes\"><font size =\"-2\" face=\"arial, helvetica\">(html template)</font> ";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"createfile\" VALUE=\"Go!\">";
			echo "</TD></TR>";
			echo "</FORM>";
			}
		echo "</TABLE>";
		}

	else
		{
		list_files();
		}
	}



#########################################################################################################
############### The user pressed CANCEL, set the $action to nothing
if($cancel) $action="";

############### User has entered .. as directory. Potential security breach. Deny access.
$regexp="\\.\\.";
if (ereg( $regexp, $file, $regs )| ereg( $regexp, $wdir,$regs ))
{
    $lastaction = "ERROR: Directories may not contain the character \"..\"";
    html_header();
    echo $html_ender;
	ps_footer("");
    exit;
}

############### Upload file
if($upload) 
	{if ($userfile_name) {
		copy($userfile,$basedir.$wdir.$userfile_name); 
		$lastaction = "Uploaded $userfile_name to $wdir";
		html_header();
		displaydir();
		echo $html_ender;
		ps_footer("");
		exit;
	  } else {
		header("location: $PHP_SELF");
		exit;
	  }
	}

#########################################################################################################
############### Begin actions code
switch ($action)
{

#########################################################################################################
############### No $action variable? Display initial page
	case "":
		$lastaction = "Listing directory";
		html_header();
		displaydir();
		echo $html_ender;
		ps_footer("");
		break;


#########################################################################################################


#########################################################################################################
############### User pressed ROOT.. Change to root dir
	case "root":
   		$wdir="/";
		$lastaction = "Changed to root directory";
		html_header();
		displaydir();
		echo $html_ender;
		ps_footer("");
		break;

#########################################################################################################

############### Change directory
	case "chdr":
		if ($file != "/") {
			$wdir=$file."/";
		} else {
			$wdir = "/";
		}
		$lastaction = "Changed directory to $wdir";
		html_header();
		displaydir();
		echo $html_ender;
		ps_footer("");
		break;

#########################################################################################################
############### Touch object (create a new timestamp)
	case "touch":
		if($allow_touch == "no")
			{
			$lastaction = $not_allowed;
			html_header();
			displaydir();
			echo $html_ender;
			ps_footer("");
			}
		else
			{
			touch($basedir.$touchfile);
			$lastaction = "Touched $touchfile";
			html_header();
			displaydir();
			echo $html_ender;
			ps_footer("");
			}
		break;

#########################################################################################################


#########################################################################################################
############### Delete file or directory
	case "del":
		############### The user has comfirmed the deletion
		if ($confirm)
			{
			
			############### Object is a directory
			if(is_dir($basedir.$file))
				{
				rmdir($basedir.$file);
				}

			############### Object is a file
			else
				{
				unlink($basedir.$file);
				}
			$lastaction = "Deleted $file";
			html_header();
			displaydir();
			}

		############### Prompt the user for confirmation
		else
			{
			if($raw == "1")
				{
				$lastaction = "Are you sure you want to DELETE<br><A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl\" title=\"View the file in raw format\">$file</a>?";
				}
			elseif($image == "1")
				{
				$lastaction = "Are you sure you want to DELETE<br><A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl&image=$image\" title=\"View the image\">$file</a>?";
				}
			else
				{
				$lastaction = "Are you sure you want to DELETE<br>$file?";
				}

			html_header();
			echo "<center><b><font size =\"5\" face=\"arial, helvetica\"><A HREF=\"$PHP_SELF?action=del&wdir=$wdir&file=$file&confirm=1\">YES!</A></font><br>";
			echo "<p><font size =\"5\" face=\"arial, helvetica\"><A HREF=\"$PHP_SELF?wdir=$wdir\">NO!</A></font><br><b></center>";
			}
		echo $html_ender;
		ps_footer("");
		break;

#########################################################################################################
############### Change permission level
	case "chmod":

		############### The user has confirmed
		if ($confirm)
			{
			$level = "0";
			$level .= $owner;
			$level .= $group;
			$level .= $public;
			$showlevel = $level;
			$level=octdec($level);
			chmod($basedir.$file,$level);
			$lastaction = "Changed permission on $file to $showlevel";
			html_header();
			displaydir();
			}

		############### Prompt the user for confirmation
		else
			{
			$lastaction = "Change permission level on $file";
			html_header();			
			echo "<font face=\"arial, helvetica\"><center><h4>Current level: ";
			printf("%o", (fileperms($basedir.$file)) & 0777);
			echo "</h4><FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">\n";
			
			function selections($type)  //  type: 0 Owner, 1 Group, 2 Public
				{
				echo "<option value=\"0\""; if (substr($GLOBALS["perm"], $type, 1)=="0") echo "selected"; echo ">0 - No permissions";
				echo "<option value=\"1\""; if (substr($GLOBALS["perm"], $type, 1)=="1") echo "selected"; echo ">1 - Execute";
				echo "<option value=\"2\""; if (substr($GLOBALS["perm"], $type, 1)=="2") echo "selected"; echo ">2 - Write ";
				echo "<option value=\"3\""; if (substr($GLOBALS["perm"], $type, 1)=="3") echo "selected"; echo ">3 - Execute & Write";
				echo "<option value=\"4\""; if (substr($GLOBALS["perm"], $type, 1)=="4") echo "selected"; echo ">4 - Read";
				echo "<option value=\"5\""; if (substr($GLOBALS["perm"], $type, 1)=="5") echo "selected"; echo ">5 - Execute & Read";
				echo "<option value=\"6\""; if (substr($GLOBALS["perm"], $type, 1)=="6") echo "selected"; echo ">6 - Write & Read";
				echo "<option value=\"7\""; if (substr($GLOBALS["perm"], $type, 1)=="7") echo "selected"; echo ">7 - Write, Execute & Read";
				echo "</select>";
				}
			
			$perm = sprintf ("%o", (fileperms($basedir.$file)) & 0777);  // Definition of a variable containing the file permissions
			echo "<p><h4>Owner<br>";
			echo "<select name=\"owner\">";
			selections(0);

			echo "<p>Group<br>";
			echo "<select name=\"group\">";
			selections(1);

			echo "<p>Public<br>";
			echo "<select name=\"public\">";
			selections(2);

			echo "</h4>";
			echo "<p>";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"confirm\" VALUE=\"Change\">\n";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"cancel\" VALUE=\"Cancel\">\n";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"chmod\">\n";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"file\" VALUE=\"$file\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">";
			echo "</FORM>";
			echo "</center>";
			}
		echo $html_ender;
		ps_footer("");
		break;

#########################################################################################################
############### Move file
	case "move":
		############### The user has confirmed renaming/moving/copying of the object
		if($confirm && $newfile)
 			{
			############### The destination object exists
    			if(file_exists($basedir.$newfile))
				{
				$lastaction = "Destination file already exists. Aborted.";
				}
			else
				{
				if($do == copy)
					{
					copy($basedir.$file,$basedir.$newfile);
					$lastaction = "Copied\n$file to $newfile";
					}
				else
					{
					rename($basedir.$file,$basedir.$newfile);
					$lastaction = "Moved/renamed\n$file to $newfile";
					}
				}
			html_header();
			displaydir();
    			echo $html_ender;
				ps_footer("");
			}

		############### Prompt the user for destination name and action
		else
			{
			if($object == "file")
				{
				if($raw == "1")
					{
					$lastaction = "Moving/renaming or copying <A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl\" title=\"View the file in raw format\">$file</a>";
					}
				elseif($image == "1")
					{
					$lastaction = "Moving/renaming or copying <A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl&image=$image\" title=\"View the image\">$file</a>";
					}
				else
					{
					$lastaction = "Moving/renaming or copying $file";
					}

				html_header();
				echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">\n";
				echo "<select name=\"do\">";
				echo "<option value=\"copy\">Copy";
				echo "<option value=\"move\">Move/rename";
				echo "</select> ";
				echo "($file)";
				echo "<h4>To</h4>";
				echo "<INPUT TYPE=\"TEXT\" NAME=\"newfile\" value=\"$file\" size=\"40\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">\n";			
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"move\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"file\" VALUE=\"$file\">\n";
				echo "<p>";
				echo "<INPUT TYPE=\"SUBMIT\" NAME=\"confirm\" VALUE=\"Do\">\n";
				echo "<INPUT TYPE=\"SUBMIT\" NAME=\"cancel\" VALUE=\"Cancel\">\n";
				echo "</FORM>";
				echo $html_ender;
				ps_footer("");
				}
			else
				{
				$lastaction = "Renaming $file";

				html_header();
				echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">\n";
				echo "<h4>From</h4>";
				echo "$file";
				echo "<h4>To</h4>";
				echo "<INPUT TYPE=\"TEXT\" NAME=\"newfile\" value=\"$file\" size=\"40\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"move\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"file\" VALUE=\"$file\">\n";
				echo "<p>";
				echo "<INPUT TYPE=\"SUBMIT\" NAME=\"confirm\" VALUE=\"Do\">\n";
				echo "<INPUT TYPE=\"SUBMIT\" NAME=\"cancel\" VALUE=\"Cancel\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"do\" VALUE=\"move\">\n";
				echo "</FORM>";
				echo $html_ender;
				ps_footer("");
				}
			}
		break;

#########################################################################################################
############### Edit file
	case "edit":

		############### Function for saving the file.
		function savefile()
			{
			global $basedir;
			global $file;
			global $code;
			global $config;
			html_header();
			$fp=fopen($basedir.$file,"w");
			fputs($fp,stripslashes($code));
			fclose($fp);
			}

		function buttons()
			{
			global $file;
			global $wdir;
			
			echo "<center>";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"file\" VALUE=\"$file\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"edit\">";
			echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">";
			echo "<INPUT TYPE=\"RESET\" VALUE=\"Restore original\"> ";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"save\" VALUE=\"Save\"> ";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"saveexit\" VALUE=\"Save & Exit\"> ";
			echo "<INPUT TYPE=\"SUBMIT\" NAME=\"cancel\" VALUE=\"Cancel / Exit\"> ";
			echo "</center><BR>\n";
			}
					 
		############### The user is done editing. Return to main screen
		if($saveexit)
   			{
    			$lastaction = "Edited <a href=\"$file\" title=\"View the file\">$file</a>";
			savefile();
			displaydir();
			}

		############### Save the file, but continue editing.
		if($save)
   			{
    			$lastaction = "Saved <a href=\"$file\" title=\"View the file\">$file</a>, still editing.";
			savefile();
			echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">\n";
			$fp=fopen($basedir.$file,"r");
			$contents=fread($fp,filesize($basedir.$file));
			echo "<TEXTAREA NAME=\"code\" rows=\"$textrows\" cols=\"$textcols\">\n";
			echo htmlspecialchars($contents);
			echo "</TEXTAREA><BR>\n";
			echo "<center>";
			buttons();
			echo "</FORM>";
			}

		############### Display file in textarea
		if($display)
			{
			if($raw == "1")
				{
				$lastaction = "Editing <A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$file&browse=$browse&raw=$raw&image=$image&fileurl=$fileurl\" title=\"View the file in raw format\">$file</a>";
				}
			elseif($image == "1")
				{
				$lastaction = "Editing <A HREF=\"$PHP_SELF?action=show&wdir=$wdir&file=$fileurl&image=$image\" title=\"View the image\">$file</a>";
				}
			else
				{
				$lastaction = "Editing $file";
				}
	
			html_header();
			echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">\n";
			$fp=fopen($basedir.$file,"r");
			$contents=fread($fp,filesize($basedir.$file));
			echo "<TEXTAREA NAME=\"code\" rows=\"$textrows\" cols=\"$textcols\">\n";
			echo htmlspecialchars($contents);
			echo "</TEXTAREA><BR>\n";
			buttons();
			echo "</FORM>";
			}
		echo $html_ender;
		ps_footer("");
		break;

		
#########################################################################################################
############### Display file
	case "show":

		############### Display file in textformat
		$filelocation = $wdir.$file;	

		$lastaction = "Displaying $file";
		html_header();

		############### It is a picture, display it. The filename needs to be either relative to the current document, or an absolute filesystem path. 
		if($image == "1")
			{
			$size = GetImageSize($basedir.$file);
			echo "<center><img src=\"$basepath/$file\" $size[3]></center>";
			}

		############### It is text, display it.
		else
			{
			$single = "yes";
#			displaydir();
			echo"<hr><br>";
			show_source($basedir.$file);
			}
		echo $html_ender;
		ps_footer("");
		break;

#########################################################################################################
############### Create directory
	case "mkdir":
		
		############### Is the action allowed?
		if($allow_create_dir == "no")
			{
			$lastaction = $not_allowed;
			html_header();
			}
		else
			{
			############### The directory already exists. 
			if(file_exists($basedir.$wdir.$mkdirfile))
				{
				$lastaction = "The directory $wdir$mkdirfile allready exists.";
				html_header();
				}

			############### Create directory
			else
				{
				$lastaction = "Created the directory $wdir$mkdirfile";
				html_header();
				mkdir($basedir.$wdir.$mkdirfile,0750);
				}
			displaydir();
			echo $html_ender;
			ps_footer("");
			}
		break;

#########################################################################################################
############### Create file
	case "createfile":
		$filelocation = $wdir.$file;

		############### The user is done editing. Return to main screen
		if($done == "1")
   			{
			$lastaction = "Created $file";
			html_header();

#			if($convert == "yes")
#   				{
#				$code = str_replace ("\n", "<BR>");
#				}
		
			$fp=fopen($basedir.$filelocation,"w");
			fputs($fp,stripslashes($code));
      			fclose($fp);
			displaydir();
			}

		############### Display a textarea that will be the file
		else
			{

   			############### The file allready exists
   			if(file_exists($basedir.$filelocation))
   				{
   				$lastaction = "$file allready exists.";
				html_header();
				displaydir();
				}

			############### Give the user a textarea to write the contents of file
			else
				{
				$lastaction = "Creating $file";
				html_header();
				echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"file\" VALUE=\"$file\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"action\" VALUE=\"createfile\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"wdir\" VALUE=\"$wdir\">\n";
				echo "<INPUT TYPE=\"HIDDEN\" NAME=\"done\" VALUE=\"1\">\n";
				echo "<TEXTAREA NAME=\"code\" rows=\"$textrows\" cols=\"$textcols\">\n";

				
				
				echo "</TEXTAREA><BR>\n";
				echo "<center><INPUT TYPE=\"SUBMIT\" NAME=\"confirm\" VALUE=\"Create\">\n";
				echo "<INPUT TYPE=\"SUBMIT\" NAME=\"cancel\" VALUE=\"Cancel\"><br>";
				$ext = strrchr ( $file , "." );
				if(!strcasecmp ($ext, ".txt"))
					{
					echo "<input type=\"checkbox\" name=\"convert\" value=\"yes\"><font size =\"-2\" face=\"arial, helvetica\">(convert line returns to BR)</font> ";					
					}
				echo "</center><BR>\n</FORM>";
				}
			}
		echo $html_ender;
		ps_footer("");
		break;
}
?>
Return current item: PSlash