Patch #25240 » 0002-adds-a-rake-task-to-convert-the-digests-of-existing-.patch
app/models/attachment.rb | ||
---|---|---|
352 | 352 |
end |
353 | 353 |
end |
354 | 354 | |
355 |
# Updates attachments' digests to SHA256 |
|
356 |
def self.update_digest_to_sha256 |
|
357 |
Attachment.where("length(digest) < 64").find_in_batches do |group| |
|
358 |
group.each do |attachment| |
|
359 |
attachment.update_digest_to_sha256! |
|
360 |
end |
|
361 |
end |
|
362 |
end |
|
363 | ||
364 |
def update_digest_to_sha256! |
|
365 |
if readable? |
|
366 |
sha = Digest::SHA256.new |
|
367 |
File.open(diskfile, 'rb') do |f| |
|
368 |
while buffer = f.read(8192) |
|
369 |
sha.update(buffer) |
|
370 |
end |
|
371 |
end |
|
372 |
update_column :digest, sha.hexdigest |
|
373 |
end |
|
374 |
end |
|
375 | ||
355 | 376 |
# Returns true if the extension is allowed regarding allowed/denied |
356 | 377 |
# extensions defined in application settings, otherwise false |
357 | 378 |
def self.valid_extension?(extension) |
lib/tasks/redmine.rake | ||
---|---|---|
26 | 26 |
task :move_to_subdirectories => :environment do |
27 | 27 |
Attachment.move_from_root_to_target_directory |
28 | 28 |
end |
29 | ||
30 |
desc 'Updates attachment digests to SHA256' |
|
31 |
task :update_digest_to_sha256 => :environment do |
|
32 |
Attachment.update_digest_to_sha256 |
|
33 |
end |
|
29 | 34 |
end |
30 | 35 | |
31 | 36 |
namespace :tokens do |
test/unit/attachment_test.rb | ||
---|---|---|
332 | 332 |
assert_equal 'text/plain', attachment.content_type |
333 | 333 |
end |
334 | 334 | |
335 |
test 'should update digest to sha256' do |
|
336 |
set_fixtures_attachments_directory |
|
337 |
attachment = Attachment.find 4 |
|
338 |
assert File.readable? attachment.diskfile |
|
339 |
attachment.update_digest_to_sha256! |
|
340 |
assert_equal 'c2db49ac68eaebb1703db09411dcd8186b395f4ae8482e449a5d5abff96c7fb2', attachment.digest |
|
341 |
end |
|
342 | ||
335 | 343 |
def test_update_attachments |
336 | 344 |
attachments = Attachment.where(:id => [2, 3]).to_a |
337 | 345 | |
... | ... | |
430 | 438 |
else |
431 | 439 |
puts '(ImageMagick convert not available)' |
432 | 440 |
end |
441 | ||
433 | 442 |
end |