comparison Framework/MySQL/MySQLParameters.cpp @ 163:4d32c9c8d6c0

Added support for TLS connections
author Alain Mazy <alain@mazy.be>
date Mon, 13 Jul 2020 11:59:29 +0200
parents 063aa53b5917
children 6fe74f9a516e
comparison
equal deleted inserted replaced
162:fc13b4e8f888 163:4d32c9c8d6c0
50 { 50 {
51 Reset(); 51 Reset();
52 } 52 }
53 53
54 54
55 MySQLParameters::MySQLParameters(const OrthancPlugins::OrthancConfiguration& configuration) 55 MySQLParameters::MySQLParameters(const OrthancPlugins::OrthancConfiguration& pluginConfiguration, const OrthancPlugins::OrthancConfiguration& orthancConfiguration)
56 { 56 {
57 Reset(); 57 Reset();
58 58
59 std::string s; 59 std::string s;
60 if (configuration.LookupStringValue(s, "Host")) 60 if (pluginConfiguration.LookupStringValue(s, "Host"))
61 { 61 {
62 SetHost(s); 62 SetHost(s);
63 } 63 }
64 64
65 if (configuration.LookupStringValue(s, "Username")) 65 if (pluginConfiguration.LookupStringValue(s, "Username"))
66 { 66 {
67 SetUsername(s); 67 SetUsername(s);
68 } 68 }
69 69
70 if (configuration.LookupStringValue(s, "Password")) 70 if (pluginConfiguration.LookupStringValue(s, "Password"))
71 { 71 {
72 SetPassword(s); 72 SetPassword(s);
73 } 73 }
74 74
75 if (configuration.LookupStringValue(s, "Database")) 75 if (pluginConfiguration.LookupStringValue(s, "Database"))
76 { 76 {
77 SetDatabase(s); 77 SetDatabase(s);
78 } 78 }
79 79
80 unsigned int port; 80 unsigned int port;
81 if (configuration.LookupUnsignedIntegerValue(port, "Port")) 81 if (pluginConfiguration.LookupUnsignedIntegerValue(port, "Port"))
82 { 82 {
83 SetPort(port); 83 SetPort(port);
84 } 84 }
85 85
86 if (configuration.LookupStringValue(s, "UnixSocket")) 86 if (pluginConfiguration.LookupStringValue(s, "UnixSocket"))
87 { 87 {
88 SetUnixSocket(s); 88 SetUnixSocket(s);
89 } 89 }
90 90
91 lock_ = configuration.GetBooleanValue("Lock", true); // Use locking by default 91 lock_ = pluginConfiguration.GetBooleanValue("Lock", true); // Use locking by default
92 92
93 maxConnectionRetries_ = configuration.GetUnsignedIntegerValue("MaximumConnectionRetries", 10); 93 ssl_ = pluginConfiguration.GetBooleanValue("EnableSsl", false);
94 connectionRetryInterval_ = configuration.GetUnsignedIntegerValue("ConnectionRetryInterval", 5); 94 verifySslServerCertificates_ = pluginConfiguration.GetBooleanValue("SslVerifyServerCertificates", true);
95
96 const std::string defaultCaCertificates = orthancConfiguration.GetStringValue("HttpsCACertificates", "");
97 sslCaCertificates_ = pluginConfiguration.GetStringValue("SslCACertificates", defaultCaCertificates);
98
99 if (ssl_ && verifySslServerCertificates_ && sslCaCertificates_.empty())
100 {
101 LOG(ERROR) << "MySQL: No SslCACertificates defined, unable to check SSL Server certificates";
102 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
103 }
104
105 maxConnectionRetries_ = pluginConfiguration.GetUnsignedIntegerValue("MaximumConnectionRetries", 10);
106 connectionRetryInterval_ = pluginConfiguration.GetUnsignedIntegerValue("ConnectionRetryInterval", 5);
95 } 107 }
96 108
97 109
98 void MySQLParameters::SetHost(const std::string& host) 110 void MySQLParameters::SetHost(const std::string& host)
99 { 111 {