Files
gallery3/modules/digibug/controllers/digibug.php
Chad Parry 97c3ded2ba Better validation for uploaded files, especially where third-party modules might make a mistake.
Squashed commit of the following:

commit f2336a5aaa
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 18 21:56:10 2011 -0600

    Behave reasonably if the image cannot be resized.

commit e06b20738d
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 18 21:10:08 2011 -0600

    Adding an image representing a broken thumbnail.
    This image was derived from the equivalent Gallery2 icon. It uses the same washed-out gray color scheme as the Gallery3 missing_movie icon.

commit 4e3964527b
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 18 20:30:28 2011 -0600

    Initialize legal file arrays correctly.

commit e9862d8fbc
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 18 20:20:19 2011 -0600

    Correction for the merge conflict markers I accidentally committed.

commit 5e62d327a8
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 18 20:17:36 2011 -0600

    Expand the legal_file events to include separate photo and movie events, and to support MIME types.

commit f0bfd1fef0
Merge: 72f3fc4 db73413
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 18 19:49:25 2011 -0600

    Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto

    Conflicts:
    	modules/gallery/helpers/system.php
    	modules/gallery/tests/System_Helper_Test.php

commit db734130c5
Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com>
Date:   Mon May 16 21:38:07 2011 -0700

    Automated update of .build_number to 153 for branch master
    Last update: 9aeb824aa1 (1 commits ago)

commit 8549ba30ca
Author: Chad Kieffer <ckieffer@gmail.com>
Date:   Mon May 16 22:37:09 2011 -0600

    Stop IE 9 album grid craziness. Thanks floridave. Fixes #1430.

commit 9aeb824aa1
Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com>
Date:   Sun May 8 11:43:38 2011 -0700

    Automated update of .build_number to 152 for branch master
    Last update: 7c80e6ef84 (1 commits ago)

commit 57f7e42a12
Author: Bharat Mediratta <bharat@menalto.com>
Date:   Sun May 8 11:42:40 2011 -0700

    Add the item id to the print_proxy line so that we have a little more info
    about what the original was, and extend the timeout to 90 days from 10.
    Fixes #1733.

commit 7c80e6ef84
Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com>
Date:   Fri May 6 11:48:43 2011 -0700

    Automated update of .build_number to 151 for branch master
    Last update: 5d09cbff04 (1 commits ago)

commit 80dda6f64f
Merge: 5d09cbf 46da011
Author: Bharat Mediratta <bharat@menalto.com>
Date:   Fri May 6 11:48:13 2011 -0700

    Merge pull request #52 from chadparry/tempnam

    Fixes #1732

commit 5d09cbff04
Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com>
Date:   Thu May 5 21:53:39 2011 -0700

    Automated update of .build_number to 150 for branch master
    Last update: 011eaa6480 (1 commits ago)

commit d5a31ceede
Author: Tim Almdal <tnalmdal@shaw.ca>
Date:   Thu May 5 21:53:10 2011 -0700

    Fix for ticket 1275. Do the same checking as Kohana uses and don't worry about calling the utf8_encode routine.
    Corrected the error messages and also added a check to insure the XML Parser extension is loaded as we still need the utf8_encode function from it.

commit 011eaa6480
Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com>
Date:   Thu May 5 14:53:06 2011 -0700

    Automated update of .build_number to 149 for branch master
    Last update: 05ecfda36b (1 commits ago)

commit 5bae21864f
Author: Bharat Mediratta <bharat@menalto.com>
Date:   Thu May 5 14:52:47 2011 -0700

    Follow-on to 6f916e49d5 -- don't make
    database calls if Gallery isn't installed, else we fail to bounce the
    user to the installer on fresh packages.  #1637.

commit 46da011bf6
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 4 17:51:00 2011 -0600

    Remove a newline I accidentally introduced.

commit 5c6c71ffcd
Merge: d2331bf 05ecfda
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 4 17:49:42 2011 -0600

    Merge branch 'master' into tempnam

commit d2331bf434
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 4 17:48:25 2011 -0600

    Simplified the temp_filename implementation and removed the mocks.

commit 72f3fc46f6
Author: Chad Parry <github@chad.parry.org>
Date:   Wed May 4 17:22:15 2011 -0600

    Avoid "self::" because Kohana can't override it.

commit 05ecfda36b
Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com>
Date:   Mon May 2 21:38:50 2011 -0700

    Automated update of .build_number to 148 for branch master
    Last update: 97400b7815 (2 commits ago)

commit 229bfc5c7c
Author: Bharat Mediratta <bharat@menalto.com>
Date:   Mon May 2 21:37:04 2011 -0700

    Track and redirect core.DownloadItem requests properly.  This can
    happen if the G2 was imported with rewrite on, so the g2_url in the
    g2_map table has a shortened url, but then rewrite is disabled and the
    .htaccess mod_rewrite rules are sending over a &g2_view=core.DownloadItem
    request.  Fixes #1728.

commit 68370b92f5
Author: Bharat Mediratta <bharat@menalto.com>
Date:   Mon May 2 21:36:17 2011 -0700

    Map the G2 album highlight thumbnail derivative id to the G3 album's
    thumbnail.  Fixes #1729.

commit 13dbd3515b
Merge: f0f094c 97400b7
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 20:33:02 2011 -0600

    Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto

commit f0f094c3f7
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 20:22:49 2011 -0600

    Explain the conditional rename in item::save() with a comment.

commit 1b3a6b85c1
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 18:29:34 2011 -0600

    Improve the comment explaining why the data_file extension is important.

commit c3e8c1e3b5
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 18:12:56 2011 -0600

    The data_file field is public, so we don't need to supply an accessor method.

commit 0e844766ba
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 16:40:55 2011 -0600

    Change the signature of system::tempnam to something more appropriate for Gallery.

commit 5c9a3b3f39
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 23 21:19:47 2011 -0600

    Create a tempnam substitute that safely creates files with a given extension.

commit 2375a02e2c
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 16:40:55 2011 -0600

    Change the signature of system::tempnam to something more appropriate for Gallery.

commit a8ca9dcf9e
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 16:10:06 2011 -0600

    Change the name of the extensions helper to legal_file.

commit 7e61a01a96
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 30 16:08:49 2011 -0600

    Change the name of the extensions helper to legal_file.

commit 4c2b2ebd3f
Author: Chad Parry <github@chad.parry.org>
Date:   Wed Apr 27 20:52:35 2011 -0600

    Remove a newline at the end of the file that I accidentally introduced.

commit 6d564f185e
Merge: 7ff485f 4060640
Author: Chad Parry <github@chad.parry.org>
Date:   Wed Apr 27 20:35:58 2011 -0600

    Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto

commit 7ff485fa48
Author: Chad Parry <github@chad.parry.org>
Date:   Wed Apr 27 20:29:06 2011 -0600

    Move the extensions helpers out of the Kohana system directory and into their own Gallery Extensions class.

commit 26585fed03
Merge: 809567f c8f90e8
Author: Chad Parry <github@chad.parry.org>
Date:   Sun Apr 24 08:28:39 2011 -0600

    Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto

commit 809567f128
Author: Chad Parry <github@chad.parry.org>
Date:   Sun Apr 24 08:10:04 2011 -0600

    Expose the data file field.

commit fcb06bf175
Author: Chad Parry <github@chad.parry.org>
Date:   Sun Apr 24 00:45:12 2011 -0600

    Don't assign to the item->name field if the name is unchanged, because the save method will crash.

commit c6ef706d70
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 23 22:55:59 2011 -0600

    Preserve old data files long enough for them to be available to event handlers.

commit 0d6a3a3cfc
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 23 21:19:47 2011 -0600

    Create a tempnam substitute that safely creates files with a given extension.

commit e149cf7238
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 23 16:39:25 2011 -0600

    Support data files that change their extension and MIME type.

commit 6702104f57
Author: Chad Parry <github@chad.parry.org>
Date:   Sat Apr 23 16:35:00 2011 -0600

    Resolve an infinite recursion that happens when the path caches are updated during saving.

commit 944cb72eea
Merge: 567522b 5af74d4
Author: Chad Parry <github@chad.parry.org>
Date:   Fri Apr 22 14:10:42 2011 -0600

    Merge remote branch 'origin/master' into rawphoto

commit 567522bfa0
Author: Chad Parry <github@chad.parry.org>
Date:   Thu Apr 21 20:12:32 2011 -0600

    Add an event for when a new graphics toolkit is chosen.

commit 31ba081b79
Author: Chad Parry <github@chad.parry.org>
Date:   Thu Apr 21 02:06:53 2011 -0600

    Add an event that will collect all valid filename extensions.
2011-05-18 22:01:51 -06:00

121 lines
4.0 KiB
PHP

<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 Bharat Mediratta
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Digibug_Controller extends Controller {
const ALLOW_PRIVATE_GALLERY = true;
public function print_photo($id) {
access::verify_csrf();
$item = ORM::factory("item", $id);
access::required("view", $item);
if (access::group_can(identity::everybody(), "view_full", $item)) {
$full_url = $item->file_url(true);
$thumb_url = $item->thumb_url(true);
} else {
$proxy = ORM::factory("digibug_proxy");
$proxy->uuid = random::hash();
$proxy->item_id = $item->id;
$proxy->save();
$full_url = url::abs_site("digibug/print_proxy/full/$proxy->uuid/$item->id");
$thumb_url = url::abs_site("digibug/print_proxy/thumb/$proxy->uuid/$item->id");
}
$v = new View("digibug_form.html");
$v->order_params = array(
"digibug_api_version" => "100",
"company_id" => module::get_var("digibug", "company_id"),
"event_id" => module::get_var("digibug", "event_id"),
"cmd" => "addimg",
"partner_code" => "69",
"return_url" => url::abs_site("digibug/close_window"),
"num_images" => "1",
"image_1" => $full_url,
"thumb_1" => $thumb_url,
"image_height_1" => $item->height,
"image_width_1" => $item->width,
"thumb_height_1" => $item->thumb_height,
"thumb_width_1" => $item->thumb_width,
"title_1" => html::purify($item->title));
print $v;
}
public function print_proxy($type, $uuid) {
// If its a request for the full size then make sure we are coming from an
// authorized address
if ($type == "full") {
$remote_addr = ip2long(Input::instance()->server("REMOTE_ADDR"));
if ($remote_addr === false) {
throw new Kohana_404_Exception();
}
$config = Kohana::config("digibug");
$authorized = false;
foreach ($config["ranges"] as $ip_range) {
$low = ip2long($ip_range["low"]);
$high = ip2long($ip_range["high"]);
$authorized = $low !== false && $high !== false &&
$low <= $remote_addr && $remote_addr <= $high;
if ($authorized) {
break;
}
}
if (!$authorized) {
throw new Kohana_404_Exception();
}
}
$proxy = ORM::factory("digibug_proxy")->where("uuid", "=", $uuid)->find();
if (!$proxy->loaded() || !$proxy->item->loaded()) {
throw new Kohana_404_Exception();
}
$file = $type == "full" ? $proxy->item->file_path() : $proxy->item->thumb_path();
if (!file_exists($file)) {
throw new Kohana_404_Exception();
}
// We don't need to save the session for this request
Session::instance()->abort_save();
if (!TEST_MODE) {
// Dump out the image
header("Content-Type: {$proxy->item->mime_type}");
Kohana::close_buffers(false);
$fd = fopen($file, "rb");
fpassthru($fd);
fclose($fd);
}
$this->_clean_expired();
}
public function close_window() {
print "<script type=\"text/javascript\">window.close();</script>";
}
private function _clean_expired() {
db::build()
->delete("digibug_proxies")
->where("request_date", "<=", db::expr("(CURDATE() - INTERVAL 90 DAY)"))
->limit(20)
->execute();
}
}