Skip to content

Commit 98304cb

Browse files
kanayosodabrew
authored andcommitted
Expose windows client authentication (#1018)
1 parent c578718 commit 98304cb

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ Mysql2::Client.new(
218218
:ssl_mode = :disabled / :preferred / :required / :verify_ca / :verify_identity,
219219
:default_file = '/path/to/my.cfg',
220220
:default_group = 'my.cfg section',
221+
:default_auth = 'authentication_windows_client'
221222
:init_command => sql
222223
)
223224
```

ext/mysql2/client.c

+10
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,11 @@ static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) {
903903
retval = charval;
904904
break;
905905

906+
case MYSQL_DEFAULT_AUTH:
907+
charval = (const char *)StringValueCStr(value);
908+
retval = charval;
909+
break;
910+
906911
#ifdef HAVE_CONST_MYSQL_ENABLE_CLEARTEXT_PLUGIN
907912
case MYSQL_ENABLE_CLEARTEXT_PLUGIN:
908913
boolval = (value == Qfalse ? 0 : 1);
@@ -1336,6 +1341,10 @@ static VALUE set_init_command(VALUE self, VALUE value) {
13361341
return _mysql_client_options(self, MYSQL_INIT_COMMAND, value);
13371342
}
13381343

1344+
static VALUE set_default_auth(VALUE self, VALUE value) {
1345+
return _mysql_client_options(self, MYSQL_DEFAULT_AUTH, value);
1346+
}
1347+
13391348
static VALUE set_enable_cleartext_plugin(VALUE self, VALUE value) {
13401349
#ifdef HAVE_CONST_MYSQL_ENABLE_CLEARTEXT_PLUGIN
13411350
return _mysql_client_options(self, MYSQL_ENABLE_CLEARTEXT_PLUGIN, value);
@@ -1437,6 +1446,7 @@ void init_mysql2_client() {
14371446
rb_define_private_method(cMysql2Client, "default_file=", set_read_default_file, 1);
14381447
rb_define_private_method(cMysql2Client, "default_group=", set_read_default_group, 1);
14391448
rb_define_private_method(cMysql2Client, "init_command=", set_init_command, 1);
1449+
rb_define_private_method(cMysql2Client, "default_auth=", set_default_auth, 1);
14401450
rb_define_private_method(cMysql2Client, "ssl_set", set_ssl_options, 5);
14411451
rb_define_private_method(cMysql2Client, "ssl_mode=", rb_set_ssl_mode_option, 1);
14421452
rb_define_private_method(cMysql2Client, "enable_cleartext_plugin=", set_enable_cleartext_plugin, 1);

lib/mysql2/client.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def initialize(opts = {})
3131
opts[:connect_timeout] = 120 unless opts.key?(:connect_timeout)
3232

3333
# TODO: stricter validation rather than silent massaging
34-
%i[reconnect connect_timeout local_infile read_timeout write_timeout default_file default_group secure_auth init_command automatic_close enable_cleartext_plugin].each do |key|
34+
%i[reconnect connect_timeout local_infile read_timeout write_timeout default_file default_group secure_auth init_command automatic_close enable_cleartext_plugin default_auth].each do |key|
3535
next unless opts.key?(key)
3636
case key
3737
when :reconnect, :local_infile, :secure_auth, :automatic_close, :enable_cleartext_plugin

0 commit comments

Comments
 (0)