--- docman.php 2000/07/26 11:46:19 1.2
+++ docman.php 2001/01/26 12:39:57 1.30
@@ -35,22 +35,14 @@
/* existent address after file modifications. */
/*
- 2000-07-25 Dobrica Pavlinusic
- nuked exec calls (unsecure)
- nuked writeable function (replaced by php is_writeable)
- added support for https (tested with apache+mod_ssl)
- added users file
- date format user-selectable
- cycle backup files in bak directory
- support links as directoryes (for now)
- support of file history logging
- undelete capabilities (delete moves to .del directory)
+ This project is now called Directory Manager.
- 2000-07-26 DbP
+ For more info, please see web pages at
+ http://www.rot13.org/~dpavlin/docman.html
- added more checking on entered filename (when creating file/dir)
- added rename option
+ It's relased under GPL by
+ Dobrica Pavlinusic
IMPORTANT INSTALLATION NOTE:
@@ -59,15 +51,14 @@
deleted files!
.htusers is in form:
- login:Real Name:md5(loginpassword)
+ login:Real Name:[md5(loginpassword)|auth_*]:email@host.dom
TODO:
mixed file/directory output (add type to each entry,
real support for links)
- add more content-management (like cms.sourceforge.net):
- check-out/check-in/reserve
- comments to files
+ access controll
+
*/
//////////////////////////////////////////////////////////////////
@@ -80,51 +71,67 @@
// GLOBAL PARAMETERS
// =================
-// Make modifications here to suit siteman to your needs
+// Make modifications here to suit docman to your needs
// error_reporting(4) ; // how verbose ?
+ // from where to include auth_*.php modules?
+ $gblIncDir = "/home/httpd/docman";
+
// username/password should not be system
// usernames/passwords !!
-// $gblPw = "hash_of_your_username_and_password" ;
-
-// $gblAuth = false ; // use builtin authentication
- $gblAuth = true ; // use builtin authentication
- $gblHash = "md5" ; // hash function to use
-
$gblPw = "";
- if ($gblAuth) {
- $htusers=fopen(dirname($SCRIPT_FILENAME)."/.htusers","r");
- while($user = fgetcsv($htusers,255,":")) {
- if ($user[0] == $GLOBALS["PHP_AUTH_USER"]) {
- $gblUserName=$user[1];
- $gblPw=$user[2];
- continue ;
+ $htusers_file=dirname($SCRIPT_FILENAME)."/.htusers";
+ if (! file_exists($htusers_file)) {
+ $htusers=fopen($htusers_file,"a+");
+ fputs($htusers,"# Change owner of $htusers_file to root !!\n");
+ fputs($htusers,"demo:full name:[md5_hash|auth_*]:e-mail\n");
+ fclose($htusers);
+ }
+ $htusers=fopen($htusers_file,"r");
+ while($user = fgetcsv($htusers,255,":")) {
+ if ($user[0] == $GLOBALS["PHP_AUTH_USER"]) {
+ $gblUserName=$user[1];
+ $gblPw=$user[2];
+ if (substr($gblPw,0,5) == "auth_" && file_exists("$gblIncDir/$gblPw.php")) {
+ require("$gblIncDir/$gblPw.php");
+ if ($gblPw($user)) {
+ $gblPw=md5($PHP_AUTH_USER.$PHP_AUTH_PW);
+ } else {
+ $gblPw="error".md5($PHP_AUTH_USER.$PHP_AUTH_PW);
+ }
}
+ $gblEmail=$user[3];
+ continue ;
}
- fclose($htusers);
}
+ fclose($htusers);
+ // date format
// $gblDateFmt="D, F d, Y";
-// $gblTimeFmt="g:i:sA";
-
$gblDateFmt="Y-m-d";
+
+ // time format
+// $gblTimeFmt="g:i:sA";
$gblTimeFmt="H:i:s";
-// Number of backup files to keep
- $gblNumBackups=5;
+ // Number of backup files to keep
+ $gblNumBackups=3;
+
+ // show red star if newer than ... days
+ $gblModDays=1;
// choose GifIcon below unless you have the M$
// WingDings font installed on your system
- $gblIcon = "GifIcon" ; // MockIcon or GifIcon
+ $gblIcon="GifIcon"; // MockIcon or GifIcon
// the directory below should be /icons/ or /icons/small/
// on Apache; a set of icons is included in the distribution
- $gblIconLocation = "icons/" ;
+ $gblIconLocation="/icons/";
// files you want to be able to edit in text mode
// and view with (primitive) syntax highlighting
@@ -143,26 +150,26 @@
function StartHTML($title,$text="") {
- $title = "Site Manager " . $title ;
+ $title = "Document Manager " . $title ;
$host = $GLOBALS["HTTP_HOST"] ;
$self = $GLOBALS["PHP_SELF"] ;
?>
-
+ = $host . " " . $title ?>
+ HREF="= $self ?>?STYLE=get">
-
+ = $host ?>
-
+ = $title ?>
+ = $text ?>
= date($GLOBALS[gblDateFmt]) ?> -
= date($GLOBALS[gblTimeFmt]) ?> -
= $GLOBALS[gblUserName] ?>
- [logout ]
+ [?relogin== $GLOBALS[gblPw] ?>">logout ]
ANYPORTAL(php) Site Manager
@@ -187,7 +194,7 @@
- //include("../debug.inc") ?>
+ //include(".debug.inc") ?>
" . $relDir . "/" . $fn . "" ;
if ($exists) { // get file info
- $fsize = filesize($fsPath) ;
- $fmodified = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", filemtime($fsPath)) ;
- $faccessed = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", fileatime($fsPath)) ;
- echo " file size: " . $fsize . " Bytes " ;
- echo "last modified: " . $fmodified . " " ;
- echo "last accessed: " . $faccessed . " " ;
- echo " owner: " . fileowner($fsPath) . " " ;
- echo " group: " . filegroup($fsPath) . " " ;
- echo " permissions: " ;
- echo printf( "%o", fileperms($fsPath) ) . " " ;
- echo " " ;
+ $fsize = filesize($fsPath) ;
+ $fmodified = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", filemtime($fsPath)) ;
+ $faccessed = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", fileatime($fsPath)) ;
+ echo " file size: " . $fsize . " Bytes " ;
+ echo "last modified: " . $fmodified . " " ;
+ echo "last accessed: " . $faccessed . " " ;
+ echo " owner: " . fileowner($fsPath) . " " ;
+ echo " group: " . filegroup($fsPath) . " " ;
+ echo " permissions: " ;
+ echo printf( "%o", fileperms($fsPath) ) . " " ;
+ echo " " ;
}
- if ( $editable && ($writable || !$exists) ) {
+ if ( $editable && ($writable || !$exists) && !$file_lock ) {
$fh = fopen($fsPath,"a+") ;
rewind($fh) ;
$fstr = fread($fh,filesize($fsPath)) ;
@@ -269,17 +277,17 @@
$fstr = htmlentities( $fstr ) ;
?>
-
-
-
+
+
+
+
+
+OK TO FORCE LOCK REMOVAL ON "= $fn ; ?>" HELD BY = $file_lock ?>?
+
+
+
+ } // file_lock
+
if (substr($fn,0,4) == ".del") {
$action="UNDELETE";
$desc="undelete previously deleted file";
@@ -313,32 +334,59 @@
if ($exists && $writable) {
?>
-
-OK TO = $action ?> ""?
+
+
+
+OK TO = $action ?> "= $fn ; ?>"?
-
-OK TO RENAME "" TO
+
+
+
+OK TO RENAME "= $fn ; ?>" TO
?
" ;
+ } // exists && writable
+?>
+
+
+NOTE FOR "= $fn ; ?>":
+
+
+
- $logname=dirname("$fsDir/$fn")."/.log/".basename("$fsDir/$fn");
+
+
+CHANGES TO THIS FILE \n";
$log=fopen($logname,"r");
- $cl1=" class=lst"; $cl2="";
+ $cl1=" class=LST"; $cl2="";
+ $logarr = array();
while($line = fgetcsv($log,255,"\t")) {
$cl=$cl1; $cl1=$cl2; $cl2=$cl;
- print "$line[0] $line[1] $line[2] $line[3] \n";
+ array_unshift($logarr,array($cl,$line[0],$line[1],$line[2],$line[3]));
}
fclose($log);
+ print "CHANGES TO THIS FILE \n";
+ $bakcount = 0; // start from 0, skip fist backup (it's current)
+ while ($e = array_shift($logarr)) {
+ if (strstr($e[4],"upload")) {
+ if (file_exists("$bakdir/$bakcount/$name")) {
+ $e[4]="$e[4] ";
+ }
+ $bakcount++;
+ }
+ print "$e[1] $e[2] $e[3] $e[4] \n";
+ }
print "
";
}
@@ -571,6 +619,18 @@
case "blank" :
$d = "blank.gif" ;
break ;
+ case "checkout":
+ $d = "box2.gif";
+ break;
+ case "checkin":
+ $d = "hand.up.gif";
+ break;
+ case "locked":
+ $d = "screw2.gif";
+ break;
+ case "note":
+ $d = "quill.gif";
+ break;
default :
$d = "generic.gif" ;
}
@@ -582,13 +642,13 @@
function Navigate($fsRoot,$relDir) {
- global $gblEditable, $gblIcon ;
+ global $gblEditable, $gblIcon, $gblModDays ;
$self = $GLOBALS["PHP_SELF"] ;
if (isset($GLOBALS["HTTPS"]) && $GLOBALS["HTTPS"] == "on") {
- $webRoot = "https://" . $GLOBALS["SERVER_NAME"] ;
+ $webRoot = "https://" . $GLOBALS["HTTP_HOST"] ;
} else {
- $webRoot = "http://" . $GLOBALS["SERVER_NAME"] ;
+ $webRoot = "http://" . $GLOBALS["HTTP_HOST"] ;
}
$fsDir = $fsRoot . $relDir . "/" ; // current directory
@@ -628,9 +688,10 @@
// start navigation page
$text = "Use this page to add, delete";
if (! isset($show_deleted)) {
- $text .= ", undelete ";
+ $text .= ", undelete ";
}
$text .= " or revise files on this web site." ;
+ $text .= " Examine list of files changed in last day or all changes .";
StartHTML("(Navigate)",$text) ;
echo "
-
-
-
+= $gblIcon("up") ?>
+
+= $parent ?>
- DIRECTORY NAME
+ DIRECTORY NAME
" . $dir . "/" ;
?>
-
-
+= $gblIcon("fldr") ?>
+= $tstr ?>
-
+= $webRoot . $relDir ?>
DOCUMENT NAME
-
+= $gblIcon("blank").$gblIcon("blank") ?>
+NOTE
LAST UPDATE FILE SIZE
0) {
sort($fileList) ;
while (list($key,$file) = each($fileList)) {
- $path = $fsDir."/".$file ;
- $mod = filemtime($path) ;
- $sz = filesize($path) ;
-
- if ($sz >= 10240) {
- $sz = (int)(($sz+1023)/1024) . " k" ;
- }
- else {
- $sz .= " " ;
- } // end size
-
- $a = $b = "" ;
-
- if ( ($mod + 30*86400) > time() ) {
- $a = " * " ;
- }
+ $path = $fsDir."/".$file ;
+ $mod = filemtime($path) ;
+ $sz = filesize($path) ;
+
+ if ($sz >= 10240) {
+ $sz = (int)(($sz+1023)/1024) . " k" ;
+ } else {
+ $sz .= " " ;
+ } // end size
+
+ $a = $b = "" ;
- $tstr = $webRoot . $relDir . "/" . $file ;
- $tstr = "" ;
+ $info_url=$self."?A=E&F=".urlencode($file)."&D=".urlencode($relDir);
+
+ if ( ($mod + $gblModDays*86400) > time() ) {
+ $a = " * " ;
+ }
+
+ $file_lock=CheckLock($path);
+
+ $file_url_html=" " ;
if (substr($file,0,5) != ".del/") {
- $tstr .= $file . " " . $a ;
+ $file_url_html .= $file . "" . $a ;
+ } else {
+ $file_url_html .= substr($file,5,strlen($file)-5) . " deleted ";
+ }
+
+ $note_html="".$gblIcon("note")." ".ReadNote($path);
+
+ $ext = strtolower(strrchr($file,".")) ;
+
+ if ($file_lock) {
+ if ($file_lock == $GLOBALS[gblUserName]) {
+ $b.="" ;
+ $file_url_html=$b;
+ $b.=$gblIcon("checkin")." " ;
+ $b.= $gblIcon("blank");
+ $file_url_html.="$file $a";
+ $note_html = $gblIcon("blank")."Please check-in (update) this file ";
+ } else {
+ $b = $gblIcon("locked");
+ $b.= $gblIcon("blank");
+ $note_html = $gblIcon("blank")."File locked by $file_lock ";
+ $file_url_html = "$file $a";
+ }
} else {
- $tstr .= substr($file,5,strlen($file)-5) . " deleted ";
+ $b.="" ;
+ $b.=$gblIcon("checkout")." " ;
+
+ if ( $ext=="" || strstr(join(" ",$gblEditable),$ext) ) {
+ $b.="" ;
+ $b.=$gblIcon("view")." " ;
+ } else {
+ $b.= $gblIcon("blank");
+ }
}
- $ext = strtolower(strrchr($file,".")) ;
- if ( $ext=="" ||
- strstr(join(" ",$gblEditable),$ext) )
- {
- $b = "" ;
- $b .= $gblIcon("view") . " " ;
- }
?>
-
-
-
-
-
-Bytes
+
+= $gblIcon($ext) ?>
+= $file_url_html ?>
+= $b ?>
+= $note_html ?>
+= date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]",$mod) ?>
+= $sz ?>Bytes
+
+ No files in this directory
+
+
+ }
if ($emptyDir) {
?>
-
-
-
+
+
+
OK TO DELETE THIS EMPTY FOLDER?
@@ -750,18 +849,26 @@
} // end if emptyDir
?>
-
+
-
-CREATE NEW
+
+if (file_exists(".info.inc")) {
+ print " ";
+ include(".info.inc");
+ print "
+ ";
+}
+?>
+
+
+CREATE NEW
DIRECTORY -OR-
FILE :
NAME
-
+
- OR UPLOAD A FILE
+ OR UPLOAD A FILE
@@ -773,7 +880,7 @@
//////////////////////////////////////////////////////////////////
-function UploadPage($fsRoot, $relDir) {
+function UploadPage($fsRoot, $relDir, $filename="") {
$self = $GLOBALS["PHP_SELF"] ;
if ($relDir == "") $relDir = "/" ;
@@ -781,21 +888,25 @@
@@ -814,29 +925,6 @@
//////////////////////////////////////////////////////////////////
-function CreateHash($user, $pw) {
-
- global $gblHash ; // hash function to use
-
- if ($user == "" || $pw == "") {
- $text = "either no password or no username supplied" ;
- Error("Create Hash",$text) ;
- }
- $title = "(Create Hash)" ;
- StartHTML($title) ;
- echo "" ;
- echo "
Copy the value below and paste it " ;
- echo "into the value for \$gblPw in the source of " ;
- echo "this file" . $gblHash($user.$pw) ;
- echo " Hash function: " . $gblHash ;
- echo " " ;
- EndHTML() ;
- exit ;
-
-} // end function CreateHash
-
-//////////////////////////////////////////////////////////////////
-
function NoEntry() {
$user = $GLOBALS["PHP_AUTH_USER"] ;
@@ -846,27 +934,14 @@
$title = "(401 Unauthorized)" ;
$text = "No trespassing !" ;
StartHTML($title,$text) ;
-?>
-
-
-
-
-
-If you are a site administrator:
-Click below to generate a password hash from
-the username-password pair you just entered. Then include the hash in
-the source of this file.
-
-
-\n";
+ while ($e = array_shift($logarr)) {
+ $cl=$cl1; $cl1=$cl2; $cl2=$cl;
+ $date = date("$GLOBALS[gblDateFmt]", $e[0]);
+ $time = date("$GLOBALS[gblTimeFmt]", $e[0]);
+ $dir = dirname($e[1]);
+ $file = basename($e[1]);
+ print " $date $time $dir /$file$e[2] $e[3] \n";
+ }
+ print "
";
+ print "".GifIcon(up)." Back to front page .
";
+}
//////////////////////////////////////////////////////////////////
@@ -900,15 +1148,11 @@
// forks before authentication: style sheet and hash
// creation if password not yet set.
if ($STYLE == "get") { CSS() ; exit ; }
- if ($HASH != "") {
- CreateHash($USER, $PW) ;
- exit ;
- }
- // authentication if $gblAuth == true
- if ( $gblAuth && $gblHash($PHP_AUTH_USER.$PHP_AUTH_PW) != $gblPw ||
+ // authentication failure
+ if ( md5($PHP_AUTH_USER.$PHP_AUTH_PW) != $gblPw ||
isset($relogin) && $gblPw == $relogin ) {
- header("WWW-authenticate: basic realm=\"$SERVER_NAME\"") ;
+ header("WWW-authenticate: basic realm=\"$HTTP_HOST\"") ;
header("HTTP/1.0 401 Unauthorized") ;
NoEntry() ;
exit ;
@@ -931,18 +1175,22 @@
// i.e. below $gblFsRoot.
$relScriptDir = dirname($SCRIPT_NAME) ;
- // i.e. /siteman
+ // i.e. /docman
$fsScriptDir = dirname($SCRIPT_FILENAME) ;
- // i.e. /home/httpd/html/siteman
+ // i.e. /home/httpd/html/docman
- $gblFsRoot = substr($fsScriptDir,0,
- strlen($fsScriptDir)-strlen($relScriptDir)) ;
+ // start on server root
+// $gblFsRoot = substr($fsScriptDir,0, strlen($fsScriptDir)-strlen($relScriptDir)) ;
+ // or on script root
+ $gblFsRoot = $fsScriptDir;
// i.e. /home/httpd/html
$fsDir = $gblFsRoot . $relDir ; // current directory
if ( !is_dir($fsDir) ) Error("Dir not found",$relDir) ;
-
+
+ $FN=stripSlashes($FN);
+
switch ($POSTACTION) {
case "UPLOAD" :
if (!is_writeable($fsDir)) Error("Write denied",$relDir) ;
@@ -951,7 +1199,14 @@
// TODO : should rather check for escapeshellcmds
// but maybe RFC 18xx asserts safe filenames ....
$source = $FN ;
- $target = $fsDir . "/" . $FN_name ;
+ if (! file_exists($source)) {
+ Error("You must select file with browse to upload it!");
+ }
+ if (! isset($FILENAME)) { // from update file
+ $target = "$fsDir/$FN_name" ;
+ } else {
+ $target = "$fsDir/$FILENAME";
+ }
// backup old files first
$dir=dirname($target);
@@ -963,26 +1218,23 @@
}
$file=basename($target);
for($i=$GLOBALS[gblNumBackups]-1;$i>0;$i--) {
- if (! file_exists($dir."/.bak/".$i)) {
- mkdir($dir."/.bak/".$i,0700);
- }
- if (file_exists($dir."/.bak/".$i."/".$file)) {
- rename($dir."/.bak/".$i."/".$file,
- $dir."/.bak/".($i+1)."/".$file);
- }
- }
- if (file_exists($target)) {
- rename($target,$dir."/.bak/1/".$file);
+ MoveTo("$dir/.bak/$i/$file","$dir/.bak/".($i+1)."/");
}
+ MoveTo($target,$dir."/.bak/1/");
copy($source,$target) ;
chmod($target,$gblFilePerms) ;
clearstatcache() ;
Logit($target,"uploaded");
+ if (isset($FILENAME)) {
+ Unlock($target);
+ }
+ ChangeLog($target,"updated");
break ;
case "SAVE" :
- $path = $gblFsRoot . escapeshellcmd($RELPATH) ;
+ $path = $gblFsRoot . $RELPATH ;
+ $path=stripSlashes($path);
$writable = is_writeable($path) ;
$legaldir = is_writeable(dirname($path)) ;
$exists = (file_exists($path)) ? 1 : 0 ;
@@ -990,10 +1242,12 @@
if (!($writable || (!$exists && $legaldir)))
Error("Write denied",$RELPATH) ;
$fh = fopen($path, "w") ;
+ $FILEDATA=stripSlashes($FILEDATA);
fwrite($fh,$FILEDATA) ;
fclose($fh) ;
clearstatcache() ;
Logit($path,"saved changes");
+ ChangeLog($path,"saved changes");
break ;
case "CREATE" :
@@ -1004,19 +1258,28 @@
$relPath = $relDir . "/" . $FN ;
switch ( $T ) {
case "D" : // create a directory
- if ( ! @mkdir($path,$gblDirPerms) )
- Error("Mkdir failed",$relPath) ; // eg. if it exists
- clearstatcache() ;
- break ;
+ if ( ! @mkdir($path,$gblDirPerms) )
+ Error("Mkdir failed",$relPath) ; // eg. if it exists
+ clearstatcache() ;
+ break ;
case "F" : // create a new file
// this functionality is doubled in DetailView().
// better keep it here altogether
// chmod perms to $gblFilePerms
- if ( file_exists($path) && !is_writable($path) )
- Error("File not writable", $relPath) ;
- $tstr = $PHP_SELF . "?A=E&D=" . $relDir . "&F=" . $FN ;
- header("Location: " . $tstr) ;
- exit ;
+ if ( file_exists($path) && !is_writable($path) )
+ Error("File not writable", $relPath) ;
+ $fh = fopen($path, "w+") ;
+ if ($fh) {
+ fputs($fh,"\n");
+ fclose($fh) ;
+ LogIt($path,"file created");
+ } else {
+ Error("Creation of file $relPath failed -- $path");
+ }
+ $tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;
+ header("Location: " . $tstr) ;
+ ChangeLog($target,"created");
+ exit ;
}
break ;
@@ -1042,14 +1305,13 @@
exit ;
} else {
Logit($path,"file deleted");
- if (! file_exists("$dir/.del/.log")) {
- mkdir("$dir/.del/.log",0700);
- }
- rename("$dir/.log/$file","$dir/.del/.log/$file");
+ MoveTo("$dir/.log/$file","$dir/.del/.log/");
+ MoveTo("$dir/.note/$file","$dir/.del/.note/");
+ MoveTo("$dir/.lock/$file","$dir/.del/.lock/");
}
}
else { // delete directory
- if ( ! @rmdir($fsDir) ) {
+ if ( ! @rrmdir($fsDir) ) {
Error("Rmdir failed", $tstr . $fsDir) ;
}
else {
@@ -1065,8 +1327,10 @@
$file=substr($FN,4,strlen($FN)-4);
Logit("$fsDir/.del/$file","undeleted");
- rename("$fsDir/.del/$file","$fsDir/$file");
- rename("$fsDir/.del/.log/$file","$fsDir/.log/$file");
+ MoveTo("$fsDir/.del/$file","$fsDir/");
+ MoveTo("$fsDir/.del/.log/$file","$fsDir/.log/");
+ MoveTo("$fsDir/.del/.note/$file","$fsDir/.note/");
+ MoveTo("$fsDir/.del/.lock/$file","$fsDir/.lock/");
break ;
@@ -1074,9 +1338,23 @@
if ( $CONFIRM != "on" ) break ;
Logit("$fsDir/$FN","renamed $FN to $NEWNAME");
- rename("$fsDir/$FN","$fsDir/$NEWNAME");
- rename("$fsDir/.log/$FN","$fsDir/.log/$NEWNAME");
+ safe_rename("$fsDir/$FN","$fsDir/$NEWNAME");
+ safe_rename("$fsDir/.log/$FN","$fsDir/.log/$NEWNAME");
+ safe_rename("$fsDir/.note/$FN","$fsDir/.note/$NEWNAME");
+ safe_rename("$fsDir/.lock/$FN","$fsDir/.lock/$NEWNAME");
+ for($i=0;$i<=$GLOBALS[gblNumBackups];$i++) {
+ safe_rename("$fsDir/.bak/$i/$FN","$fsDir/.bak/$i/$NEWNAME");
+ }
+
+ break ;
+ case "NOTE" :
+ WriteNote("$fsDir/$FN","$NOTE");
+ break ;
+
+ case "UNLOCK" :
+ if ( $CONFIRM != "on" ) break ;
+ Unlock("$fsDir/$FN");
break ;
default :
@@ -1094,27 +1372,65 @@
// $A=U : upload to path given in $D
// $A=E : display detail of file $D/$F and edit
// $A=C : display code in file $D/$F
+ // $A=Co : checkout file $D/$F
+ // $A=Ci : checkin file $D/$F
+ // $A=V : view file (do nothing except log)
// default : display directory $D
-
+
switch ($A) {
case "U" :
// upload to $relDir
if (!is_writeable($gblFsRoot . $relDir))
Error("Write access denied",$relDir) ;
$text = "Use this page to upload a single " ;
- $text .= "file to $SERVER_NAME ." ;
+ $text .= "file to $HTTP_HOST ." ;
StartHTML("(Upload Page)", $text) ;
UploadPage($gblFsRoot, $relDir) ;
EndHTML() ;
exit ;
case "E" :
+ $F=stripSlashes($F);
// detail of $relDir/$F
if (is_file("$gblFsRoot/$relDir/$F")) DetailPage($gblFsRoot, $relDir, $F) ;
exit ;
case "C" :
+ $F=stripSlashes($F);
// listing of $relDir/$F
DisplayCode($gblFsRoot, $relDir, $F) ;
exit ;
+ case "Co" :
+ // checkout
+ Lock("$gblFsRoot/$relDir/$F");
+ header("Content-Disposition: attachment; filename=$F" );
+ Header("Location: ".urlpath("$relDir/$F"));
+ exit;
+ case "Ci" :
+ $F=stripSlashes($F);
+ // upload && update to $relDir
+ if (!is_writeable($gblFsRoot . $relDir))
+ Error("Write access denied",$relDir) ;
+ $text = "Use this page to update a single " ;
+ $text .= "file to $HTTP_HOST ." ;
+ StartHTML("(Update file Page)", $text) ;
+ UploadPage($gblFsRoot, $relDir, $F) ;
+ EndHTML() ;
+ exit ;
+ case "V" :
+ // view
+ LogIt("$gblFsRoot/$relDir/$F","viewed");
+ header("Content-Disposition: attachment; filename=$F" );
+ Header("Location: ".urlpath("$relDir/$F"));
+ exit;
+ case "Ch" :
+ StartHTML("(File changes)","All changes chronologicaly...");
+ DisplayChangeLog(0); // all
+ EndHTML() ;
+ exit;
+ case "Ch1" :
+ StartHTML("(File changes)","Changes to files in last day...");
+ DisplayChangeLog(1);
+ EndHTML() ;
+ exit;
}
// default: display directory $relDir