} 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'});
if (!defined($size)) {
$size = $r->headers_in->{'x-expected-entity-length'};
}
- $r->log->info("sz=$size");
my $orig_filename = $filename;
# Remove evil characters
}
# 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;
}
}
$dbh->do('INSERT INTO images (id,vhost,event,uploadedby,takenby,filename) VALUES (?,?,?,?,?,?)',
undef, $newid, $r->get_server_name, $event, $user, $takenby, $filename);
- $dbh->do('UPDATE last_picture_cache SET last_update=CURRENT_TIMESTAMP WHERE vhost=? AND event=?',
- undef, $r->get_server_name, $event);
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: $!";
eval {
$dbh->do('INSERT INTO images (id,vhost,event,uploadedby,takenby,filename) VALUES (?,?,?,?,?,?)',
undef, $newid, $r->get_server_name, $event, $user, $takenby, $filename);
- $dbh->do('UPDATE last_picture_cache SET last_update=CURRENT_TIMESTAMP WHERE vhost=? AND event=?',
- undef, $r->get_server_name, $event);
# Now save the file to disk
$fname = Sesse::pr0n::Common::get_disk_location($r, $newid);