aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/attach.php5
-rw-r--r--include/reddav.php9
-rw-r--r--include/security.php3
3 files changed, 14 insertions, 3 deletions
diff --git a/include/attach.php b/include/attach.php
index d339ce6f9..dbc489a2d 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -329,6 +329,7 @@ function attach_store($channel,$observer_hash,$options = '',$arr = null) {
}
$limit = service_class_fetch($channel_id,'attach_upload_limit');
+
if($limit !== false) {
$r = q("select sum(filesize) as total from attach where aid = %d ",
intval($channel['channel_account_id'])
@@ -623,7 +624,7 @@ function attach_mkdir($channel,$observer_hash,$arr = null) {
);
if($r) {
- if(mkdir($path,STORAGE_DEFAULT_PERMISSIONS)) {
+ if(mkdir($path,STORAGE_DEFAULT_PERMISSIONS,true)) {
$ret['success'] = true;
$ret['data'] = $arr;
}
@@ -735,7 +736,7 @@ function attach_delete($channel_id,$resource) {
function get_cloudpath($arr) {
- $basepath = 'store/';
+ $basepath = 'cloud/';
if($arr['uid']) {
$r = q("select channel_address from channel where channel_id = %d limit 1",
intval($arr['uid'])
diff --git a/include/reddav.php b/include/reddav.php
index a6c550e2d..d00980011 100644
--- a/include/reddav.php
+++ b/include/reddav.php
@@ -163,6 +163,7 @@ class RedDirectory extends DAV\Node implements DAV\ICollection {
intval($c[0]['channel_account_id'])
);
if(($x) && ($x[0]['total'] + $size > $limit)) {
+ logger('reddav: service class limit exceeded for ' . $c[0]['channel_name'] . ' total usage is ' . $x[0]['total'] . ' limit is ' . $limit);
attach_delete($c[0]['channel_id'],$hash);
return;
}
@@ -321,13 +322,18 @@ class RedFile extends DAV\Node implements DAV\IFile {
function put($data) {
logger('RedFile::put: ' . basename($this->name), LOGGER_DEBUG);
+
+ $c = q("select * from channel where channel_id = %d limit 1",
+ intval($this->auth->owner_id)
+ );
+
$r = q("select flags, data from attach where hash = '%s' and uid = %d limit 1",
dbesc($this->data['hash']),
intval($c[0]['channel_id'])
);
if($r) {
if($r[0]['flags'] & ATTACH_FLAG_OS) {
- $f = 'store/' . $this->auth->owner_nick . '/' . (($r[0]['data']) ? $r[0]['data'] . '/' : '');
+ $f = 'store/' . $this->auth->owner_nick . '/' . (($r[0]['data']) ? $r[0]['data'] : '');
@file_put_contents($f, $data);
$size = @filesize($f);
logger('reddav: put() filename: ' . $f . ' size: ' . $size, LOGGER_DEBUG);
@@ -367,6 +373,7 @@ class RedFile extends DAV\Node implements DAV\IFile {
intval($c[0]['channel_account_id'])
);
if(($x) && ($x[0]['total'] + $size > $limit)) {
+ logger('reddav: service class limit exceeded for ' . $c[0]['channel_name'] . ' total usage is ' . $x[0]['total'] . ' limit is ' . $limit);
attach_delete($c[0]['channel_id'],$this->data['hash']);
return;
}
diff --git a/include/security.php b/include/security.php
index 138efe3ab..a87442d42 100644
--- a/include/security.php
+++ b/include/security.php
@@ -163,6 +163,9 @@ function change_channel($change_channel) {
get_app()->set_observer($x[0]);
get_app()->set_perms(get_all_perms(local_user(),$hash));
}
+ if(! is_dir('store/' . $r[0]['channel_address']))
+ @mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS,true);
+
}
return $ret;