--- docman.php 2002/07/28 12:14:18 1.14
+++ docman.php 2002/07/28 14:16:04 1.17
@@ -582,8 +582,6 @@
$self = $HTTP_SERVER_VARS["PHP_SELF"] ;
- if ($relDir == "") $relDir = "/";
-
$fsDir = $fsRoot.$relDir."/"; // current directory
if (!is_dir($fsDir)) Error("Dir not found",$relDir,1) ;
@@ -904,8 +902,6 @@
global $html, $HTTP_SERVER_VARS;
$self = $HTTP_SERVER_VARS["PHP_SELF"] ;
- if ($relDir == "") $relDir = "/" ;
-
include("$html/UploadPage.html");
} // end function UploadPage
@@ -1375,12 +1371,14 @@
}//init_trustee
function in_group($user,$group) {
- return in_array($groups[$group],$user);
+ global $groups;
+ return in_array($user,$groups[$group]);
}
// helper function
function unroll_perm($u,$t,$user,$perm) {
- // check user
+
+ // check user FIX
if ($t & trmask_not && ($u==$user)) continue;
if (!($t & trmask_not) && ($u!=$user)) continue;
@@ -1406,9 +1404,7 @@
$path = "/";
while (count($path_arr)) {
if (substr($path,strlen($path)-1,1) != "/") $path.="/";
- $path.=array_shift($path_arr);
$tr = $trustees[$path];
-
if (isset($tr)) {
// first apply trustee for all
if (isset($tr['*'])) {
@@ -1416,21 +1412,20 @@
unset($tr['*']);
}
// then apply group policies
- foreach ($tr as $u=>$t) {
- if ($t & trmask_group && in_group($user,$u)) {
+ foreach ($tr as $g=>$t) {
+ if ($t & trmask_group && in_group($user,$g)) {
// resolv user
$t = $t & ~trmask_group;
- $u = $user;
- $perm = unroll_perm($u,$t,$user, $perm);
- unset($tr[$u]);
+ $perm = unroll_perm($user,$t,$user, $perm);
+ unset($tr[$g]);
}
}
- // then apply use policy
+ // then apply user policy
if (isset($tr[$user])) {
$perm = unroll_perm($user,$tr[$user],$user, $perm);
unset($tr[$user]);
}
-
+ $path.=array_shift($path_arr);
}
}
@@ -1446,6 +1441,7 @@
global $debug;
$debug.="
check_perm: $path test perm ".display_trustee($perm)."
\n";
+
$return = ! $HAVE_TRUSTEE;
if ($HAVE_TRUSTEE) {
$perm = check_trustee($gblLogin,$path);
@@ -1571,8 +1567,12 @@
// get ACL informations
$HAVE_TRUSTEE = init_trustee();
+ // take additional login vars
+ $relogin = $HTTP_GET_VARS[relogin];
+ $force_login = $HTTP_GET_VARS[force_login];
+
if (strtolower($gblLogin) == "anonymous" || !isset($gblPasswd)) {
- $perm = check_trustee($gblLogin,$path);
+ $perm = check_trustee("anonymous",$path);
// browsing must be explicitly allowed for root directory
// of repository for anonymous user to work!
if ($perm[allow] & trperm_b) {
@@ -1618,8 +1618,6 @@
$relDir = $D;
}
- if ($relDir == "/") $relDir = "" ;
-
$relScriptDir = dirname($SCRIPT_NAME) ;
// i.e. /docman
@@ -1628,7 +1626,7 @@
// i.e. /home/httpd/repository
$fsDir = $gblFsRoot . $relDir ; // current directory
- if ( !is_dir($fsDir) ) Error("Dir not found",$relDir,1) ;
+ if ( !is_dir($fsDir) ) Error("Dir not found","Can't find $relDir which points to $fsDir",1) ;
if (isset($HTTP_SERVER_VARS["HTTPS"]) && $HTTP_SERVER_VARS["HTTPS"] == "on") {
$webRoot = "https://";
@@ -1824,8 +1822,10 @@
switch ($A) {
case "U" :
// upload to $relDir
+ if (! check_perm($relDir, trperm_w))
+ Error("Write access denied","You don't have permission to write in $relDir");
if (!is_writeable($gblFsRoot . $relDir))
- Error("Write access denied",$relDir) ;
+ Error("Write access denied","User $gblLogin has permission on $relDir, but directory is not writable",1);
$text = "Use this page to upload a single " ;
$text .= "file to $realm." ;
StartHTML("(Upload Page)", $text) ;
@@ -1875,15 +1875,12 @@
case "I" :
if (! isset($F) || $F == "")
Error("Can't find file to include","Your request didn't specify file to include which should be in variable F like $HTTP_SERVER_VARS[REQUEST_URI]&F=include_php_file",1);
- if (file_exists("$gblIncDir/include_php/$F.php")) {
- $inc_file="$gblIncDir/include_php/${F}.php";
- } elseif (file_exists("$fsRealmDir/$realm/$F.php")) {
- $inc_file="$fsRealmDir/$realm/${F}.php";
- } else {
- Error("Can't find file to include","Can't find include file $F.php in $gblIncDir/include_php/ nor $fsRealmDir/$realm/",1);
+ $inc_file="$fsRealmDir/$realm".$realm_sep.$F.".php";
+ if (! file_exists($inc_file)) {
+ Error("Can't find file to include","Can't find include file $F.php in $fsRealmDir/$realm/. Meybe you should copy $gblIncDir/include_php/$F.php to $inc_file ?",1);
}
if (!is_readable($inc_file))
- Error("Read access to include file denied","Can't read PHP include file $inc_file. Fix permissions on it.");
+ Error("Read access to include file denied","Can't read PHP include file $inc_file. Fix permissions on it.",1);
$text = "Your include file should define \$text variable which holds this text and \$title variable which is page title";
$title = "You should define \$title variable with page title";
include($inc_file);