Aldo Cortesi
b6abe96202
Move dump handlers to addon
2017-03-16 18:05:57 +13:00
Aldo Cortesi
1e6c51c698
Merge pull request #2152 from cortesi/readfile
...
Extract flow reading into addons
2017-03-16 15:51:21 +13:00
Aldo Cortesi
228a22b3c0
Add a light-weight custom event system, use it for keepserving
...
This patch implements the lightweight event system I propose in #2144 , adds a
custom event "processing_complete" that is triggered after file read, client
replay and server replay, and introduces a KeepServing addon to handle this for
mitmdump.
2017-03-16 11:07:00 +13:00
Aldo Cortesi
169068c7ec
Clean up addonmanager interface
...
Clarify the plethora of invocation methods we've sprouted, correct some usages
in the codebase.
2017-03-16 08:50:29 +13:00
Maximilian Hils
65c4a3cf1d
add Request.make
2017-03-15 14:06:00 +01:00
Aldo Cortesi
ef582333ff
Extract flow reading into addons
...
This patch moves the final pieces of master functionality into addons.
- Add a ReadFile addon to read from file
- Add a separate ReadStdin addon to read from stdin, only used by mitmdump
- Remove all methods that know about io and serialization from master.Master
2017-03-15 13:44:48 +13:00
Maximilian Hils
30797755fb
stateobject: automatically change id when copying
2017-03-14 17:08:40 +01:00
Maximilian Hils
375680a3be
add connection ids
2017-03-14 17:08:40 +01:00
Maximilian Hils
2d016775fe
Merge pull request #2149 from mhils/multidictview-copy
...
Add MultiDictView.copy()
2017-03-14 14:38:38 +01:00
Maximilian Hils
0de8f46c6e
Merge pull request #2145 from mhils/ne
...
py3: __ne__ delegates to __eq__ by default
2017-03-14 14:38:00 +01:00
Maximilian Hils
961747c4bc
Merge pull request #2120 from ujjwal96/replace-from-file
...
Replace from file through replacement editor #1458
2017-03-14 02:23:31 +01:00
Maximilian Hils
de1de3f626
add MultiDictView.copy
2017-03-14 02:18:02 +01:00
Maximilian Hils
875ce8c9c1
py3: __ne__ delegates to __eq__ by default
2017-03-14 00:40:15 +01:00
Aldo Cortesi
b745428b5c
Enable custom options in config files
...
We also now ignore unknown options in config files by default, and print a
warning if verbosity is incremented.
2017-03-14 09:40:33 +13:00
Aldo Cortesi
2832e790fd
Move serialization methods out of Options
...
Attributes on options share a namespace with options themselves. It's getting
too crowded on our Options object, so let's shift some obvious stuff into the
module.
2017-03-14 08:34:25 +13:00
Aldo Cortesi
c24f7d8e12
Optmanager: handle unknown options in value sets
2017-03-14 08:32:19 +13:00
Aldo Cortesi
75f83ba380
Show custom addon options in --options output
2017-03-14 08:32:19 +13:00
Aldo Cortesi
0c6663d0d5
Enable custom options for addons
...
- Add an options parameter to the start() event. This is to be used by addons
on startup to add custom options.
- Add a running() event that is called once the proxy is up and running.
- With the new paradigm we can't log during master __init__, so add a tiny
termstatus addon to print proxy status to terminal once we're running.
2017-03-14 08:32:19 +13:00
Maximilian Hils
05e11547f5
Merge remote-tracking branch 'origin/master' into pr-2120
...
Conflicts:
test/mitmproxy/addons/test_replace.py
2017-03-12 23:33:49 +01:00
Maximilian Hils
0f4b523868
replacements: error right away when file does not exist
2017-03-12 23:28:49 +01:00
Thomas Kriechbaumer
1b045d24bc
nuke tutils.tmpdir, use pytest tmpdir
2017-03-12 22:55:22 +01:00
Maximilian Hils
4684617d2c
minor fixes
2017-03-12 20:24:50 +01:00
Maximilian Hils
39154e628e
Merge pull request #2118 from lymanZerga11/patch-3
...
Update proxyauth.py to add proxyauth metadata
2017-03-11 03:04:38 +01:00
Thomas Kriechbaumer
e9746c5182
Merge pull request #2114 from mitmproxy/fix-websocket-serialization
...
make websocket flows serializable
2017-03-10 21:15:46 +01:00
Thomas Kriechbaumer
45bf1ff64d
disable h2c prior knowledge connections
2017-03-10 11:37:25 +01:00
Thomas Kriechbaumer
b1dd86d7ae
make websocket flows serializable
...
fixes #2113
2017-03-09 19:08:59 +01:00
Ujjwal Verma
25703f8c53
Fixed Replacement test
2017-03-09 23:33:11 +05:30
lymanZerga11
8e67c6f512
add tests
2017-03-09 09:01:37 +08:00
lymanZerga11
6d53d08b6c
Add tests
2017-03-09 09:01:04 +08:00
Maximilian Hils
63179d9751
core -> core_option_validation
...
longer, but much clearer for devs who are unfamiliar with the codebase.
2017-03-08 15:17:07 +01:00
Maximilian Hils
f276c7a80d
change add_option parameter order
...
name, type, value matches natural language ($x is a bool with a default value of $y)
and also matches the python type annotation order of name: type = value
2017-03-08 00:52:37 +01:00
Maximilian Hils
8707928b16
unify server spec parsing
2017-03-08 00:18:34 +01:00
Aldo Cortesi
98ec3b77fe
Carefully re-add a small number of short flags
...
The mechanism for booleans attaches the short flag to whatever the opposite of
the default is.
2017-03-07 21:01:21 +13:00
Aldo Cortesi
aed780bf48
Change the way proxy authetication is specified
...
We now have one option "proxyauth". If this is "any", we accept any
credentials, if it starts with an @ it's treated as a path to an htpasswd file,
if it is of the form username:password it's a single-user credential.
2017-03-07 20:18:30 +13:00
Aldo Cortesi
320d8848ab
Options tweaks
...
- Regularise presentation and wording
- Help is mandatory for all options
- Auto-generate wording to say that sequence options can be passed multiple
times on the command-line
2017-03-07 15:23:46 +13:00
Aldo Cortesi
10db254791
Remove less commonly used command-line options
...
We now have --set, so only options that really deserve it get a dedicated flag.
I'm inclined to strip this back even more. Feel free to argue that YOUR
favourite option deserves special treatment here.
2017-03-07 14:46:28 +13:00
Aldo Cortesi
ac3b0d69cc
Add the --set option to set options directly
...
The --set option is a universal flag for setting options. Some examples:
Turn on a boolean:
mitmdump --set onboarding=false
Add a value to a sequence:
mitumdupm --set setheaders=/foo/bar/voing
Zero a sequence:
mitumdupm --set setheaders
2017-03-07 14:27:50 +13:00
Aldo Cortesi
79f5883c2f
Option spacing and coverage
2017-03-07 13:47:39 +13:00
Aldo Cortesi
99a6b0dbc1
Add --options that dumps annotated option defaults
2017-03-07 13:16:28 +13:00
Aldo Cortesi
b51df9a0b1
Cleanups and test coverage
2017-03-07 10:28:15 +13:00
Aldo Cortesi
2312cf6fb0
Automate slurping up command-line options
...
Now that options are completely regular, we can automate reading them out of
arguments, rather than listing them out by hand like savages.
2017-03-07 08:49:19 +13:00
Aldo Cortesi
edfd62e42a
Replacements and setheaders are always strings
...
Instead of having two representations we have one canonical specification.
Fixing the editor in console is left ot a further patch.
2017-03-06 20:58:51 +13:00
Aldo Cortesi
82163a1e68
Unify mode specification
...
We now have:
--mode regular (the default)
--mode transparent
--mode socks5
--mode reverse:SPEC
--mode upstream:SPEC
Where SPEC is a host specification.
2017-03-06 20:30:49 +13:00
Aldo Cortesi
9b1f40da37
Options unification: streamfile
...
We now have one option to control this. If the path is prefixed with a "+" we
append, otherwise we overwrite.
2017-03-06 13:48:37 +13:00
Aldo Cortesi
71a830c836
Options unification: string choices
2017-03-06 13:20:17 +13:00
Aldo Cortesi
18a6b66ba4
Options unification: simple strings
...
Move all simple string options to the new scheme. Also regularise some names.
2017-03-06 11:39:19 +13:00
Aldo Cortesi
201c65960e
Options unification: sizes
...
Start dealing with corner cases:
- Sizes are always stored in options as strings
- Add a new core addon that's responsible for verifying settings that don't
belong to an addon
- Add a _processed scratch space on the Options object for processed core
values to be stored in. This is pretty dirty, but less dirty than re-parsing
values every time. We'll come up with something better down the track.
2017-03-06 09:07:16 +13:00
Aldo Cortesi
f15a628561
Start unifying options and the command-line: booleans
...
This commit:
- Adds a help field to options
- Adds a function to generate parser definitions from options
- Uses this to migrate all boolean flags over to the new system
- Makes all booleans consistently follow the --foo/--not-foo convention
There are a number of things left to be done here:
- Argparse doesn't give us a nice way to format --foo --not-foo help. Click
does, and moving to click is a goal down the track.
- For now, we remove all short aliases. I want to re-evaluate these
systematically once we have the new structure in place.
2017-03-05 20:16:33 +13:00
Aldo Cortesi
67381ae550
Revamp options
...
- Options are now explicitly initialized with an add_option method
- We have one canonical Options class - ditch dump.Options
2017-03-05 15:10:03 +13:00
Nikhil Soni
0081d9b828
Merge branch 'master' into on-issues
2017-03-03 12:58:44 +05:30
Nikhil Soni
3da8532bed
Adds test for --keep-host-header
2017-03-03 12:34:36 +05:30
Nikhil Soni
317d183ba4
Changes dns_spoofing example to use --keep-host-header
2017-03-03 12:34:36 +05:30
Thomas Kriechbaumer
a505221e1a
http2: fix h2 header normalization test ( #2080 )
2017-03-01 12:46:42 +01:00
David Dworken
99b584ad7d
added XSS scanner example ( #1907 )
2017-02-27 18:22:39 +01:00
Thomas Kriechbaumer
e0bc1109c0
do not return IP addresses in SSLCert.altnames
2017-02-26 20:54:06 +01:00
Thomas Kriechbaumer
6d228dfb9f
certs: coverage++
2017-02-26 20:54:04 +01:00
Thomas Kriechbaumer
9b6986ea87
connections: coverage++ ( #2064 )
2017-02-26 20:50:52 +01:00
Thomas Kriechbaumer
2aecffd39a
optmanager: coverage++ ( #2062 )
2017-02-25 12:12:43 +01:00
Thomas Kriechbaumer
ccd8e1e617
http: coverage++ ( #2060 )
2017-02-24 22:39:16 +01:00
Thomas Kriechbaumer
3c66eb5b4b
move tests around ( #2059 )
2017-02-24 22:00:41 +01:00
Thomas Kriechbaumer
e89c785719
move tests around ( #2058 )
2017-02-24 21:39:13 +01:00
Thomas Kriechbaumer
d17309eda8
flowfilter: coverage++
2017-02-24 18:47:56 +01:00
Thomas Kriechbaumer
3e9125a3c1
nuke tcp.Address and add proper IPv6 support
2017-02-24 13:39:02 +01:00
Maximilian Hils
ba76dbc672
Merge pull request #2048 from ujjwal96/ipv6-addresses
...
Absolute IPv6 addresses supported
2017-02-22 13:17:53 +01:00
Matthew Shao
5fc4fc28b6
Add test for @concurrent decorator in class.
2017-02-21 16:56:48 +08:00
Ujjwal Verma
11134b669e
Absolute IPv6 addresses supported
2017-02-20 21:02:43 +05:30
Thomas Kriechbaumer
0de277c18b
improve test
2017-02-20 11:48:57 +01:00
Thomas Kriechbaumer
050245e842
Merge pull request #2017 from lymanZerga11/patch-1
...
Catch ValueErrors from url.parse()
2017-02-20 11:48:40 +01:00
Thomas Kriechbaumer
ac6915c002
improve tests
2017-02-20 11:11:10 +01:00
Thomas Kriechbaumer
51e08a5b85
Merge pull request #2041 from krsoninikhil/debug
...
Adds PyInstaller build indicator to --version argument
2017-02-20 10:29:15 +01:00
Nikhil Soni
ed084f5413
Adds test for pyinstaller indicator
2017-02-19 19:15:36 +05:30
Thomas Kriechbaumer
36352c9539
protobuf: coverage++
2017-02-19 14:29:09 +01:00
Thomas Kriechbaumer
83c2de8849
http2: disable priority forwarding
2017-02-18 14:30:08 +01:00
Maximilian Hils
4158a1ae55
Merge pull request #2040 from mhils/request-host-header
...
Add "Request.host_header"
2017-02-18 12:08:54 +01:00
Thomas Kriechbaumer
6ef4f094b3
Merge pull request #2038 from Kriechi/improve-http2-cov
...
test forbidden HTTP/2 headers in reponses
2017-02-18 11:50:57 +01:00
Thomas Kriechbaumer
47e6f977de
test forbidden HTTP/2 headers in reponses
2017-02-18 11:26:54 +01:00
Maximilian Hils
49c8e19f80
add request.host_header, fix #2036
2017-02-17 23:31:53 +01:00
Maximilian Hils
6a1e03ac6f
tests: make full cov plugin cwd-independent
2017-02-17 23:29:10 +01:00
Maximilian Hils
33acb48c71
Merge pull request #2032 from Kriechi/individual-coverage
...
add individual-coverage check
2017-02-17 22:56:13 +01:00
Thomas Kriechbaumer
4cec88fc7f
remove unneeded test module
2017-02-17 20:41:10 +01:00
mame82
ffdbccd571
Use existing urlencoding conventions when re-encoding edited form #1946 ( #2022 )
2017-02-16 15:03:27 +01:00
Thomas Kriechbaumer
6b22ca7a32
add individual-coverage check
2017-02-16 11:43:45 +01:00
Thomas Kriechbaumer
337b1c9399
fix wrong filename
2017-02-15 18:45:49 +01:00
Maximilian Hils
d1186eea18
Merge pull request #2029 from mhils/proxyauth
...
Improve ProxyAuth
2017-02-15 16:52:20 +01:00
Thomas Kriechbaumer
94a7e99fda
Merge pull request #2028 from Kriechi/nuke-pillow
...
nuke Pillow
2017-02-15 15:29:57 +01:00
Maximilian Hils
4bac850bb1
fix #1722 , fix #1734 , refs #2019
2017-02-15 14:20:46 +01:00
Maximilian Hils
0d9c7ce50c
image view: add fallback, catch all images but svgs
2017-02-15 14:04:24 +01:00
Thomas Kriechbaumer
8a6f8bd461
nuke Pillow
2017-02-15 00:54:14 +01:00
Thomas Kriechbaumer
24a51df9cb
extract full-coverage pytest plugin
2017-02-15 00:29:43 +01:00
Thomas Kriechbaumer
4d973e8295
fix imports
2017-02-14 23:47:33 +01:00
Thomas Kriechbaumer
a12c3d3f8e
restructure and move test files
...
add empty test files to satisfy linter
2017-02-14 23:31:37 +01:00
Thomas Kriechbaumer
04748e6f3f
add filename-matching linter
2017-02-14 22:48:24 +01:00
lymanZerga11
d30ef7ee3e
Update test_flowlist.py
2017-02-14 21:17:18 +08:00
lymanZerga11
a52d8c1dab
Update test_flowlist.py
2017-02-14 21:01:01 +08:00
lymanZerga11
26a17a3d82
Update test_flowlist.py
2017-02-13 15:05:29 +08:00
lymanZerga11
a912d67c06
Update test_flowlist.py
2017-02-13 10:47:50 +08:00
lymanZerga11
577fb818b9
Update test_flowlist.py
2017-02-13 10:39:48 +08:00
lymanZerga11
f5b30b8872
Update test_flowlist.py
2017-02-12 23:36:26 +08:00
lymanZerga11
df8a5aa9be
Update test_flowlist.py
2017-02-12 23:23:23 +08:00
lymanZerga11
c622e4a649
Create test_flowlist.py
2017-02-12 23:10:49 +08:00
Maximilian Hils
3067a971f9
Merge pull request #2000 from s4chin/add-jpeg-parser
...
Add jpeg parser
2017-02-11 23:00:14 +01:00
Sachin Kelkar
245e24dcf3
Add sources of images, remove copyrighted image
2017-02-12 01:19:36 +05:30
Maximilian Hils
71742654e3
Merge pull request #2005 from ujjwal96/script-reload
...
Closes #1828 script reloads on py file changes
2017-02-11 01:45:14 +01:00
Thomas Kriechbaumer
c8c79cc291
coverage++
2017-02-10 22:55:15 +01:00
Sachin Kelkar
8eb1d34644
Add app1 marker and tests
2017-02-10 22:40:19 +05:30
Ujjwal Verma
809207195d
closes #1828 script reloads on py file changes
2017-02-10 22:21:12 +05:30
Sachin Kelkar
c4e141a000
Add jpeg app0 sof0 com parsing
2017-02-10 11:16:23 +05:30
Ujjwal Verma
d6465b907f
Closes #1580 Gives warning when explicit proxy configured in transparent mode ( #1996 )
2017-02-09 20:56:06 +01:00
Maximilian Hils
380ff50e57
Merge pull request #2003 from Kriechi/coverage++
...
test refactoring and coverage++
2017-02-09 17:45:50 +01:00
Maximilian Hils
da8444b11f
flow_count() -> len(flows)
2017-02-09 16:44:27 +01:00
Maximilian Hils
1084588103
Merge pull request #1998 from mhils/fix-change-upstream
...
Fix change_upstream_proxy_server
2017-02-09 16:39:20 +01:00
Thomas Kriechbaumer
d10560d54c
improve coverage report
2017-02-09 16:08:36 +01:00
Thomas Kriechbaumer
2ff5d72236
minor changes
2017-02-09 16:08:36 +01:00
Thomas Kriechbaumer
0299bb5b2e
eventsequence: coverage++
2017-02-09 16:08:36 +01:00
Thomas Kriechbaumer
5a3976c43e
coverage whitelist -> blacklist
2017-02-09 16:08:36 +01:00
Thomas Kriechbaumer
f6cea09d5a
stateobject: coverage++
2017-02-09 16:08:36 +01:00
Thomas Kriechbaumer
1847cf175c
websockets, tcp, version: coverage++
2017-02-09 16:08:35 +01:00
Thomas Kriechbaumer
ae94ca6fa9
remove deprecated flow_count function
2017-02-09 16:08:35 +01:00
Maximilian Hils
9b97b63891
fix change_upstream_proxy_server
2017-02-09 15:24:31 +01:00
Maximilian Hils
7a205e80aa
improve stateobject tests
2017-02-09 14:21:25 +01:00
Thomas Kriechbaumer
7a9d40817c
pytest.raises: shim new API
2017-02-08 20:04:07 +01:00
Maximilian Hils
28c0596742
Merge pull request #1997 from s4chin/add-gif-parser
...
Add gif parser and tests
2017-02-08 12:09:48 +01:00
Sachin Kelkar
66ad95c330
Fix gif parsing error on some gifs and add test
2017-02-08 00:03:07 +05:30
Sachin Kelkar
4ef5de2cce
Add gif parser and tests
2017-02-06 17:57:59 +05:30
Ujjwal Verma
c622622c59
Encoding fixes and tests
2017-02-05 18:59:01 +05:30
Thomas Kriechbaumer
288f9a3857
fix flaky test
2017-02-05 10:42:47 +01:00
Thomas Kriechbaumer
966ffaa3d6
coverage++
2017-02-04 13:48:55 +01:00
Maximilian Hils
53f298ac41
Merge pull request #1967 from s4chin/remove-pillow
...
Add png parser
2017-02-03 18:58:34 +01:00
Maximilian Hils
bbdb7300fd
Merge pull request #1983 from Kriechi/coverage++
...
coverage++
2017-02-03 18:56:56 +01:00
Sachin Kelkar
15548ff433
Feedback
2017-02-03 18:40:50 +05:30
Thomas Kriechbaumer
bcaaa2f40b
coverage++
2017-02-03 11:55:33 +01:00
Sachin Kelkar
0674485e76
Fix and cleanup
2017-02-03 15:02:35 +05:30
Sachin Kelkar
88dbfd5257
Add iTXt and zTXt tests
2017-02-03 14:12:54 +05:30
Sachin Kelkar
abef020e07
Fix as per feedback and add more tests
2017-02-03 14:12:54 +05:30
Sachin Kelkar
6202958048
Add png parser
2017-02-03 14:12:54 +05:30
Ujjwal Verma
e10c36fe11
Added test
2017-02-03 02:58:02 +05:30
Thomas Kriechbaumer
79aa994275
fix merge
2017-02-02 17:26:31 +01:00
Thomas Kriechbaumer
4f0b2bc4de
adapt coverage checks
2017-02-02 14:20:56 +01:00
Thomas Kriechbaumer
ae008ed80b
replace tutils.raises with pytest.raises + shim
2017-02-02 12:59:01 +01:00
Thomas Kriechbaumer
ec92d7f67e
cleanup test utils
2017-02-02 12:59:01 +01:00
Thomas Kriechbaumer
6e329595ca
add test coverage protection
2017-02-02 11:39:33 +01:00
Thomas Kriechbaumer
380d8ec370
increase test coverage
2017-02-02 10:15:01 +01:00
Thomas Kriechbaumer
3ae060f0d3
fix console test
2017-02-02 10:13:12 +01:00
Maximilian Hils
7b2a986cea
tests++ ( #1976 )
2017-02-01 17:52:01 +01:00
lymanZerga11
4b10212caf
Add except clause to catch script parsing errors ( #1929 )
2017-02-01 15:27:10 +01:00
Maximilian Hils
212d9f1b98
Merge pull request #1948 from amm0nite/fix_dns_spoofing_example
...
Fix for dns_spoofing.py example
2017-02-01 15:25:51 +01:00
Aldo Cortesi
914659e888
Regularise setheaders options
...
As per replacements:
- Make the option type a string/tuple union
- Localise parsing strictly within the addon
- Adapt the console editor (we'll find a more elegant solution later)
2017-02-01 12:22:05 +13:00
Ammonite
9e3f06b7f2
Better test
2017-01-31 23:23:13 +01:00
Aldo Cortesi
4cc75a9560
Revamp replacement hooks
...
- Replacement specifiers can be either strings or tuples. This lets us cope
gracefully with command-line parsing (and posible quick interactive
specification) without having to special-case replacement hooks, or have
knowledge of hook specification leak outside the addon. We can also now use the
same command-line spec format in config files.
- Split replacement and replacement from file into separate addons and options.
Files are now read on each replacement, so you can edit replacement files in
place without restart.
- Modernise the test suite to use addon test helpers.
TODO: editing and displaying replace-from-file in console app
2017-02-01 11:10:28 +13:00
Aldo Cortesi
02f51d043d
Merge pull request #1965 from cortesi/optname
...
Consolidate option names
2017-02-01 08:39:35 +13:00