]> source.dussan.org Git - nextcloud-server.git/commitdiff
show server configuration errors on seperate page
authorRobin Appelman <icewind1991@gmail.com>
Sat, 16 Apr 2011 13:47:27 +0000 (15:47 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Sat, 16 Apr 2011 13:49:55 +0000 (15:49 +0200)
index.php
lib/base.php
templates/error.php [new file with mode: 0644]

index 8f5c99fcd85923a8dfb5678e74f46bcde60d4e82..105a04ad76e9e6d7de6f64ebf38f42ebf1b7b264 100644 (file)
--- a/index.php
+++ b/index.php
 require_once( 'lib/base.php' );
 require_once( 'appconfig.php' );
 require_once( 'template.php' );
-if( OC_USER::isLoggedIn()){
+
+// check if the server is correctly configured for ownCloud
+$errors=OC_UTIL::checkServer();
+if(count($errors)>0){
+       OC_TEMPLATE::printGuestPage( "", "error", array( "errors" => $errors ));
+}elseif( OC_USER::isLoggedIn()){
        if( $_GET["logout"] ){
                OC_USER::logout();
                header( "Location: $WEBROOT");
@@ -34,8 +39,7 @@ if( OC_USER::isLoggedIn()){
                header( "Location: ".OC_APPCONFIG::getValue( "core", "defaultpage", "files/index.php" ));
                exit();
        }
-}
-else{
+}else{
        if( OC_USER::login( $_POST["user"], $_POST["password"] )){
                header( "Location: ".OC_APPCONFIG::getValue( "core", "defaultpage", "files/index.php" ));
                exit();
index 6b3ca59e6be5cba4cb2f8d137ea1a0e1d02d4664..31d4142900f0cb464f1161d0e93e93e71cd69d79 100644 (file)
@@ -89,13 +89,17 @@ require_once('connect.php');
 require_once('remotestorage.php');
 require_once('plugin.php');
 
-OC_PLUGIN::loadPlugins( "" );
+$error=(count(OC_UTIL::checkServer())>0);
+
+if(!$error){
+       OC_PLUGIN::loadPlugins( "" );
+}
 
 OC_USER::setBackend( OC_CONFIG::getValue( "userbackend", "database" ));
 OC_GROUP::setBackend( OC_CONFIG::getValue( "groupbackend", "database" ));
 
 // Set up file system unless forbidden
-if( !$RUNTIME_NOSETUPFS ){
+if(!$error and !$RUNTIME_NOSETUPFS ){
        OC_UTIL::setupFS();
 }
 
@@ -108,12 +112,10 @@ OC_UTIL::addStyle( "jquery-ui-1.8.10.custom" );
 OC_UTIL::addStyle( "styles" );
 
 // Load Apps
-if( !$RUNTIME_NOAPPS ){
+if(!$error and !$RUNTIME_NOAPPS ){
        OC_APP::loadApps();
 }
 
-// check if the server is correctly configured for ownCloud
-OC_UTIL::checkserver();
 /**
  * Class for utility functions
  *
@@ -221,7 +223,7 @@ class OC_UTIL {
 
        /**
         * check if the current server configuration is suitable for ownCloud
-        *
+        * @return array with error messages
         */
        public static function checkServer(){
                global $SERVERROOT;
@@ -230,12 +232,16 @@ class OC_UTIL {
                $CONFIG_DATADIRECTORY_ROOT = OC_CONFIG::getValue( "datadirectory", "$SERVERROOT/data" );;
                $CONFIG_BACKUPDIRECTORY = OC_CONFIG::getValue( "backupdirectory", "$SERVERROOT/backup" );
                $CONFIG_INSTALLED = OC_CONFIG::getValue( "installed", false );
-               $error='';
+               $errors=array();
+               
+               //check for database drivers
                if(!is_callable('sqlite_open') and !is_callable('mysql_connect')){
-                       $error.='No database drivers (sqlite or mysql) installed.<br/>';
+                       $errors[]='No database drivers (sqlite or mysql) installed.<br/>';
                }
                $CONFIG_DBTYPE = OC_CONFIG::getValue( "dbtype", "sqlite" );
                $CONFIG_DBNAME = OC_CONFIG::getValue( "dbname", "owncloud" );
+               
+               //check for correct file permissions
                if(!stristr(PHP_OS, 'WIN')){
                        if($CONFIG_DBTYPE=='sqlite'){
                                $file=$SERVERROOT.'/'.$CONFIG_DBNAME;
@@ -246,7 +252,7 @@ class OC_UTIL {
                                                clearstatcache();
                                                $prems=substr(decoct(fileperms($file)),-3);
                                                if(substr($prems,2,1)!='0'){
-                                                       $error.='SQLite database file ('.$file.') is readable from the web<br/>';
+                                                       $errors[]='SQLite database file ('.$file.') is readable from the web<br/>';
                                                }
                                        }
                                }
@@ -257,7 +263,7 @@ class OC_UTIL {
                                clearstatcache();
                                $prems=substr(decoct(fileperms($CONFIG_DATADIRECTORY_ROOT)),-3);
                                if(substr($prems,2,1)!='0'){
-                                       $error.='Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable from the web<br/>';
+                                       $errors[]='Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable from the web<br/>';
                                }
                        }
                        if( OC_CONFIG::getValue( "enablebackup", false )){
@@ -267,16 +273,20 @@ class OC_UTIL {
                                        clearstatcache();
                                        $prems=substr(decoct(fileperms($CONFIG_BACKUPDIRECTORY)),-3);
                                        if(substr($prems,2,1)!='0'){
-                                               $error.='Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable from the web<br/>';
+                                               $errors[]='Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable from the web<br/>';
                                        }
                                }
                        }
                }else{
                        //TODO: premisions checks for windows hosts
                }
-               if($error){
-                       die($error);
+               if(!is_writable($CONFIG_DATADIRECTORY_ROOT)){
+                       $errors[]='Data directory ('.$CONFIG_BACKUPDIRECTORY.') not writable by ownCloud<br/>';
                }
+               
+               //TODO: check for php modules
+               
+               return $errors;
        }
 }
 
diff --git a/templates/error.php b/templates/error.php
new file mode 100644 (file)
index 0000000..e8f56d6
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+/*
+ * Template for error page
+ */
+?>
+<div id="login">
+       <img src="<?php echo image_path("", "owncloud-logo-medium-white.png"); ?>" alt="ownCloud" />
+       <br/><br/><br/><br/>
+       <ul>
+               <?php foreach($_["errors"] as $error):?>
+                       <li><?php echo $error ?></li>
+               <?php endforeach ?>
+       </ul>
+</div>
+