diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php index 5b532a3822f..f757663b6d5 100644 --- a/htdocs/admin/dav.php +++ b/htdocs/admin/dav.php @@ -25,41 +25,27 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/dav/dav.lib.php'; +$langs->loadLangs(array("admin","other","agenda")); if (!$user->admin) accessforbidden(); -$langs->load("admin"); -$langs->load("other"); -$langs->load("agenda"); +// Parameters +$action = GETPOST('action', 'alpha'); +$backtopage = GETPOST('backtopage', 'alpha'); -$def = array(); -$actionsave=GETPOST('save','alpha'); +$arrayofparameters=array('DAV_ALLOW_PUBLIC_DIR'=>array('css'=>'minwidth200')); -// Sauvegardes parametres -if ($actionsave) -{ - $i=0; - $db->begin(); +/* + * Actions + */ - $i+=dolibarr_set_const($db,'XXX',trim(GETPOST('XXX','alpha')),'chaine',0,'',$conf->entity); - - if ($i >= 4) - { - $db->commit(); - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else - { - $db->rollback(); - setEventMessages($langs->trans("SaveFailed"), null, 'errors'); - } -} +include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; -/** +/* * View */ @@ -77,30 +63,51 @@ $head=dav_admin_prepare_head(); dol_fiche_head($head, 'webdav', '', -1, 'action'); -print $langs->trans("WebDAVSetupDesc")."
\n"; -print "
\n"; -/* -print ''; +if ($action == 'edit') +{ + print ''; + print ''; + print ''; -print ''; -print ""; -print ""; -//print ""; -print ""; -print ""; + print '
".$langs->trans("Parameter")."".$langs->trans("Value")."".$langs->trans("Examples")." 
'; + print ''; -print ''; -print '"; -print ''; -print ""; -print ""; + foreach($arrayofparameters as $key => $val) + { + print ''; + } + + print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("PasswordTogetVCalExport")."'; -if (! empty($conf->use_javascript_ajax)) - print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); -print ' 
'; + print $form->textwithpicto($langs->trans($key),$langs->trans($key.'Tooltip')); + print '
'; + + print '
'; + print ''; + print '
'; + + print ''; + print '
'; +} +else +{ + print ''; + print ''; + + foreach($arrayofparameters as $key => $val) + { + print ''; + } + + print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'; + print $form->textwithpicto($langs->trans($key),$langs->trans($key.'Tooltip')); + print '' . $conf->global->$key . '
'; + + print '
'; + print ''.$langs->trans("Modify").''; + print '
'; +} -print ''; -*/ dol_fiche_end(); @@ -113,7 +120,7 @@ print "\n"; clearstatcache(); -//if ($mesg) print "
$mesg
"; +print $langs->trans("WebDAVSetupDesc")."
\n"; print "
"; @@ -130,34 +137,6 @@ $message.=img_picto('','object_globe.png').' '.$langs->trans("WebDavServer",'Web $message.='
'; print $message; -/*$message =$langs->trans("AgendaUrlOptions1",$user->login,$user->login).'
'; -$message.=$langs->trans("AgendaUrlOptions3",$user->login,$user->login).'
'; -$message.=$langs->trans("AgendaUrlOptionsNotAdmin",$user->login,$user->login).'
'; -$message.=$langs->trans("AgendaUrlOptions4",$user->login,$user->login).'
'; -$message.=$langs->trans("AgendaUrlOptionsProject",$user->login,$user->login).'
'; -$message.=$langs->trans("AgendaUrlOptionsNotAutoEvent",'systemauto','systemauto').'
'; - -print info_admin($message); -*/ - -/* -if (! empty($conf->use_javascript_ajax)) -{ - print "\n".''; -} -*/ llxFooter(); $db->close(); diff --git a/htdocs/core/modules/modDav.class.php b/htdocs/core/modules/modDav.class.php index cede86796a0..77525a0b0d1 100644 --- a/htdocs/core/modules/modDav.class.php +++ b/htdocs/core/modules/modDav.class.php @@ -96,7 +96,7 @@ class modDav extends DolibarrModules // Data directories to create when module is enabled. // Example: this->dirs = array("/dav/temp","/dav/subdir"); - $this->dirs = array("/dav/temp","/dav/public"); + $this->dirs = array("/dav/temp","/dav/public","/dav/private"); // Config pages. Put here list of php page, stored into dav/admin directory, to use to setup module. $this->config_page_url = array("dav.php"); diff --git a/htdocs/dav/fileserver.php b/htdocs/dav/fileserver.php index a785fac0ab9..cd19fc294ec 100644 --- a/htdocs/dav/fileserver.php +++ b/htdocs/dav/fileserver.php @@ -52,7 +52,9 @@ if(empty($conf->dav->enabled)) // settings $publicDir = $conf->dav->dir_output.'/public'; -$tmpDir = $conf->dav->dir_output.'/tmp'; +$privateDir = $conf->dav->dir_output.'/private'; +$tmpDir = $conf->dav->dir_temp; +//var_dump($tmpDir);exit; // Authentication callback function $authBackend = new \Sabre\DAV\Auth\Backend\BasicCallBack(function ($username, $password) @@ -96,7 +98,8 @@ $nodes = array(); // Enable directories and features according to DAV setup // / Public docs -$nodes[] = new \Sabre\DAV\FS\Directory($dolibarr_main_data_root. '/dav/public'); +if (!empty($conf->global->DAV_ALLOW_PUBLIC_DIR)) $nodes[] = new \Sabre\DAV\FS\Directory($dolibarr_main_data_root. '/dav/public'); +$nodes[] = new \Sabre\DAV\FS\Directory($dolibarr_main_data_root. '/dav/private'); // Principals Backend //$principalBackend = new \Sabre\DAVACL\PrincipalBackend\Dolibarr($user,$db); @@ -120,8 +123,14 @@ $baseUri = DOL_URL_ROOT.'/dav/fileserver.php/'; if (isset($baseUri)) $server->setBaseUri($baseUri); // Add authentication function -$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend)); - +if ((empty($conf->global->DAV_ALLOW_PUBLIC_DIR) + || ! preg_match('/'.preg_quote(DOL_URL_ROOT.'/dav/fileserver.php/public','/').'/', $_SERVER["PHP_SELF"])) + && ! preg_match('/^sabreAction=asset&assetName=[a-zA-Z0-9%\-\/]+\.(png|css|woff|ico|ttf)$/', $_SERVER["QUERY_STRING"]) // URL for Sabre browser resources + ) +{ + //var_dump($_SERVER["QUERY_STRING"]);exit; + $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend)); +} // Support for LOCK and UNLOCK $lockBackend = new \Sabre\DAV\Locks\Backend\File($tmpDir . '/.locksdb'); $lockPlugin = new \Sabre\DAV\Locks\Plugin($lockBackend); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1927008bad1..f8bae299f17 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1206,6 +1206,9 @@ MustBeUnique=Must be unique? MustBeMandatory=Mandatory to create third parties? MustBeInvoiceMandatory=Mandatory to validate invoices? TechnicalServicesProvided=Technical services provided +#####DAV ##### +WebDAVSetupDesc=This is the links to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory accessis allowed) and a "private" directory that need an existing login account/password to access to. +WebDavServer=Root URL of %s server : %s ##### Webcal setup ##### WebCalUrlForVCalExport=An export link to %s format is available at following link: %s ##### Invoices ##### @@ -1784,7 +1787,6 @@ MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF SetToYesIfGroupIsComputationOfOtherGroups=Set this to yes if this group is a computation of other groups EnterCalculationRuleIfPreviousFieldIsYes=Enter calculcation rule if previous field was set to Yes (For example 'CODEGRP1+CODEGRP2') SeveralLangugeVariatFound=Several language variants found -WebDavServer=URL of %s server : %s COMPANY_AQUARIUM_REMOVE_SPECIAL=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) ##### Resource ####