Skip to content

Commit

Permalink
feature 2831: simple way to protect urls of originals
Browse files Browse the repository at this point in the history
git-svn-id: http://piwigo.org/svn/trunk@20516 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
rvelices committed Feb 2, 2013
1 parent 21c97f3 commit 5b22fce
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 4 deletions.
5 changes: 5 additions & 0 deletions include/common.inc.php
Expand Up @@ -266,5 +266,10 @@ function sanitize_mysql_kv(&$v, $k)
add_event_handler('render_comment_author', 'strip_tags');
add_event_handler('render_tag_url', 'str2url');
add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1);
if ( !empty($conf['original_url_protection']) )
{
add_event_handler('get_element_url', 'get_element_url_protection_handler', EVENT_HANDLER_PRIORITY_NEUTRAL, 2 );
add_event_handler('get_src_image_url', 'get_src_image_url_protection_handler', EVENT_HANDLER_PRIORITY_NEUTRAL, 2 );
}
trigger_action('init');
?>
4 changes: 4 additions & 0 deletions include/config_default.inc.php
Expand Up @@ -777,4 +777,8 @@

//Maximum Ajax requests at once, for thumbnails on-the-fly generation
$conf['max_requests']=3;

// one of '', 'images', 'all'
//TODO: Put this in admin and also manage .htaccess in #sites and upload folders
$conf['original_url_protection'] = '';
?>
8 changes: 4 additions & 4 deletions include/derivative.inc.php
Expand Up @@ -19,7 +19,7 @@
// | USA. |
// +-----------------------------------------------------------------------+

/*A source image is used to get a derivative image. A source image is either the original file for a jpg or a
/*A source image is used to get a derivative image. A source image is either the original file for a jpg or a
'representative' image of a non image file or a standard icon for the non-image file.*/
final class SrcImage
{
Expand Down Expand Up @@ -78,7 +78,7 @@ function __construct($infos)
$width = $infos['height'];
$height = $infos['width'];
}

$this->size = array($width, $height);
}
elseif (!array_key_exists('width', $infos))
Expand Down Expand Up @@ -106,7 +106,7 @@ function get_path()
function get_url()
{
$url = get_root_url().$this->rel_path;
if ($this->flags & self::IS_ORIGINAL)
if ( !($this->flags & self::IS_MIMETYPE) )
{
$url = trigger_event('get_src_image_url', $url, $this);
}
Expand Down Expand Up @@ -170,7 +170,7 @@ static function thumb_url($infos)
return self::url(IMG_THUMB, $infos);
}

/**
/**
@return derivative image url
@param type string of standard derivative param type (e.g. IMG_???) or a DerivativeParams object
@param infos assoc array of data from images table or a SrcImage object
Expand Down
21 changes: 21 additions & 0 deletions include/functions_html.inc.php
Expand Up @@ -593,4 +593,25 @@ function get_thumbnail_title($info, $title, $comment)
return $title;
}

/** optional event handler to protect src image urls */
function get_src_image_url_protection_handler($url, $src_image)
{
return get_action_url($src_image->id, $src_image->is_original() ? 'e' : 'r', false);
}

/** optional event handler to protect element urls */
function get_element_url_protection_handler($url, $infos)
{
global $conf;
if ('images'==$conf['original_url_protection'])
{// protect only images and not other file types (for example large movies that we don't want to send through our file proxy)
$ext = get_extension($infos['path']);
if (!in_array($ext, $conf['picture_ext']))
{
return $url;
}
}
return get_action_url($infos['id'], 'e', false);
}

?>

0 comments on commit 5b22fce

Please sign in to comment.