Skip to content

Commit 487ba57

Browse files
committedOct 21, 2022
Allow setting ssl-mode option for connections
Hopefully fix #201.
1 parent a8ae1c7 commit 487ba57

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed
 

‎src/MySQL.jl

+4
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ function setoptions!(mysql;
128128
passphrase::Union{AbstractString, Nothing}=nothing,
129129
ssl_verify_server_cert::Union{Bool, Nothing}=nothing,
130130
ssl_enforce::Union{Bool, Nothing}=nothing,
131+
ssl_mode::Union{API.mysql_ssl_mode, Nothing}=nothing,
131132
default_auth::Union{AbstractString, Nothing}=nothing,
132133
connection_handler::Union{AbstractString, Nothing}=nothing,
133134
plugin_dir::Union{AbstractString, Nothing}=nothing,
@@ -199,6 +200,9 @@ function setoptions!(mysql;
199200
if ssl_crlpath !== nothing
200201
API.setoption(mysql, API.MYSQL_OPT_SSL_CRLPATH, ssl_crlpath)
201202
end
203+
if ssl_mode !== nothing
204+
API.setoption(mysql, API.MYSQL_OPT_SSL_MODE, ssl_mode)
205+
end
202206
if passphrase !== nothing
203207
API.setoption(mysql, API.MARIADB_OPT_TLS_PASSPHRASE, passphrase)
204208
end

‎src/api/consts.jl

+10-1
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,14 @@ end
140140
MYSQL_PROTOCOL_MEMORY
141141
end
142142

143+
@enum mysql_ssl_mode begin
144+
SSL_MODE_DISABLED
145+
SSL_MODE_PREFERRED
146+
SSL_MODE_REQUIRED
147+
SSL_MODE_VERIFY_CA
148+
SSL_MODE_VERIFY_IDENTITY
149+
end
150+
143151
# Options to be passed to mysql_options API.
144152
@enum mysql_option begin
145153
MYSQL_OPT_CONNECT_TIMEOUT
@@ -212,9 +220,10 @@ end
212220
MARIADB_OPT_INTERACTIVE
213221
MARIADB_OPT_PROXY_HEADER
214222
MARIADB_OPT_IO_WAIT
223+
MYSQL_OPT_SSL_MODE
215224
end
216225

217-
const CUINTOPTS = Set([MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_PROTOCOL, MYSQL_OPT_READ_TIMEOUT, MYSQL_OPT_WRITE_TIMEOUT])
226+
const CUINTOPTS = Set([MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_PROTOCOL, MYSQL_OPT_READ_TIMEOUT, MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_SSL_MODE])
218227
const CULONGOPTS = Set([MYSQL_OPT_MAX_ALLOWED_PACKET, MYSQL_OPT_NET_BUFFER_LENGTH])
219228
const BOOLOPTS = Set([MYSQL_ENABLE_CLEARTEXT_PLUGIN, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, MYSQL_OPT_LOCAL_INFILE, MYSQL_OPT_RECONNECT, MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_SSL_ENFORCE, MYSQL_OPT_SSL_VERIFY_SERVER_CERT])
220229
const STRINGOPTS = Set([MYSQL_DEFAULT_AUTH, MYSQL_OPT_BIND, MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CERT, MYSQL_OPT_SSL_CIPHER, MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH, MYSQL_OPT_SSL_KEY, MYSQL_OPT_TLS_VERSION, MYSQL_PLUGIN_DIR, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP, MYSQL_SERVER_PUBLIC_KEY, MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_SHARED_MEMORY_BASE_NAME])

0 commit comments

Comments
 (0)
Please sign in to comment.