From 6b34ba8a8ef94c36c73dc68eb6cfe9b12335f7a4 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 29 May 2011 17:43:13 +0200 Subject: [PATCH] Make max upload filesize configurable for apache hosts --- files/admin.php | 11 +++++++++++ files/settings.php | 2 +- files/templates/admin.php | 6 +++++- lib/files.php | 18 ++++++++++++++++++ lib/setup.php | 5 ++++- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/files/admin.php b/files/admin.php index 0333e2c6cb1..59b822468ed 100644 --- a/files/admin.php +++ b/files/admin.php @@ -26,15 +26,26 @@ require_once('../lib/base.php'); require( 'template.php' ); + // Check if we are a user if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){ header( "Location: ".OC_HELPER::linkTo( "index.php" )); exit(); } +$htaccessWorking=(getenv('htaccessWorking')=='true'); +if(isset($_POST['maxUploadSize'])){ + $maxUploadFilesize=$_POST['maxUploadSize']; + OC_FILES::setUploadLimit(OC_HELPER::computerFileSize($maxUploadFilesize)); +}else{ + $maxUploadFilesize = ini_get('upload_max_filesize').'B'; +} + OC_APP::setActiveNavigationEntry( "files_administration" ); // return template $tmpl = new OC_TEMPLATE( "files", "admin", "admin" ); +$tmpl->assign( 'htaccessWorking', $htaccessWorking ); +$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize); $tmpl->printPage(); ?> diff --git a/files/settings.php b/files/settings.php index 6d237ed6152..23aed4d1b86 100644 --- a/files/settings.php +++ b/files/settings.php @@ -57,7 +57,7 @@ foreach( explode( "/", $dir ) as $i ){ // return template $tmpl = new OC_TEMPLATE( "files", "index", "user" ); -$tmpl->assign( "files", $files ); +$tmpl->assign( 'files', $files ); $tmpl->assign( "breadcrumb", $breadcrumb ); $tmpl->printPage(); diff --git a/files/templates/admin.php b/files/templates/admin.php index 65a540ac914..f768931eb2f 100644 --- a/files/templates/admin.php +++ b/files/templates/admin.php @@ -1,4 +1,7 @@ -
+ + + Maximum upload size '/>
+ Allow public folders
(if public is enabled)
@@ -9,4 +12,5 @@ Allow downloading shared files
Allow uploading in shared directory
+
diff --git a/lib/files.php b/lib/files.php index 2a56c5b4b37..9e66f9dab82 100644 --- a/lib/files.php +++ b/lib/files.php @@ -291,6 +291,24 @@ class OC_FILES { return false; } } + + /** + * set the maximum upload size limit for apache hosts using .htaccess + * @param int size filesisze in bytes + */ + static function setUploadLimit($size){ + global $SERVERROOT; + global $WEBROOT; + $size=OC_HELPER::humanFileSize($size); + echo $size; + $size=substr($size,0,-1);//strip the B + $size=str_replace(' ','',$size); //remove the space between the size and the postfix + $content = "ErrorDocument 404 /$WEBROOT/templates/404.php\n";//custom 404 error page + $content.= "php_value upload_max_filesize $size\n";//upload limit + $content.= "php_value post_max_size $size\n"; + $content.= "SetEnv htaccessWorking true\n"; + @file_put_contents($SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it + } } function zipAddDir($dir,$zip,$internalDir=''){ diff --git a/lib/setup.php b/lib/setup.php index fa0b8f85905..72507f221b9 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -167,7 +167,10 @@ class OC_SETUP { private static function createHtaccess() { global $SERVERROOT; global $WEBROOT; - $content = "ErrorDocument 404 /$WEBROOT/templates/404.php\n"; + $content = "ErrorDocument 404 /$WEBROOT/templates/404.php\n";//custom 404 error page + $content.= "php_value upload_max_filesize 20M\n";//upload limit + $content.= "php_value post_max_size 20M\n"; + $content.= "SetEnv htaccessWorking true\n"; @file_put_contents($SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it $content = "deny from all";