mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 07:22:18 +00:00
DEV: Remove UploadFixer
and uploads:fix_all_extensions
rake task (#33004)
The code being removed here was added 7 years ago and is stale at this point. We don't even know if it is safe to run since no tests have been written for it. Therefore, it is safer for us to remove it than to spend time reviewing it.
This commit is contained in:
parent
da0b303568
commit
ecc64e3925
@ -1,9 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jobs
|
||||
class FixInvalidUploadExtensions < ::Jobs::Onceoff
|
||||
def execute_onceoff(args)
|
||||
UploadFixer.fix_all_extensions
|
||||
end
|
||||
end
|
||||
end
|
@ -507,10 +507,6 @@ task "uploads:analyze", %i[cache_path limit] => :environment do |_, args|
|
||||
puts "Duration: #{Time.zone.now - now} seconds"
|
||||
end
|
||||
|
||||
task "uploads:fix_incorrect_extensions" => :environment do
|
||||
UploadFixer.fix_all_extensions
|
||||
end
|
||||
|
||||
task "uploads:recover_from_tombstone" => :environment do
|
||||
Rake::Task["uploads:recover"].invoke
|
||||
end
|
||||
|
@ -1,80 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UploadFixer
|
||||
def self.fix_all_extensions
|
||||
Upload
|
||||
.where("uploads.extension IS NOT NULL")
|
||||
.find_each { |upload| fix_extension_on_upload(upload) }
|
||||
end
|
||||
|
||||
def self.fix_extension_on_upload(upload)
|
||||
is_external = Discourse.store.external?
|
||||
previous_url = upload.url.dup
|
||||
|
||||
source =
|
||||
if is_external
|
||||
"https:#{previous_url}"
|
||||
else
|
||||
Discourse.store.path_for(upload)
|
||||
end
|
||||
|
||||
correct_extension = FastImage.type(source).to_s.downcase
|
||||
current_extension = upload.extension.to_s.downcase
|
||||
|
||||
if correct_extension.present?
|
||||
correct_extension = "jpg" if correct_extension == "jpeg"
|
||||
current_extension = "jpg" if current_extension == "jpeg"
|
||||
|
||||
if correct_extension != current_extension
|
||||
new_filename = change_extension(upload.original_filename, correct_extension)
|
||||
|
||||
new_url = change_extension(previous_url, correct_extension)
|
||||
|
||||
if is_external
|
||||
new_url = "/#{new_url}"
|
||||
source = Discourse.store.get_path_for_upload(upload)
|
||||
destination = change_extension(source, correct_extension)
|
||||
|
||||
Discourse.store.copy_file(previous_url, source, destination)
|
||||
|
||||
upload.update!(
|
||||
original_filename: new_filename,
|
||||
url: new_url,
|
||||
extension: correct_extension,
|
||||
)
|
||||
|
||||
DbHelper.remap(previous_url, upload.url)
|
||||
Discourse.store.remove_file(previous_url, source)
|
||||
else
|
||||
destination = change_extension(source, correct_extension)
|
||||
FileUtils.copy(source, destination)
|
||||
|
||||
upload.update!(
|
||||
original_filename: new_filename,
|
||||
url: new_url,
|
||||
extension: correct_extension,
|
||||
)
|
||||
|
||||
DbHelper.remap(previous_url, upload.url)
|
||||
|
||||
tombstone_path = source.sub("/uploads/", "/uploads/tombstone/")
|
||||
FileUtils.mkdir_p(File.dirname(tombstone_path))
|
||||
|
||||
FileUtils.move(source, tombstone_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue => e
|
||||
STDERR.puts "Skipping upload: failed to correct extension on upload id: #{upload.id} #{current_extension} => #{correct_extension}"
|
||||
STDERR.puts e
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.change_extension(path, extension)
|
||||
pathname = Pathname.new(path)
|
||||
dirname = pathname.dirname.to_s != "." ? "#{pathname.dirname}/" : ""
|
||||
basename = File.basename(path, File.extname(path))
|
||||
"#{dirname}#{basename}.#{extension}"
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user