Merge pull request #1481 from owncloud/fixing-1354-master

basic WebDAV test in place now
This commit is contained in:
Thomas Müller 2013-02-09 05:13:33 -08:00
commit 279cbeb001
7 changed files with 77 additions and 1 deletions

View File

@ -6,6 +6,10 @@
* See the COPYING-README file.
*/
// Post installation check
$this->create('post_setup_check', '/post-setup-check')
->action('OC_Setup', 'postSetupCheck');
// Core ajax actions
// Search
$this->create('search_ajax_search', '/search/ajax/search.php')

View File

@ -43,7 +43,7 @@ if(isset($_POST['install']) AND $_POST['install']=='true') {
OC_Template::printGuestPage("", "installation", $options);
}
else {
header("Location: ".OC::$WEBROOT.'/');
header( 'Location: '.OC_Helper::linkToRoute( 'post_setup_check' ));
exit();
}
}

View File

@ -548,6 +548,7 @@ class OC {
require_once 'core/setup.php';
exit();
}
$request = OC_Request::getPathInfo();
if(substr($request, -3) !== '.js'){// we need these files during the upgrade
self::checkMaintenanceMode();

View File

@ -610,4 +610,24 @@ class OC_Setup {
file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content);
file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/index.html', '');
}
/**
* @brief Post installation checks
*/
public static function postSetupCheck($params) {
// setup was successful -> webdav testing now
if (OC_Util::isWebDAVWorking()) {
header("Location: ".OC::$WEBROOT.'/');
} 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();
}
}
}

View File

@ -516,6 +516,40 @@ 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() {
if (!function_exists('curl_init')) {
return;
}
$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.

View File

@ -31,6 +31,7 @@ $tmpl->assign('entriesremain', $entriesremain);
$tmpl->assign('htaccessworking', $htaccessworking);
$tmpl->assign('internetconnectionworking', OC_Util::isinternetconnectionworking());
$tmpl->assign('islocaleworking', OC_Util::issetlocaleworking());
$tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking());
$tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded());
$tmpl->assign('backgroundjobs_mode', OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax'));
$tmpl->assign('shareAPIEnabled', OC_Appconfig::getValue('core', 'shareapi_enabled', 'yes'));

View File

@ -22,6 +22,21 @@ if (!$_['htaccessworking']) {
<?php
}
// is WebDAV working ?
if (!$_['isWebDavWorking']) {
?>
<fieldset class="personalblock">
<legend><strong><?php echo $l->t('Setup Warning');?></strong></legend>
<span class="securitywarning">
<?php echo $l->t('Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.'); ?>
<?php echo $l->t('Please double check the <a href=\'%s\'>installation guides</a>.', 'http://doc.owncloud.org/server/5.0/admin_manual/installation.html'); ?>
</span>
</fieldset>
<?php
}
// if module fileinfo available?
if (!$_['has_fileinfo']) {
?>
@ -36,6 +51,7 @@ if (!$_['has_fileinfo']) {
<?php
}
// is locale working ?
if (!$_['islocaleworking']) {
?>
<fieldset class="personalblock">