diff options
author | Thomas Mueller <thomas.mueller@tmit.eu> | 2013-02-05 23:33:44 +0100 |
---|---|---|
committer | Thomas Mueller <thomas.mueller@tmit.eu> | 2013-02-05 23:33:44 +0100 |
commit | 1adcc5fd23004cd7253c87134c30d853e1b3b8b8 (patch) | |
tree | bbe413e10172b95eb71cb402ca65b8fc99c793d6 | |
parent | 5221ee0c5aaca5588e20683f397fec9d1d6e98c7 (diff) | |
download | nextcloud-server-1adcc5fd23004cd7253c87134c30d853e1b3b8b8.tar.gz nextcloud-server-1adcc5fd23004cd7253c87134c30d853e1b3b8b8.zip |
basic WebDAV test in place now
-rw-r--r-- | lib/base.php | 23 | ||||
-rwxr-xr-x | lib/util.php | 30 |
2 files changed, 53 insertions, 0 deletions
diff --git a/lib/base.php b/lib/base.php index 90e64f13af6..6dab980dd0e 100644 --- a/lib/base.php +++ b/lib/base.php @@ -546,6 +546,29 @@ class OC { require_once 'core/setup.php'; exit(); } + + // post installation checks + if (!OC_Config::getValue("post-installation-checked", false)) { + // setup was successful -> webdav testing now + $request = OC_Request::getPathInfo(); + if(substr($request, -4) !== '.css' and substr($request, -3) !== '.js' and substr($request, -5) !== '.json') { + if (OC_Util::isWebDAVWorking()) { + OC_Config::setValue("post-installation-checked", true); + } else { + $l=OC_L10N::get('lib'); + + $error = $l->t('Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.'); + $hint = $l->t('Please double check the <a href=\'%s\'>installation guides</a>.', 'http://doc.owncloud.org/server/5.0/admin_manual/installation.html'); + + $tmpl = new OC_Template('', 'error', 'guest'); + $tmpl->assign('errors', array(1 => array('error' => $error, 'hint' => $hint)), false); + $tmpl->printPage(); + exit(); + } + } + } + + $request = OC_Request::getPathInfo(); if(substr($request, -3) !== '.js'){// we need these files during the upgrade self::checkMaintenanceMode(); diff --git a/lib/util.php b/lib/util.php index 4932be2d6cc..ae0900d7e84 100755 --- a/lib/util.php +++ b/lib/util.php @@ -514,6 +514,36 @@ class OC_Util { } } + /** + * we test if webDAV is working properly + * + * The basic assumption is that if the server returns 401/Not Authenticated for an unauthenticated PROPFIND + * the web server it self is setup properly. + * + * Why not an authenticated PROFIND and other verbs? + * - We don't have the password available + * - We have no idea about other auth methods implemented (e.g. OAuth with Bearer header) + * + */ + public static function isWebDAVWorking() { + $settings = array( + 'baseUri' => OC_Helper::linkToRemote('webdav'), + ); + + $client = new \Sabre_DAV_Client($settings); + + $return = true; + try { + // test PROPFIND + $client->propfind('', array('{DAV:}resourcetype')); + } catch(\Sabre_DAV_Exception_NotAuthenticated $e) { + $return = true; + } catch(\Exception $e) { + $return = false; + } + + return $return; + } /** * Check if the setlocal call doesn't work. This can happen if the right local packages are not available on the server. |