Mercurial > hg > orthanc
changeset 5869:3ed63202eff8 default
merge
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Tue, 12 Nov 2024 18:03:34 +0100 |
parents | b8cf5653a418 (current diff) 1dd0356099f0 (diff) |
children | |
files | |
diffstat | 5 files changed, 61 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/NEWS Tue Nov 12 18:03:01 2024 +0100 +++ b/NEWS Tue Nov 12 18:03:34 2024 +0100 @@ -65,7 +65,7 @@ * Housekeeper plugin: - Added an option "LimitMainDicomTagsReconstructLevel" (allowed values: "Patient", "Study", "Series", "Instance"). This can greatly speed - up the housekeeper process, e.g. if you have only update the Study level ExtraMainDicomTags. + up the housekeeper process, e.g. if you have only updated the Study level ExtraMainDicomTags. - Fixed broken /instances/../tags route after running the Housekeeper after having changed the "IngestTranscoding". * SDK: added OrthancPluginLogMessage() as a new primitive for plugins
--- a/OrthancFramework/Sources/Lua/LuaContext.h Tue Nov 12 18:03:01 2024 +0100 +++ b/OrthancFramework/Sources/Lua/LuaContext.h Tue Nov 12 18:03:34 2024 +0100 @@ -124,5 +124,17 @@ lua_State* state, int top, bool keyToLowerCase); + +#if ORTHANC_ENABLE_CURL == 1 + void SetHttpsVerifyPeers(bool verify) + { + httpClient_.SetHttpsVerifyPeers(verify); + } + + bool IsHttpsVerifyPeers() const + { + return httpClient_.IsHttpsVerifyPeers(); + } +#endif }; }
--- a/OrthancFramework/UnitTestsSources/RestApiTests.cpp Tue Nov 12 18:03:01 2024 +0100 +++ b/OrthancFramework/UnitTestsSources/RestApiTests.cpp Tue Nov 12 18:03:34 2024 +0100 @@ -73,19 +73,24 @@ ASSERT_TRUE(c.IsVerbose()); c.SetVerbose(false); ASSERT_FALSE(c.IsVerbose()); + ASSERT_TRUE(c.IsRedirectionFollowed()); + c.SetRedirectionFollowed(false); + ASSERT_FALSE(c.IsRedirectionFollowed()); #if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1 - // The "http://www.orthanc-server.com/downloads/third-party/" does - // not automatically redirect to HTTPS, so we cas use it even if the - // OpenSSL/HTTPS support is disabled in curl - const std::string BASE = "http://www.orthanc-server.com/downloads/third-party/"; + // The "http://httpbin.org/get" URL does not automatically redirect + // to HTTPS, so we can use it even if the OpenSSL/HTTPS support is + // disabled in curl + const std::string URL = "http://httpbin.org/get"; + Json::Value v; - c.SetUrl(BASE + "Product.json"); + c.SetUrl(URL); c.Apply(v); ASSERT_TRUE(v.type() == Json::objectValue); - ASSERT_TRUE(v.isMember("Description")); + ASSERT_TRUE(v.isMember("url")); + ASSERT_EQ(URL, v["url"].asString()); #endif } #endif
--- a/OrthancServer/Plugins/Samples/Housekeeper/Plugin.cpp Tue Nov 12 18:03:01 2024 +0100 +++ b/OrthancServer/Plugins/Samples/Housekeeper/Plugin.cpp Tue Nov 12 18:03:34 2024 +0100 @@ -859,12 +859,15 @@ "StorageCompressionChange": true, "MainDicomTagsChange": true, "UnnecessaryDicomAsJsonFiles": true, + "IngestTranscodingChange": true, "DicomWebCacheChange": true // new in 1.12.2 }, - // When rebuilding MainDicomTags, limit to a single level of resource. - // Allowed values: "Patient", "Study", "Series", "Instance" - "LimitMainDicomTagsReconstructLevel": "Study" + // When rebuilding MainDicomTags, limit to a single level of resource + // which can greatly improve performances e.g. if you have only updated + // the Study level ExtraMainDicomTags. + // Allowed values: "Patient", "Study", "Series", "Instance", "All" + "LimitMainDicomTagsReconstructLevel": "All" } } @@ -887,11 +890,12 @@ triggerOnDicomWebCacheChange_ = triggers.GetBooleanValue("DicomWebCacheChange", true); } - limitMainDicomTagsReconstructLevel_ = housekeeper.GetStringValue("LimitMainDicomTagsReconstructLevel", ""); + limitMainDicomTagsReconstructLevel_ = housekeeper.GetStringValue("LimitMainDicomTagsReconstructLevel", "All"); if (limitMainDicomTagsReconstructLevel_ != "Patient" && limitMainDicomTagsReconstructLevel_ != "Study" - && limitMainDicomTagsReconstructLevel_ != "Series" && limitMainDicomTagsReconstructLevel_ != "Instance") + && limitMainDicomTagsReconstructLevel_ != "Series" && limitMainDicomTagsReconstructLevel_ != "Instance" && limitMainDicomTagsReconstructLevel_ != "All") { ORTHANC_PLUGINS_LOG_ERROR("Housekeeper invalid value for 'LimitMainDicomTagsReconstructLevel': '" + limitMainDicomTagsReconstructLevel_ + "'"); + return -1; } else if (limitMainDicomTagsReconstructLevel_ == "Patient") {
--- a/OrthancServer/UnitTestsSources/LuaServerTests.cpp Tue Nov 12 18:03:01 2024 +0100 +++ b/OrthancServer/UnitTestsSources/LuaServerTests.cpp Tue Nov 12 18:03:34 2024 +0100 @@ -138,38 +138,43 @@ TEST(Lua, Http) { Orthanc::LuaContext lua; - -#if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1 - // The "http://www.orthanc-server.com/downloads/third-party/" does - // not automatically redirect to HTTPS, so we use it even if the - // OpenSSL/HTTPS support is disabled in curl - const std::string BASE = "http://www.orthanc-server.com/downloads/third-party/"; - -#if LUA_VERSION_NUM >= 502 - // Since Lua >= 5.2.0, the function "loadstring" has been replaced by "load" - lua.Execute("JSON = load(HttpGet('" + BASE + "JSON.lua')) ()"); -#else - lua.Execute("JSON = loadstring(HttpGet('" + BASE + "JSON.lua')) ()"); -#endif - - const std::string url(BASE + "Product.json"); -#endif + ASSERT_TRUE(lua.IsHttpsVerifyPeers()); + lua.SetHttpsVerifyPeers(false); + ASSERT_FALSE(lua.IsHttpsVerifyPeers()); std::string s; lua.Execute(s, "print(HttpGet({}))"); ASSERT_EQ("nil", Orthanc::Toolbox::StripSpaces(s)); -#if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1 - lua.Execute(s, "print(string.len(HttpGet(\"" + url + "\")))"); - ASSERT_LE(100, boost::lexical_cast<int>(Orthanc::Toolbox::StripSpaces(s))); +#if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1 + // The "http://httpbin.org/get" URL does not automatically redirect + // to HTTPS, so we can use it even if the OpenSSL/HTTPS support is + // disabled in curl - // Parse a JSON file - lua.Execute(s, "print(JSON:decode(HttpGet(\"" + url + "\")) ['Product'])"); - ASSERT_EQ("OrthancClient", Orthanc::Toolbox::StripSpaces(s)); + const std::string URL = "http://httpbin.org/get"; + lua.Execute(s, "print(HttpGet(\"" + URL + "\"))"); + + Json::Value json; + Orthanc::Toolbox::ReadJson(json, s); + + ASSERT_TRUE(json.type() == Json::objectValue); + ASSERT_TRUE(json.isMember("url")); + ASSERT_EQ(URL, json["url"].asString()); #if 0 // This part of the test can only be executed if one instance of - // Orthanc is running on the localhost + // Orthanc is running on the localhost, with configuration option + // "ExecuteLuaEnabled" equals to "true" + + const std::string JSON_LUA_TOOLBOX = "https://regex.info/code/JSON.lua"; + lua.Execute("HttpGet('" + JSON_LUA_TOOLBOX + "')"); + +#if LUA_VERSION_NUM >= 502 + // Since Lua >= 5.2.0, the function "loadstring" has been replaced by "load" + lua.Execute("JSON = load(HttpGet('" + JSON_LUA_TOOLBOX + "')) ()"); +#else + lua.Execute("JSON = loadstring(HttpGet('" + JSON_LUA_TOOLBOX + "')) ()"); +#endif lua.Execute("modality = {}"); lua.Execute("table.insert(modality, 'ORTHANC')");