Commit Graph

274 Commits

Author SHA1 Message Date
Thomas Kriechbaumer
0be84fd6b9 fix tutils imports 2015-08-01 14:49:15 +02:00
Thomas Kriechbaumer
a837230320 move code from mitmproxy to netlib 2015-08-01 12:40:40 +02:00
Thomas Kriechbaumer
7b10817670 http2: improve protocol 2015-07-30 19:40:00 +02:00
Thomas Kriechbaumer
c7fcc2cca5 add on-the-wire representation methods 2015-07-29 11:27:43 +02:00
Thomas Kriechbaumer
827fe824d9 move code from mitmproxy to netlib 2015-07-27 11:48:38 +02:00
Maximilian Hils
b57c1386a1 Merge pull request #81 from Kriechi/protocol-refactor
HTTP protocol refactoring
2015-07-24 16:50:56 +02:00
Maximilian Hils
1b26161382 add distinct error for cert verification issues 2015-07-24 16:47:28 +02:00
Thomas Kriechbaumer
657973eca3 fix bugs 2015-07-22 16:13:06 +02:00
Thomas Kriechbaumer
faf17d3d60 http2: make proper use of odict 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
ecc7ffe928 reduce public interface
use private indicator pattern “_methodname”
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
d62dbee0f6 rename content -> body 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
4617ab8a3a add Request class and unify read_request interface 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
808b294865 refactor HTTP/1 as protocol 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
230c16122b change HTTP2 interface to match HTTP1 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
bab6cbff1e extract authentication methods from protocol 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
f50deb7b76 move bits around 2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
bd5ee21284 refactor websockets into protocol 2015-07-22 15:30:50 +02:00
Thomas Kriechbaumer
6dcfc35011 introduce http_semantics module
used for generic HTTP representation
everything should apply for HTTP/1 and HTTP/2
2015-07-22 15:30:50 +02:00
Maximilian Hils
880c66fe48 socks: optionally fail early 2015-07-03 02:45:12 +02:00
Maximilian Hils
9aaf10120d socks: add assert_socks5 method 2015-07-03 02:01:30 +02:00
Aldo Cortesi
3d6dc0879b Merge pull request #79 from mitmproxy/remove_certffi
Remove certffi
2015-06-27 09:22:33 +12:00
Maximilian Hils
26ea1a065e fix file type 2015-06-26 19:23:12 +02:00
Maximilian Hils
74c50d24eb fix tests on windows 2015-06-26 19:21:35 +02:00
Maximilian Hils
2723a0e573 remove certffi 2015-06-26 13:26:35 +02:00
Aldo Cortesi
db6576ca6f Merge pull request #76 from kyle-m/master
Provide debugging information when upstream server certificate fails validation
2015-06-24 09:27:08 +12:00
Kyle Morton
4766bce63d Adding test data to support post OpenSSL v1.0 cert hashing 2015-06-23 10:46:42 -07:00
Aldo Cortesi
80dd703a2a Merge branch 'Kriechi-ssl-version-handling' 2015-06-23 22:18:10 +12:00
Aldo Cortesi
239f4758af Remove dependence on pathod in test suite. 2015-06-23 22:16:03 +12:00
Kyle Morton
d1452424be Cleaning up upstream server verification. Adding storage of cerificate
verification errors on TCPClient object to enable warnings in downstream
projects.
2015-06-22 17:31:13 -07:00
Kyle Morton
7afe44ba4e Updating TCPServer to allow tests (and potentially other use cases) to serve
certificate chains instead of only single certificates.
2015-06-22 16:48:09 -07:00
Thomas Kriechbaumer
58118d607e unify SSL version/method handling 2015-06-22 20:39:34 +02:00
Aldo Cortesi
2aa1b98fbf netlib/test.py -> test/tservers.py 2015-06-22 14:52:23 +12:00
Thomas Kriechbaumer
61cbe36e40 http2: rename test file 2015-06-18 10:38:26 +02:00
Thomas Kriechbaumer
eb823a04a1 http2: improve :authority header 2015-06-16 15:00:29 +02:00
Thomas Kriechbaumer
abb37a3ef5 http2: improve test suite 2015-06-16 15:00:28 +02:00
Aldo Cortesi
bb206323ab Merge pull request #69 from kyle-m/master
Adding support for upstream certificate validation when using SSL/TLS…
2015-06-16 10:34:09 +12:00
Kyle Morton
fe764cde52 Adding support for upstream certificate validation when using SSL/TLS with an
instance of TCPClient.
2015-06-15 10:18:54 -07:00
Thomas Kriechbaumer
8d71a5b4ab http2: add authority header 2015-06-14 19:43:32 +02:00
Thomas Kriechbaumer
5fab755a05 add more tests 2015-06-12 15:27:29 +02:00
Thomas Kriechbaumer
a901bc3032 http2: add response creation 2015-06-12 14:45:51 +02:00
Thomas Kriechbaumer
8ea157775d http2: general improvements 2015-06-12 14:42:07 +02:00
Thomas Kriechbaumer
abbe88c8ce fix non-ALPN supported OpenSSL-related tests 2015-06-08 13:25:42 +02:00
Thomas Kriechbaumer
e39d8aed6d http2: refactor hex to file adapter 2015-06-05 20:55:32 +02:00
Thomas Kriechbaumer
6c1c6f5f0a http2: fix EchoHandler test helper 2015-06-05 20:49:03 +02:00
Thomas Kriechbaumer
e7c84a1ce1 make travis run all tests 2015-06-05 20:22:21 +02:00
Thomas Kriechbaumer
49043131cc increase test coverage 2015-06-05 20:22:20 +02:00
Thomas Kriechbaumer
fdc908cb98 http2: add protocol tests 2015-06-05 20:19:48 +02:00
Thomas Kriechbaumer
f003f87197 http2: rename module and refactor as strategy 2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
623dd850e0 http2: add logging and error handling 2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
40fa113116 http2: change header_block_fragment handling 2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
5cecbdc168 http2: add basic protocol handling 2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
b84001e8f0 http2: explicitly mention all arguments in tests 2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
9883509f89 simplify default ssl params for test servers 2015-06-05 13:33:37 +02:00
Aldo Cortesi
4ec181c140 Move version check to netlib, unit test it. 2015-05-31 13:12:01 +12:00
Aldo Cortesi
f76bfabc5d Adjust pep8 parameters, reformat 2015-05-30 12:02:58 +12:00
Thomas Kriechbaumer
629fa8e552 make tests aware of ALPN & OpenSSL 1.0.2 dependency 2015-05-29 17:04:12 +02:00
Thomas Kriechbaumer
c32d8189fa cleanup imports 2015-05-29 17:00:38 +02:00
Thomas Kriechbaumer
e2de49596d add HTTP/2-capable client 2015-05-29 15:31:22 +02:00
Thomas Kriechbaumer
780836b182 add ALPN support to TCP abstraction 2015-05-29 15:31:22 +02:00
Thomas Kriechbaumer
4c469fdee1 add hpack to encode and decode headers 2015-05-29 15:31:22 +02:00
Thomas Kriechbaumer
5288aa3640 add human_readable() to each frame for debugging 2015-05-29 11:42:46 +02:00
Thomas Kriechbaumer
bdb62101bb test Address __str__ 2015-05-29 11:42:46 +02:00
Aldo Cortesi
41af65a1c4 Merge branch 'Kriechi-cleanup' 2015-05-28 12:12:37 +12:00
Thomas Kriechbaumer
161bc2cfaa cleanup code with autoflake
run the following command:
  $ autoflake -r -i --remove-all-unused-imports --remove-unused-variables .
2015-05-27 11:25:33 +02:00
Thomas Kriechbaumer
e3d390e036 cleanup code with autopep8
run the following command:
  $ autopep8 -i -r -a -a .
2015-05-27 11:19:11 +02:00
Thomas Kriechbaumer
041ca5c499 update TLS defaults: signature hash and DH params
* SHA1 is deprecated (use SHA256)
* increase RSA key to 2048 bits
* increase DH params to 4096 bits (LogJam attack)
2015-05-27 10:53:57 +02:00
Thomas Kriechbaumer
4ce6f43616 implement basic HTTP/2 frame classes 2015-05-26 17:59:29 +02:00
Aldo Cortesi
dabb356c15 Zap a left-over test 2015-05-05 10:52:50 +12:00
Aldo Cortesi
f2bc58cdd2 Add tcp.Reader.safe_read, use it in socks and websockets
safe_read is guaranteed to raise or return a byte string of the
requested length. It's particularly useful for implementing binary
protocols.
2015-05-05 10:47:02 +12:00
Aldo Cortesi
7d9e38ffb1 websockets: A progressive masker. 2015-05-01 10:09:35 +12:00
Aldo Cortesi
4dce7ee074 websockets: more compact and legible human_readable 2015-04-30 12:10:08 +12:00
Aldo Cortesi
8086022920 Add a tiny utility class for keeping bi-directional mappings.
Use it in websocket and socks.
2015-04-30 09:04:22 +12:00
Aldo Cortesi
b7a2fc8553 testing: http read_request corner case 2015-04-30 08:41:13 +12:00
Aldo Cortesi
18df329930 websockets: nicer frame construction
- Resolve unspecified values on instantiation
- Add a check for masking key length
- Smarter resolution for masking_key and mask values. Do the right thing unless told not to.
2015-04-24 15:42:31 +12:00
Aldo Cortesi
192fd1db7f websockets: include all header values in frame roundtrip 2015-04-24 15:31:14 +12:00
Aldo Cortesi
def93ea8ca websockets: remove validation
We don't really need this any more. The interface is much less error prone
because bit flags are no longer integers, we have a range check on opcode on
header instantiation, and we've deferred length code calculation and so forth
into the byte render methods.
2015-04-24 15:23:00 +12:00
Aldo Cortesi
f22bc0b4c7 websocket: interface refactoring
- Separate out FrameHeader. We need to deal with this separately in many circumstances.
- Simpler equality scheme.
- Bits are now specified by truthiness - we don't care about the integer value.
This means lots of validation is not needed any more.
2015-04-24 15:09:21 +12:00
Aldo Cortesi
3519871f34 websockets: refactor to avoid rundantly specifying payloads and payload lengths 2015-04-24 09:21:04 +12:00
Aldo Cortesi
bdd52fead3 websockets: extract frame header creation into a function 2015-04-24 08:47:09 +12:00
Aldo Cortesi
42a87a1d8b websockets: handshake checks only take headers 2015-04-23 08:23:51 +12:00
Aldo Cortesi
176e29fc09 websockets: constants, variable names, refactoring 2015-04-21 23:13:42 +12:00
Aldo Cortesi
1b509d5aea Whitespace, interface simplification
- safe_tobytes doesn't buy us much
- move masking key generation inline
2015-04-21 22:51:01 +12:00
Aldo Cortesi
3e0a71ea34 websockets: refactor to use http and header functions in http.py 2015-04-21 22:39:45 +12:00
Aldo Cortesi
e5f1264838 Whitespace, indentation, nounce -> nonce 2015-04-21 13:39:00 +12:00
Aldo Cortesi
7d83e388aa Whitespace, pep8, mixed indentation 2015-04-21 11:19:00 +12:00
Aldo Cortesi
dd7ea896f2 Return a named tuple from read_response 2015-04-21 11:11:16 +12:00
Aldo Cortesi
2c660d7633 Migrate requeset reading from mitmproxy to netlib 2015-04-21 11:05:12 +12:00
Chandler Abraham
2c9079b518 whitespace 2015-04-19 22:22:15 -07:00
Chandler Abraham
4ea1ccb638 fixing test coverage, adding to_file/from_file reader writes to match socks.py 2015-04-19 22:18:30 -07:00
Aldo Cortesi
74389ef04a Websockets: reorganise
- websockets.py to top-level
- implementations into test suite
2015-04-20 09:38:09 +12:00
Aldo Cortesi
7defb5be86 websockets: more whitespace, WebSocketFrame -> Frame 2015-04-17 14:29:20 +12:00
Aldo Cortesi
3bbafa24bd Merge pull request #54 from Chandler/websockets
Netlib WebSockets take 1
2015-04-17 13:46:51 +12:00
Aldo Cortesi
0c85c72dc4 ODict improvements
- Setting values now tries to preserve the existing order, rather than
just appending to the end.
- __repr__ now returns  a repr of the tuple list. The old repr becomes a
.format() method. This is clearer, makes troubleshooting easier, and
doesn't assume all data in ODicts are header-like
2015-04-15 10:28:17 +12:00
Aldo Cortesi
d739882bf2 Add an .extend method for ODicts 2015-04-14 13:50:57 +12:00
Aldo Cortesi
6db5e0a4a1 Remove old-style set-cookie cruft, unit tests to 100% 2015-04-14 10:13:03 +12:00
Aldo Cortesi
de9e741125 Firm up cookie parsing and formatting API
Make a tough call: we won't support old-style comma-separated set-cookie
headers. Real world testing has shown that the latest rfc (6265) is
often violated in ways that make the parsing problem indeterminate.
Since this is much more common than the old style deprecated set-cookie
variant, we focus on the most useful case.
2015-04-14 10:02:10 +12:00
Chandler Abraham
2d72a1b6b5 100% test coverage, though still need plenty more 2015-04-13 13:36:09 -07:00
Chandler Abraham
0ed2a29063 whitespace 2015-04-11 17:28:52 -07:00
Chandler Abraham
f131f9b855 handshake tests, serialization test 2015-04-11 17:26:59 -07:00
Aldo Cortesi
1a79ef8b6c Merge branch 'master' of https://github.com/mitmproxy/netlib 2015-04-12 11:32:27 +12:00