Skip to content

Commit e917d96

Browse files
authored
Add option to pass tls sni servername (#49)
1 parent 86ac2cb commit e917d96

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

singlestoredb/config.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,12 @@
134134
environ='SINGLESTOREDB_SSL_CIPHER',
135135
)
136136

137+
register_option(
138+
'tls_sni_servername', 'str', check_str, None,
139+
'Sets TLS SNI servername',
140+
environ='SINGLESTOREDB_TLS_SNI_SERVERNAME',
141+
)
142+
137143
register_option(
138144
'ssl_disabled', 'bool', check_bool, False,
139145
'Disable SSL usage',

singlestoredb/connection.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,7 @@ def connect(
12981298
ssl_key: Optional[str] = None, ssl_cert: Optional[str] = None,
12991299
ssl_ca: Optional[str] = None, ssl_disabled: Optional[bool] = None,
13001300
ssl_cipher: Optional[str] = None, ssl_verify_cert: Optional[bool] = None,
1301+
tls_sni_servername: Optional[str] = None,
13011302
ssl_verify_identity: Optional[bool] = None,
13021303
conv: Optional[Dict[int, Callable[..., Any]]] = None,
13031304
credential_type: Optional[str] = None,

singlestoredb/mysql/connection.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,8 @@ class Connection(BaseConnection):
226226
Set to true to check the server certificate's validity.
227227
ssl_verify_identity : bool, optional
228228
Set to true to check the server's identity.
229+
tls_sni_servername: str, optional
230+
Set server host name for TLS connection
229231
read_default_group : str, optional
230232
Group to read from in the configuration file.
231233
autocommit : bool, optional
@@ -295,6 +297,7 @@ class Connection(BaseConnection):
295297
_auth_plugin_name = ''
296298
_closed = False
297299
_secure = False
300+
_tls_sni_servername = None
298301

299302
def __init__( # noqa: C901
300303
self,
@@ -335,6 +338,7 @@ def __init__( # noqa: C901
335338
ssl_key=None,
336339
ssl_verify_cert=None,
337340
ssl_verify_identity=None,
341+
tls_sni_servername=None,
338342
parse_json=True,
339343
invalid_values=None,
340344
pure_python=None,
@@ -638,6 +642,7 @@ def _config(key, arg):
638642

639643
self._is_committable = True
640644
self._in_sync = False
645+
self._tls_sni_servername = tls_sni_servername
641646
self._track_env = bool(track_env) or self.host == 'singlestore.com'
642647
self._enable_extended_data_types = enable_extended_data_types
643648
if vector_data_format.lower() in ['json', 'binary']:
@@ -1364,7 +1369,10 @@ def _request_authentication(self): # noqa: C901
13641369
if self.ssl and self.server_capabilities & CLIENT.SSL:
13651370
self.write_packet(data_init)
13661371

1367-
self._sock = self.ctx.wrap_socket(self._sock, server_hostname=self.host)
1372+
hostname = self.host
1373+
if self._tls_sni_servername:
1374+
hostname = self._tls_sni_servername
1375+
self._sock = self.ctx.wrap_socket(self._sock, server_hostname=hostname)
13681376
self._rfile = self._sock.makefile('rb')
13691377
self._secure = True
13701378

0 commit comments

Comments
 (0)