Hi,
I have a very weird error with the following code:
from mitmproxy import *
from mitmproxy.addons import *
class Dummy:
def __init__(self):
print("print")
ctx.log.info("log")
def start():
return Dummy()
This is what I get:
$ mitmdump --script "problem.py" 2>&1 | head -n 30
Loading script: problem.py
print
log
Script error: TypeError: 'module' object is not callable
Script error: Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/mitmproxy/addons/script.py", line 75, in scriptenv
yield
File "/usr/local/lib/python3.5/dist-packages/mitmproxy/addons/script.py", line 161, in run
return func(*args, **kwargs)
TypeError: 'module' object is not callable
During handling of the above exception, another exception occurred:
TypeError: 'module' object is not callable
Script error: Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/mitmproxy/addons/script.py", line 75, in scriptenv
yield
File "/usr/local/lib/python3.5/dist-packages/mitmproxy/addons/script.py", line 161, in run
return func(*args, **kwargs)
TypeError: 'module' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/mitmproxy/addons/script.py", line 75, in scriptenv
yield
File "/usr/local/lib/python3.5/dist-packages/mitmproxy/addons/script.py", line 161, in run
return func(*args, **kwargs)
The wird thing is that if I remove the ctx.log.info line, there is no exception. So somehow, this line causes an exception after doing what it’s supposed to do…
(I am using this because I’m making a “combiner” thing to combine several objects implementing start(), stop(). The way it works is that it registers things into ctx.master.addons on start() and removes them on done(). But since done() isn’t called when the script is reloaded, in the start() of my combiner, I store the instance in some global variable, and I call its done in __init__ if it’s still there. And since I log everything, I used log in __init__() and that’s how I got that problem)
Thank you in advance for your help.