basic WebDAV test in place now
This commit is contained in:
parent
5221ee0c5a
commit
1adcc5fd23
2 changed files with 53 additions and 0 deletions
23
lib/base.php
23
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();
|
||||
|
|
30
lib/util.php
30
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.
|
||||
|
|
Loading…
Reference in a new issue