17
17
18
18
import splash
19
19
from splash .argument_cache import ArgumentCache
20
+ from splash import defaults
20
21
from splash .qtrender import (
21
22
HtmlRender , PngRender , JsonRender , HarRender , JpegRender
22
23
)
@@ -85,17 +86,18 @@ class BaseRenderResource(_ValidatingResource):
85
86
isLeaf = True
86
87
content_type = "text/html; charset=utf-8"
87
88
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 ):
89
90
Resource .__init__ (self )
90
91
self .pool = pool
91
92
self .js_profiles_path = self .pool .js_profiles_path
92
93
self .max_timeout = max_timeout
93
94
self .argument_cache = argument_cache
95
+ self .max_response_size_limit = max_response_size_limit
94
96
95
97
def render_GET (self , request ):
96
98
#log.msg("%s %s %s %s" % (id(request), request.method, request.path, request.args))
97
99
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 )
99
101
100
102
# process argument cache
101
103
original_options = render_options .data .copy ()
@@ -281,8 +283,9 @@ def __init__(self, pool, sandboxed,
281
283
argument_cache ,
282
284
strict ,
283
285
implicit_main ,
286
+ max_response_size_limit = defaults .MAX_RESPONSE_SIZE_LIMIT ,
284
287
):
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 )
286
289
self .sandboxed = sandboxed
287
290
self .lua_package_path = lua_package_path
288
291
self .lua_sandbox_allowed_modules = lua_sandbox_allowed_modules
@@ -434,20 +437,22 @@ class DemoUI(_ValidatingResource):
434
437
435
438
PATH = b'info'
436
439
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 ):
438
441
Resource .__init__ (self )
439
442
self .pool = pool
440
443
self .lua_enabled = lua_enabled
441
444
self .max_timeout = max_timeout
445
+ self .max_response_size_limit = max_response_size_limit
442
446
443
447
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 )
445
449
options .get_filters (self .pool ) # check
446
450
params = options .get_common_params (self .pool .js_profiles_path )
447
451
params .update ({
448
452
'save_args' : options .get_save_args (),
449
453
'load_args' : options .get_load_args (),
450
454
'timeout' : options .get_timeout (),
455
+ 'response_size_limit' : options .get_response_size_limit (),
451
456
'request_body' : options .get_request_body (),
452
457
'response_body' : options .get_response_body (),
453
458
'har' : 1 ,
@@ -471,6 +476,7 @@ def render_GET(self, request):
471
476
url = 'http://' + url
472
477
params ['url' ] = url
473
478
timeout = params ['timeout' ]
479
+ response_size_limit = params ['response_size_limit' ]
474
480
params = {k : v for k , v in params .items () if v is not None }
475
481
476
482
# disable "phases" HAR Viewer feature
@@ -514,6 +520,7 @@ def render_GET(self, request):
514
520
<input type="hidden" name="images" value="1">
515
521
<input type="hidden" name="expand" value="1"> <!-- for HAR viewer -->
516
522
<input type="hidden" name="timeout" value="%(timeout)s">
523
+ <input type="hidden" name="response_size_limit" value="%(response_size_limit)s">
517
524
518
525
<div class="btn-group" id="render-form">
519
526
<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):
563
570
"lua_enabled" : self .lua_enabled ,
564
571
}),
565
572
timeout = timeout ,
573
+ response_size_limit = response_size_limit ,
566
574
url = url ,
567
575
theme = BOOTSTRAP_THEME ,
568
576
cm_resources = CODEMIRROR_RESOURCES if self .lua_enabled else "" ,
@@ -576,18 +584,20 @@ def __init__(self, pool, ui_enabled, lua_enabled, lua_sandbox_enabled,
576
584
max_timeout ,
577
585
argument_cache_max_entries ,
578
586
strict_lua_runner ,
587
+ max_response_size_limit = defaults .MAX_RESPONSE_SIZE_LIMIT ,
579
588
):
580
589
Resource .__init__ (self )
581
590
self .argument_cache = ArgumentCache (argument_cache_max_entries )
582
591
self .ui_enabled = ui_enabled
583
592
self .lua_enabled = lua_enabled
584
593
585
594
_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 ))
591
601
592
602
self .putChild (b"_debug" , DebugResource (pool , self .argument_cache ))
593
603
self .putChild (b"_gc" , ClearCachesResource (self .argument_cache ))
@@ -605,6 +615,7 @@ def __init__(self, pool, ui_enabled, lua_enabled, lua_sandbox_enabled,
605
615
max_timeout = max_timeout ,
606
616
argument_cache = self .argument_cache ,
607
617
strict = strict_lua_runner ,
618
+ max_response_size_limit = max_response_size_limit ,
608
619
)
609
620
self .putChild (b"execute" , ExecuteLuaScriptResource (
610
621
implicit_main = False , ** lua_kwargs ))
@@ -626,9 +637,11 @@ def __init__(self, pool, ui_enabled, lua_enabled, lua_sandbox_enabled,
626
637
self .putChild (DemoUI .PATH , DemoUI (
627
638
pool = pool ,
628
639
lua_enabled = self .lua_enabled ,
629
- max_timeout = max_timeout
640
+ max_timeout = max_timeout ,
641
+ max_response_size_limit = max_response_size_limit ,
630
642
))
631
643
self .max_timeout = max_timeout
644
+ self .max_response_size_limit = max_response_size_limit
632
645
633
646
def getChild (self , name , request ):
634
647
if name == b"" and self .ui_enabled :
@@ -720,6 +733,7 @@ def render_GET(self, request):
720
733
<input type="hidden" name="images" value="1">
721
734
<input type="hidden" name="expand" value="1"> <!-- for HAR viewer -->
722
735
<input type="hidden" name="timeout" value="%(timeout)s">
736
+ <input type="hidden" name="response_size_limit" value="%(response_size_limit)s">
723
737
724
738
<fieldset>
725
739
<div class="">
@@ -754,5 +768,6 @@ def render_GET(self, request):
754
768
}),
755
769
cm_resources = CODEMIRROR_RESOURCES ,
756
770
timeout = self .max_timeout ,
771
+ response_size_limit = self .max_response_size_limit ,
757
772
)
758
773
return result .encode ('utf8' )
0 commit comments