@@ -96,8 +96,8 @@ def _initialize_ssl_context(self):
96
96
if not hasattr (ssl .TLSVersion , min_tls ):
97
97
logger .warning (f"Unrecognized value for TABPY_MINIMUM_TLS_VERSION: { min_tls } " )
98
98
min_tls = "TLSv1_2"
99
-
100
- logger .info (f"Setting minimum TLS version to { min_tls } " )
99
+
100
+ logger .info (f"Setting minimum TLS version to { min_tls } " )
101
101
ssl_context .minimum_version = ssl .TLSVersion [min_tls ]
102
102
103
103
return ssl_context
@@ -112,7 +112,7 @@ def _get_tls_certificates(self, config):
112
112
tls_private_key = key_file .read ()
113
113
tls_certificates .append ((tls_cert_chain , tls_private_key ))
114
114
return tls_certificates
115
-
115
+
116
116
def _get_arrow_server (self , config ):
117
117
verify_client = None
118
118
tls_certificates = None
@@ -121,7 +121,7 @@ def _get_arrow_server(self, config):
121
121
scheme = "grpc+tls"
122
122
tls_certificates = self ._get_tls_certificates (config )
123
123
124
- host = "0.0.0.0"
124
+ host = config . get ( SettingsParameters . ArrowFlightBindIp )
125
125
port = config .get (SettingsParameters .ArrowFlightPort )
126
126
location = "{}://{}:{}" .format (scheme , host , port )
127
127
@@ -140,7 +140,7 @@ def _get_arrow_server(self, config):
140
140
141
141
def run (self ):
142
142
application = self ._create_tornado_web_app ()
143
-
143
+
144
144
init_model_evaluator (self .settings , self .tabpy_state , self .python_service )
145
145
146
146
protocol = self .settings [SettingsParameters .TransferProtocol ]
@@ -158,14 +158,16 @@ def run(self):
158
158
159
159
application .listen (
160
160
self .settings [SettingsParameters .Port ],
161
+ self .settings [SettingsParameters .BindIp ],
161
162
ssl_options = ssl_options ,
162
163
max_buffer_size = self .max_request_size ,
163
164
max_body_size = self .max_request_size ,
164
165
** settings ,
165
- )
166
+ )
166
167
167
168
logger .info (
168
- "Web service listening on port "
169
+ "Web service listening on "
170
+ f"{ str (self .settings [SettingsParameters .BindIp ])} :"
169
171
f"{ str (self .settings [SettingsParameters .Port ])} "
170
172
)
171
173
@@ -332,6 +334,7 @@ def _parse_config(self, config_file):
332
334
333
335
settings_parameters = [
334
336
(SettingsParameters .Port , ConfigParameters .TABPY_PORT , 9004 , None ),
337
+ (SettingsParameters .BindIp , ConfigParameters .TABPY_BIND_IP , '0.0.0.0' , None ),
335
338
(SettingsParameters .ServerVersion , None , __version__ , None ),
336
339
(SettingsParameters .EvaluateEnabled , ConfigParameters .TABPY_EVALUATE_ENABLE ,
337
340
True , parser .getboolean ),
@@ -357,8 +360,9 @@ def _parse_config(self, config_file):
357
360
100 , None ),
358
361
(SettingsParameters .GzipEnabled , ConfigParameters .TABPY_GZIP_ENABLE ,
359
362
True , parser .getboolean ),
360
- (SettingsParameters .ArrowEnabled , ConfigParameters .TABPY_ARROW_ENABLE , False , parser .getboolean ),
363
+ (SettingsParameters .ArrowEnabled , ConfigParameters .TABPY_ARROW_ENABLE , False , parser .getboolean ),
361
364
(SettingsParameters .ArrowFlightPort , ConfigParameters .TABPY_ARROWFLIGHT_PORT , 13622 , parser .getint ),
365
+ (SettingsParameters .ArrowFlightBindIp , ConfigParameters .TABPY_ARROWFLIGHT_BIND_IP , '0.0.0.0' , None ),
362
366
]
363
367
364
368
for setting , parameter , default_val , parse_function in settings_parameters :
@@ -373,7 +377,7 @@ def _parse_config(self, config_file):
373
377
].lower ()
374
378
375
379
self ._validate_transfer_protocol_settings ()
376
-
380
+
377
381
# Set max request size in bytes
378
382
self .max_request_size = (
379
383
int (self .settings [SettingsParameters .MaxRequestSizeInMb ]) * 1024 * 1024
@@ -493,12 +497,12 @@ def _handle_configuration_without_authentication(self):
493
497
494
498
if self .disable_auth_warning == True :
495
499
logger .info (std_no_auth_msg )
496
- return
500
+ return
497
501
498
502
confirm_no_auth_msg = "\n WARNING: This TabPy server is not currently configured for username/password authentication. "
499
503
500
504
if self .settings [SettingsParameters .EvaluateEnabled ]:
501
- confirm_no_auth_msg += ("This means that, because the TABPY_EVALUATE_ENABLE feature is enabled, there is "
505
+ confirm_no_auth_msg += ("This means that, because the TABPY_EVALUATE_ENABLE feature is enabled, there is "
502
506
"the potential that unauthenticated individuals may be able to remotely execute code on this machine. " )
503
507
504
508
confirm_no_auth_msg += ("We strongly advise against proceeding without authentication as it poses a significant security risk.\n \n "
0 commit comments