def default_addons(): return [ core.Core(), browser.Browser(), block.Block(), anticache.AntiCache(), anticomp.AntiComp(), check_ca.CheckCA(), clientplayback.ClientPlayback(), command_history.CommandHistory(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), script.ScriptLoader(), serverplayback.ServerPlayback(), mapremote.MapRemote(), modifybody.ModifyBody(), modifyheaders.ModifyHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), ]
def default_addons(): return [ core.Core(), core_option_validation.CoreOptionValidation(), allowremote.AllowRemote(), anticache.AntiCache(), anticomp.AntiComp(), check_alpn.CheckALPN(), check_ca.CheckCA(), clientplayback.ClientPlayback(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), replace.Replace(), script.ScriptLoader(), serverplayback.ServerPlayback(), setheaders.SetHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), ]
def test_simple(tmpdir): sa = save.Save() with taddons.context(sa) as tctx: p = str(tmpdir.join("foo")) tctx.configure(sa, save_stream_file=p) f = tflow.tflow(resp=True) sa.request(f) sa.response(f) tctx.configure(sa, save_stream_file=None) assert rd(p)[0].response tctx.configure(sa, save_stream_file="+" + p) f = tflow.tflow(err=True) sa.request(f) sa.error(f) tctx.configure(sa, save_stream_file=None) assert rd(p)[1].error tctx.configure(sa, save_stream_file="+" + p) f = tflow.tflow() sa.request(f) tctx.configure(sa, save_stream_file=None) assert not rd(p)[2].response
def default_addons(): return [ core.Core(), browser.Browser(), block.Block(), blocklist.BlockList(), anticache.AntiCache(), anticomp.AntiComp(), clientplayback.ClientPlayback(), command_history.CommandHistory(), comment.Comment(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), proxyserver.Proxyserver(), script.ScriptLoader(), next_layer.NextLayer(), serverplayback.ServerPlayback(), mapremote.MapRemote(), maplocal.MapLocal(), modifybody.ModifyBody(), modifyheaders.ModifyHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), save.Save(), tlsconfig.TlsConfig(), upstream_auth.UpstreamAuth(), ]
def test_websocket(tmpdir): sa = save.Save() with taddons.context(sa) as tctx: p = str(tmpdir.join("foo")) tctx.configure(sa, save_stream_file=p) f = tflow.twebsocketflow() sa.websocket_start(f) sa.websocket_end(f) tctx.configure(sa, save_stream_file=None) assert rd(p)
def test_tcp(tmpdir): sa = save.Save() with taddons.context(sa) as tctx: p = str(tmpdir.join("foo")) tctx.configure(sa, save_stream_file=p) tt = tflow.ttcpflow() sa.tcp_start(tt) sa.tcp_end(tt) tctx.configure(sa, save_stream_file=None) assert rd(p)
def test_static_viewer(tmpdir): s = static_viewer.StaticViewer() sa = save.Save() with taddons.context() as tctx: sa.save([tflow.tflow(resp=True)], str(tmpdir.join('foo'))) tctx.master.addons.add(s) tctx.configure(s, web_static_viewer=str(tmpdir), rfile=str(tmpdir.join('foo'))) assert tmpdir.join('index.html').check(file=1) assert tmpdir.join('static').check(dir=1) assert tmpdir.join('flows').check(dir=1)
def test_configure(tmpdir): sa = save.Save() with taddons.context(sa) as tctx: with pytest.raises(exceptions.OptionsError): tctx.configure(sa, save_stream_file=str(tmpdir)) with pytest.raises(Exception, match="Invalid filter"): tctx.configure( sa, save_stream_file=str(tmpdir.join("foo")), save_stream_filter="~~" ) tctx.configure(sa, save_stream_filter="foo") assert sa.filt tctx.configure(sa, save_stream_filter=None) assert not sa.filt
def test_rotate_stream(tmp_path): sa = save.Save() with taddons.context(sa) as tctx: tctx.configure(sa, save_stream_file=str(tmp_path / "a.txt")) f1 = tflow.tflow(resp=True) f2 = tflow.tflow(resp=True) sa.request(f1) sa.response(f1) sa.request(f2) # second request already started. tctx.configure(sa, save_stream_file=str(tmp_path / "b.txt")) sa.response(f2) sa.done() assert len(rd(tmp_path / "a.txt")) == 1 assert len(rd(tmp_path / "b.txt")) == 1
def test_websocket(tmp_path): sa = save.Save() with taddons.context(sa) as tctx: p = str(tmp_path / "foo") tctx.configure(sa, save_stream_file=p) f = tflow.twebsocketflow() sa.request(f) sa.websocket_end(f) f = tflow.twebsocketflow() sa.request(f) sa.websocket_end(f) tctx.configure(sa, save_stream_file=None) assert len(rd(p)) == 2
def test_tcp(tmp_path): sa = save.Save() with taddons.context(sa) as tctx: p = str(tmp_path / "foo") tctx.configure(sa, save_stream_file=p) tt = tflow.ttcpflow() sa.tcp_start(tt) sa.tcp_end(tt) tt = tflow.ttcpflow() sa.tcp_start(tt) sa.tcp_error(tt) tctx.configure(sa, save_stream_file=None) assert len(rd(p)) == 2
def test_disk_full(tmp_path, monkeypatch, capsys): sa = save.Save() with taddons.context(sa) as tctx: tctx.configure(sa, save_stream_file=str(tmp_path / "foo.txt")) def _raise(*_): raise OSError("wat") monkeypatch.setattr(sa, "maybe_rotate_to_new_file", _raise) f = tflow.tflow(resp=True) sa.request(f) with pytest.raises(SystemExit): sa.response(f) assert "Error while writing" in capsys.readouterr().err
def test_save_command(tmpdir): sa = save.Save() with taddons.context() as tctx: p = str(tmpdir.join("foo")) sa.save([tflow.tflow(resp=True)], p) assert len(rd(p)) == 1 sa.save([tflow.tflow(resp=True)], p) assert len(rd(p)) == 1 sa.save([tflow.tflow(resp=True)], "+" + p) assert len(rd(p)) == 2 with pytest.raises(exceptions.CommandError): sa.save([tflow.tflow(resp=True)], str(tmpdir)) v = view.View() tctx.master.addons.add(v) tctx.master.addons.add(sa) tctx.master.commands.execute("save.file @shown %s" % p)
def default_addons(): return [ core.Core(), browser.Browser(), block.Block(), anticache.AntiCache(), anticomp.AntiComp(), check_ca.CheckCA(), clientplayback.ClientPlayback(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), replace.Replace(), script.ScriptLoader(), serverplayback.ServerPlayback(), setheaders.SetHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), ]