From 0143c938aadd37e1d25cef0819aafa9044bfa75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E5=9C=B0?= Date: Fri, 1 Jun 2018 15:08:51 +0800 Subject: [PATCH 1/4] bugfix: when loop local directories, listObjects use request's prefix now . --- lib/emulator/util.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/emulator/util.rb b/lib/emulator/util.rb index 9f8c021..a695cce 100644 --- a/lib/emulator/util.rb +++ b/lib/emulator/util.rb @@ -77,13 +77,14 @@ def self.get_bucket_list_objects(lbr, req) end bucket_path = File.join(Config.store, req.bucket, '/') - find_root_folder = bucket_path + find_root_folder = File.join(Config.store, req.bucket, prefix, '/') object_list = [] common_prefix_list = [] is_truncated = false count = 0 Find.find(find_root_folder) do |filename| + Log.info(filename) if File.basename(filename)==Store::OBJECT_METADATA key_name = File.dirname(filename).gsub(bucket_path, "") if marker_found && (!prefix || key_name.index(prefix)==0 || key_name.index(prefix)==1) @@ -131,6 +132,7 @@ def self.get_bucket_list_objects(lbr, req) if marker && (cmp <= 0) marker_found = true end + end # if end # Find.find From 0547278dabdc8ab838d41f2642af6c469d05ee0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E5=9C=B0?= Date: Fri, 1 Jun 2018 16:14:23 +0800 Subject: [PATCH 2/4] bugfix: when loop local directories, listObjects use request's prefix now . and delete test code. --- lib/emulator/util.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/emulator/util.rb b/lib/emulator/util.rb index a695cce..1f0ae16 100644 --- a/lib/emulator/util.rb +++ b/lib/emulator/util.rb @@ -84,7 +84,6 @@ def self.get_bucket_list_objects(lbr, req) count = 0 Find.find(find_root_folder) do |filename| - Log.info(filename) if File.basename(filename)==Store::OBJECT_METADATA key_name = File.dirname(filename).gsub(bucket_path, "") if marker_found && (!prefix || key_name.index(prefix)==0 || key_name.index(prefix)==1) @@ -132,7 +131,6 @@ def self.get_bucket_list_objects(lbr, req) if marker && (cmp <= 0) marker_found = true end - end # if end # Find.find From 2e2535a8ea54daea1e5d34a31e7317c9779a328d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E5=9C=B0?= Date: Fri, 20 Jul 2018 20:18:40 +0800 Subject: [PATCH 3/4] bugfix: WEBrick's log is not quite in Win2008R2. change log's file location, from ../log --> ./log --- lib/emulator/logging.rb | 2 +- lib/emulator/server.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/emulator/logging.rb b/lib/emulator/logging.rb index 3949071..5b90b3c 100644 --- a/lib/emulator/logging.rb +++ b/lib/emulator/logging.rb @@ -16,7 +16,7 @@ module OssEmulator # Log.fatal("something", 'red') class Log - LOG_DEFAULT_DIR = "../log" + LOG_DEFAULT_DIR = "log" LOG_DEFAULT_FILE = "#{LOG_DEFAULT_DIR}/emulator.log" LOG_TEST_FILE = "#{LOG_DEFAULT_DIR}/test.log" LOG_ALIYUN_SDK_FILE = "#{LOG_DEFAULT_DIR}/aliyun_sdk.log" diff --git a/lib/emulator/server.rb b/lib/emulator/server.rb index a05d8e7..83b38ee 100644 --- a/lib/emulator/server.rb +++ b/lib/emulator/server.rb @@ -193,7 +193,7 @@ def initialize(address, port, hostname, ssl_cert_path, ssl_key_path, extra_optio ) rescue webrick_config.merge!( - :Logger => WEBrick::Log.new(nil), + :Logger => WEBrick::Log.new(File.open(File::NULL, 'w')), :AccessLog => [] ) end From 883c978a964f2610ba014d21d2143987bb01abff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E5=9C=B0?= Date: Tue, 31 Jul 2018 20:46:12 +0800 Subject: [PATCH 4/4] bugfix: can not list buckets --- lib/emulator/util.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/emulator/util.rb b/lib/emulator/util.rb index 1f0ae16..7bcbd9c 100644 --- a/lib/emulator/util.rb +++ b/lib/emulator/util.rb @@ -60,23 +60,21 @@ def self.valid_object_name(name) def self.get_bucket_list_objects(lbr, req) marker = req.query["marker"] ? req.query["marker"].to_s : nil marker_found = (marker==nil || marker=="") ? true : false - prefix = req.query["prefix"] ? req.query["prefix"].to_s : nil - prefix = nil if prefix=="" + prefix = req.query["prefix"] ? req.query["prefix"].to_s : "" + max_keys = req.query["max-keys"] ? req.query["max-keys"].to_i : 100 max_keys = max_keys>1000 ? 1000 : max_keys delimiter = req.query["delimiter"] ? req.query["delimiter"].to_s : nil delimiter = nil if delimiter=="" if delimiter - if prefix - base_prefix = prefix - else - base_prefix = "" - end + base_prefix = prefix prefix_offset = base_prefix.length end bucket_path = File.join(Config.store, req.bucket, '/') + + find_root_folder = File.join(Config.store, req.bucket, prefix, '/') object_list = [] common_prefix_list = []