use warnings;
use Sesse::pr0n::Common qw(error dberror);
-use Digest::SHA1;
+use Digest::SHA;
use MIME::Base64;
use Apache2::Request;
use Apache2::Upload;
} else {
# check if we have a "shadow file" for this
if (defined($autorename) && $autorename eq "autorename/") {
- my $ref = $dbh->selectrow_hashref('SELECT id FROM shadow_files WHERE host=? AND event=? AND filename=? AND expires_at > now()',
+ my $ref = $dbh->selectrow_hashref('SELECT id FROM shadow_files WHERE vhost=? AND event=? AND filename=? AND expires_at > now()',
undef, $r->get_server_name, $event, $filename);
if (defined($ref)) {
($fname, $size, $mtime) = Sesse::pr0n::Common::stat_image_from_id($r, $ref->{'id'});
}
# Autorename if we need to
- if (defined($autorename) && $autorename eq "autorename/") {
- my $ref = $dbh->selectrow_hashref("SELECT COUNT(*) AS numfiles FROM images WHERE vhost=? AND event=? AND filename=?",
- undef, $r->get_server_name, $event, $filename)
- or dberror($r, "Couldn't check for existing files");
- if ($ref->{'numfiles'} > 0) {
+ $ref = $dbh->selectrow_hashref("SELECT COUNT(*) AS numfiles FROM images WHERE vhost=? AND event=? AND filename=?",
+ undef, $r->get_server_name, $event, $filename)
+ or dberror($r, "Couldn't check for existing files");
+ if ($ref->{'numfiles'} > 0) {
+ if (defined($autorename) && $autorename eq "autorename/") {
$r->log->info("Renaming $filename to $newid.jpeg");
$filename = "$newid.jpeg";
+ } else {
+ $r->status(403);
+ $r->content_type('text/plain; charset=utf-8');
+ $r->print("File $filename already exists in event $event, cannot overwrite");
+ return Apache2::Const::OK;
}
}
Sesse::pr0n::Common::purge_cache($r, "/$event/");
# Now save the file to disk
+ Sesse::pr0n::Common::ensure_disk_location_exists($r, $newid);
$fname = Sesse::pr0n::Common::get_disk_location($r, $newid);
open NEWFILE, ">$fname"
or die "$fname: $!";
my ($event, $autorename, $filename) = ($1, $2, $3);
$autorename = '' if (!defined($autorename));
- my $sha1 = Digest::SHA1::sha1_base64("/$event/$autorename$filename");
+ my $sha1 = Digest::SHA::sha1_base64("/$event/$autorename$filename");
$r->status(200);
$r->content_type('text/xml; charset=utf-8');