--- docman.php 2002/07/21 18:15:47 1.1.1.1 +++ docman.php 2002/07/27 14:45:30 1.3 @@ -87,7 +87,7 @@ $realm="$HTTP_HOST"; // FIX $fsDocumentRoot = dirname($HTTP_SERVER_VARS[SCRIPT_FILENAME]); - if ($fsDocumentRoot == "") Error("Configuration error","Can't get SCRIPT_FILENAME from your web server. Please set \$fsDocumentRoot in \$"); + if ($fsDocumentRoot == "") Error("Configuration error","Can't get SCRIPT_FILENAME from your web server. Please set \$fsDocumentRoot in \$",1); // globals for later $gblLogin = $PHP_AUTH_USER; @@ -166,9 +166,9 @@ $file_lock = CheckLock($fsPath); if (!$editable && !$exists) - Error(_("Creation unsupported for type"),$relPath) ; + Error("Creation unsupported for type",$relPath) ; if (!exists && !is_writeable($fsDir) ) - Error(_("Creation denied"),$relDir) ; + Error("Creation denied",$relDir) ; $text = _("Use this page to view, modify or ") ; if (is_dir($fsPath)) { @@ -715,8 +715,8 @@ $dir = $dirList[$key]; - $info_url=self_args(array("A" => "A=E", "F" => "F=".urlencode($dir))); - $dir_url=$self."?D=".urlencode($relDir.$dir); + $info_url=self_args(array("A"=>"A=E", "F"=>"F=".urlencode($dir), "D"=>$D)); + $dir_url=$self."?D=".urlencode($relDir."/".$dir); include("$html/Navigate-dirEntry.html"); } // iterate over dirs @@ -930,20 +930,43 @@ ////////////////////////////////////////////////////////////////// -function Error($title,$text="") { - StartHTML("(".$title.")",$text) ; - echo "

Hit your Browser's Back Button.

" ; - EndHTML() ; +// Error with sysadmin flag are reported to error_log or hidden from +// users + +function Error($title,$text="",$sysadmin=0) { + global $gblSeparateAdminMessages, + $gblMailAdminMessages,$realm, + $HTTP_SERVER_VARS; + if ($sysadmin) { + if ($gblSeparateAdminMessages) { + $user="Your administrator "; + if ($gblMailAdminMessages) { + mail($HTTP_SERVER_VARS["SERVER_ADMIN"], "docman $realm error message: $title", strip_tags($text)); + $user.="".$HTTP_SERVER_VARS["SERVER_ADMIN"]." "; + } + $user.="has been notified about error" ; + StartHTML("($title)",$user); + echo "

Hit your Browser's Back Button.

" ; + EndHTML(); + error_log("docman $realm: ".strip_tags($text)); + } else { + StartHTML("ADMIN: ".$title,$text) ; + echo "

Hit your Browser's Back Button.

" ; + EndHTML(); + } + } else { + StartHTML("(".$title.")",$text) ; + echo "

Hit your Browser's Back Button.

" ; + EndHTML() ; + } exit ; } // end function Error -////////////////////////////////////////////////////////////////// - -function LogIt($target,$msg) { +function LogIt($target,$msg, $changelog=0) { $dir=dirname($target); if (! file_exists($dir."/.log")) { - if (! @mkdir($dir."/.log",0700)) Error("docman installation problem","can't create log directory $dir/.log"); + if (! @mkdir($dir."/.log",0700)) Error("docman installation problem","can't create log directory $dir/.log",1); } $file=basename($target); @@ -952,6 +975,18 @@ "\t$GLOBALS[gblUserName]\t$msg\n"); fclose($log); + if (! $changelog) return; + + global $gblFsRoot; + $log=fopen("$gblFsRoot/.changelog","a+"); + if (substr($target,0,strlen($gblFsRoot)) == $gblFsRoot) + $target=substr($target,strlen($gblFsRoot),strlen($target)-strlen($gblFsRoot)); + $msg=str_replace("\t"," ",$msg); + fputs($log,time()."\t$target\t$GLOBALS[gblUserName]\t$msg\n"); + fclose($log); + + // FIX: implement e-mail notification based on $changelog + // permission } @@ -970,7 +1005,7 @@ fputs($note,"$msg\n"); fclose($note); - Logit($target,"added note $msg"); + LogIt($target,"added note $msg"); } @@ -1015,13 +1050,13 @@ $file=basename($target); if (file_exists("$dir/.lock/$file")) { - Logit($target,"attempt to locked allready locked file!"); + LogIt($target,"attempt to locked allready locked file!"); } else { $lock=fopen("$dir/.lock/$file","w"); fputs($lock,"$GLOBALS[gblUserName]\n"); fclose($lock); - Logit($target,"file locked"); + LogIt($target,"file locked"); } } @@ -1048,9 +1083,9 @@ $file=basename($target); if (file_exists($dir."/.lock/$file")) { unlink("$dir/.lock/$file"); - Logit($target,"file unlocked"); + LogIt($target,"file unlocked"); } else { - Logit($target,"attempt to unlocked non-locked file!"); + LogIt($target,"attempt to unlocked non-locked file!"); } } @@ -1120,18 +1155,6 @@ ////////////////////////////////////////////////////////////////// -function ChangeLog($target,$msg) { - - global $gblFsRoot; - $log=fopen("$gblFsRoot/.changelog","a+"); - if (substr($target,0,strlen($gblFsRoot)) == $gblFsRoot) - $target=substr($target,strlen($gblFsRoot),strlen($target)-strlen($gblFsRoot)); - $msg=str_replace("\t"," ",$msg); - fputs($log,time()."\t$target\t$GLOBALS[gblUserName]\t$msg\n"); - fclose($log); - -} - function DisplayChangeLog($day) { global $gblFsRoot; @@ -1267,8 +1290,6 @@ $groups_arr = array(); $perm_arr = array(); - $error=0; - $tr_arr = array(); while (! feof($fp_conf)) { @@ -1336,7 +1357,7 @@ } if ($error) { - Error("Trustee error",$error); + Error("Trustee error",$error,1); } else { include("$trustee_php"); } @@ -1484,6 +1505,8 @@ exit ; } + if (!is_dir($gblRepositoryDir)) Error("Repository dir not found","Can't find repository directory $gblRepositoryDir. Please fix that in $realm_config variable \$gblRepositoryDir.",1); + // trustee (ACL) file configuration $trustee_conf="$gblIncDir/realm/$realm.trustee"; // compiled version of trustee file @@ -1581,11 +1604,12 @@ copy($source,$target) ; chmod($target,$gblFilePerms) ; clearstatcache() ; - Logit($target,"uploaded"); if (isset($FILENAME)) { + LogIt($target,"check-in",trperm_r | trperm_w); Unlock($target); + } else { + LogIt($target,"uploaded",trperm_r | trperm_w); } - ChangeLog($target,"updated"); break ; case "SAVE" : @@ -1602,8 +1626,7 @@ fwrite($fh,$FILEDATA) ; fclose($fh) ; clearstatcache() ; - Logit($path,"saved changes"); - ChangeLog($path,"saved changes"); + LogIt($path,"saved changes",trperm_r); break ; case "CREATE" : @@ -1616,6 +1639,8 @@ case "D" : // create a directory if ( ! @mkdir($path,$gblDirPerms) ) Error("Mkdir failed",$relPath) ; // eg. if it exists + else + LogIt($path."/","dir created",trperm_w); clearstatcache() ; break ; case "F" : // create a new file @@ -1628,13 +1653,12 @@ if ($fh) { fputs($fh,"\n"); fclose($fh) ; - LogIt($path,"file created"); + LogIt($path,"file created",trperm_r | trperm_w); } 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 ; @@ -1657,22 +1681,21 @@ // if ( ! @unlink($path) ) { if ( ! rename($path,"$dir/.del/$file") ) { Error("File delete failed", $tstr . $path) ; - Logit($path,"file delete failed"); + LogIt($path,"file delete failed"); exit ; } else { - Logit($path,"file deleted"); + LogIt($path,"file deleted",trperm_w); 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 ( ! @rrmdir($fsDir) ) { - Error("Rmdir failed", $tstr . $fsDir) ; - } - else { - $relDir = dirname($relDir) ; // move up - } + } else { // delete directory + if ( ! @rrmdir($fsDir) ) { + Error("Rmdir failed", $tstr . $fsDir) ; + } else { + LogIt($path,"dir deleted",trperm_w); + $relDir = dirname($relDir) ; // move up + } } break ; @@ -1682,7 +1705,7 @@ if (substr($FN,0,4) != ".del") break ; $file=substr($FN,4,strlen($FN)-4); - Logit("$fsDir/.del/$file","undeleted"); + LogIt("$fsDir/.del/$file","undeleted",trperm_w); MoveTo("$fsDir/.del/$file","$fsDir/"); MoveTo("$fsDir/.del/.log/$file","$fsDir/.log/"); MoveTo("$fsDir/.del/.note/$file","$fsDir/.note/"); @@ -1693,7 +1716,7 @@ case "RENAME" : if ( $CONFIRM != "on" ) break ; - Logit("$fsDir/$FN","renamed $FN to $NEWNAME"); + LogIt("$fsDir/$FN","renamed $FN to $NEWNAME",trperm_r); safe_rename($fsDir,$FN,$NEWNAME); break ; @@ -1803,5 +1826,5 @@ Navigate($gblFsRoot,$relDir) ; exit ; - Error("Whooah!","By cartesian logic, this never happens") ; + Error("Whooah!","By cartesian logic, this never happens",1) ; ?>