diff OrthancServer/Sources/main.cpp @ 4439:5209a9ff6e38

configuration options for DICOM TLS in Orthanc SCP
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 07 Jan 2021 18:18:39 +0100
parents 4a4e33c9082d
children f77ee6e6cf47
line wrap: on
line diff
--- a/OrthancServer/Sources/main.cpp	Thu Jan 07 16:53:35 2021 +0100
+++ b/OrthancServer/Sources/main.cpp	Thu Jan 07 18:18:39 2021 +0100
@@ -64,6 +64,12 @@
 using namespace Orthanc;
 
 
+static const char* const KEY_DICOM_TLS_PRIVATE_KEY = "DicomTlsPrivateKey";
+static const char* const KEY_DICOM_TLS_ENABLED = "DicomTlsEnabled";
+static const char* const KEY_DICOM_TLS_CERTIFICATE = "DicomTlsCertificate";
+static const char* const KEY_DICOM_TLS_TRUSTED_CERTIFICATES = "DicomTlsTrustedCertificates";
+
+
 class OrthancStoreRequestHandler : public IStoreRequestHandler
 {
 private:
@@ -1189,6 +1195,17 @@
       dicomServer.SetAssociationTimeout(lock.GetConfiguration().GetUnsignedIntegerParameter("DicomScpTimeout", 30));
       dicomServer.SetPortNumber(lock.GetConfiguration().GetUnsignedIntegerParameter("DicomPort", 4242));
       dicomServer.SetApplicationEntityTitle(lock.GetConfiguration().GetOrthancAET());
+
+      // Configuration of DICOM TLS for Orthanc SCP (since Orthanc 1.9.0)
+      dicomServer.SetDicomTlsEnabled(lock.GetConfiguration().GetBooleanParameter(KEY_DICOM_TLS_ENABLED, false));
+      if (dicomServer.IsDicomTlsEnabled())
+      {
+        dicomServer.SetOwnCertificatePath(
+          lock.GetConfiguration().GetStringParameter(KEY_DICOM_TLS_PRIVATE_KEY, ""),
+          lock.GetConfiguration().GetStringParameter(KEY_DICOM_TLS_CERTIFICATE, ""));
+        dicomServer.SetTrustedCertificatesPath(
+          lock.GetConfiguration().GetStringParameter(KEY_DICOM_TLS_TRUSTED_CERTIFICATES, ""));
+      }
     }
 
 #if ORTHANC_ENABLE_PLUGINS == 1
@@ -1438,12 +1455,12 @@
       LOG(WARNING) << "Setting option \"JobsHistorySize\" to zero is not recommended";
     }
 
-    // Configuration of DICOM TLS (since Orthanc 1.9.0)
+    // Configuration of DICOM TLS for Orthanc SCU (since Orthanc 1.9.0)
     DicomAssociationParameters::SetDefaultOwnCertificatePath(
-      lock.GetConfiguration().GetStringParameter("DicomTlsPrivateKey", ""),
-      lock.GetConfiguration().GetStringParameter("DicomTlsCertificate", ""));
+      lock.GetConfiguration().GetStringParameter(KEY_DICOM_TLS_PRIVATE_KEY, ""),
+      lock.GetConfiguration().GetStringParameter(KEY_DICOM_TLS_CERTIFICATE, ""));
     DicomAssociationParameters::SetDefaultTrustedCertificatesPath(
-      lock.GetConfiguration().GetStringParameter("DicomTlsTrustedCertificates", ""));
+      lock.GetConfiguration().GetStringParameter(KEY_DICOM_TLS_TRUSTED_CERTIFICATES, ""));
   }
   
   ServerContext context(database, storageArea, false /* not running unit tests */, maxCompletedJobs);