summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTom Needham <needham.thomas@gmail.com>2012-04-07 17:31:30 +0000
committerTom Needham <needham.thomas@gmail.com>2012-04-07 17:31:30 +0000
commit9edf45a324c2f1d4532d02e5c8fa37ebfa0c9dab (patch)
treed7d33a1968370791ec054b5ac4442c41d64498b0 /lib
parentd2886f202024243ae4d92e2eea9d3726037a9601 (diff)
parentd1ae6512cc760c76798a5a8636d1d7908c706ae8 (diff)
downloadnextcloud-server-9edf45a324c2f1d4532d02e5c8fa37ebfa0c9dab.tar.gz
nextcloud-server-9edf45a324c2f1d4532d02e5c8fa37ebfa0c9dab.zip
Merge branch 'master' into migration
Diffstat (limited to 'lib')
-rwxr-xr-xlib/app.php10
-rw-r--r--lib/base.php21
-rw-r--r--lib/filecache.php6
-rw-r--r--lib/files.php4
-rw-r--r--lib/filestorage/local.php4
-rw-r--r--lib/filesystem.php13
-rw-r--r--lib/filesystemview.php17
-rw-r--r--lib/mimetypes.fixlist.php3
-rw-r--r--lib/updater.php1
-rw-r--r--lib/util.php8
10 files changed, 69 insertions, 18 deletions
diff --git a/lib/app.php b/lib/app.php
index 6c882963a02..7d5e8fa91c6 100755
--- a/lib/app.php
+++ b/lib/app.php
@@ -55,7 +55,7 @@ class OC_App{
// Our very own core apps are hardcoded
foreach( array('files', 'settings') as $app ){
- if(is_null($types) or self::isType($app,$types)){
+ if(is_null($types)){
require( $app.'/appinfo/app.php' );
}
}
@@ -103,9 +103,9 @@ class OC_App{
*/
public static function getEnabledApps(){
$apps=array();
- $query = OC_DB::prepare( 'SELECT appid FROM *PREFIX*appconfig WHERE configkey = "enabled" AND configvalue="yes"' );
- $query->execute();
- while($row=$query->fetchRow()){
+ $query = OC_DB::prepare( 'SELECT appid FROM *PREFIX*appconfig WHERE configkey = \'enabled\' AND configvalue=\'yes\'' );
+ $result=$query->execute();
+ while($row=$result->fetchRow()){
$apps[]=$row['appid'];
}
return $apps;
@@ -452,7 +452,7 @@ class OC_App{
*/
public static function getAppVersions(){
$versions=array();
- $query = OC_DB::prepare( 'SELECT appid, configvalue FROM *PREFIX*appconfig WHERE configkey = "installed_version"' );
+ $query = OC_DB::prepare( 'SELECT appid, configvalue FROM *PREFIX*appconfig WHERE configkey = \'installed_version\'' );
$result = $query->execute();
while($row = $result->fetchRow()){
$versions[$row['appid']]=$row['configvalue'];
diff --git a/lib/base.php b/lib/base.php
index 22f7f4ea486..83dd0c98f45 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -277,6 +277,24 @@ class OC{
date_default_timezone_set('Europe/Berlin');
ini_set('arg_separator.output','&amp;');
+ //try to configure php to enable big file uploads.
+ //this doesn´t work always depending on the webserver and php configuration.
+ //Let´s try to overwrite some defaults anyways
+
+ //try to set the maximum execution time to 60min
+ @set_time_limit(3600);
+ @ini_set('max_execution_time',3600);
+ @ini_set('max_input_time',3600);
+
+ //try to set the maximum filesize to 10G
+ @ini_set('upload_max_filesize','10G');
+ @ini_set('post_max_size','10G');
+ @ini_set('file_uploads','50');
+
+ //try to set the session lifetime to 60min
+ @ini_set('gc_maxlifetime','3600');
+
+
//set http auth headers for apache+php-cgi work around
if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches))
{
@@ -347,6 +365,9 @@ class OC{
OC_App::loadApps();
}
}
+
+ // Check for blacklisted files
+ OC_Hook::connect('OC_Filesystem','write','OC_Filesystem','isBlacklisted');
//make sure temporary files are cleaned up
register_shutdown_function(array('OC_Helper','cleanTmp'));
diff --git a/lib/filecache.php b/lib/filecache.php
index 4a4183cbdb5..cdd91dcbfa4 100644
--- a/lib/filecache.php
+++ b/lib/filecache.php
@@ -240,7 +240,7 @@ class OC_FileCache{
* - encrypted
* - versioned
*/
- public static function getFolderContent($path,$root=''){
+ public static function getFolderContent($path,$root='',$mimetype_filter=''){
if(self::isUpdated($path,$root)){
self::updateFolder($path,$root);
}
@@ -252,8 +252,8 @@ class OC_FileCache{
}
$path=$root.$path;
$parent=self::getFileId($path);
- $query=OC_DB::prepare('SELECT name,ctime,mtime,mimetype,size,encrypted,versioned,writable FROM *PREFIX*fscache WHERE parent=?');
- $result=$query->execute(array($parent))->fetchAll();
+ $query=OC_DB::prepare('SELECT name,ctime,mtime,mimetype,size,encrypted,versioned,writable FROM *PREFIX*fscache WHERE parent=? AND (mimetype LIKE ? OR mimetype = ?)');
+ $result=$query->execute(array($parent, $mimetype_filter.'%', 'httpd/unix-directory'))->fetchAll();
if(is_array($result)){
return $result;
}else{
diff --git a/lib/files.php b/lib/files.php
index e7bfbbc19bb..a68c29ad989 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -32,11 +32,11 @@ class OC_Files {
* get the content of a directory
* @param dir $directory
*/
- public static function getDirectoryContent($directory){
+ public static function getDirectoryContent($directory, $mimetype_filter = ''){
if(strpos($directory,OC::$CONFIG_DATADIRECTORY)===0){
$directory=substr($directory,strlen(OC::$CONFIG_DATADIRECTORY));
}
- $files=OC_FileCache::getFolderContent($directory);
+ $files=OC_FileCache::getFolderContent($directory, '', $mimetype_filter);
foreach($files as &$file){
$file['directory']=$directory;
$file['type']=($file['mimetype']=='httpd/unix-directory')?'dir':'file';
diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php
index 688501aee90..bd757f52ce7 100644
--- a/lib/filestorage/local.php
+++ b/lib/filestorage/local.php
@@ -86,6 +86,10 @@ class OC_Filestorage_Local extends OC_Filestorage{
return $this->delTree($path);
}
public function rename($path1,$path2){
+ if (!$this->is_writable($path1)) {
+ OC_Log::write('core','unable to rename, file is not writable : '.$path1,OC_Log::ERROR);
+ return false;
+ }
if(! $this->file_exists($path1)){
OC_Log::write('core','unable to rename, file does not exists : '.$path1,OC_Log::ERROR);
return false;
diff --git a/lib/filesystem.php b/lib/filesystem.php
index 12905d189f9..b6909f5acdf 100644
--- a/lib/filesystem.php
+++ b/lib/filesystem.php
@@ -298,6 +298,19 @@ class OC_Filesystem{
}
return true;
}
+
+ /**
+ * checks if a file is blacklsited for storage in the filesystem
+ * @param array $data from hook
+ */
+ static public function isBlacklisted($data){
+ $blacklist = array('.htaccess');
+ $filename = strtolower(basename($data['path']));
+ if(in_array($filename,$blacklist)){
+ $data['run'] = false;
+ }
+ }
+
/**
* following functions are equivilent to their php buildin equivilents for arguments/return values.
*/
diff --git a/lib/filesystemview.php b/lib/filesystemview.php
index 39e47975b28..9d530c7ad63 100644
--- a/lib/filesystemview.php
+++ b/lib/filesystemview.php
@@ -137,13 +137,16 @@ class OC_FilesystemView {
}
public function readfile($path){
$handle=$this->fopen($path,'r');
- $chunkSize = 1024*1024;// 1 MB chunks
- while (!feof($handle)) {
- echo fread($handle, $chunkSize);
- @ob_flush();
- flush();
+ if ($handle) {
+ $chunkSize = 1024*1024;// 1 MB chunks
+ while (!feof($handle)) {
+ echo fread($handle, $chunkSize);
+ @ob_flush();
+ flush();
+ }
+ return $this->filesize($path);
}
- return $this->filesize($path);
+ return false;
}
public function is_readable($path){
return $this->basicOperation('is_readable',$path);
@@ -189,7 +192,7 @@ class OC_FilesystemView {
return $this->basicOperation('unlink',$path,array('delete'));
}
public function rename($path1,$path2){
- if(OC_FileProxy::runPreProxies('rename',$path1,$path2) and $this->is_writable($path1) and OC_Filesystem::isValidPath($path2)){
+ if(OC_FileProxy::runPreProxies('rename',$path1,$path2) and OC_Filesystem::isValidPath($path2)){
$run=true;
OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename, array( OC_Filesystem::signal_param_oldpath => $path1 , OC_Filesystem::signal_param_newpath=>$path2, OC_Filesystem::signal_param_run => &$run));
if($run){
diff --git a/lib/mimetypes.fixlist.php b/lib/mimetypes.fixlist.php
index 51f12dbcc29..a40fbd9e228 100644
--- a/lib/mimetypes.fixlist.php
+++ b/lib/mimetypes.fixlist.php
@@ -16,5 +16,6 @@ return array(
'xls'=>'application/msexcel',
'xlsx'=>'application/msexcel',
'ppt'=>'application/mspowerpoint',
- 'pptx'=>'application/mspowerpoint'
+ 'pptx'=>'application/mspowerpoint',
+ 'sgf' => 'application/sgf'
);
diff --git a/lib/updater.php b/lib/updater.php
index 57623797ae5..196822ac35d 100644
--- a/lib/updater.php
+++ b/lib/updater.php
@@ -36,6 +36,7 @@ class OC_Updater{
$version['installed']=OC_Config::getValue('installedat');
$version['updated']=OC_Appconfig::getValue('core', 'lastupdatedat', OC_Config::getValue( 'lastupdatedat'));
$version['updatechannel']='stable';
+ $version['edition']=OC_Util::getEditionString();
$versionstring=implode('x',$version);
//fetch xml data from updater
diff --git a/lib/util.php b/lib/util.php
index 529b6d958fb..722b7404d0c 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -77,6 +77,14 @@ class OC_Util {
return '3';
}
+ /**
+ * get the current installed edition of ownCloud. There is the community edition that just returns an empty string and the enterprise edition that returns "Enterprise".
+ * @return string
+ */
+ public static function getEditionString(){
+ return '';
+ }
+
/**
* add a javascript file
*