1010from splash import defaults , __version__
1111from splash import xvfb
1212from splash .qtutils import init_qt_app
13+ from splash ._cmdline_utils import ONOFF , comma_separated_callback
1314
1415
15- ONOFF = {True : "enabled" , False : "disabled" }
16-
1716
1817def install_qtreactor (verbose ):
1918 init_qt_app (verbose )
@@ -26,15 +25,6 @@ def parse_opts(jupyter=False, argv=None):
2625 argv = sys .argv
2726 _bool_default = {True : ' (default)' , False : '' }
2827
29- def browser_engine_arg (option , opt , value , parser ):
30- """ optparse callback for comma-separated args """
31- engines = value .split (',' )
32- for engine in engines :
33- if engine not in {'webkit' , 'chromium' }:
34- raise optparse .OptionValueError (
35- "{} is not a supported --browser-engine" .format (engine ))
36- setattr (parser .values , option .dest , engines )
37-
3828 op = optparse .OptionParser ()
3929 op .add_option ("-f" , "--logfile" , help = "log file" )
4030 op .add_option ("-m" , "--maxrss" , type = float , default = 0 ,
@@ -72,9 +62,20 @@ def browser_engine_arg(option, opt, value, parser):
7262 default = defaults .BROWSER_ENGINES_ENABLED ,
7363 action = 'callback' ,
7464 type = 'string' ,
75- callback = browser_engine_arg ,
65+ callback = comma_separated_callback (
66+ is_valid_func = lambda v : v in {'webkit' , 'chromium' },
67+ error_msg = "{invalid} is not a supported --browser-engine" ,
68+ ),
7669 help = "Comma-separated list of enabled browser engines (default: %s). "
7770 "Allowed engines are chromium and webkit." % defaults .BROWSER_ENGINES_ENABLED )
71+ op .add_option ("--dont-log-args" ,
72+ default = [],
73+ action = 'callback' ,
74+ type = 'string' ,
75+ callback = comma_separated_callback (),
76+ help = "Comma-separated list of request args which values "
77+ "won't be logged, regardless of the log level. "
78+ "Example: lua_source,password" )
7879 op .add_option ("--lua-package-path" , default = "" ,
7980 help = "semicolon-separated places to add to Lua package.path. "
8081 "Each place can have a ? in it that's replaced with the module name." )
@@ -183,6 +184,7 @@ def log_splash_version():
183184
184185
185186def splash_server (portnum , ip , slots , network_manager_factory , max_timeout ,
187+ * ,
186188 splash_proxy_factory_cls = None ,
187189 js_profiles_path = None ,
188190 ui_enabled = True ,
@@ -194,6 +196,7 @@ def splash_server(portnum, ip, slots, network_manager_factory, max_timeout,
194196 argument_cache_max_entries = None ,
195197 disable_browser_caches = False ,
196198 browser_engines_enabled = (),
199+ dont_log_args = None ,
197200 verbosity = None ):
198201 from twisted .internet import reactor
199202 from twisted .web .server import Site
@@ -242,6 +245,7 @@ def splash_server(portnum, ip, slots, network_manager_factory, max_timeout,
242245 argument_cache_max_entries = argument_cache_max_entries ,
243246 strict_lua_runner = strict_lua_runner ,
244247 browser_engines_enabled = list (browser_engines_enabled ),
248+ dont_log_args = dont_log_args ,
245249 )
246250 factory = Site (root )
247251 reactor .listenTCP (portnum , factory , interface = ip )
@@ -276,7 +280,7 @@ def force_shutdown():
276280 t .start (60 , now = False )
277281
278282
279- def default_splash_server (portnum , ip , max_timeout , slots = None ,
283+ def default_splash_server (portnum , ip , max_timeout , * , slots = None ,
280284 proxy_profiles_path = None , js_profiles_path = None ,
281285 js_disable_cross_domain_access = False ,
282286 filters_path = None , allowed_schemes = None ,
@@ -292,6 +296,7 @@ def default_splash_server(portnum, ip, max_timeout, slots=None,
292296 server_factory = splash_server ,
293297 disable_browser_caches = False ,
294298 browser_engines_enabled = (),
299+ dont_log_args = None ,
295300 ):
296301 from splash import network_manager
297302 network_manager_factory = network_manager .NetworkManagerFactory (
@@ -322,6 +327,7 @@ def default_splash_server(portnum, ip, max_timeout, slots=None,
322327 max_timeout = max_timeout ,
323328 argument_cache_max_entries = argument_cache_max_entries ,
324329 browser_engines_enabled = browser_engines_enabled ,
330+ dont_log_args = dont_log_args ,
325331 )
326332
327333
@@ -425,6 +431,7 @@ def main(jupyter=False, argv=None, server_factory=splash_server):
425431 server_factory = server_factory ,
426432 disable_browser_caches = opts .disable_browser_caches ,
427433 browser_engines_enabled = opts .browser_engines ,
434+ dont_log_args = set (opts .dont_log_args ),
428435 )
429436 signal .signal (signal .SIGUSR1 , lambda s , f : traceback .print_stack (f ))
430437
0 commit comments