<?
############################################################
#
# 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\"> </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 " <font size=\"6\" color=\"white\" face=\"arial, helvetica\">WebExplorer</font>  ";
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;
}
?>