1717
1818import splash
1919from splash .argument_cache import ArgumentCache
20+ from splash import defaults
2021from splash .qtrender import (
2122 HtmlRender , PngRender , JsonRender , HarRender , JpegRender
2223)
@@ -85,17 +86,18 @@ class BaseRenderResource(_ValidatingResource):
8586 isLeaf = True
8687 content_type = "text/html; charset=utf-8"
8788
88- def __init__ (self , pool , max_timeout , argument_cache ):
89+ def __init__ (self , pool , max_timeout , argument_cache , max_response_size_limit = defaults . MAX_RESPONSE_SIZE_LIMIT ):
8990 Resource .__init__ (self )
9091 self .pool = pool
9192 self .js_profiles_path = self .pool .js_profiles_path
9293 self .max_timeout = max_timeout
9394 self .argument_cache = argument_cache
95+ self .max_response_size_limit = max_response_size_limit
9496
9597 def render_GET (self , request ):
9698 #log.msg("%s %s %s %s" % (id(request), request.method, request.path, request.args))
9799 request .starttime = time .time ()
98- render_options = RenderOptions .fromrequest (request , self .max_timeout )
100+ render_options = RenderOptions .fromrequest (request , self .max_timeout , max_response_size_limit = self . max_response_size_limit )
99101
100102 # process argument cache
101103 original_options = render_options .data .copy ()
@@ -281,8 +283,9 @@ def __init__(self, pool, sandboxed,
281283 argument_cache ,
282284 strict ,
283285 implicit_main ,
286+ max_response_size_limit = defaults .MAX_RESPONSE_SIZE_LIMIT ,
284287 ):
285- BaseRenderResource .__init__ (self , pool , max_timeout , argument_cache )
288+ BaseRenderResource .__init__ (self , pool , max_timeout , argument_cache , max_response_size_limit = max_response_size_limit )
286289 self .sandboxed = sandboxed
287290 self .lua_package_path = lua_package_path
288291 self .lua_sandbox_allowed_modules = lua_sandbox_allowed_modules
@@ -434,20 +437,22 @@ class DemoUI(_ValidatingResource):
434437
435438 PATH = b'info'
436439
437- def __init__ (self , pool , lua_enabled , max_timeout ):
440+ def __init__ (self , pool , lua_enabled , max_timeout , max_response_size_limit = defaults . MAX_RESPONSE_SIZE_LIMIT ):
438441 Resource .__init__ (self )
439442 self .pool = pool
440443 self .lua_enabled = lua_enabled
441444 self .max_timeout = max_timeout
445+ self .max_response_size_limit = max_response_size_limit
442446
443447 def _validate_params (self , request ):
444- options = RenderOptions .fromrequest (request , self .max_timeout )
448+ options = RenderOptions .fromrequest (request , self .max_timeout , max_response_size_limit = self . max_response_size_limit )
445449 options .get_filters (self .pool ) # check
446450 params = options .get_common_params (self .pool .js_profiles_path )
447451 params .update ({
448452 'save_args' : options .get_save_args (),
449453 'load_args' : options .get_load_args (),
450454 'timeout' : options .get_timeout (),
455+ 'response_size_limit' : options .get_response_size_limit (),
451456 'request_body' : options .get_request_body (),
452457 'response_body' : options .get_response_body (),
453458 'har' : 1 ,
@@ -471,6 +476,7 @@ def render_GET(self, request):
471476 url = 'http://' + url
472477 params ['url' ] = url
473478 timeout = params ['timeout' ]
479+ response_size_limit = params ['response_size_limit' ]
474480 params = {k : v for k , v in params .items () if v is not None }
475481
476482 # disable "phases" HAR Viewer feature
@@ -514,6 +520,7 @@ def render_GET(self, request):
514520 <input type="hidden" name="images" value="1">
515521 <input type="hidden" name="expand" value="1"> <!-- for HAR viewer -->
516522 <input type="hidden" name="timeout" value="%(timeout)s">
523+ <input type="hidden" name="response_size_limit" value="%(response_size_limit)s">
517524
518525 <div class="btn-group" id="render-form">
519526 <input class="form-control col-lg-8" type="text" placeholder="Paste an URL" type="text" name="url" value="%(url)s">
@@ -563,6 +570,7 @@ def render_GET(self, request):
563570 "lua_enabled" : self .lua_enabled ,
564571 }),
565572 timeout = timeout ,
573+ response_size_limit = response_size_limit ,
566574 url = url ,
567575 theme = BOOTSTRAP_THEME ,
568576 cm_resources = CODEMIRROR_RESOURCES if self .lua_enabled else "" ,
@@ -576,18 +584,20 @@ def __init__(self, pool, ui_enabled, lua_enabled, lua_sandbox_enabled,
576584 max_timeout ,
577585 argument_cache_max_entries ,
578586 strict_lua_runner ,
587+ max_response_size_limit = defaults .MAX_RESPONSE_SIZE_LIMIT ,
579588 ):
580589 Resource .__init__ (self )
581590 self .argument_cache = ArgumentCache (argument_cache_max_entries )
582591 self .ui_enabled = ui_enabled
583592 self .lua_enabled = lua_enabled
584593
585594 _args = pool , max_timeout , self .argument_cache
586- self .putChild (b"render.html" , RenderHtmlResource (* _args ))
587- self .putChild (b"render.png" , RenderPngResource (* _args ))
588- self .putChild (b"render.jpeg" , RenderJpegResource (* _args ))
589- self .putChild (b"render.json" , RenderJsonResource (* _args ))
590- self .putChild (b"render.har" , RenderHarResource (* _args ))
595+ _kwargs = {'max_response_size_limit' : max_response_size_limit }
596+ self .putChild (b"render.html" , RenderHtmlResource (* _args , ** _kwargs ))
597+ self .putChild (b"render.png" , RenderPngResource (* _args , ** _kwargs ))
598+ self .putChild (b"render.jpeg" , RenderJpegResource (* _args , ** _kwargs ))
599+ self .putChild (b"render.json" , RenderJsonResource (* _args , ** _kwargs ))
600+ self .putChild (b"render.har" , RenderHarResource (* _args , ** _kwargs ))
591601
592602 self .putChild (b"_debug" , DebugResource (pool , self .argument_cache ))
593603 self .putChild (b"_gc" , ClearCachesResource (self .argument_cache ))
@@ -605,6 +615,7 @@ def __init__(self, pool, ui_enabled, lua_enabled, lua_sandbox_enabled,
605615 max_timeout = max_timeout ,
606616 argument_cache = self .argument_cache ,
607617 strict = strict_lua_runner ,
618+ max_response_size_limit = max_response_size_limit ,
608619 )
609620 self .putChild (b"execute" , ExecuteLuaScriptResource (
610621 implicit_main = False , ** lua_kwargs ))
@@ -626,9 +637,11 @@ def __init__(self, pool, ui_enabled, lua_enabled, lua_sandbox_enabled,
626637 self .putChild (DemoUI .PATH , DemoUI (
627638 pool = pool ,
628639 lua_enabled = self .lua_enabled ,
629- max_timeout = max_timeout
640+ max_timeout = max_timeout ,
641+ max_response_size_limit = max_response_size_limit ,
630642 ))
631643 self .max_timeout = max_timeout
644+ self .max_response_size_limit = max_response_size_limit
632645
633646 def getChild (self , name , request ):
634647 if name == b"" and self .ui_enabled :
@@ -720,6 +733,7 @@ def render_GET(self, request):
720733 <input type="hidden" name="images" value="1">
721734 <input type="hidden" name="expand" value="1"> <!-- for HAR viewer -->
722735 <input type="hidden" name="timeout" value="%(timeout)s">
736+ <input type="hidden" name="response_size_limit" value="%(response_size_limit)s">
723737
724738 <fieldset>
725739 <div class="">
@@ -754,5 +768,6 @@ def render_GET(self, request):
754768 }),
755769 cm_resources = CODEMIRROR_RESOURCES ,
756770 timeout = self .max_timeout ,
771+ response_size_limit = self .max_response_size_limit ,
757772 )
758773 return result .encode ('utf8' )
0 commit comments