@@ -96,8 +96,8 @@ def _initialize_ssl_context(self):
9696 if not hasattr (ssl .TLSVersion , min_tls ):
9797 logger .warning (f"Unrecognized value for TABPY_MINIMUM_TLS_VERSION: { min_tls } " )
9898 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 } " )
101101 ssl_context .minimum_version = ssl .TLSVersion [min_tls ]
102102
103103 return ssl_context
@@ -112,7 +112,7 @@ def _get_tls_certificates(self, config):
112112 tls_private_key = key_file .read ()
113113 tls_certificates .append ((tls_cert_chain , tls_private_key ))
114114 return tls_certificates
115-
115+
116116 def _get_arrow_server (self , config ):
117117 verify_client = None
118118 tls_certificates = None
@@ -121,7 +121,7 @@ def _get_arrow_server(self, config):
121121 scheme = "grpc+tls"
122122 tls_certificates = self ._get_tls_certificates (config )
123123
124- host = "0.0.0.0"
124+ host = config . get ( SettingsParameters . ArrowFlightBindIp )
125125 port = config .get (SettingsParameters .ArrowFlightPort )
126126 location = "{}://{}:{}" .format (scheme , host , port )
127127
@@ -140,7 +140,7 @@ def _get_arrow_server(self, config):
140140
141141 def run (self ):
142142 application = self ._create_tornado_web_app ()
143-
143+
144144 init_model_evaluator (self .settings , self .tabpy_state , self .python_service )
145145
146146 protocol = self .settings [SettingsParameters .TransferProtocol ]
@@ -158,14 +158,16 @@ def run(self):
158158
159159 application .listen (
160160 self .settings [SettingsParameters .Port ],
161+ self .settings [SettingsParameters .BindIp ],
161162 ssl_options = ssl_options ,
162163 max_buffer_size = self .max_request_size ,
163164 max_body_size = self .max_request_size ,
164165 ** settings ,
165- )
166+ )
166167
167168 logger .info (
168- "Web service listening on port "
169+ "Web service listening on "
170+ f"{ str (self .settings [SettingsParameters .BindIp ])} :"
169171 f"{ str (self .settings [SettingsParameters .Port ])} "
170172 )
171173
@@ -332,6 +334,7 @@ def _parse_config(self, config_file):
332334
333335 settings_parameters = [
334336 (SettingsParameters .Port , ConfigParameters .TABPY_PORT , 9004 , None ),
337+ (SettingsParameters .BindIp , ConfigParameters .TABPY_BIND_IP , '0.0.0.0' , None ),
335338 (SettingsParameters .ServerVersion , None , __version__ , None ),
336339 (SettingsParameters .EvaluateEnabled , ConfigParameters .TABPY_EVALUATE_ENABLE ,
337340 True , parser .getboolean ),
@@ -357,8 +360,9 @@ def _parse_config(self, config_file):
357360 100 , None ),
358361 (SettingsParameters .GzipEnabled , ConfigParameters .TABPY_GZIP_ENABLE ,
359362 True , parser .getboolean ),
360- (SettingsParameters .ArrowEnabled , ConfigParameters .TABPY_ARROW_ENABLE , False , parser .getboolean ),
363+ (SettingsParameters .ArrowEnabled , ConfigParameters .TABPY_ARROW_ENABLE , False , parser .getboolean ),
361364 (SettingsParameters .ArrowFlightPort , ConfigParameters .TABPY_ARROWFLIGHT_PORT , 13622 , parser .getint ),
365+ (SettingsParameters .ArrowFlightBindIp , ConfigParameters .TABPY_ARROWFLIGHT_BIND_IP , '0.0.0.0' , None ),
362366 ]
363367
364368 for setting , parameter , default_val , parse_function in settings_parameters :
@@ -373,7 +377,7 @@ def _parse_config(self, config_file):
373377 ].lower ()
374378
375379 self ._validate_transfer_protocol_settings ()
376-
380+
377381 # Set max request size in bytes
378382 self .max_request_size = (
379383 int (self .settings [SettingsParameters .MaxRequestSizeInMb ]) * 1024 * 1024
@@ -493,12 +497,12 @@ def _handle_configuration_without_authentication(self):
493497
494498 if self .disable_auth_warning == True :
495499 logger .info (std_no_auth_msg )
496- return
500+ return
497501
498502 confirm_no_auth_msg = "\n WARNING: This TabPy server is not currently configured for username/password authentication. "
499503
500504 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 "
502506 "the potential that unauthenticated individuals may be able to remotely execute code on this machine. " )
503507
504508 confirm_no_auth_msg += ("We strongly advise against proceeding without authentication as it poses a significant security risk.\n \n "
0 commit comments