Orthanc 1.12.11 and 9 other plugins updated

Dear community,

Sébastien and myself are pleased to announce that Orthanc 1.12.11 is now available !

Amongst other changes, this new version includes security fixes for CVEs that have been reported by Machine Spirits and another security issue reported by Aisle Research. A huge thanks to them !

Of course, you should upgrade as soon as possible to keep your Orthanc installation safe.

Check the full Orhanc release notes.


The Orthanc Explorer 2 plugin has been updated to version 1.11.0 adding the ability to send emails when sharing a study link (note: you need an external web-service for that) and other small improvements.


PostgreSQL 10.1 is out with a minor change. This version uses the same DB schema (rev 10) as the previous version.


The Authorization plugin has been updated to version 0.11.2.


The OHIF plugin has been updated to version 1.8 featuring OHIF v3.12.0.


The Python plugin has been updated to version 7.1 to support new StorageArea plugins.


The DICOMweb plugin has been updated to version 1.23 with minor changes.


The AWS S3 and Azure plugins have been updated to version 2.5.2 with minor changes.


The Advanced storage plugin has been updated to version 0.3.0 with minor changes.


All these releases are available

Enjoy !

Alain

2 Likes

Did you mean to say 26.4.0, instead of 25.8.0?

1 Like

64 bit installer not up yet? Latest I see is OrthancInstaller-Win64-26.1.0.exe

Thanks for updating :slight_smile:

fixed now !

Hey guys, sorry to be a pest, but I get build errors against the latest framework:
Orthanc-stl fails to build against the latest framework .

[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp: In member function ‘bool StructureSetGeometry::LookupProjectionIndex(size_t&, double) const’:
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp:53:29: error: ‘round’ was not declared in this scope
[ 37s] 53 | if (STLToolbox::IsNear(d, round(d)))
[ 37s] | ^~~~~
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp: In constructor ‘StructureSetGeometry::StructureSetGeometry(const StructureSet&, bool)’:
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp:184:33: error: ‘round’ was not declared in this scope
[ 37s] 184 | if (STLToolbox::IsNear(d, round(d)))
[ 37s] | ^~~~~
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp:229:31: error: ‘round’ was not declared in this scope
[ 37s] 229 | if (STLToolbox::IsNear(d, round(d)))
[ 37s] | ^~~~~
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp:237:29: error: ‘round’ was not declared in this scope
[ 37s] 237 | if (STLToolbox::IsNear(d, round(d)))
[ 37s] | ^~~~~
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp: In member function ‘bool StructureSetGeometry::LookupProjectionIndex(size_t&, double) const’:
[ 37s] /home/abuild/rpmbuild/BUILD/orthanc-stl-1.2-build/OrthancSTL-1.2/Sources/StructureSetGeometry.cpp:51:10: error: control reaches end of non-void function [-Werror=return-type]
[ 37s] 51 | double d = (z - minProjectionAlongNormal_) / slicesSpacing_;
[ 37s] | ^
[ 37s] cc1plus: some warnings being treated as errors
[ 37s] make[2]: *** [CMakeFiles/OrthancSTL.dir/build.make:173: CMakeFiles/OrthancSTL.dir/Sources/StructureSetGeometry.cpp.o] Error 1

orthanc-mysql fails as well:
(Boost 1.90)

[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In member function ‘virtual uint32_t OrthancDatabases::IndexBackend::GetDatabaseVersion(OrthancDatabases::DatabaseManager&)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:1843:23: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 1843 | return boost::lexical_cast(version);
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:1843:36: error: expected primary-expression before ‘unsigned’
[ 77s] 1843 | return boost::lexical_cast(version);
[ 77s] | ^~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:1843:36: error: expected ‘;’ before ‘unsigned’
[ 77s] 1843 | return boost::lexical_cast(version);
[ 77s] | ^~~~~~~~
[ 77s] | ;
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:1843:48: error: expected unqualified-id before ‘>’ token
[ 77s] 1843 | return boost::lexical_cast(version);
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:1845:21: error: ‘bad_lexical_cast’ in namespace ‘boost’ does not name a type
[ 77s] 1845 | catch (boost::bad_lexical_cast&)
[ 77s] | ^~~~~~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In static member function ‘static std::string OrthancDatabases::IndexBackend::LookupFormatter::FormatParameter(size_t)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2033:27: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2033 | return “p” + boost::lexical_caststd::string(index);
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2033:51: error: expected primary-expression before ‘>’ token
[ 77s] 2033 | return “p” + boost::lexical_caststd::string(index);
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In member function ‘virtual std::string OrthancDatabases::IndexBackend::LookupFormatter::FormatResourceType(Orthanc::ResourceType)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2055:21: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2055 | return boost::lexical_caststd::string(Orthanc::Plugins::Convert(level));
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2055:45: error: expected primary-expression before ‘>’ token
[ 77s] 2055 | return boost::lexical_caststd::string(Orthanc::Plugins::Convert(level));
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In function ‘void OrthancDatabases::ExecuteSetResourcesContentTags(DatabaseManager&, const std::string&, const std::string&, uint32_t, const OrthancPluginResourcesContentTags*)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2242:50: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2242 | std::string name = variablePrefix + boost::lexical_caststd::string(i);
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2242:74: error: expected primary-expression before ‘>’ token
[ 77s] 2242 | std::string name = variablePrefix + boost::lexical_caststd::string(i);
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2246:42: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2246 | std::string insert = (“(” + boost::lexical_caststd::string(tags[i].resource) + “, " +
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2246:66: error: expected primary-expression before ‘>’ token
[ 77s] 2246 | std::string insert = (”(" + boost::lexical_caststd::string(tags[i].resource) + ", " +
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2247:36: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2247 | boost::lexical_caststd::string(tags[i].group) + “, " +
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2247:60: error: expected primary-expression before ‘>’ token
[ 77s] 2247 | boost::lexical_caststd::string(tags[i].group) + “, " +
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2248:36: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2248 | boost::lexical_caststd::string(tags[i].element) + “, " +
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2248:60: error: expected primary-expression before ‘>’ token
[ 77s] 2248 | boost::lexical_caststd::string(tags[i].element) + “, " +
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2248:86: error: invalid operands of types ‘const char*’ and ‘const char [3]’ to binary ‘operator+’
[ 77s] 2248 | boost::lexical_caststd::string(tags[i].element) + “, " +
[ 77s] | ~~~~~~~~~~~~~~~~~~~~~~~~ ^
[ 77s] | |
[ 77s] | const char*
[ 77s] 2249 | “${” + name + “})”);
[ 77s] | ~~~~
[ 77s] | |
[ 77s] | const char [3]
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2267:60: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2267 | statement.SetParameterType(variablePrefix + boost::lexical_caststd::string(i),
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2267:84: error: expected primary-expression before ‘>’ token
[ 77s] 2267 | statement.SetParameterType(variablePrefix + boost::lexical_caststd::string(i),
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In function ‘void OrthancDatabases::ExecuteSetResourcesContentMetadata(DatabaseManager&, bool, uint32_t, const OrthancPluginResourcesContentMetadata*)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2290:39: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2290 | std::string name = “m” + boost::lexical_caststd::string(i);
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2290:63: error: expected primary-expression before ‘>’ token
[ 77s] 2290 | std::string name = “m” + boost::lexical_caststd::string(i);
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2300:42: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2300 | std::string insert = (”(” + boost::lexical_caststd::string(metadata[i].resource) + “, " +
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2300:66: error: expected primary-expression before ‘>’ token
[ 77s] 2300 | std::string insert = (”(” + boost::lexical_caststd::string(metadata[i].resource) + “, " +
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2301:36: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2301 | boost::lexical_caststd::string(metadata[i].metadata) + “, " +
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2301:60: error: expected primary-expression before ‘>’ token
[ 77s] 2301 | boost::lexical_caststd::string(metadata[i].metadata) + “, " +
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2301:91: error: invalid operands of types ‘const char*’ and ‘const char [3]’ to binary ‘operator+’
[ 77s] 2301 | boost::lexical_caststd::string(metadata[i].metadata) + “, " +
[ 77s] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
[ 77s] | |
[ 77s] | const char*
[ 77s] 2302 | “${” + name + “}” + revisionSuffix + “)”);
[ 77s] | ~~~~
[ 77s] | |
[ 77s] | const char [3]
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2304:45: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2304 | std::string remove = (”(id=” + boost::lexical_caststd::string(metadata[i].resource) +
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2304:69: error: expected primary-expression before ‘>’ token
[ 77s] 2304 | std::string remove = (”(id=” + boost::lexical_caststd::string(metadata[i].resource) +
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2305:51: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2305 | " AND type=” + boost::lexical_caststd::string(metadata[i].metadata)
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2305:75: error: expected primary-expression before ‘>’ token
[ 77s] 2305 | " AND type=” + boost::lexical_caststd::string(metadata[i].metadata)
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2339:49: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2339 | statement.SetParameterType(“m” + boost::lexical_caststd::string(i),
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2339:73: error: expected primary-expression before ‘>’ token
[ 77s] 2339 | statement.SetParameterType(“m” + boost::lexical_caststd::string(i),
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In member function ‘bool OrthancDatabases::IndexBackend::LookupGlobalIntegerProperty(int&, OrthancDatabases::DatabaseManager&, const char*, int32_t)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2837:25: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2837 | target = boost::lexical_cast(value);
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2837:38: error: expected primary-expression before ‘int’
[ 77s] 2837 | target = boost::lexical_cast(value);
[ 77s] | ^~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2840:21: error: ‘bad_lexical_cast’ in namespace ‘boost’ does not name a type
[ 77s] 2840 | catch (boost::bad_lexical_cast&)
[ 77s] | ^~~~~~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In member function ‘void OrthancDatabases::IndexBackend::SetGlobalIntegerProperty(OrthancDatabases::DatabaseManager&, const char*, int32_t, int)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2858:28: error: ‘lexical_cast’ is not a member of ‘boost’
[ 77s] 2858 | std::string s = boost::lexical_caststd::string(value);
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2858:52: error: expected primary-expression before ‘>’ token
[ 77s] 2858 | std::string s = boost::lexical_caststd::string(value);
[ 77s] | ^
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp: In member function ‘virtual uint64_t OrthancDatabases::IndexBackend::MeasureLatency(OrthancDatabases::DatabaseManager&)’:
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2890:25: error: ‘ElapsedTimer’ is not a member of ‘Orthanc::Toolbox’
[ 77s] 2890 | Orthanc::toolbox::ElapsedTimer timer;
[ 77s] | ^~~~~~~~~~~~
[ 77s] /home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp:2894:26: error: ‘timer’ was not declared in this scope; did you mean ‘timex’?
[ 77s] 2894 | measures.push_back(timer.GetElapsedMicroseconds());
[ 77s] | ^~~~~
[ 77s] | timex
[ 77s] make[2]: *** [CMakeFiles/FrameworkForPlugins.dir/build.make:1206: CMakeFiles/FrameworkForPlugins.dir/home/abuild/rpmbuild/BUILD/orthanc-mysql-5.2-build/OrthancMySQL-5.2/Framework/Plugins/IndexBackend.cpp.o] Error 1

Hi,

As always, you can find the associated patches in the source code of the mainline of the plugins:

  • orthanc-stl: patch
  • orthanc-databases (for PostgreSQL and MySQL): patch

Thanks again for your continuous work on packaging Orthanc for openSUSE!

Kind Regards,
Sébastien-

Thank you for your support Sebastien,
However the second patch fails to apply to the released version of mysql 5.2
Cheers
Axel

Sorry, I thought this was about the PostgreSQL plugin. You can find the patch for MySQL in the official Debian package.

Best,
Sébastien-

So, does Explorer2 from the GitHub repo no longer require NGINX for the dev setup ?

Indeed. You only need to run npm run dev