feature 414 (yes, a 6 years old request): ability to define the list of

permitted characters in file/directory names for synchronization.


git-svn-id: http://piwigo.org/svn/trunk@13527 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
plegall 2012-03-10 21:34:48 +00:00
parent b1c58f59ca
commit e0f6d5d6a7
3 changed files with 10 additions and 3 deletions

View file

@ -208,7 +208,7 @@ SELECT id_uppercat, MAX(rank)+1 AS next_rank
foreach (array_diff($fs_fulldirs, array_keys($db_fulldirs)) as $fulldir) foreach (array_diff($fs_fulldirs, array_keys($db_fulldirs)) as $fulldir)
{ {
$dir = basename($fulldir); $dir = basename($fulldir);
if (preg_match('/^[a-zA-Z0-9-_.]+$/', $dir)) if (preg_match($conf['sync_chars_regex'], $dir))
{ {
$insert = array( $insert = array(
'id' => $next_id++, 'id' => $next_id++,
@ -374,7 +374,7 @@ SELECT id, path
continue; continue;
} }
$filename = basename($path); $filename = basename($path);
if (!preg_match('/^[a-zA-Z0-9-_.]+$/', $filename)) if (!preg_match($conf['sync_chars_regex'], $filename))
{ {
array_push( array_push(
$errors, $errors,

6
i.php
View file

@ -194,8 +194,12 @@ function parse_request()
} }
$req = ltrim($req, '/'); $req = ltrim($req, '/');
!preg_match('#[^a-zA-Z0-9/_.-]#', $req) or ierror('Invalid chars in request', 400);
foreach (preg_split('#/+#', $req) as $token)
{
preg_match($conf['sync_chars_regex'], $token) or ierror('Invalid chars in request', 400);
}
$page['derivative_path'] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$req; $page['derivative_path'] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$req;
$pos = strrpos($req, '.'); $pos = strrpos($req, '.');

View file

@ -746,6 +746,9 @@ $conf['ploader_download_linux'] = 'http://piwigo.org/ext/download.php?eid=269';
// enable the synchronization method for adding photos // enable the synchronization method for adding photos
$conf['enable_synchronization'] = true; $conf['enable_synchronization'] = true;
// permitted characters for files/directoris during synchronization
$conf['sync_chars_regex'] = '/^[a-zA-Z0-9-_.]+$/';
// PEM url // PEM url
$conf['alternative_pem_url'] = ''; $conf['alternative_pem_url'] = '';