Skip to content

Commit e5d2c70

Browse files
committed
imp: Dockerfile + tests
1 parent 72367f6 commit e5d2c70

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

Dockerfile

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,17 @@ RUN set -eux; \
3434
zlib-dev \
3535
pcre2-dev \
3636
$PRIVOXY_BUILD_EXTRA; \
37-
mkdir -p /usr/local/src/privoxy-${PRIVOXY_VERSION}-stable; \
3837
wget -qO /var/lib/privoxy/privoxy-src.tar.gz https://sourceforge.net/projects/ijbswa/files/Sources/${PRIVOXY_VERSION}%20%28stable%29/privoxy-${PRIVOXY_VERSION}-stable-src.tar.gz/download; \
3938
echo "${PRIVOXY_SRC_SHA1SUM} /var/lib/privoxy/privoxy-src.tar.gz" | sha1sum -c; \
40-
tar -zxvf /var/lib/privoxy/privoxy-src.tar.gz -C /usr/local/src/; \
41-
cd /usr/local/src/privoxy-${PRIVOXY_VERSION}-stable; \
39+
tar -zxvf /var/lib/privoxy/privoxy-src.tar.gz -C /var/lib/privoxy/; \
40+
cd /var/lib/privoxy/privoxy-${PRIVOXY_VERSION}-stable; \
4241
autoheader; \
4342
autoconf; \
4443
./configure $PRIVOXY_CONFIG_OPTIONS; \
4544
make; \
4645
make -s install USER=privoxy GROUP=privoxy; \
4746
chown -R privoxy:privoxy /usr/local/etc/privoxy/; \
48-
rm -rf /var/lib/privoxy/privoxy-src.tar.gz /usr/local/src/privoxy-${PRIVOXY_VERSION}-stable; \
47+
rm -rf /var/lib/privoxy/privoxy-src.tar.gz /var/lib/privoxy/privoxy-${PRIVOXY_VERSION}-stable; \
4948
apk del build-tools build-deps;
5049

5150
# Add system tools
@@ -68,35 +67,33 @@ COPY data/rules/ /usr/local/etc/privoxy/privman-rules/
6867
COPY data/config /usr/local/etc/privoxy/
6968
COPY data/privoxy-blocklist.conf /var/lib/privoxy/
7069
RUN set -eux; \
70+
# Remove CRLF (dos2unix) and ensure LF-only
7171
sed -i 's/\r$//' /var/lib/privoxy/privoxy-blocklist.conf
7272
COPY bin/privman.py /var/lib/privoxy/privman.py
73+
RUN set -ex; \
74+
sed -i 's/\r$//' /var/lib/privoxy/privman.py; \
75+
head -1 /var/lib/privoxy/privman.py | grep -q '^#!' || \
76+
sed -i '1i #!/usr/bin/env python3' /var/lib/privoxy/privman.py; \
77+
chmod +x /var/lib/privoxy/privman.py; \
78+
ln -sf /var/lib/privoxy/privman.py /usr/local/sbin/privman;
7379
COPY bin/privoxy-blocklist.sh /var/lib/privoxy/privoxy-blocklist.sh
7480
RUN set -eux; \
75-
# Remove CRLF (dos2unix) and ensure LF-only
7681
sed -i 's/\r$//' /var/lib/privoxy/privoxy-blocklist.sh; \
77-
# Make executable
7882
chmod +x /var/lib/privoxy/privoxy-blocklist.sh; \
79-
# (Re)create the symlink
80-
ln -sf /var/lib/privoxy/privoxy-blocklist.sh /usr/local/bin/privoxy-blocklist
81-
COPY docker-entrypoint.sh /usr/local/bin/
82-
RUN sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh \
83-
&& chmod +x /usr/local/bin/docker-entrypoint.sh
83+
ln -sf /var/lib/privoxy/privoxy-blocklist.sh /usr/local/sbin/privoxy-blocklist;
84+
COPY docker-entrypoint.sh /usr/local/sbin/
85+
RUN sed -i 's/\r$//' /usr/local/sbin/docker-entrypoint.sh && \
86+
chmod +x /usr/local/sbin/docker-entrypoint.sh;
8487

8588
# Set the correct permissions
8689
RUN set -ex; \
87-
sed -i 's/\r$//' /var/lib/privoxy/privman.py /var/lib/privoxy/privoxy-blocklist.sh; \
88-
head -1 /var/lib/privoxy/privman.py | grep -q '^#!' || \
89-
sed -i '1i #!/usr/bin/env python3' /var/lib/privoxy/privman.py; \
9090
mkdir -p /var/log/privoxy /usr/local/etc/privoxy/CA /usr/local/etc/privoxy/certs /usr/local/etc/privoxy/privman-rules; \
91-
chown -R privoxy:privoxy /var/log/privoxy/ /usr/local/etc/privoxy/config /usr/local/etc/privoxy/CA /usr/local/etc/privoxy/certs /usr/local/etc/privoxy/privman-rules /var/lib/privoxy/privoxy-blocklist.conf; \
92-
chmod +x /var/lib/privoxy/privman.py; \
93-
ln -sf /var/lib/privoxy/privman.py /usr/local/sbin/privman; \
94-
ln -sf /var/lib/privoxy/privoxy-blocklist.sh /usr/local/sbin/privoxy-blocklist;
91+
chown -R privoxy:privoxy /var/log/privoxy/ /usr/local/etc/privoxy/config /usr/local/etc/privoxy/CA /usr/local/etc/privoxy/certs /usr/local/etc/privoxy/privman-rules /var/lib/privoxy/privoxy-blocklist.conf;
9592

9693
ENV ADBLOCK_URLS="" \
9794
ADBLOCK_FILTERS=""
9895

99-
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
96+
ENTRYPOINT ["/usr/local/sbin/docker-entrypoint.sh"]
10097

10198
RUN cp -a /usr/local/etc/privoxy /opt/privoxy-default
10299

tests/conftest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import platform
99

1010
PRIVOXY_PORT = "8118"
11+
IMAGE_TAG_NAME = "test:docker-privoxy-https"
1112

1213

1314
def pytest_addoption(parser):
@@ -25,7 +26,7 @@ def docker_build(pytestconfig):
2526
build_args={
2627
"PRIVOXY_VERSION": privoxy_ver,
2728
},
28-
tags="test:docker-privoxy-https",
29+
tags=IMAGE_TAG_NAME,
2930
cache=not no_cache,
3031
)
3132
return docker
@@ -36,7 +37,7 @@ def docker_privoxy(docker_build):
3637
container = None
3738
try:
3839
container = docker_build.container.run(
39-
"test:docker-privoxy-https",
40+
IMAGE_TAG_NAME,
4041
volumes=[
4142
("pytest-privoxy", "/usr/local/etc/privoxy"),
4243
],

tests/test_privoxy.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,18 @@ def test_blocklist(self, docker_privoxy, make_request, exec_privman):
3232
time.sleep(3)
3333
resp = make_request("http://google.com", docker_privoxy)
3434
assert self._is_blocked_by_privoxy(resp) == True
35+
resp = make_request("https://google.com", docker_privoxy)
36+
assert self._is_blocked_by_privoxy(resp) == True
3537
resp = exec_privman(docker_privoxy, "--remove-blocklist", ".google.")
3638
assert "successfully" in resp
3739
time.sleep(3)
40+
resp = make_request("http://google.com", docker_privoxy)
41+
assert resp.status_code == 200
3842
resp = make_request("https://google.com", docker_privoxy)
3943
assert resp.status_code == 200
4044

4145
def test_adblock_filters(self, docker_privoxy, make_request):
4246
resp = make_request("http://google.com/www/ad/test", docker_privoxy)
4347
assert self._is_blocked_by_privoxy(resp) == True
48+
resp = make_request("https://google.com/www/ad/test", docker_privoxy)
49+
assert self._is_blocked_by_privoxy(resp) == True

0 commit comments

Comments
 (0)