Merge pull request #1481 from owncloud/fixing-1354-master
basic WebDAV test in place now
This commit is contained in:
commit
279cbeb001
7 changed files with 77 additions and 1 deletions
|
@ -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')
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
34
lib/util.php
34
lib/util.php
|
@ -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.
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in a new issue