aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--docker/DockerfileARMv745
-rw-r--r--mitmproxy/net/websockets/frame.py2
-rwxr-xr-xrelease/cibuild.py12
-rw-r--r--test/mitmproxy/net/websockets/test_frame.py2
-rw-r--r--test/pathod/language/test_websockets.py6
6 files changed, 59 insertions, 10 deletions
diff --git a/.travis.yml b/.travis.yml
index 1b60d2bc..97a26f4e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -49,7 +49,7 @@ matrix:
- python: 3.6
env: NAME=docs TOXENV=docs
install:
- - wget https://github.com/gohugoio/hugo/releases/download/v0.37/hugo_0.37_Linux-64bit.deb
+ - wget https://github.com/gohugoio/hugo/releases/download/v0.41/hugo_0.41_Linux-64bit.deb
- sudo dpkg -i hugo*.deb
- pip install tox virtualenv setuptools
- pyenv global system 3.6
diff --git a/docker/DockerfileARMv7 b/docker/DockerfileARMv7
new file mode 100644
index 00000000..2988b5e4
--- /dev/null
+++ b/docker/DockerfileARMv7
@@ -0,0 +1,45 @@
+FROM resin/raspberrypi3-alpine:3.7
+
+ENV LANG=en_US.UTF-8
+
+ARG WHEEL_MITMPROXY
+ARG WHEEL_BASENAME_MITMPROXY
+
+COPY $WHEEL_MITMPROXY /home/mitmproxy/
+
+RUN [ "cross-build-start" ]
+
+# Add our user first to make sure the ID get assigned consistently,
+# regardless of whatever dependencies get added.
+RUN addgroup -S mitmproxy && adduser -S -G mitmproxy mitmproxy \
+ && apk add --no-cache \
+ su-exec \
+ git \
+ g++ \
+ libffi \
+ libffi-dev \
+ libstdc++ \
+ openssl \
+ openssl-dev \
+ python3 \
+ python3-dev \
+ && python3 -m ensurepip \
+ && LDFLAGS=-L/lib pip3 install -U /home/mitmproxy/${WHEEL_BASENAME_MITMPROXY} \
+ && apk del --purge \
+ git \
+ g++ \
+ libffi-dev \
+ openssl-dev \
+ python3-dev \
+ && rm -rf ~/.cache/pip /home/mitmproxy/${WHEEL_BASENAME_MITMPROXY}
+
+RUN [ "cross-build-end" ]
+
+VOLUME /home/mitmproxy/.mitmproxy
+
+COPY docker/docker-entrypoint.sh /usr/local/bin/
+ENTRYPOINT ["docker-entrypoint.sh"]
+
+EXPOSE 8080 8081
+
+CMD ["mitmproxy"]
diff --git a/mitmproxy/net/websockets/frame.py b/mitmproxy/net/websockets/frame.py
index ac6a0812..7b93bc24 100644
--- a/mitmproxy/net/websockets/frame.py
+++ b/mitmproxy/net/websockets/frame.py
@@ -71,7 +71,7 @@ class FrameHeader:
else:
self.length_code = length_code
- if mask is DEFAULT and masking_key is DEFAULT:
+ if (mask is DEFAULT and masking_key is DEFAULT) or mask == 0 or mask is False:
self.mask = False
self.masking_key = b""
elif mask is DEFAULT:
diff --git a/release/cibuild.py b/release/cibuild.py
index 17fb8554..2d11d69a 100755
--- a/release/cibuild.py
+++ b/release/cibuild.py
@@ -287,7 +287,7 @@ def build_wheel(be: BuildEnviron): # pragma: no cover
def build_docker_image(be: BuildEnviron, whl: str): # pragma: no cover
- click.echo("Building Docker image...")
+ click.echo("Building Docker images...")
subprocess.check_call([
"docker",
"build",
@@ -297,6 +297,15 @@ def build_docker_image(be: BuildEnviron, whl: str): # pragma: no cover
"--file", "docker/Dockerfile",
"."
])
+ subprocess.check_call([
+ "docker",
+ "build",
+ "--tag", be.docker_tag + "-ARMv7",
+ "--build-arg", "WHEEL_MITMPROXY={}".format(whl),
+ "--build-arg", "WHEEL_BASENAME_MITMPROXY={}".format(os.path.basename(whl)),
+ "--file", "docker/DockerfileARMv7",
+ "."
+ ])
def build_pyinstaller(be: BuildEnviron): # pragma: no cover
@@ -498,6 +507,7 @@ def upload(): # pragma: no cover
"-p", be.docker_password,
])
subprocess.check_call(["docker", "push", be.docker_tag])
+ subprocess.check_call(["docker", "push", be.docker_tag + "-ARMv7"])
if __name__ == "__main__": # pragma: no cover
diff --git a/test/mitmproxy/net/websockets/test_frame.py b/test/mitmproxy/net/websockets/test_frame.py
index 2a5bd556..f5c29c21 100644
--- a/test/mitmproxy/net/websockets/test_frame.py
+++ b/test/mitmproxy/net/websockets/test_frame.py
@@ -122,7 +122,7 @@ class TestFrameHeader:
f = websockets.FrameHeader(masking_key=b"foob", mask=0)
assert not f.mask
- assert f.masking_key
+ assert not f.masking_key
class TestFrame:
diff --git a/test/pathod/language/test_websockets.py b/test/pathod/language/test_websockets.py
index ed766bca..64ff024c 100644
--- a/test/pathod/language/test_websockets.py
+++ b/test/pathod/language/test_websockets.py
@@ -123,12 +123,6 @@ class TestWebsocketFrame:
assert not frm.header.mask
assert not frm.header.masking_key
- frm = self.fr("wf:b'foo':-mask:k'abcd'", is_client=True)
- assert not frm.header.mask
- # We're reading back a corrupted frame - the first 3 characters of the
- # mask is mis-interpreted as the payload
- assert frm.payload == b"abc"
-
def test_knone(self):
with pytest.raises(Exception, match="Expected 4 bytes"):
self.fr("wf:b'foo':mask:knone")