Class: Burp::Util::UploadHandler
- Inherits:
-
Object
- Object
- Burp::Util::UploadHandler
- Defined in:
- app/lib/burp/util/upload_handler.rb
Defined Under Namespace
Classes: UploadedFile
Class Method Summary collapse
Class Method Details
.handle(file_or_file_name, request) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/lib/burp/util/upload_handler.rb', line 9 def self.handle file_or_file_name,request tempfile = handle_raw_data(file_or_file_name,request) shasum = `shasum #{tempfile.path}`.match(/^([0-9a-f]{40})/i)[1] new_dir = "/tmp/#{shasum}_#{Time.now.to_i}/" new_path = "#{new_dir}#{tempfile.original_filename}" Dir.mkdir(new_dir) FileUtils.mv(tempfile.path,new_path) tempfile.close(true) yield(UploadedFile.new(new_path,shasum)) ensure File.unlink(new_path) if new_path && File.exist?(new_path) Dir.rmdir(new_dir) if new_dir && File.exist?(new_dir) end |
.handle_raw_data(tempfile, request) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/lib/burp/util/upload_handler.rb', line 52 def self.handle_raw_data tempfile,request if tempfile.is_a? String file = Tempfile.new('foo',:encoding => 'ascii-8bit') while s = request.env['rack.input'].read(16*1024) file.write(s) end file.flush def file.original_filename @file_name end def file.tempfile self end def file.original_filename= value @file_name = value end file.original_filename = File.basename(tempfile) file else tempfile end end |