dav issue when listing protected contents from OS interface

This commit is contained in:
friendica 2014-02-12 00:04:35 -08:00
parent 8089c3202b
commit 13a3dcf47f
2 changed files with 27 additions and 8 deletions

View File

@ -30,8 +30,19 @@ class RedDirectory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
} }
function log() {
logger('RedDirectory::log() ext_path ' . $this->ext_path, LOGGER_DATA);
logger('RedDirectory::log() os_path ' . $this->os_path, LOGGER_DATA);
logger('RedDirectory::log() red_path ' . $this->red_path, LOGGER_DATA);
}
function getChildren() { function getChildren() {
logger('RedDirectory::getChildren() called for ' . $this->ext_path, LOGGER_DATA);
$this->log();
if(get_config('system','block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { if(get_config('system','block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
throw new DAV\Exception\Forbidden('Permission denied.'); throw new DAV\Exception\Forbidden('Permission denied.');
return; return;
@ -239,7 +250,7 @@ class RedDirectory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
return; return;
logger('getDir(): path: ' . print_r($path_arr,true)); logger('getDir(): path: ' . print_r($path_arr,true), LOGGER_DEBUG);
$channel_name = $path_arr[0]; $channel_name = $path_arr[0];
@ -519,6 +530,7 @@ function RedChannelList(&$auth) {
if($r) { if($r) {
foreach($r as $rr) { foreach($r as $rr) {
if(perm_is_allowed($rr['channel_id'],$auth->observer,'view_storage')) { if(perm_is_allowed($rr['channel_id'],$auth->observer,'view_storage')) {
logger('RedChannelList: ' . '/cloud/' . $rr['channel_address'], LOGGER_DATA);
$ret[] = new RedDirectory('/cloud/' . $rr['channel_address'],$auth); $ret[] = new RedDirectory('/cloud/' . $rr['channel_address'],$auth);
} }
} }
@ -568,6 +580,7 @@ function RedCollectionData($file,&$auth) {
$permission_error = false; $permission_error = false;
for($x = 1; $x < count($path_arr); $x ++) { for($x = 1; $x < count($path_arr); $x ++) {
$r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and (flags & %d) $perms limit 1", $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and (flags & %d) $perms limit 1",
dbesc($folder), dbesc($folder),
dbesc($path_arr[$x]), dbesc($path_arr[$x]),
@ -619,6 +632,8 @@ function RedCollectionData($file,&$auth) {
); );
foreach($r as $rr) { foreach($r as $rr) {
logger('RedCollectionData: filename: ' . $rr['filename'], LOGGER_DATA);
if($rr['flags'] & ATTACH_FLAG_DIR) if($rr['flags'] & ATTACH_FLAG_DIR)
$ret[] = new RedDirectory('/cloud' . $path . '/' . $rr['filename'],$auth); $ret[] = new RedDirectory('/cloud' . $path . '/' . $rr['filename'],$auth);
else else
@ -775,6 +790,8 @@ class RedBasicAuth extends Sabre\DAV\Auth\Backend\AbstractBasic {
$this->channel_name = $r[0]['channel_address']; $this->channel_name = $r[0]['channel_address'];
$this->channel_id = $r[0]['channel_id']; $this->channel_id = $r[0]['channel_id'];
$this->channel_hash = $this->observer = $r[0]['channel_hash']; $this->channel_hash = $this->observer = $r[0]['channel_hash'];
$_SESSION['uid'] = $r[0]['channel_id'];
$_SESSION['authenticated'] = true;
return true; return true;
} }
} }
@ -794,6 +811,8 @@ class RedBasicAuth extends Sabre\DAV\Auth\Backend\AbstractBasic {
$this->channel_name = $r[0]['channel_address']; $this->channel_name = $r[0]['channel_address'];
$this->channel_id = $r[0]['channel_id']; $this->channel_id = $r[0]['channel_id'];
$this->channel_hash = $this->observer = $r[0]['channel_hash']; $this->channel_hash = $this->observer = $r[0]['channel_hash'];
$_SESSION['uid'] = $r[0]['channel_id'];
$_SESSION['authenticated'] = true;
return true; return true;
} }
} }
@ -813,12 +832,12 @@ class RedBasicAuth extends Sabre\DAV\Auth\Backend\AbstractBasic {
function log() { function log() {
logger('dav: auth: channel_name ' . $this->channel_name); logger('dav: auth: channel_name ' . $this->channel_name, LOGGER_DATA);
logger('dav: auth: channel_id ' . $this->channel_id); logger('dav: auth: channel_id ' . $this->channel_id, LOGGER_DATA);
logger('dav: auth: channel_hash ' . $this->channel_hash); logger('dav: auth: channel_hash ' . $this->channel_hash, LOGGER_DATA);
logger('dav: auth: observer ' . $this->observer); logger('dav: auth: observer ' . $this->observer, LOGGER_DATA);
logger('dav: auth: owner_id ' . $this->owner_id); logger('dav: auth: owner_id ' . $this->owner_id, LOGGER_DATA);
logger('dav: auth: owner_nick ' . $this->owner_nick); logger('dav: auth: owner_nick ' . $this->owner_nick, LOGGER_DATA);
} }

View File

@ -1 +1 @@
2014-02-11.585 2014-02-12.586