changeset 5437:85da6dcd0e08

merge
author Alain Mazy <am@osimis.io>
date Wed, 22 Nov 2023 09:39:35 +0100
parents 6f2b11bfee8d (current diff) 43d347f495e9 (diff)
children 7a20ee948676 40112827c56f
files
diffstat 67 files changed, 151 insertions(+), 141 deletions(-) [+]
line wrap: on
line diff
--- a/LinuxCompilation.txt	Wed Nov 22 09:38:57 2023 +0100
+++ b/LinuxCompilation.txt	Wed Nov 22 09:39:35 2023 +0100
@@ -235,7 +235,7 @@
 
 You can find build instructions for Orthanc up to 0.7.0 on the
 following Wiki page:
-https://book.orthanc-server.com/faq/compiling-old.html
+https://orthanc.uclouvain.be/book/faq/compiling-old.html
 
 These instructions will not work as such beyond Orthanc 0.7.0, but
 they might give indications.
--- a/OrthancFramework/Resources/CMake/BoostConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/BoostConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -54,7 +54,7 @@
   
   # Patch by xnox to fix issue #166 (CMake find_boost version is now
   # broken with newer boost/cmake)
-  # https://bugs.orthanc-server.com/show_bug.cgi?id=166
+  # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=166
   if (POLICY CMP0093)
     set(BOOST144 1.44)
   else()
@@ -94,7 +94,7 @@
   set(BOOST_VERSION 1.83.0)
   set(BOOST_BCP_SUFFIX bcpdigest-1.12.2)
   set(BOOST_MD5 "6a9c4af273635301ed1e221054c34c69")
-  set(BOOST_URL "https://orthanc.uclouvain.be/third-party-downloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
+  set(BOOST_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
   set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
 
   if (IS_DIRECTORY "${BOOST_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/BoostConfigurationStatic-1.69.0.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/BoostConfigurationStatic-1.69.0.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -28,7 +28,7 @@
   set(BOOST_VERSION 1.69.0)
   set(BOOST_BCP_SUFFIX bcpdigest-1.5.6)
   set(BOOST_MD5 "579bccc0ea4d1a261c1d0c5e27446c3d")
-  set(BOOST_URL "https://orthanc.uclouvain.be/third-party-downloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
+  set(BOOST_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
   set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
 
   if (IS_DIRECTORY "${BOOST_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/CivetwebConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/CivetwebConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -27,14 +27,14 @@
   ## "civetweb-1.14-fixed.tar.gz" as follows:
   ##
   ##  $ cd /tmp
-  ##  $ wget https://orthanc.uclouvain.be/third-party-downloads/civetweb-1.14.tar.gz
+  ##  $ wget https://orthanc.uclouvain.be/downloads/third-party-downloads/civetweb-1.14.tar.gz
   ##  $ tar xvf civetweb-1.14.tar.gz
   ##  $ rm -rf civetweb-1.14/src/third_party/ civetweb-1.14/test/
   ##  $ tar cvfz civetweb-1.14-fixed.tar.gz civetweb-1.14
   ##
   
   set(CIVETWEB_SOURCES_DIR ${CMAKE_BINARY_DIR}/civetweb-1.14)
-  set(CIVETWEB_URL "https://orthanc.uclouvain.be/third-party-downloads/civetweb-1.14-fixed.tar.gz")
+  set(CIVETWEB_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/civetweb-1.14-fixed.tar.gz")
   set(CIVETWEB_MD5 "1f25d516b7a4e65d8b270d1cc399e0a9")
 
   if (IS_DIRECTORY "${CIVETWEB_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.0.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.0.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 SET(DCMTK_VERSION_NUMBER 360)
 SET(DCMTK_PACKAGE_VERSION "3.6.0")
 SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.0)
-SET(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.0.zip")
+SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.0.zip")
 SET(DCMTK_MD5 "219ad631b82031806147e4abbfba4fa4")
 
 if (IS_DIRECTORY "${DCMTK_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.2.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.2.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 SET(DCMTK_VERSION_NUMBER 362)
 SET(DCMTK_PACKAGE_VERSION "3.6.2")
 SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.2)
-SET(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.2.tar.gz")
+SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.2.tar.gz")
 SET(DCMTK_MD5 "d219a4152772985191c9b89d75302d12")
 
 macro(DCMTK_UNSET)
--- a/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.4.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.4.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 SET(DCMTK_VERSION_NUMBER 364)
 SET(DCMTK_PACKAGE_VERSION "3.6.4")
 SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.4)
-SET(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.4.tar.gz")
+SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.4.tar.gz")
 SET(DCMTK_MD5 "97597439a2ae7a39086066318db5f3bc")
 
 macro(DCMTK_UNSET)
--- a/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.5.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.5.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 SET(DCMTK_VERSION_NUMBER 365)
 SET(DCMTK_PACKAGE_VERSION "3.6.5")
 SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.5)
-SET(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.5.tar.gz")
+SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.5.tar.gz")
 SET(DCMTK_MD5 "e19707f64ee5695c496b9c1e48e39d07")
 
 macro(DCMTK_UNSET)
--- a/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.6.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.6.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 SET(DCMTK_VERSION_NUMBER 366)
 SET(DCMTK_PACKAGE_VERSION "3.6.6")
 SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.6)
-SET(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.6.tar.gz")
+SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.6.tar.gz")
 SET(DCMTK_MD5 "f815879d315b916366a9da71339c7575")
 
 macro(DCMTK_UNSET)
--- a/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.7.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.6.7.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 SET(DCMTK_VERSION_NUMBER 367)
 SET(DCMTK_PACKAGE_VERSION "3.6.7")
 SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.7)
-SET(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.7.tar.gz")
+SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.7.tar.gz")
 SET(DCMTK_MD5 "e4d519bb315ec3944f3f1d61df465cbd")
 
 macro(DCMTK_UNSET)
--- a/OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -168,21 +168,27 @@
       #
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "ae0e3fd609df")
         # DICOMweb 1.1 (framework pre-1.6.0)
+        set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
         set(ORTHANC_FRAMEWORK_MD5 "7e09e9b530a2f527854f0b782d7e0645")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "82652c5fc04f")
         # Stone Web viewer 1.0 (framework pre-1.8.1)
+        set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
         set(ORTHANC_FRAMEWORK_MD5 "d77331d68917e66a3f4f9b807bbdab7f")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "4a3ba4bf4ba7")
         # PostgreSQL 3.3 (framework pre-1.8.2)
+        set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
         set(ORTHANC_FRAMEWORK_MD5 "2d82bddf06f9cfe82095495cb3b8abde")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "23ad1b9c7800")
         # For "Toolbox::ReadJson()" and "Toolbox::Write{...}Json()" (pre-1.9.0)
+        set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
         set(ORTHANC_FRAMEWORK_MD5 "9af92080e57c60dd288eba46ce606c00")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "b2e08d83e21d")
         # WSI 1.1 (framework pre-1.10.0), to remove "-std=c++11"
+        set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
         set(ORTHANC_FRAMEWORK_MD5 "2eaa073cbb4b44ffba199ad93393b2b1")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "daf4807631c5")
         # DICOMweb 1.15 (framework pre-1.12.2)
+        set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
         set(ORTHANC_FRAMEWORK_MD5 "c644aff2817306b3207c98c92e43f35f")
       endif()
     endif()
@@ -320,7 +326,11 @@
   else()
     # Default case: Download from the official Web site
     set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz)
-    set(ORTHANC_FRAMEWORK_URL "https://orthanc.uclouvain.be/third-party-downloads/orthanc-framework/${ORTHANC_FRAMEMORK_FILENAME}")
+    if (ORTHANC_FRAMEWORK_PRE_RELEASE)
+      set(ORTHANC_FRAMEWORK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/orthanc-framework/${ORTHANC_FRAMEMORK_FILENAME}")
+    else()
+      set(ORTHANC_FRAMEWORK_URL "https://orthanc.uclouvain.be/downloads/sources/orthanc/${ORTHANC_FRAMEMORK_FILENAME}")
+    endif()
   endif()
 
   set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}")
--- a/OrthancFramework/Resources/CMake/GoogleTestConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/GoogleTestConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -50,7 +50,7 @@
 
 elseif (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_TEST)
   set(GOOGLE_TEST_SOURCES_DIR ${CMAKE_BINARY_DIR}/googletest-release-1.8.1)
-  set(GOOGLE_TEST_URL "https://orthanc.uclouvain.be/third-party-downloads/gtest-1.8.1.tar.gz")
+  set(GOOGLE_TEST_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/gtest-1.8.1.tar.gz")
   set(GOOGLE_TEST_MD5 "2e6fbeb6a91310a16efe181886c59596")
 
   DownloadPackage(${GOOGLE_TEST_MD5} ${GOOGLE_TEST_URL} "${GOOGLE_TEST_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/JsonCppConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/JsonCppConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -24,12 +24,12 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_JSONCPP)
   if (USE_LEGACY_JSONCPP)
     set(JSONCPP_SOURCES_DIR ${CMAKE_BINARY_DIR}/jsoncpp-0.10.7)
-    set(JSONCPP_URL "https://orthanc.uclouvain.be/third-party-downloads/jsoncpp-0.10.7.tar.gz")
+    set(JSONCPP_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/jsoncpp-0.10.7.tar.gz")
     set(JSONCPP_MD5 "3a8072ca6a1fa9cbaf7715ae625f134f")
     add_definitions(-DORTHANC_LEGACY_JSONCPP=1)
   else()
     set(JSONCPP_SOURCES_DIR ${CMAKE_BINARY_DIR}/jsoncpp-1.9.4)
-    set(JSONCPP_URL "https://orthanc.uclouvain.be/third-party-downloads/jsoncpp-1.9.4.tar.gz")
+    set(JSONCPP_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/jsoncpp-1.9.4.tar.gz")
     set(JSONCPP_MD5 "4757b26ec89798c5247fa638edfdc446")
     add_definitions(-DORTHANC_LEGACY_JSONCPP=0)
     set(JSONCPP_CXX11 ON)
--- a/OrthancFramework/Resources/CMake/LibCurlConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/LibCurlConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -21,7 +21,7 @@
 
 if (STATIC_BUILD OR NOT USE_SYSTEM_CURL)
   SET(CURL_SOURCES_DIR ${CMAKE_BINARY_DIR}/curl-7.77.0)
-  SET(CURL_URL "https://orthanc.uclouvain.be/third-party-downloads/curl-7.77.0.tar.gz")
+  SET(CURL_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/curl-7.77.0.tar.gz")
   SET(CURL_MD5 "478e8b06801d9d030609c9e6cf859229")
 
   if (IS_DIRECTORY "${CURL_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/LibIconvConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/LibIconvConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -23,7 +23,7 @@
 
 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBICONV)
   set(LIBICONV_SOURCES_DIR ${CMAKE_BINARY_DIR}/libiconv-1.15)
-  set(LIBICONV_URL "https://orthanc.uclouvain.be/third-party-downloads/libiconv-1.15.tar.gz")
+  set(LIBICONV_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/libiconv-1.15.tar.gz")
   set(LIBICONV_MD5 "ace8b5f2db42f7b3b3057585e80d9808")
 
   DownloadPackage(${LIBICONV_MD5} ${LIBICONV_URL} "${LIBICONV_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/LibJpegConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/LibJpegConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -23,7 +23,7 @@
   set(LIBJPEG_SOURCES_DIR ${CMAKE_BINARY_DIR}/jpeg-9c)
   DownloadPackage(
     "93c62597eeef81a84d988bccbda1e990"
-    "https://orthanc.uclouvain.be/third-party-downloads/jpegsrc.v9c.tar.gz"
+    "https://orthanc.uclouvain.be/downloads/third-party-downloads/jpegsrc.v9c.tar.gz"
     "${LIBJPEG_SOURCES_DIR}")
 
   include_directories(
--- a/OrthancFramework/Resources/CMake/LibP11Configuration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/LibP11Configuration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -25,7 +25,7 @@
   endif()
   
   SET(LIBP11_SOURCES_DIR ${CMAKE_BINARY_DIR}/libp11-0.4.0)
-  SET(LIBP11_URL "https://orthanc.uclouvain.be/third-party-downloads/libp11-0.4.0.tar.gz")
+  SET(LIBP11_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/libp11-0.4.0.tar.gz")
   SET(LIBP11_MD5 "00b3e41db5be840d822bda12f3ab2ca7")
  
   if (IS_DIRECTORY "${LIBP11_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/LibPngConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/LibPngConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -21,7 +21,7 @@
 
 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBPNG)
   SET(LIBPNG_SOURCES_DIR ${CMAKE_BINARY_DIR}/libpng-1.6.36)
-  SET(LIBPNG_URL "https://orthanc.uclouvain.be/third-party-downloads/libpng-1.6.36.tar.gz")
+  SET(LIBPNG_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/libpng-1.6.36.tar.gz")
   SET(LIBPNG_MD5 "65afdeaa05f5ec14e31d9276143012e9")
 
   DownloadPackage(${LIBPNG_MD5} ${LIBPNG_URL} "${LIBPNG_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/LuaConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/LuaConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_LUA)
   SET(LUA_SOURCES_DIR ${CMAKE_BINARY_DIR}/lua-5.3.5)
   SET(LUA_MD5 "4f4b4f323fd3514a68e0ab3da8ce3455")
-  SET(LUA_URL "https://orthanc.uclouvain.be/third-party-downloads/lua-5.3.5.tar.gz")
+  SET(LUA_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/lua-5.3.5.tar.gz")
 
   DownloadPackage(${LUA_MD5} ${LUA_URL} "${LUA_SOURCES_DIR}")
 
--- a/OrthancFramework/Resources/CMake/MongooseConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/MongooseConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -32,7 +32,7 @@
     # Use Mongoose 3.1
     DownloadPackage(
       "e718fc287b4eb1bd523be3fa00942bb0"
-      "https://orthanc.uclouvain.be/third-party-downloads/mongoose-3.1.tgz"
+      "https://orthanc.uclouvain.be/downloads/third-party-downloads/mongoose-3.1.tgz"
       "${MONGOOSE_SOURCES_DIR}")
     
     add_definitions(-DMONGOOSE_USE_CALLBACKS=0)
@@ -42,7 +42,7 @@
     # Use Mongoose 3.8
     DownloadPackage(
       "7e3296295072792cdc3c633f9404e0c3"
-      "https://orthanc.uclouvain.be/third-party-downloads/mongoose-3.8.tgz"
+      "https://orthanc.uclouvain.be/downloads/third-party-downloads/mongoose-3.8.tgz"
       "${MONGOOSE_SOURCES_DIR}")
     
     add_definitions(-DMONGOOSE_USE_CALLBACKS=1)
--- a/OrthancFramework/Resources/CMake/OpenSslConfigurationStatic-1.1.1.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/OpenSslConfigurationStatic-1.1.1.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -20,7 +20,7 @@
 
 
 SET(OPENSSL_SOURCES_DIR ${CMAKE_BINARY_DIR}/openssl-1.1.1k)
-SET(OPENSSL_URL "https://orthanc.uclouvain.be/third-party-downloads/openssl-1.1.1k.tar.gz")
+SET(OPENSSL_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/openssl-1.1.1k.tar.gz")
 SET(OPENSSL_MD5 "c4e7d95f782b08116afa27b30393dd27")
 
 if (IS_DIRECTORY "${OPENSSL_SOURCES_DIR}")
@@ -288,7 +288,7 @@
     # crashes with segmentation fault in function
     # "build_SYS_str_reasons()", that is called from
     # "OPENSSL_init_ssl()"
-    # https://bugs.orthanc-server.com/show_bug.cgi?id=193
+    # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=193
     -DOPENSSL_NO_ERR
     )
 
--- a/OrthancFramework/Resources/CMake/OpenSslConfigurationStatic-3.0.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/OpenSslConfigurationStatic-3.0.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -25,7 +25,7 @@
 set(OPENSSL_VERSION_PRE_RELEASE "")
 set(OPENSSL_VERSION_FULL "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_PATCH}${OPENSSL_VERSION_PRE_RELEASE}")
 SET(OPENSSL_SOURCES_DIR ${CMAKE_BINARY_DIR}/openssl-${OPENSSL_VERSION_FULL})
-SET(OPENSSL_URL "https://orthanc.uclouvain.be/third-party-downloads/openssl-${OPENSSL_VERSION_FULL}.tar.gz")
+SET(OPENSSL_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/openssl-${OPENSSL_VERSION_FULL}.tar.gz")
 SET(OPENSSL_MD5 "f6c520aa2206d4d1fa71ea30b5e9a56d")
 
 if (IS_DIRECTORY "${OPENSSL_SOURCES_DIR}")
@@ -393,7 +393,7 @@
     # crashes with segmentation fault in function
     # "build_SYS_str_reasons()", that is called from
     # "OPENSSL_init_ssl()"
-    # https://bugs.orthanc-server.com/show_bug.cgi?id=193
+    # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=193
     -DOPENSSL_NO_ERR
     )
 
--- a/OrthancFramework/Resources/CMake/PugixmlConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/PugixmlConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -22,7 +22,7 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_PUGIXML)
   set(PUGIXML_SOURCES_DIR ${CMAKE_BINARY_DIR}/pugixml-1.9)
   set(PUGIXML_MD5 "7286ee2ed11376b6b780ced19fae0b64")
-  set(PUGIXML_URL "https://orthanc.uclouvain.be/third-party-downloads/pugixml-1.9.tar.gz")
+  set(PUGIXML_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/pugixml-1.9.tar.gz")
 
   DownloadPackage(${PUGIXML_MD5} ${PUGIXML_URL} "${PUGIXML_SOURCES_DIR}")
 
--- a/OrthancFramework/Resources/CMake/SQLiteConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/SQLiteConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -38,7 +38,7 @@
 if (SQLITE_STATIC)
   SET(SQLITE_SOURCES_DIR ${CMAKE_BINARY_DIR}/sqlite-amalgamation-3270100)
   SET(SQLITE_MD5 "16717b26358ba81f0bfdac07addc77da")
-  SET(SQLITE_URL "https://orthanc.uclouvain.be/third-party-downloads/sqlite-amalgamation-3270100.zip")
+  SET(SQLITE_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/sqlite-amalgamation-3270100.zip")
 
   set(ORTHANC_SQLITE_VERSION 3027001)
 
--- a/OrthancFramework/Resources/CMake/UuidConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/UuidConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -23,7 +23,7 @@
 
   if (STATIC_BUILD OR NOT USE_SYSTEM_UUID)
     SET(E2FSPROGS_SOURCES_DIR ${CMAKE_BINARY_DIR}/e2fsprogs-1.44.5)
-    SET(E2FSPROGS_URL "https://orthanc.uclouvain.be/third-party-downloads/e2fsprogs-1.44.5.tar.gz")
+    SET(E2FSPROGS_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/e2fsprogs-1.44.5.tar.gz")
     SET(E2FSPROGS_MD5 "8d78b11d04d26c0b2dd149529441fa80")
 
     if (IS_DIRECTORY "${E2FSPROGS_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/WebAssembly/ArithmeticTests/CMakeLists.txt	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/WebAssembly/ArithmeticTests/CMakeLists.txt	Wed Nov 22 09:39:35 2023 +0100
@@ -51,7 +51,7 @@
 include(${CMAKE_SOURCE_DIR}/../../DownloadPackage.cmake)
 
 set(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.2)
-set(DCMTK_URL "https://orthanc.uclouvain.be/third-party-downloads/dcmtk-3.6.2.tar.gz")
+set(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.6.2.tar.gz")
 set(DCMTK_MD5 "d219a4152772985191c9b89d75302d12")
 
 if (IS_DIRECTORY "${DCMTK_SOURCES_DIR}")
--- a/OrthancFramework/Resources/CMake/ZlibConfiguration.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/CMake/ZlibConfiguration.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -21,7 +21,7 @@
 
 if (STATIC_BUILD OR NOT USE_SYSTEM_ZLIB)
   SET(ZLIB_SOURCES_DIR ${CMAKE_BINARY_DIR}/zlib-1.2.11)
-  SET(ZLIB_URL "https://orthanc.uclouvain.be/third-party-downloads/zlib-1.2.11.tar.gz")
+  SET(ZLIB_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/zlib-1.2.11.tar.gz")
   SET(ZLIB_MD5 "1c9f62f0778697a09d36121ead88e08e")
 
   DownloadPackage(${ZLIB_MD5} ${ZLIB_URL} "${ZLIB_SOURCES_DIR}")
--- a/OrthancFramework/Resources/Graveyard/FromDcmtkBridge.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/Graveyard/FromDcmtkBridge.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -29,7 +29,7 @@
     {
       // This raises BitBucket issue 140 (Modifying private tags with
       // REST API changes VR from LO to UN)
-      // https://bugs.orthanc-server.com/show_bug.cgi?id=140
+      // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=140
       LOG(WARNING) << "You are using DCMTK < 3.6.1: All the private tags "
         "are considered as having a binary value representation";
       return new DcmOtherByteOtherWord(key);
--- a/OrthancFramework/Resources/ProtocolBuffers/ProtobufLibrary.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/ProtocolBuffers/ProtobufLibrary.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -29,7 +29,7 @@
 
 DownloadPackage(
   "ca0d9b243e649d398a6b419acd35103a"
-  "http://orthanc.uclouvain.be/third-party-downloads/protobuf-cpp-3.5.1.tar.gz"
+  "https://orthanc.uclouvain.be/downloads/third-party-downloads/protobuf-cpp-3.5.1.tar.gz"
   "${CMAKE_CURRENT_BINARY_DIR}/protobuf-3.5.1")
 
 if (FirstRun)
--- a/OrthancFramework/Resources/ThirdParty/icu/Version.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/ThirdParty/icu/Version.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -32,7 +32,7 @@
   set(LIBICU_SUFFIX "l")
 endif()
 
-set(LIBICU_BASE_URL "https://orthanc.uclouvain.be/third-party-downloads")
+set(LIBICU_BASE_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads")
 
 if (USE_LEGACY_LIBICU)
   # This is the latest version of icu that compiles without C++11
--- a/OrthancFramework/Resources/WindowsResources.rc	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Resources/WindowsResources.rc	Wed Nov 22 09:39:35 2023 +0100
@@ -16,7 +16,7 @@
             VALUE "FileVersion", "${VERSION_MAJOR}.${VERSION_MINOR}.0.${VERSION_PATCH}"
             VALUE "InternalName", "${PRODUCT}"
             VALUE "LegalCopyright", "(c) 2012-${YEAR}, Sebastien Jodogne, University Hospital of Liege, Osimis S.A., and ICTEAM UCLouvain"
-            VALUE "LegalTrademarks", "Licensing information is available at http://www.orthanc-server.com/"
+            VALUE "LegalTrademarks", "Licensing information is available at https://orthanc.uclouvain.be/book/faq/licensing.html"
             VALUE "OriginalFilename", "${FILENAME}"
             VALUE "ProductName", "${PRODUCT}"
             VALUE "ProductVersion", "${VERSION_MAJOR}.${VERSION_MINOR}"
--- a/OrthancFramework/Sources/DicomFormat/DicomImageInformation.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomFormat/DicomImageInformation.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -436,7 +436,7 @@
   {
     /**
      * This approach is validated in "Tests/GuessPixelDataVR.py":
-     * https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/GuessPixelDataVR.py
+     * https://orthanc.uclouvain.be/hg/orthanc-tests/file/default/Tests/GuessPixelDataVR.py
      **/
 
     if (transferSyntax == DicomTransferSyntax_LittleEndianExplicit ||
--- a/OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -189,7 +189,7 @@
     // same fix is required for Agfa Impax. This was generalized for
     // generic manufacturer since it seems to affect PhilipsADW,
     // GEWAServer as well:
-    // https://bugs.orthanc-server.com/show_bug.cgi?id=31
+    // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=31
 
     switch (manufacturer)
     {
--- a/OrthancFramework/Sources/DicomNetworking/Internals/CommandDispatcher.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomNetworking/Internals/CommandDispatcher.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -481,7 +481,7 @@
 #if DCMTK_VERSION_NUMBER >= 362
           // The global variable "numberOfDcmAllStorageSOPClassUIDs" is
           // only published if DCMTK >= 3.6.2:
-          // https://bugs.orthanc-server.com/show_bug.cgi?id=137
+          // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=137
           assert(static_cast<int>(count) == numberOfDcmAllStorageSOPClassUIDs);
 #endif
       
--- a/OrthancFramework/Sources/DicomNetworking/Internals/MoveScp.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomNetworking/Internals/MoveScp.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -86,7 +86,7 @@
 /**
  * Macro specifying whether to apply the patch suggested in issue 66:
  * "Orthanc responses C-MOVE with zero Move Originator Message ID"
- * https://bugs.orthanc-server.com/show_bug.cgi?id=66
+ * https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=66
  **/
 
 #define APPLY_FIX_ISSUE_66   1
--- a/OrthancFramework/Sources/DicomParsing/DicomModification.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomParsing/DicomModification.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -317,7 +317,7 @@
                * data sets including:
                * https://wiki.cancerimagingarchive.net/display/Public/Lung+CT+Segmentation+Challenge+2017)
                * Tested in "test_anonymize_relationships_5". Introduced
-               * in: https://hg.orthanc-server.com/orthanc/rev/3513
+               * in: https://orthanc.uclouvain.be/hg/orthanc/rev/3513
                **/
               newValue = that_.MapDicomIdentifier(value, ResourceType_Study);
             }
@@ -724,7 +724,7 @@
      * Values below come from the hardcoded UID of Orthanc 1.9.3
      * in DicomModification::RelationshipsVisitor::VisitString() and
      * DicomModification::RelationshipsVisitor::RemoveRelationships()
-     * https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.3/OrthancFramework/Sources/DicomParsing/DicomModification.cpp#l117
+     * https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.9.3/OrthancFramework/Sources/DicomParsing/DicomModification.cpp#l117
      **/
     uids_.clear();
 
@@ -1620,7 +1620,7 @@
        * 1.5.0 and 1.6.1. This compatibility was broken between 1.7.0
        * and 1.9.3: Indeed, an exception was thrown in "ReadBoolean()"
        * if "KEEP_SOP_INSTANCE_UID" was absent, because of changeset:
-       * https://hg.orthanc-server.com/orthanc/rev/3860
+       * https://orthanc.uclouvain.be/hg/orthanc/rev/3860
        **/
       keepSopInstanceUid_ = false;
     }
--- a/OrthancFramework/Sources/DicomParsing/DicomWebJsonVisitor.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomParsing/DicomWebJsonVisitor.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -436,7 +436,7 @@
         /**
          * The test on "size > 0" is new in Orthanc 1.9.3, and fixes
          * issue #195 (No need for BulkDataURI when Data Element is
-         * empty): https://bugs.orthanc-server.com/show_bug.cgi?id=195
+         * empty): https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=195
          **/
         if (size > 0 ||
             tag == DICOM_TAG_PIXEL_DATA ||
--- a/OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -1829,7 +1829,7 @@
     {
       // This solves issue 140 (Modifying private tags with REST API
       // changes VR from LO to UN)
-      // https://bugs.orthanc-server.com/show_bug.cgi?id=140
+      // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=140
       LOG(WARNING) << "Private creator should not be empty while creating a private tag: " << tag.Format();
     }
     
@@ -2591,7 +2591,7 @@
     {
       // So far we assume that it's alway US (as a best guess: https://forum.dcmtk.org/viewtopic.php?t=932)
       // However, e.g. in a LUTDescriptor (3 values), the middle value can be a SS depending on other tag values while first and third value are always US.
-      // This patch, although not perfect fixes  https://bugs.orthanc-server.com/show_bug.cgi?id=214.
+      // This patch, although not perfect fixes  https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=214.
       // It might need some rework once we encounter a LUTDescriptor with a SS value. ref: https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.11.2.html#sect_C.11.2.1.1
       evr = EVR_US;  
     }
--- a/OrthancFramework/Sources/DicomParsing/ParsedDicomFile.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/DicomParsing/ParsedDicomFile.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -921,7 +921,7 @@
        * equals the empty string, then proceed. In Orthanc <= 1.5.6,
        * an exception "Bad file format" was generated.
        * https://groups.google.com/d/msg/orthanc-users/aphG_h1AHVg/rfOTtTPTAgAJ
-       * https://hg.orthanc-server.com/orthanc/rev/4c45e018bd3de3cfa21d6efc6734673aaaee4435
+       * https://orthanc.uclouvain.be/hg/orthanc/rev/4c45e018bd3de3cfa21d6efc6734673aaaee4435
        **/
       patientId.clear();
     }        
--- a/OrthancFramework/Sources/Endianness.h	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/Endianness.h	Wed Nov 22 09:39:35 2023 +0100
@@ -144,7 +144,7 @@
    * This alternative implementation only hid an underlying problem
    * with pointer alignment on some architectures, and was thus
    * reverted. Check out issue #99:
-   * https://bugs.orthanc-server.com/show_bug.cgi?id=99
+   * https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=99
    **/
   return (a << 8) | (a >> 8);
 }
--- a/OrthancFramework/Sources/HttpServer/HttpOutput.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/HttpServer/HttpOutput.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -555,7 +555,7 @@
      * Full history is available at the following locations:
      * - In changeset 2248:69b0f4e8a49b:
      *   # hg history -v -r 2248
-     * - https://bugs.orthanc-server.com/show_bug.cgi?id=54
+     * - https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=54
      * - https://groups.google.com/d/msg/orthanc-users/65zhIM5xbKI/TU5Q1_LhAwAJ
      **/
     std::string tmp;
@@ -577,7 +577,7 @@
      * within the encapsulations, and must be no longer than 70
      * characters, not counting the two leading hyphens."
      * https://tools.ietf.org/html/rfc1521
-     * https://bugs.orthanc-server.com/show_bug.cgi?id=165
+     * https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=165
      **/
     if (boundary.size() != 36 + 1 + 36)  // one UUID contains 36 characters
     {
--- a/OrthancFramework/Sources/HttpServer/MultipartStreamReader.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/HttpServer/MultipartStreamReader.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -384,7 +384,7 @@
         {
           boundary = Toolbox::StripSpaces(items[1]);
 
-          // https://bugs.orthanc-server.com/show_bug.cgi?id=190
+          // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=190
           RemoveSurroundingQuotes(boundary);
           
           valid = !boundary.empty();
@@ -394,7 +394,7 @@
           subType = Toolbox::StripSpaces(items[1]);
           Toolbox::ToLowerCase(subType);
 
-          // https://bugs.orthanc-server.com/show_bug.cgi?id=54
+          // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=54
           // https://tools.ietf.org/html/rfc7231#section-3.1.1.1
           RemoveSurroundingQuotes(subType);
         }
--- a/OrthancFramework/Sources/Images/PamReader.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/Images/PamReader.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -242,7 +242,7 @@
            * in Orthanc <= 1.8.0 (i.e. make a "memcpy()" to a local
            * uint16_t variable) doesn't seem work for WebAssembly. We
            * thus use a plain old C implementation. Check out issue
-           * #99: https://bugs.orthanc-server.com/show_bug.cgi?id=99
+           * #99: https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=99
            *
            * Here is the crash log on WebAssembly (2019-08-05):
            * 
--- a/OrthancFramework/Sources/Images/PamWriter.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/Images/PamWriter.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -130,7 +130,7 @@
            * in Orthanc <= 1.8.0 (i.e. make a "memcpy()" to a local
            * uint16_t variable) doesn't seem work for WebAssembly. We
            * thus use a plain old C implementation. Check out issue
-           * #99: https://bugs.orthanc-server.com/show_bug.cgi?id=99
+           * #99: https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=99
            **/
           const uint8_t* a = reinterpret_cast<const uint8_t*>(p);
           uint8_t* b = reinterpret_cast<uint8_t*>(q);
--- a/OrthancFramework/Sources/SystemToolbox.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/Sources/SystemToolbox.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -520,7 +520,7 @@
   {
     // This is an adapted version of the patch proposed in issue #64
     // without an explicit call to "malloc()" to prevent memory leak
-    // https://bugs.orthanc-server.com/show_bug.cgi?id=64
+    // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=64
     // https://stackoverflow.com/q/31494901/881731
 
     const int mib[4] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV };
--- a/OrthancFramework/UnitTestsSources/RestApiTests.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancFramework/UnitTestsSources/RestApiTests.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -528,7 +528,7 @@
   }
 
   // Below are the tests from issue 216:
-  // https://bugs.orthanc-server.com/show_bug.cgi?id=216
+  // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=216
 
   {
     HttpContentNegociation d;
@@ -1113,8 +1113,8 @@
 
 TEST(MultipartStreamReader, Issue190)
 {
-  // https://bugs.orthanc-server.com/show_bug.cgi?id=190
-  // https://hg.orthanc-server.com/orthanc-dicomweb/rev/6dc2f79b5579
+  // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=190
+  // https://orthanc.uclouvain.be/hg/orthanc-dicomweb/rev/6dc2f79b5579
 
   std::map<std::string, std::string> headers;
   headers["content-type"] = "multipart/related; type=application/dicom; boundary=0f3cf5c0-70e0-41ef-baef-c6f9f65ec3e1";
@@ -1323,7 +1323,7 @@
 
 TEST(HttpClient, DISABLED_Issue156_Slow)
 {
-  // https://bugs.orthanc-server.com/show_bug.cgi?id=156
+  // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=156
   
   TotoServer handler;
   HttpServer server;
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -4328,7 +4328,7 @@
     {
       // Fix issue 168 (Plugins can't read private tags from the
       // configuration file)
-      // https://bugs.orthanc-server.com/show_bug.cgi?id=168
+      // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=168
       std::string privateCreator;
 
       if (privateCreatorC == NULL)
@@ -4632,7 +4632,7 @@
     {
       // Fix issue 168 (Plugins can't read private tags from the
       // configuration file)
-      // https://bugs.orthanc-server.com/show_bug.cgi?id=168
+      // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=168
       std::string privateCreator;
       {
         OrthancConfiguration::ReaderLock lock;
--- a/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h	Wed Nov 22 09:39:35 2023 +0100
@@ -175,7 +175,7 @@
 /**
  * For Microsoft Visual Studio, a compatibility "stdint.h" can be
  * downloaded at the following URL:
- * https://hg.orthanc-server.com/orthanc/raw-file/tip/Resources/ThirdParty/VisualStudio/stdint.h
+ * https://orthanc.uclouvain.be/hg/orthanc/raw-file/default/OrthancFramework/Resources/ThirdParty/VisualStudio/stdint.h
  **/
 #include <stdint.h>
 
--- a/OrthancServer/Plugins/Samples/ConnectivityChecks/JavaScriptLibraries.cmake	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Plugins/Samples/ConnectivityChecks/JavaScriptLibraries.cmake	Wed Nov 22 09:39:35 2023 +0100
@@ -18,7 +18,7 @@
 # along with this program. If not, see <http://www.gnu.org/licenses/>.
 
 
-set(BASE_URL "https://orthanc.uclouvain.be/third-party-downloads")
+set(BASE_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads")
 
 DownloadPackage(
   "da0189f7c33bf9f652ea65401e0a3dc9"
--- a/OrthancServer/Plugins/Samples/ModalityWorklists/README	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Plugins/Samples/ModalityWorklists/README	Wed Nov 22 09:39:35 2023 +0100
@@ -8,4 +8,4 @@
 build process of Orthanc.
 
 Documentation is available in the Orthanc Book:
-http://book.orthanc-server.com/plugins/worklists-plugin.html
+https://orthanc.uclouvain.be/book/plugins/worklists-plugin.html
--- a/OrthancServer/Plugins/Samples/ServeFolders/README	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Plugins/Samples/ServeFolders/README	Wed Nov 22 09:39:35 2023 +0100
@@ -8,4 +8,4 @@
 build process of Orthanc.
 
 Documentation is available in the Orthanc Book:
-http://book.orthanc-server.com/plugins/serve-folders.html
+https://orthanc.uclouvain.be/book/plugins/serve-folders.html
--- a/OrthancServer/Resources/Configuration.json	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Resources/Configuration.json	Wed Nov 22 09:39:35 2023 +0100
@@ -907,7 +907,7 @@
 
   // Extra Main Dicom tags that are stored in DB together with all default
   // Main Dicom tags that are already stored.
-  // see https://book.orthanc-server.com/faq/main-dicom-tags.html 
+  // see https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html 
   // (new in Orthanc 1.11.0)
   // Sequences tags are not supported.
   /**
@@ -932,7 +932,7 @@
 
   // Enables/disables warnings in the logs.
   // "true" enables a warning.  All warnings are enabled by default
-  // see https://book.orthanc-server.com/faq/main-dicom-tags.html#warnings
+  // see https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html#warnings
   // (new in Orthanc 1.11.0)
   "Warnings" : {
     // A "RequestedTags" has been read from storage which is slower than
--- a/OrthancServer/Resources/Samples/Python/DicomizeImage.py	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Resources/Samples/Python/DicomizeImage.py	Wed Nov 22 09:39:35 2023 +0100
@@ -63,7 +63,7 @@
     # Case 1: Attach the new DICOM image as a new series in an
     # existing study. In this case, "PARENT_STUDY" indicates the
     # Orthanc identifier of the parent study:
-    # https://book.orthanc-server.com/faq/orthanc-ids.html
+    # https://orthanc.uclouvain.be/book/faq/orthanc-ids.html
     PARENT_STUDY = '66c8e41e-ac3a9029-0b85e42a-8195ee0a-92c2e62e'
 
 else:
--- a/OrthancServer/Resources/Samples/README.txt	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Resources/Samples/README.txt	Wed Nov 22 09:39:35 2023 +0100
@@ -4,4 +4,4 @@
 
 The integration tests of Orthanc provide many samples about the
 features of the REST API of Orthanc:
-https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py
+https://orthanc.uclouvain.be/hg/orthanc-tests/file/default/Tests/Tests.py
--- a/OrthancServer/Sources/OrthancFindRequestHandler.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancFindRequestHandler.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -173,7 +173,7 @@
   {
     // Whatever the manufacturer, remove the GenericGroupLength tags
     // http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_7.2.html
-    // https://bugs.orthanc-server.com/show_bug.cgi?id=31
+    // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=31
     if (tag.GetElement() == 0x0000)
     {
       return false;
--- a/OrthancServer/Sources/OrthancInitialization.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancInitialization.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -378,7 +378,7 @@
 
 #if HAVE_MALLOPT == 1
     // New in Orthanc 1.8.2
-    // https://book.orthanc-server.com/faq/scalability.html#controlling-memory-usage
+    // https://orthanc.uclouvain.be/book/faq/scalability.html#controlling-memory-usage
     unsigned int maxArena = lock.GetConfiguration().GetUnsignedIntegerParameter(MALLOC_ARENA_MAX, 5);
     if (maxArena != 0)
     {
--- a/OrthancServer/Sources/OrthancMoveRequestHandler.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancMoveRequestHandler.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -265,7 +265,7 @@
       /**
        * This tokenization fixes issue 154 ("Matching against list of
        * UID-s by C-MOVE").
-       * https://bugs.orthanc-server.com/show_bug.cgi?id=154
+       * https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=154
        **/
 
       std::vector<std::string> tokens;
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestAnonymizeModify.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestAnonymizeModify.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -85,7 +85,7 @@
     call.GetDocumentation()
       .SetRequestField(TRANSCODE, RestApiCallDocumentation::Type_String,
                        "Transcode the DICOM instances to the provided DICOM transfer syntax: "
-                       "https://book.orthanc-server.com/faq/transcoding.html", false)
+                       "https://orthanc.uclouvain.be/book/faq/transcoding.html", false)
       .SetRequestField(FORCE, RestApiCallDocumentation::Type_Boolean,
                        "Allow the modification of tags related to DICOM identifiers, at the risk of "
                        "breaking the DICOM model of the real world", false)
@@ -113,7 +113,7 @@
     call.GetDocumentation()
       .SetRequestField(TRANSCODE, RestApiCallDocumentation::Type_String,
                        "Transcode the DICOM instances to the provided DICOM transfer syntax: "
-                       "https://book.orthanc-server.com/faq/transcoding.html", false)
+                       "https://orthanc.uclouvain.be/book/faq/transcoding.html", false)
       .SetRequestField(FORCE, RestApiCallDocumentation::Type_Boolean,
                        "Allow the modification of tags related to DICOM identifiers, at the risk of "
                        "breaking the DICOM model of the real world", false)
@@ -265,7 +265,7 @@
         .SetTag("Instances")
         .SetSummary("Modify instance")
         .SetDescription("Download a modified version of the DICOM instance whose Orthanc identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/anonymization.html#modification-of-a-single-instance")
+                        "https://orthanc.uclouvain.be/book/users/anonymization.html#modification-of-a-single-instance")
         .SetUriArgument("id", "Orthanc identifier of the instance of interest")
         .AddAnswerType(MimeType_Dicom, "The modified DICOM instance");
       return;
@@ -310,7 +310,7 @@
         .SetTag("Instances")
         .SetSummary("Anonymize instance")
         .SetDescription("Download an anonymized version of the DICOM instance whose Orthanc identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/anonymization.html#anonymization-of-a-single-instance")
+                        "https://orthanc.uclouvain.be/book/users/anonymization.html#anonymization-of-a-single-instance")
         .SetUriArgument("id", "Orthanc identifier of the instance of interest")
         .AddAnswerType(MimeType_Dicom, "The anonymized DICOM instance");
       return;
@@ -441,7 +441,7 @@
         .SetDescription("Start a job that will modify all the DICOM instances within the " + r +
                         " whose identifier is provided in the URL. The modified DICOM instances will be "
                         "stored into a brand new " + r + ", whose Orthanc identifiers will be returned by the job. "
-                        "https://book.orthanc-server.com/users/anonymization.html#modification-of-studies-or-series")
+                        "https://orthanc.uclouvain.be/book/users/anonymization.html#modification-of-studies-or-series")
         .SetUriArgument("id", "Orthanc identifier of the " + r + " of interest");
       return;
     }
@@ -514,7 +514,7 @@
         .SetDescription("Start a job that will anonymize all the DICOM instances within the " + r +
                         " whose identifier is provided in the URL. The modified DICOM instances will be "
                         "stored into a brand new " + r + ", whose Orthanc identifiers will be returned by the job. "
-                        "https://book.orthanc-server.com/users/anonymization.html#anonymization-of-patients-studies-or-series")
+                        "https://orthanc.uclouvain.be/book/users/anonymization.html#anonymization-of-patients-studies-or-series")
         .SetUriArgument("id", "Orthanc identifier of the " + r + " of interest");
       return;
     }
@@ -1059,7 +1059,7 @@
         .SetDescription("Start a new job so as to split the DICOM study whose Orthanc identifier is provided in the URL, "
                         "by taking some of its children series or instances out of it and putting them into a brand new study "
                         "(this new study is created by setting the `StudyInstanceUID` tag to a random identifier): "
-                        "https://book.orthanc-server.com/users/anonymization.html#splitting")
+                        "https://orthanc.uclouvain.be/book/users/anonymization.html#splitting")
         .SetUriArgument("id", "Orthanc identifier of the study of interest")
         .SetRequestField(SERIES, RestApiCallDocumentation::Type_JsonListOfStrings,
                          "The list of series to be separated from the parent study. "
@@ -1185,7 +1185,7 @@
         .SetTag("Studies")
         .SetSummary("Merge study")
         .SetDescription("Start a new job so as to move some DICOM resources into the DICOM study whose Orthanc identifier "
-                        "is provided in the URL: https://book.orthanc-server.com/users/anonymization.html#merging")
+                        "is provided in the URL: https://orthanc.uclouvain.be/book/users/anonymization.html#merging")
         .SetUriArgument("id", "Orthanc identifier of the study of interest")
         .SetRequestField(RESOURCES, RestApiCallDocumentation::Type_JsonListOfStrings,
                          "The list of DICOM resources (studies, series, and/or instances) to be merged "
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestArchive.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestArchive.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -492,12 +492,12 @@
                        "the archive in background.", false)
       .SetRequestField(KEY_TRANSCODE, RestApiCallDocumentation::Type_String,
                        "If present, the DICOM files in the archive will be transcoded to the provided "
-                       "transfer syntax: https://book.orthanc-server.com/faq/transcoding.html", false)
+                       "transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html", false)
       .SetRequestField("Priority", RestApiCallDocumentation::Type_Number,
                        "In asynchronous mode, the priority of the job. The lower the value, the higher the priority.", false)
       .AddAnswerType(MimeType_Zip, "In synchronous mode, the ZIP file containing the archive")
       .AddAnswerType(MimeType_Json, "In asynchronous mode, information about the job that has been submitted to "
-                     "generate the archive: https://book.orthanc-server.com/users/advanced-rest.html#jobs")
+                     "generate the archive: https://orthanc.uclouvain.be/book/users/advanced-rest.html#jobs")
       .SetAnswerField("ID", RestApiCallDocumentation::Type_String, "Identifier of the job")
       .SetAnswerField("Path", RestApiCallDocumentation::Type_String, "Path to access the job in the REST API");
 
@@ -586,7 +586,7 @@
                             "(including file extension)", false)
         .SetHttpGetArgument(TRANSCODE, RestApiCallDocumentation::Type_String,
                             "If present, the DICOM files in the archive will be transcoded to the provided "
-                            "transfer syntax: https://book.orthanc-server.com/faq/transcoding.html", false)
+                            "transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html", false)
         .AddAnswerType(MimeType_Zip, "ZIP file containing the archive");
       if (IS_MEDIA)
       {
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestChanges.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestChanges.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -73,7 +73,7 @@
                         "Whether the last reported change is the last of the full history")
         .SetAnswerField("Last", RestApiCallDocumentation::Type_Number,
                         "The index of the last reported change, can be used for the `since` argument in subsequent calls to this route")
-        .SetHttpGetSample("https://demo.orthanc-server.com/changes?since=0&limit=2", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/changes?since=0&limit=2", true);
       return;
     }
     
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestModalities.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestModalities.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -213,7 +213,7 @@
         .SetTag("Networking")
         .SetSummary("Trigger C-ECHO SCU")
         .SetDescription("Trigger C-ECHO SCU command against the DICOM modality whose identifier is provided in URL: "
-                        "https://book.orthanc-server.com/users/rest.html#performing-c-echo")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-c-echo")
         .SetUriArgument("id", "Identifier of the modality of interest");
       return;
     }
@@ -657,7 +657,7 @@
         .SetTag("Networking")
         .SetSummary("Trigger C-FIND SCU")
         .SetDescription("Trigger C-FIND SCU command against the DICOM modality whose identifier is provided in URL: "
-                        "https://book.orthanc-server.com/users/rest.html#performing-query-retrieve-c-find-and-find-with-rest")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-query-retrieve-c-find-and-find-with-rest")
         .SetUriArgument("id", "Identifier of the modality of interest")
         .SetRequestField(KEY_QUERY, RestApiCallDocumentation::Type_JsonObject,
                          "Associative array containing the filter on the values of the DICOM tags", true)
@@ -760,7 +760,7 @@
         .SetDescription("List the identifiers of all the query/retrieve operations on DICOM modalities, "
                         "as initiated by calls to `/modalities/{id}/query`. The length of this list is bounded "
                         "by the `QueryRetrieveSize` configuration option of Orthanc. "
-                        "https://book.orthanc-server.com/users/rest.html#performing-query-retrieve-c-find-and-find-with-rest")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-query-retrieve-c-find-and-find-with-rest")
         .AddAnswerType(MimeType_Json, "JSON array containing the identifiers");
       return;
     }
@@ -997,7 +997,7 @@
         .SetSummary("Retrieve one answer")
         .SetDescription("Start a C-MOVE SCU command as a job, in order to retrieve one answer associated with the "
                         "query/retrieve operation whose identifiers are provided in the URL: "
-                        "https://book.orthanc-server.com/users/rest.html#performing-retrieve-c-move")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-retrieve-c-move")
         .SetUriArgument("index", "Index of the answer");
       return;
     }
@@ -1016,7 +1016,7 @@
         .SetSummary("Retrieve all answers")
         .SetDescription("Start a C-MOVE SCU command as a job, in order to retrieve all the answers associated with the "
                         "query/retrieve operation whose identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/rest.html#performing-retrieve-c-move");
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-retrieve-c-move");
       return;
     }
 
@@ -1417,7 +1417,7 @@
         .SetSummary("Trigger C-STORE SCU")
         .SetDescription("Start a C-STORE SCU command as a job, in order to send DICOM resources stored locally "
                         "to some remote DICOM modality whose identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/rest.html#rest-store-scu")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#rest-store-scu")
         .AddRequestType(MimeType_PlainText, "The Orthanc identifier of one resource to be sent")
         .SetRequestField(KEY_RESOURCES, RestApiCallDocumentation::Type_JsonListOfStrings,
                          "List of the Orthanc identifiers of all the DICOM resources to be sent", true)
@@ -1439,7 +1439,7 @@
                          "Move originator ID that is used for this commands, in order to fake a C-MOVE SCU", false)
         .SetRequestField(KEY_STORAGE_COMMITMENT, RestApiCallDocumentation::Type_Boolean,
                          "Whether to chain C-STORE with DICOM storage commitment to validate the success of the transmission: "
-                         "https://book.orthanc-server.com/users/storage-commitment.html#chaining-c-store-with-storage-commitment", false)
+                         "https://orthanc.uclouvain.be/book/users/storage-commitment.html#chaining-c-store-with-storage-commitment", false)
         .SetRequestField(KEY_TIMEOUT, RestApiCallDocumentation::Type_Number,
                          "Timeout for the C-STORE command, in seconds", false)
         .SetUriArgument("id", "Identifier of the modality of interest");
@@ -1544,7 +1544,7 @@
         .SetSummary("Trigger C-MOVE SCU")
         .SetDescription("Start a C-MOVE SCU command as a job, in order to drive the execution of a sequence of "
                         "C-STORE commands by some remote DICOM modality whose identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/rest.html#performing-c-move")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-c-move")
         .SetRequestField(KEY_RESOURCES, RestApiCallDocumentation::Type_JsonListOfObjects,
                          "List of queries identifying all the DICOM resources to be sent", true)
         .SetRequestField(KEY_LEVEL, RestApiCallDocumentation::Type_String,
@@ -1716,7 +1716,7 @@
         .SetTag("Networking")
         .SetSummary("Send to Orthanc peer")
         .SetDescription("Send DICOM resources stored locally to some remote Orthanc peer whose identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/rest.html#sending-one-resource")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#sending-one-resource")
         .AddRequestType(MimeType_PlainText, "The Orthanc identifier of one resource to be sent")
         .SetRequestField(KEY_RESOURCES, RestApiCallDocumentation::Type_JsonListOfStrings,
                          "List of the Orthanc identifiers of all the DICOM resources to be sent", true)
@@ -2234,7 +2234,7 @@
         .SetTag("Networking")
         .SetSummary("Trigger storage commitment request")
         .SetDescription("Trigger a storage commitment request to some remote DICOM modality whose identifier is provided "
-                        "in the URL: https://book.orthanc-server.com/users/storage-commitment.html#storage-commitment-scu")
+                        "in the URL: https://orthanc.uclouvain.be/book/users/storage-commitment.html#storage-commitment-scu")
         .SetRequestField(ORTHANC_RESOURCES, RestApiCallDocumentation::Type_JsonListOfStrings,
                          "List of the Orthanc identifiers of the DICOM resources to be checked by storage commitment", true)
         .SetRequestField(DICOM_INSTANCES, RestApiCallDocumentation::Type_JsonListOfObjects,
@@ -2423,7 +2423,7 @@
         .SetTag("Networking")
         .SetSummary("Get storage commitment report")
         .SetDescription("Get the storage commitment report whose identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/storage-commitment.html#storage-commitment-scu")
+                        "https://orthanc.uclouvain.be/book/users/storage-commitment.html#storage-commitment-scu")
         .SetAnswerField("Status", RestApiCallDocumentation::Type_String,
                         "Can be `Success`, `Failure`, or `Pending` (the latter means that no report has been received yet)")
         .SetAnswerField("RemoteAET", RestApiCallDocumentation::Type_String,
@@ -2471,7 +2471,7 @@
         .SetDescription("Remove out of Orthanc, the DICOM instances that have been reported to have been properly "
                         "received the storage commitment report whose identifier is provided in the URL. This is "
                         "only possible if the `Status` of the storage commitment report is `Success`. "
-                        "https://book.orthanc-server.com/users/storage-commitment.html#removing-the-instances")
+                        "https://orthanc.uclouvain.be/book/users/storage-commitment.html#removing-the-instances")
         .SetUriArgument("id", "Identifier of the storage commitment report");
       return;
     }
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -67,19 +67,19 @@
     switch (type)
     {
       case Orthanc::ResourceType_Instance:
-        return "https://demo.orthanc-server.com/instances/d94d9a03-3003b047-a4affc69-322313b2-680530a2";
+        return "https://orthanc.uclouvain.be/demo/instances/6582b1c0-292ad5ab-ba0f088f-f7a1766f-9a29a54f";
         break;
         
       case Orthanc::ResourceType_Series:
-        return "https://demo.orthanc-server.com/series/37836232-d13a2350-fa1dedc5-962b31aa-010f8e52";
+        return "https://orthanc.uclouvain.be/demo/series/37836232-d13a2350-fa1dedc5-962b31aa-010f8e52";
         break;
         
       case Orthanc::ResourceType_Study:
-        return "https://demo.orthanc-server.com/studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988";
+        return "https://orthanc.uclouvain.be/demo/studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988";
         break;
         
       case Orthanc::ResourceType_Patient:
-        return "https://demo.orthanc-server.com/patients/46e6332c-677825b6-202fcf7c-f787bc5f-7b07c382";
+        return "https://orthanc.uclouvain.be/demo/patients/46e6332c-677825b6-202fcf7c-f787bc5f-7b07c382";
         break;
         
       default:
@@ -216,7 +216,7 @@
                             "If present, retrieve detailed information about the individual " + resources, false)
         .AddAnswerType(MimeType_Json, "JSON array containing either the Orthanc identifiers, or detailed information "
                        "about the reported " + resources + " (if `expand` argument is provided)")
-        .SetHttpGetSample("https://demo.orthanc-server.com/" + resources + "?since=0&limit=2", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/" + resources + "?since=0&limit=2", true);
       return;
     }
     
@@ -373,7 +373,7 @@
         .SetHttpHeader("Accept", "This HTTP header can be set to retrieve the DICOM instance in DICOMweb format")
         .SetHttpGetArgument(TRANSCODE, RestApiCallDocumentation::Type_String,
                             "If present, the DICOM file will be transcoded to the provided "
-                            "transfer syntax: https://book.orthanc-server.com/faq/transcoding.html", false)
+                            "transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html", false)
         .AddAnswerType(MimeType_Dicom, "The DICOM instance")
         .AddAnswerType(MimeType_DicomWebJson, "The DICOM instance, in DICOMweb JSON format")
         .AddAnswerType(MimeType_DicomWebXml, "The DICOM instance, in DICOMweb XML format");
@@ -524,7 +524,7 @@
         .SetHttpGetArgument(IGNORE_LENGTH, RestApiCallDocumentation::Type_JsonListOfStrings,
                             "Also include the DICOM tags that are provided in this list, even if their associated value is long", false)
         .AddAnswerType(MimeType_Json, "JSON object containing the DICOM tags and their associated value")
-        .SetTruncatedJsonHttpGetSample("https://demo.orthanc-server.com/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/tags", 10);
+        .SetTruncatedJsonHttpGetSample("https://orthanc.uclouvain.be/demo/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/tags", 10);
       return;
     }
 
@@ -560,7 +560,7 @@
         .SetHttpGetArgument(IGNORE_LENGTH, RestApiCallDocumentation::Type_JsonListOfStrings,
                             "Also include the DICOM tags that are provided in this list, even if their associated value is long", false)
         .AddAnswerType(MimeType_Json, "JSON object containing the DICOM tags and their associated value")
-        .SetTruncatedJsonHttpGetSample("https://demo.orthanc-server.com/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/simplified-tags", 10);
+        .SetTruncatedJsonHttpGetSample("https://orthanc.uclouvain.be/demo/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/simplified-tags", 10);
       return;
     }
     else
@@ -580,7 +580,7 @@
         .SetDescription("List the frames that are available in the DICOM instance of interest")
         .SetUriArgument("id", "Orthanc identifier of the DICOM instance of interest")
         .AddAnswerType(MimeType_Json, "The list of the indices of the available frames")
-        .SetHttpGetSample("https://demo.orthanc-server.com/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/frames", true);      
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/frames", true);      
       return;
     }
 
@@ -1481,7 +1481,7 @@
         .SetTag("Instances")
         .SetSummary("Decode frame for Matlab")
         .SetDescription(description + ", and export this frame as a Octave/Matlab matrix to be imported with `eval()`: "
-                        "https://book.orthanc-server.com/faq/matlab.html")
+                        "https://orthanc.uclouvain.be/book/faq/matlab.html")
         .SetUriArgument("id", "Orthanc identifier of the DICOM instance of interest")
         .AddAnswerType(MimeType_PlainText, "Octave/Matlab matrix");
       return;
@@ -2248,7 +2248,7 @@
         .SetSummary("List operations on attachments")
         .SetDescription("Get the list of the operations that are available for attachments associated with the given " + r)
         .AddAnswerType(MimeType_Json, "List of the available operations")
-        .SetHttpGetSample("https://demo.orthanc-server.com/instances/d94d9a03-3003b047-a4affc69-322313b2-680530a2/attachments/dicom", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/instances/6582b1c0-292ad5ab-ba0f088f-f7a1766f-9a29a54f/attachments/dicom", true);
       return;
     }
 
@@ -2384,7 +2384,7 @@
         .SetSummary("Get info about the attachment")
         .SetDescription("Get all the information about the attachment associated with the given " + r)
         .AddAnswerType(MimeType_Json, "JSON object containing the information about the attachment")
-        .SetHttpGetSample("https://demo.orthanc-server.com/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/attachments/dicom/info", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/attachments/dicom/info", true);
       return;
     }
 
@@ -3127,7 +3127,7 @@
         .SetSummary("Look for local resources")
         .SetDescription("This URI can be used to perform a search on the content of the local Orthanc server, "
                         "in a way that is similar to querying remote DICOM modalities using C-FIND SCU: "
-                        "https://book.orthanc-server.com/users/rest.html#performing-finds-within-orthanc")
+                        "https://orthanc.uclouvain.be/book/users/rest.html#performing-finds-within-orthanc")
         .SetRequestField(KEY_CASE_SENSITIVE, RestApiCallDocumentation::Type_Boolean,
                          "Enable case-sensitive search for PN value representations (defaults to configuration option `CaseSensitivePN`)", false)
         .SetRequestField(KEY_EXPAND, RestApiCallDocumentation::Type_Boolean,
@@ -3550,7 +3550,7 @@
                         "Same information as the `Slices` field, but in a compact form")
         .SetAnswerField("Type", RestApiCallDocumentation::Type_String,
                         "Can be `Volume` (for 3D volumes) or `Sequence` (notably for cine images)")
-        .SetTruncatedJsonHttpGetSample("https://demo.orthanc-server.com/series/1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0/ordered-slices", 10);
+        .SetTruncatedJsonHttpGetSample("https://orthanc.uclouvain.be/demo/series/1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0/ordered-slices", 10);
       return;
     }
 
@@ -3577,7 +3577,7 @@
                         "combines hexadecimal tags with human-readable description.")
         .SetUriArgument("id", "Orthanc identifier of the DICOM instance of interest")
         .AddAnswerType(MimeType_Json, "JSON object containing the DICOM tags and their associated value")
-        .SetHttpGetSample("https://demo.orthanc-server.com/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/header", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/instances/7c92ce8e-bbf67ed2-ffa3b8c1-a3b35d94-7ff3ae26/header", true);
       return;
     }
 
@@ -3610,7 +3610,7 @@
         .SetDescription("Remove all the attachments of the type \"DICOM-as-JSON\" that are associated will all the "
                         "DICOM instances stored in Orthanc. These summaries will be automatically re-created on the next access. "
                         "This is notably useful after changes to the `Dictionary` configuration option. "
-                        "https://book.orthanc-server.com/faq/orthanc-storage.html#storage-area");
+                        "https://orthanc.uclouvain.be/book/faq/orthanc-storage.html#storage-area");
       return;
     }
 
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestSystem.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestSystem.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -100,11 +100,11 @@
         .SetAnswerField(API_VERSION, RestApiCallDocumentation::Type_Number, "Version of the REST API")
         .SetAnswerField(VERSION, RestApiCallDocumentation::Type_String, "Version of Orthanc")
         .SetAnswerField(DATABASE_VERSION, RestApiCallDocumentation::Type_Number,
-                        "Version of the database: https://book.orthanc-server.com/developers/db-versioning.html")
+                        "Version of the database: https://orthanc.uclouvain.be/book/developers/db-versioning.html")
         .SetAnswerField(DATABASE_SERVER_IDENTIFIER, RestApiCallDocumentation::Type_String,
                         "ID of the server in the database (when running multiple Orthanc on the same DB)")
         .SetAnswerField(IS_HTTP_SERVER_SECURE, RestApiCallDocumentation::Type_Boolean,
-                        "Whether the REST API is properly secured (assuming no reverse proxy is in use): https://book.orthanc-server.com/faq/security.html#securing-the-http-server")
+                        "Whether the REST API is properly secured (assuming no reverse proxy is in use): https://orthanc.uclouvain.be/book/faq/security.html#securing-the-http-server")
         .SetAnswerField(STORAGE_AREA_PLUGIN, RestApiCallDocumentation::Type_String,
                         "Information about the installed storage area plugin (`null` if no such plugin is installed)")
         .SetAnswerField(DATABASE_BACKEND_PLUGIN, RestApiCallDocumentation::Type_String,
@@ -134,7 +134,7 @@
                         "The configured UserMetadata (new in Orthanc 1.12.0)")
         .SetAnswerField(HAS_LABELS, RestApiCallDocumentation::Type_Boolean,
                         "Whether the database back-end supports labels (new in Orthanc 1.12.0)")
-        .SetHttpGetSample("https://demo.orthanc-server.com/system", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/system", true);
       return;
     }
 
@@ -211,7 +211,7 @@
         .SetAnswerField("TotalDiskSizeMB", RestApiCallDocumentation::Type_Number, "Size of the storage area (in megabytes)")
         .SetAnswerField("TotalUncompressedSize", RestApiCallDocumentation::Type_String, "Total size of all the files once uncompressed (in bytes). This corresponds to `TotalDiskSize` if no compression is enabled, cf. `StorageCompression` configuration option")
         .SetAnswerField("TotalUncompressedSizeMB", RestApiCallDocumentation::Type_Number, "Total size of all the files once uncompressed (in megabytes)")
-        .SetHttpGetSample("https://demo.orthanc-server.com/statistics", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/statistics", true);
       return;
     }
 
@@ -318,7 +318,7 @@
         .SetTag("System")
         .SetSummary("Get " + type + " time")
         .AddAnswerType(MimeType_PlainText, "The " + type + " time")
-        .SetHttpGetSample("https://demo.orthanc-server.com" + call.FlattenUri(), false);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo" + call.FlattenUri(), false);
       return;
     }
 
@@ -508,7 +508,7 @@
         .SetSummary("List plugins")
         .SetDescription("List all the installed plugins")
         .AddAnswerType(MimeType_Json, "JSON array containing the identifiers of the installed plugins")
-        .SetHttpGetSample("https://demo.orthanc-server.com/plugins", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/plugins", true);
       return;
     }
 
@@ -544,7 +544,7 @@
         .SetDescription("Get system information about the plugin whose identifier is provided in the URL")
         .SetUriArgument("id", "Identifier of the job of interest")
         .AddAnswerType(MimeType_Json, "JSON object containing information about the plugin")
-        .SetHttpGetSample("https://demo.orthanc-server.com/plugins/dicom-web", true);
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/plugins/dicom-web", true);
       return;
     }
 
@@ -653,7 +653,7 @@
                             "If present, retrieve detailed information about the individual jobs", false)
         .AddAnswerType(MimeType_Json, "JSON array containing either the jobs identifiers, or detailed information "
                        "about the reported jobs (if `expand` argument is provided)")
-        .SetTruncatedJsonHttpGetSample("https://demo.orthanc-server.com/jobs", 3);
+        .SetTruncatedJsonHttpGetSample("https://orthanc.uclouvain.be/demo/jobs", 3);
       return;
     }
 
@@ -711,7 +711,7 @@
         .SetTag("Jobs")
         .SetSummary("Get job")
         .SetDescription("Retrieve detailed information about the job whose identifier is provided in the URL: "
-                        "https://book.orthanc-server.com/users/advanced-rest.html#jobs")
+                        "https://orthanc.uclouvain.be/book/users/advanced-rest.html#jobs")
         .SetUriArgument("id", "Identifier of the job of interest")
         .AddAnswerType(MimeType_Json, "JSON object detailing the job")
         .SetSample(sample);
@@ -869,7 +869,7 @@
         .SetSummary(verb + " job")
         .SetDescription(verb + " the job whose identifier is provided in the URL. Check out the "
                         "Orthanc Book for more information about the state machine applicable to jobs: "
-                        "https://book.orthanc-server.com/users/advanced-rest.html#jobs")
+                        "https://orthanc.uclouvain.be/book/users/advanced-rest.html#jobs")
         .SetUriArgument("id", "Identifier of the job of interest")
         .AddAnswerType(MimeType_Json, "Empty JSON object in the case of a success");
       return;
@@ -916,8 +916,8 @@
         .SetTag("System")
         .SetSummary("Get usage metrics")
         .SetDescription("Get usage metrics of Orthanc in the Prometheus file format (OpenMetrics): "
-                        "https://book.orthanc-server.com/users/advanced-rest.html#instrumentation-with-prometheus")
-        .SetHttpGetSample("https://demo.orthanc-server.com/tools/metrics-prometheus", false);
+                        "https://orthanc.uclouvain.be/book/users/advanced-rest.html#instrumentation-with-prometheus")
+        .SetHttpGetSample("https://orthanc.uclouvain.be/demo/tools/metrics-prometheus", false);
       return;
     }
 
--- a/OrthancServer/Sources/Search/ISqlLookupFormatter.h	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/Search/ISqlLookupFormatter.h	Wed Nov 22 09:39:35 2023 +0100
@@ -59,7 +59,7 @@
     /**
      * Whether to escape '[' and ']', which is only needed for
      * MSSQL. New in Orthanc 1.10.0, from the following changeset:
-     * https://hg.orthanc-server.com/orthanc-databases/rev/389c037387ea
+     * https://orthanc.uclouvain.be/hg/orthanc-databases/rev/389c037387ea
      **/
     virtual bool IsEscapeBrackets() const = 0;
 
--- a/OrthancServer/Sources/main.cpp	Wed Nov 22 09:38:57 2023 +0100
+++ b/OrthancServer/Sources/main.cpp	Wed Nov 22 09:39:35 2023 +0100
@@ -682,7 +682,7 @@
     << "case of a directory, all the JSON files it contains will be merged. " << std::endl
     << "If no configuration path is given on the command line, a set of default " << std::endl
     << "parameters is used. Please refer to the Orthanc Book for the full " << std::endl
-    << "instructions about how to use Orthanc <http://book.orthanc-server.com/>." << std::endl
+    << "instructions about how to use Orthanc <https://orthanc.uclouvain.be/book/>." << std::endl
     << std::endl
     << "Pay attention to the fact that the order of the options is important." << std::endl
     << "Options are read left to right. In particular, options such as \"--verbose\" can " << std::endl
@@ -1431,7 +1431,7 @@
   catch (OrthancException&)
   {
     LOG(ERROR) << "Unable to run the automated upgrade, please use the replication instructions: "
-               << "http://book.orthanc-server.com/users/replication.html";
+               << "https://orthanc.uclouvain.be/book/users/replication.html";
     throw;
   }
     
@@ -1941,15 +1941,15 @@
         openapi["info"]["version"] = ORTHANC_VERSION;
         openapi["info"]["title"] = "Orthanc API";
         openapi["info"]["description"] =
-          "This is the full documentation of the [REST API](https://book.orthanc-server.com/users/rest.html) "
+          "This is the full documentation of the [REST API](https://orthanc.uclouvain.be/book/users/rest.html) "
           "of Orthanc.<p>This reference is automatically generated from the source code of Orthanc. A "
-          "[shorter cheat sheet](https://book.orthanc-server.com/users/rest-cheatsheet.html) is part of "
+          "[shorter cheat sheet](https://orthanc.uclouvain.be/book/users/rest-cheatsheet.html) is part of "
           "the Orthanc Book.<p>An earlier, manually crafted version from August 2019, is [still available]"
           "(2019-08-orthanc-openapi.html), but is not up-to-date anymore ([source]"
           "(https://groups.google.com/g/orthanc-users/c/NUiJTEICSl8/m/xKeqMrbqAAAJ)).";
 
         Json::Value server = Json::objectValue;
-        server["url"] = "https://demo.orthanc-server.com/";
+        server["url"] = "https://orthanc.uclouvain.be/demo/";
         openapi["servers"].append(server);
         
         std::string s;
@@ -1985,7 +1985,7 @@
           MemoryStorageArea inMemoryStorage;
           ServerContext context(inMemoryDatabase, inMemoryStorage, true /* unit testing */, 0 /* max completed jobs */);
           OrthancRestApi restApi(context, false /* no Orthanc Explorer */);
-          restApi.GenerateReStructuredTextCheatSheet(cheatsheet, "https://api.orthanc-server.com/index.html");
+          restApi.GenerateReStructuredTextCheatSheet(cheatsheet, "https://orthanc.uclouvain.be/api/index.html");
           context.Stop();
         }
 
--- a/README	Wed Nov 22 09:38:57 2023 +0100
+++ b/README	Wed Nov 22 09:39:35 2023 +0100
@@ -8,7 +8,7 @@
 General information about this software can be found on its official
 Website, and in the Orthanc Book:
 http://www.orthanc-server.com/
-http://book.orthanc-server.com/
+https://orthanc.uclouvain.be/book/
 
 The instructions for building Orthanc can be found in the "./INSTALL"
 file.
@@ -43,7 +43,7 @@
 
 Instructions for contributing to the Orthanc project are included in
 the Orthanc Book:
-https://book.orthanc-server.com/developers/repositories.html
+https://orthanc.uclouvain.be/book/developers/repositories.html
 
 
 Licensing
@@ -55,7 +55,7 @@
 
 Full information about the licensing of the Orthanc ecosystem is
 available in the Orthanc Book:
-https://book.orthanc-server.com/faq/licensing.html
+https://orthanc.uclouvain.be/book/faq/licensing.html
 
 We also kindly ask scientific works and clinical studies that make
 use of Orthanc to cite Orthanc in their associated publications.
--- a/TODO	Wed Nov 22 09:38:57 2023 +0100
+++ b/TODO	Wed Nov 22 09:39:35 2023 +0100
@@ -4,7 +4,7 @@
 
 For higher-level ideas in the roadmap, please first read the
 "Contributing to Orthanc" section of the Orthanc Book:
-https://book.orthanc-server.com/contributing.html
+https://orthanc.uclouvain.be/book/contributing.html
 
 
 Some features are being funded by an OpenCollective one-time donations.
@@ -21,7 +21,7 @@
 * Support partial file retrieval in Orthanc::HttpClient
 * Support retry counter in Orthanc::HttpClient
 * Option to enable DNS lookups in DICOM:
-  https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.3/OrthancFramework/Sources/OrthancFramework.cpp#l88
+  https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.9.3/OrthancFramework/Sources/OrthancFramework.cpp#l88
 * Toolbox::ComputeMD5() fails on files larger than 4GB
 * Add an option to run Orthanc in read-only mode both for DICOM and for Rest API.
 * Logging: add some information like Thread-Id/job-id to contextualize the logs.
@@ -62,7 +62,7 @@
 ============================
 
 * Write a getting started guide (step by step) for each platform to replace
-  https://book.orthanc-server.com/users/cookbook.html :
+  https://orthanc.uclouvain.be/book/users/cookbook.html :
   - Ubuntu/Debian
   - Windows
   - OSX
@@ -80,7 +80,7 @@
 * How to reproduce issues by replacing Orthanc with storescp or wlmscpfs
 * How to capture TCP traffic of DICOM protocol using tcpdump and Wireshark
 * Add more configurations of viewers (Weasis, Slicer...):
-  https://book.orthanc-server.com/integrations.html
+  https://orthanc.uclouvain.be/book/integrations.html
 * Discuss HL7 in a dedicated page:
   https://groups.google.com/d/msg/orthanc-users/4dt4992O0lQ/opTjTFU2BgAJ
   https://groups.google.com/g/orthanc-users/c/Spjtcj9vSPo/m/ktUArWxUDQAJ
@@ -166,7 +166,7 @@
 
 * Support C-GET SCU (note that C-GET SCP was introduced in Orthanc 1.7.0)
 * Support "Retrieve AE Title" (0008,0054) in C-FIND:
-  - On SCP side: done by https://hg.orthanc-server.com/orthanc/rev/1ec3e1e18f50
+  - On SCP side: done by https://orthanc.uclouvain.be/hg/orthanc/rev/1ec3e1e18f50
   - On SCU side:
     https://groups.google.com/d/msg/orthanc-users/wPl0g5mqZco/5X1Z8tEzBgAJ
 * Check Big Endian transfer syntax in ParsedDicomFile::EmbedImage and
@@ -256,7 +256,7 @@
 * Provide access to the Orthanc::DicomUserConnection class in plugins:
   https://groups.google.com/d/msg/orthanc-users/ycDA1xPuTRY/nsT2_GOtEgAJ
 * Provide a C++ callback similar to "ReceivedInstanceFilter()" in Lua
-  https://book.orthanc-server.com/users/lua.html#filtering-incoming-dicom-instances
+  https://orthanc.uclouvain.be/book/users/lua.html#filtering-incoming-dicom-instances
   https://groups.google.com/d/msg/orthanc-users/BtvLTE5Ni8A/vIMhmMgfBAAJ
 * In "OrthancPluginLog[Error|Warning|Info]()", prefix the log line with
   the name of the plugin, as retrieved by "OrthancPluginGetName()"