From 3aba191a7abc5cf038e6d145b47c67d51acceda5 Mon Sep 17 00:00:00 2001 From: "donghyuk.yang" Date: Fri, 15 Mar 2013 00:18:33 +0900 Subject: [PATCH] [Title] Validate package after downloading --- src/pkg_server/client.rb | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/pkg_server/client.rb b/src/pkg_server/client.rb index db0ac3e..e59564b 100644 --- a/src/pkg_server/client.rb +++ b/src/pkg_server/client.rb @@ -325,7 +325,12 @@ class Client end file_path = File.join(loc, filename) - add_file_to_cache(file_path) + if validatePkgFile(file_path, pkg_checksum, pkg_size) then + add_file_to_cache(file_path) + else + @log.error "File Validation Failed!!" + return nil + end else @log.info "Cached #{pkg_name} package file.. OK" end @@ -340,6 +345,17 @@ class Client return file_local_path end + private + def validatePkgFile(filepath, orig_checksum, orig_size) + checksum = Digest::SHA256.file(filepath).hexdigest + size = File.size filepath + if checksum.to_s.eql? orig_checksum and size.to_s.eql? orig_size then + return true + else + return false + end + end + private def get_file_from_cache(filename, pkg_checksum, pkg_size, location) downloaded_file_path = nil @@ -397,14 +413,13 @@ class Client private def get_cached_filepath(pkg_filename, pkg_checksum, pkg_size) - cached_filepath = "#{@download_path}/#{pkg_filename}" if File.exist? cached_filepath then - FileUtils.touch cached_filepath - checksum = Digest::SHA256.file(cached_filepath).hexdigest - size = File.size cached_filepath - if checksum.to_s.eql? pkg_checksum and size.to_s.eql? pkg_size then + if validatePkgFile(cached_filepath, pkg_checksum, pkg_size) then + FileUtils.touch cached_filepath return cached_filepath + else + return nil end end return nil -- 2.34.1