87 |
$realm="$HTTP_HOST"; // FIX |
$realm="$HTTP_HOST"; // FIX |
88 |
|
|
89 |
$fsDocumentRoot = dirname($HTTP_SERVER_VARS[SCRIPT_FILENAME]); |
$fsDocumentRoot = dirname($HTTP_SERVER_VARS[SCRIPT_FILENAME]); |
90 |
if ($fsDocumentRoot == "") Error("Configuration error","Can't get SCRIPT_FILENAME from your web server. Please set <tt>\$fsDocumentRoot</tt> in <tt>\$</tt>"); |
if ($fsDocumentRoot == "") Error("Configuration error","Can't get SCRIPT_FILENAME from your web server. Please set <tt>\$fsDocumentRoot</tt> in <tt>\$</tt>",1); |
91 |
|
|
92 |
// globals for later |
// globals for later |
93 |
$gblLogin = $PHP_AUTH_USER; |
$gblLogin = $PHP_AUTH_USER; |
166 |
$file_lock = CheckLock($fsPath); |
$file_lock = CheckLock($fsPath); |
167 |
|
|
168 |
if (!$editable && !$exists) |
if (!$editable && !$exists) |
169 |
Error(_("Creation unsupported for type"),$relPath) ; |
Error("Creation unsupported for type",$relPath) ; |
170 |
if (!exists && !is_writeable($fsDir) ) |
if (!exists && !is_writeable($fsDir) ) |
171 |
Error(_("Creation denied"),$relDir) ; |
Error("Creation denied",$relDir) ; |
172 |
|
|
173 |
$text = _("Use this page to view, modify or ") ; |
$text = _("Use this page to view, modify or ") ; |
174 |
if (is_dir($fsPath)) { |
if (is_dir($fsPath)) { |
715 |
|
|
716 |
$dir = $dirList[$key]; |
$dir = $dirList[$key]; |
717 |
|
|
718 |
$info_url=self_args(array("A" => "A=E", "F" => "F=".urlencode($dir))); |
$info_url=self_args(array("A"=>"A=E", "F"=>"F=".urlencode($dir), "D"=>$D)); |
719 |
$dir_url=$self."?D=".urlencode($relDir.$dir); |
$dir_url=$self."?D=".urlencode($relDir."/".$dir); |
720 |
include("$html/Navigate-dirEntry.html"); |
include("$html/Navigate-dirEntry.html"); |
721 |
|
|
722 |
} // iterate over dirs |
} // iterate over dirs |
930 |
|
|
931 |
////////////////////////////////////////////////////////////////// |
////////////////////////////////////////////////////////////////// |
932 |
|
|
933 |
function Error($title,$text="") { |
// Error with sysadmin flag are reported to error_log or hidden from |
934 |
StartHTML("(".$title.")",$text) ; |
// users |
935 |
echo "<P ALIGN=center>Hit your Browser's Back Button.</P>" ; |
|
936 |
EndHTML() ; |
function Error($title,$text="",$sysadmin=0) { |
937 |
|
global $gblSeparateAdminMessages, |
938 |
|
$gblMailAdminMessages,$realm, |
939 |
|
$HTTP_SERVER_VARS; |
940 |
|
if ($sysadmin) { |
941 |
|
if ($gblSeparateAdminMessages) { |
942 |
|
$user="Your administrator "; |
943 |
|
if ($gblMailAdminMessages) { |
944 |
|
mail($HTTP_SERVER_VARS["SERVER_ADMIN"], "docman $realm error message: $title", strip_tags($text)); |
945 |
|
$user.="<tt>".$HTTP_SERVER_VARS["SERVER_ADMIN"]."</tt> "; |
946 |
|
} |
947 |
|
$user.="has been notified about error" ; |
948 |
|
StartHTML("($title)",$user); |
949 |
|
echo "<P ALIGN=center>Hit your Browser's Back Button.</P>" ; |
950 |
|
EndHTML(); |
951 |
|
error_log("docman $realm: ".strip_tags($text)); |
952 |
|
} else { |
953 |
|
StartHTML("ADMIN: ".$title,$text) ; |
954 |
|
echo "<P ALIGN=center>Hit your Browser's Back Button.</P>" ; |
955 |
|
EndHTML(); |
956 |
|
} |
957 |
|
} else { |
958 |
|
StartHTML("(".$title.")",$text) ; |
959 |
|
echo "<P ALIGN=center>Hit your Browser's Back Button.</P>" ; |
960 |
|
EndHTML() ; |
961 |
|
} |
962 |
exit ; |
exit ; |
963 |
} // end function Error |
} // end function Error |
964 |
|
|
965 |
////////////////////////////////////////////////////////////////// |
function LogIt($target,$msg, $changelog=0) { |
|
|
|
|
function LogIt($target,$msg) { |
|
966 |
|
|
967 |
$dir=dirname($target); |
$dir=dirname($target); |
968 |
if (! file_exists($dir."/.log")) { |
if (! file_exists($dir."/.log")) { |
969 |
if (! @mkdir($dir."/.log",0700)) Error("docman installation problem","can't create log directory <tt>$dir/.log</tt>"); |
if (! @mkdir($dir."/.log",0700)) Error("docman installation problem","can't create log directory <tt>$dir/.log</tt>",1); |
970 |
} |
} |
971 |
$file=basename($target); |
$file=basename($target); |
972 |
|
|
975 |
"\t$GLOBALS[gblUserName]\t$msg\n"); |
"\t$GLOBALS[gblUserName]\t$msg\n"); |
976 |
fclose($log); |
fclose($log); |
977 |
|
|
978 |
|
if (! $changelog) return; |
979 |
|
|
980 |
|
global $gblFsRoot; |
981 |
|
$log=fopen("$gblFsRoot/.changelog","a+"); |
982 |
|
if (substr($target,0,strlen($gblFsRoot)) == $gblFsRoot) |
983 |
|
$target=substr($target,strlen($gblFsRoot),strlen($target)-strlen($gblFsRoot)); |
984 |
|
$msg=str_replace("\t"," ",$msg); |
985 |
|
fputs($log,time()."\t$target\t$GLOBALS[gblUserName]\t$msg\n"); |
986 |
|
fclose($log); |
987 |
|
|
988 |
|
// FIX: implement e-mail notification based on $changelog |
989 |
|
// permission |
990 |
} |
} |
991 |
|
|
992 |
|
|
1005 |
fputs($note,"$msg\n"); |
fputs($note,"$msg\n"); |
1006 |
fclose($note); |
fclose($note); |
1007 |
|
|
1008 |
Logit($target,"added note $msg"); |
LogIt($target,"added note $msg"); |
1009 |
|
|
1010 |
} |
} |
1011 |
|
|
1050 |
$file=basename($target); |
$file=basename($target); |
1051 |
|
|
1052 |
if (file_exists("$dir/.lock/$file")) { |
if (file_exists("$dir/.lock/$file")) { |
1053 |
Logit($target,"attempt to locked allready locked file!"); |
LogIt($target,"attempt to locked allready locked file!"); |
1054 |
} else { |
} else { |
1055 |
$lock=fopen("$dir/.lock/$file","w"); |
$lock=fopen("$dir/.lock/$file","w"); |
1056 |
fputs($lock,"$GLOBALS[gblUserName]\n"); |
fputs($lock,"$GLOBALS[gblUserName]\n"); |
1057 |
fclose($lock); |
fclose($lock); |
1058 |
|
|
1059 |
Logit($target,"file locked"); |
LogIt($target,"file locked"); |
1060 |
} |
} |
1061 |
|
|
1062 |
} |
} |
1083 |
$file=basename($target); |
$file=basename($target); |
1084 |
if (file_exists($dir."/.lock/$file")) { |
if (file_exists($dir."/.lock/$file")) { |
1085 |
unlink("$dir/.lock/$file"); |
unlink("$dir/.lock/$file"); |
1086 |
Logit($target,"file unlocked"); |
LogIt($target,"file unlocked"); |
1087 |
} else { |
} else { |
1088 |
Logit($target,"attempt to unlocked non-locked file!"); |
LogIt($target,"attempt to unlocked non-locked file!"); |
1089 |
} |
} |
1090 |
|
|
1091 |
} |
} |
1155 |
|
|
1156 |
////////////////////////////////////////////////////////////////// |
////////////////////////////////////////////////////////////////// |
1157 |
|
|
|
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); |
|
|
|
|
|
} |
|
|
|
|
1158 |
function DisplayChangeLog($day) { |
function DisplayChangeLog($day) { |
1159 |
|
|
1160 |
global $gblFsRoot; |
global $gblFsRoot; |
1290 |
$groups_arr = array(); |
$groups_arr = array(); |
1291 |
$perm_arr = array(); |
$perm_arr = array(); |
1292 |
|
|
|
$error=0; |
|
|
|
|
1293 |
$tr_arr = array(); |
$tr_arr = array(); |
1294 |
|
|
1295 |
while (! feof($fp_conf)) { |
while (! feof($fp_conf)) { |
1357 |
} |
} |
1358 |
|
|
1359 |
if ($error) { |
if ($error) { |
1360 |
Error("Trustee error",$error); |
Error("Trustee error",$error,1); |
1361 |
} else { |
} else { |
1362 |
include("$trustee_php"); |
include("$trustee_php"); |
1363 |
} |
} |
1505 |
exit ; |
exit ; |
1506 |
} |
} |
1507 |
|
|
1508 |
|
if (!is_dir($gblRepositoryDir)) Error("Repository dir not found","Can't find repository directory <tt>$gblRepositoryDir</tt>. Please fix that in <tt>$realm_config</tt> variable <tt>\$gblRepositoryDir</tt>.",1); |
1509 |
|
|
1510 |
// trustee (ACL) file configuration |
// trustee (ACL) file configuration |
1511 |
$trustee_conf="$gblIncDir/realm/$realm.trustee"; |
$trustee_conf="$gblIncDir/realm/$realm.trustee"; |
1512 |
// compiled version of trustee file |
// compiled version of trustee file |
1604 |
copy($source,$target) ; |
copy($source,$target) ; |
1605 |
chmod($target,$gblFilePerms) ; |
chmod($target,$gblFilePerms) ; |
1606 |
clearstatcache() ; |
clearstatcache() ; |
|
Logit($target,"uploaded"); |
|
1607 |
if (isset($FILENAME)) { |
if (isset($FILENAME)) { |
1608 |
|
LogIt($target,"check-in",trperm_r | trperm_w); |
1609 |
Unlock($target); |
Unlock($target); |
1610 |
|
} else { |
1611 |
|
LogIt($target,"uploaded",trperm_r | trperm_w); |
1612 |
} |
} |
|
ChangeLog($target,"updated"); |
|
1613 |
break ; |
break ; |
1614 |
|
|
1615 |
case "SAVE" : |
case "SAVE" : |
1626 |
fwrite($fh,$FILEDATA) ; |
fwrite($fh,$FILEDATA) ; |
1627 |
fclose($fh) ; |
fclose($fh) ; |
1628 |
clearstatcache() ; |
clearstatcache() ; |
1629 |
Logit($path,"saved changes"); |
LogIt($path,"saved changes",trperm_r); |
|
ChangeLog($path,"saved changes"); |
|
1630 |
break ; |
break ; |
1631 |
|
|
1632 |
case "CREATE" : |
case "CREATE" : |
1639 |
case "D" : // create a directory |
case "D" : // create a directory |
1640 |
if ( ! @mkdir($path,$gblDirPerms) ) |
if ( ! @mkdir($path,$gblDirPerms) ) |
1641 |
Error("Mkdir failed",$relPath) ; // eg. if it exists |
Error("Mkdir failed",$relPath) ; // eg. if it exists |
1642 |
|
else |
1643 |
|
LogIt($path."/","dir created",trperm_w); |
1644 |
clearstatcache() ; |
clearstatcache() ; |
1645 |
break ; |
break ; |
1646 |
case "F" : // create a new file |
case "F" : // create a new file |
1653 |
if ($fh) { |
if ($fh) { |
1654 |
fputs($fh,"\n"); |
fputs($fh,"\n"); |
1655 |
fclose($fh) ; |
fclose($fh) ; |
1656 |
LogIt($path,"file created"); |
LogIt($path,"file created",trperm_r | trperm_w); |
1657 |
} else { |
} else { |
1658 |
Error("Creation of file $relPath failed -- $path"); |
Error("Creation of file $relPath failed -- $path"); |
1659 |
} |
} |
1660 |
$tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ; |
$tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ; |
1661 |
header("Location: " . $tstr) ; |
header("Location: " . $tstr) ; |
|
ChangeLog($target,"created"); |
|
1662 |
exit ; |
exit ; |
1663 |
} |
} |
1664 |
break ; |
break ; |
1681 |
// if ( ! @unlink($path) ) { |
// if ( ! @unlink($path) ) { |
1682 |
if ( ! rename($path,"$dir/.del/$file") ) { |
if ( ! rename($path,"$dir/.del/$file") ) { |
1683 |
Error("File delete failed", $tstr . $path) ; |
Error("File delete failed", $tstr . $path) ; |
1684 |
Logit($path,"file delete failed"); |
LogIt($path,"file delete failed"); |
1685 |
exit ; |
exit ; |
1686 |
} else { |
} else { |
1687 |
Logit($path,"file deleted"); |
LogIt($path,"file deleted",trperm_w); |
1688 |
MoveTo("$dir/.log/$file","$dir/.del/.log/"); |
MoveTo("$dir/.log/$file","$dir/.del/.log/"); |
1689 |
MoveTo("$dir/.note/$file","$dir/.del/.note/"); |
MoveTo("$dir/.note/$file","$dir/.del/.note/"); |
1690 |
MoveTo("$dir/.lock/$file","$dir/.del/.lock/"); |
MoveTo("$dir/.lock/$file","$dir/.del/.lock/"); |
1691 |
} |
} |
1692 |
} |
} else { // delete directory |
1693 |
else { // delete directory |
if ( ! @rrmdir($fsDir) ) { |
1694 |
if ( ! @rrmdir($fsDir) ) { |
Error("Rmdir failed", $tstr . $fsDir) ; |
1695 |
Error("Rmdir failed", $tstr . $fsDir) ; |
} else { |
1696 |
} |
LogIt($path,"dir deleted",trperm_w); |
1697 |
else { |
$relDir = dirname($relDir) ; // move up |
1698 |
$relDir = dirname($relDir) ; // move up |
} |
|
} |
|
1699 |
} |
} |
1700 |
break ; |
break ; |
1701 |
|
|
1705 |
if (substr($FN,0,4) != ".del") break ; |
if (substr($FN,0,4) != ".del") break ; |
1706 |
$file=substr($FN,4,strlen($FN)-4); |
$file=substr($FN,4,strlen($FN)-4); |
1707 |
|
|
1708 |
Logit("$fsDir/.del/$file","undeleted"); |
LogIt("$fsDir/.del/$file","undeleted",trperm_w); |
1709 |
MoveTo("$fsDir/.del/$file","$fsDir/"); |
MoveTo("$fsDir/.del/$file","$fsDir/"); |
1710 |
MoveTo("$fsDir/.del/.log/$file","$fsDir/.log/"); |
MoveTo("$fsDir/.del/.log/$file","$fsDir/.log/"); |
1711 |
MoveTo("$fsDir/.del/.note/$file","$fsDir/.note/"); |
MoveTo("$fsDir/.del/.note/$file","$fsDir/.note/"); |
1716 |
case "RENAME" : |
case "RENAME" : |
1717 |
if ( $CONFIRM != "on" ) break ; |
if ( $CONFIRM != "on" ) break ; |
1718 |
|
|
1719 |
Logit("$fsDir/$FN","renamed $FN to $NEWNAME"); |
LogIt("$fsDir/$FN","renamed $FN to $NEWNAME",trperm_r); |
1720 |
safe_rename($fsDir,$FN,$NEWNAME); |
safe_rename($fsDir,$FN,$NEWNAME); |
1721 |
break ; |
break ; |
1722 |
|
|
1826 |
Navigate($gblFsRoot,$relDir) ; |
Navigate($gblFsRoot,$relDir) ; |
1827 |
exit ; |
exit ; |
1828 |
|
|
1829 |
Error("Whooah!","By cartesian logic, this never happens") ; |
Error("Whooah!","By cartesian logic, this never happens",1) ; |
1830 |
?> |
?> |