def hello_world(): if request.method == 'POST': file = request.files['file'] filename = secure_filename(file.filename) save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(save_path) sha256 = hashdigest(save_path)['sha256'] normalized_name_path = os.path.join(app.config['UPLOAD_FOLDER'], sha256) try: os.rename(save_path, normalized_name_path) except OSError: # File already here on windows raise exception os.remove(save_path) job = {'path': normalized_name_path, 'name': filename} job_queue.put(job) return "%s (%s) saved to %s - job : %s" % (filename, sha256, normalized_name_path, job) else: return render_template('submit.html')
def _populate(self): """ Compute data related to the file : type, hash, version,.... """ #Hash h = hashdigest(self.path) sha256 = h['sha256'].lower() #Type et = self.exif_tools metadata = et.get_metadata(self.path) #self.name = metadata['File:FileName'] #Extension if '.' in self.name: self.extension = self.name.split('.')[-1].lower() else: self.extension = "" file = Session().query(File).filter_by(sha256=sha256).all() if len(file) != 0: self.new_file = False self.file = file[0] else: try: type = metadata['File:FileType'].lower() except KeyError: type = "unknown" try: mimetype = metadata['File:MIMEType'].lower() except KeyError: mimetype = "unknown" self.file = File( md5=h['md5'].lower(), sha1=h['sha1'].lower(), sha256=h['sha256'].lower(), type=type, mimetype=mimetype, size=metadata['File:FileSize'], ) Session().add(self.file) Session().commit()
def test_hashdigest(self): stream = StringIO("The quick brown fox jumps over the lazy dog") r = hashdigest("Tools\exiftool.py") self.assertEqual(r['md5'], "b5504d2e2cb89f1883d8d9736c67b87c") self.assertEqual(r['sha1'], "f74f2998f8f24bfa71292d0b4d492ce245d4b0e9") self.assertEqual(r['sha256'], "abfcccf9d3db8eeca9e35e3854f0b2262563c778754a573fb1d92010e36345ba")