* Add font types to asset filter (~a)
* Add PR number to changelog
* remove flash mention
* restore asset test
Co-authored-by: Maximilian Hils <github@maximilianhils.com>
* remove old pyopenssl cruft
* bump minimum version of pyopenssl
* add extra spaces to conform to style guide
* update changelog
* replace getattr with direct SSL method calls
* put version check back in but remove setdefault method calls
* tweak changelog wording
* bumb tox.ini pyOpenSSL dependency version
Co-authored-by: Karl Parkinson <karlparkinson@Karls-MBP.hitronhub.home>
* Replays via upstream also need to comply with upstream handling
* Adjusted test for HTTP upstream replay which should NOT do a CONNECT
* Added Changelog
* Test for replay https pver upstream with CONNECT
* Proxy requests use full URL with host & port
* Finally remove some prints
* lint!
Co-authored-by: Maximilian Hils <github@maximilianhils.com>
* Partial gRPC contentview prototype, not linted, no tests, not as add-on
* Linted (flake8)
* Save dev state
* Rewrote of protobuf parser, use decoding strategy, reduced rendered data. Parser uses generators
* minor cleanup
* fix: preferred encoding was provided as function instead of value
* flake8: line length
* Backlinked message tree objects, temporary debug out
* Partial implementation of gRPC definitions. Save state to fix a cras (data invalidate in edit mode)
* hack: deal with missing exception handling for generator based content views
* gRPC/Protoparser descriptions (with test code)
* replaced manual gzip decoding with mitmproxy.net.encoding.decode
* Refactored typing imports
* Reafctoring
* distinguish request vs response definitions, separate view config from parser config
* Code cleaning, moved customized protobuf definitions to example addon
* final cleanup
* changelog
* Stubs for tests
* Fixed render_riority of addon example
* Started adding tests
* Work on tests
* mypy
* Added pseudo encoder to tests, to cover special decodings
* Example addon test added
* finalized tests, no 100 percent coverage possible, see comments un uncovered code
* minor adjustments
* fixup tests
* Typos
Co-authored-by: Maximilian Hils <git@maximilianhils.com>
When updating the response content for a response, avoid adding the
'content-length' header if the response contains a 'transfer-encoding'
header, from the spec [1]:
> When a message does not have a Transfer-Encoding header field, a
Content-Length header field can provide the anticipated size, as a
decimal number of octets, for a potential payload body
Note the 'transfer-encoding' header is not used with HTTP/2
https://httpwg.org/specs/rfc7230.html#header.content-length
We accidentally reused the value for SSL3 here.
This is not as a bad as a it looks: First, neither version
is enabled by default. Second, because of how Python enums
work, this simply made the `TLS1` version unavailable
as an option (which is how I detected it).
* Make it possible to set sequence options
Attempts to fix#3015 through looking at whether or not the option is
of the type Sequence[str].
Treat all deferred options as potentially Sequence options, by making the
deferred dict values a list.
* Add full test coverage to optmanager again
* Document how to set sequence options
* minor improvements
* update changelog
Co-authored-by: Maximilian Hils <git@maximilianhils.com>
* Add `json()` method for HTTP Request and Response classes.
* Raise errors when fetching content to decode as json.
* Update http.py
Co-authored-by: Maximilian Hils <github@maximilianhils.com>
* Fix for issue #4613
* Adding tests
* Updated CHANGELOG.md
* Restoring contentviews
* Reverting contentview tests
* Adding boundary generation and tests
* Extra newline for flake8
* Janky byte fix
* Revert "Extra newline for flake8"
This reverts commit 683ba167de2264d29f318e2bab83e13cbfb8812d.
* Reverting a commit that was supposed to go to dev branch
* Update CHANGELOG.md
* Update test_http.py
Co-authored-by: Maximilian Hils <github@maximilianhils.com>
* Add `flow.comment` command and keybinding to add a comment to a flow.
* Store comment in Flow().comment. Add ~comment flowfilter syntax.
* resolve: Pythonic flow.comment
* Be consistent and use comment variable.
* keyinfo typing
* Fix parsing of certificate issuer/subject with escaped special characters
* tests
* rfc4514_attribute_name and multi value test
* pyca version + mypy happy dance
* aT lEaSt tTO sPAceS BeFOre iNLinE cOMment
* fix coverage
Co-authored-by: Maximilian Hils <github@maximilianhils.com>
* Add block_list Option which returns a set HTTP status for a blocked flow filter:URL
* Add changelog entry
* Add blocklist to default AddOns
* Add Nginx 444 status code to list, so it is available for validation
* Add overview of blocklists
* Add allow-only, and more tests
* Fix mypy tox issue
* Finish test coverage with test for invalid filter
* Add PR feedback
* Fix type/scope error
* Fix stray blank line
* Delete concepts-blocklist.md
* Feature in overview
* Add flag to metadata for blocklisted flows.
* minor improvements
Co-authored-by: Maximilian Hils <git@maximilianhils.com>
Use original flow host instead of IP when exporting to curl/httpie.
Unless this is done, the SNI server name will not be sent, often making
the curl/httpie command have different behaviour than the original
request (most often in the form of failing to establish a TLS
connection).
With this change, we always use the original host, fixing this failure.
However, if the original host is a domain, it may sometimes resolve to
a different IP address later on. In curl, we solve this problem by
forcing it to connect to the original IP using `--resolve`. For httpie
there is currently no easy solution (see:
https://github.com/httpie/httpie/issues/414).