3proxy updated up to 0.9.3 (#1)

This commit is contained in:
Paramtamtam 2021-01-16 01:16:25 +05:00 committed by GitHub
parent bad8266d07
commit 9d5ceade36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 210 additions and 81 deletions

8
.dockerignore Normal file
View File

@ -0,0 +1,8 @@
.editorconfig
.git
.github
.idea
.vscode
temp
tmp
LICENSE

3
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1,3 @@
# @link <https://help.github.com/en/articles/about-code-owners>
* @tarampampam

21
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,21 @@
# Docs: <https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/customizing-dependency-updates>
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
reviewers:
- "tarampampam"
assignees:
- "tarampampam"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
reviewers:
- "tarampampam"
assignees:
- "tarampampam"

21
.github/labeler.yml vendored Normal file
View File

@ -0,0 +1,21 @@
docs:
- '**/*.md'
- '**/*.MD'
.github:
- '.github/**/*'
CI:
- '.github/workflows/**/*'
- '.github/actions/**/*'
docker:
- 'Dockerfile'
- 'docker/**/*'
- '.dockerignore'
- 'docker-entrypoint.sh'
- '3proxy.cfg'
dev:
- '.gitignore'
- '.editorconfig'

12
.github/workflows/labeler.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: labeler
on: [pull_request_target]
jobs:
triage:
runs-on: ubuntu-20.04
steps:
- uses: actions/labeler@v3 # Action page: <https://github.com/actions/labeler>
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
sync-labels: true

View File

@ -12,22 +12,27 @@ jobs:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Generate image tag value - name: Set up Docker Buildx
run: echo "::set-env name=IMAGE_TAG::${GITHUB_REF##*/[vV]}" # `/refs/tags/v1.2.3` -> `1.2.3` uses: docker/setup-buildx-action@v1 # Action page: <https://github.com/docker/setup-buildx-action>
id: buildx
- name: Make docker login - name: Docker login in default registry
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_LOGIN }}" --password-stdin &> /dev/null run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_LOGIN }}" --password-stdin &> /dev/null
- name: Docker login in ghcr.io # Auth docs: <https://git.io/JLDaw>
run: echo "${{ secrets.GHCR_PASSWORD }}" | docker login ghcr.io -u tarampampam --password-stdin
- name: Generate image tag value
id: tag
run: echo "::set-output name=value::`echo ${GITHUB_REF##*/} | sed -e 's/^[vV ]*//'`" # `/refs/tags/v1.2.3` -> `1.2.3`
- name: Build image - name: Build image
run: | run: |
docker build \ docker buildx build \
--build-arg "BUILD_DATE=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" \ --platform ${{ steps.buildx.outputs.platforms }} \
--tag "tarampampam/3proxy:${IMAGE_TAG}" \ --tag "tarampampam/3proxy:${{ steps.tag.outputs.value }} \
--tag "tarampampam/3proxy:latest" \ --tag "tarampampam/3proxy:latest" \
-f ./Dockerfile . --tag "ghcr.io/tarampampam/3proxy:${{ steps.tag.outputs.value }}" \
--tag "ghcr.io/tarampampam/3proxy:latest" \
- name: Push version image --push \
run: docker push "tarampampam/3proxy:${IMAGE_TAG}" .
- name: Push latest image
run: docker push "tarampampam/3proxy:latest"

View File

@ -11,27 +11,64 @@ on:
- cron: '0 0 * * 0' # once in a week, docs: <https://git.io/JvxXE#onschedule> - cron: '0 0 * * 0' # once in a week, docs: <https://git.io/JvxXE#onschedule>
jobs: # Docs: <https://git.io/JvxXE> jobs: # Docs: <https://git.io/JvxXE>
docker-image: build-image:
name: Build and use docker image name: Build docker image
runs-on: ubuntu-latest runs-on: ubuntu-20.04
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Build docker image - name: Build docker image
run: docker build -f ./Dockerfile --tag image:local . run: docker build -f ./Dockerfile --tag 3proxy:local .
- name: Run docker image with default settings - name: Scan image
run: | uses: anchore/scan-action@v2 # action page: <https://github.com/anchore/scan-action>
docker run --rm -d \ with:
-p "3128:3128/tcp" \ image: 3proxy:local
-p "1080:1080/tcp" \ fail-build: true
image:local severity-cutoff: low # negligible, low, medium, high or critical
- name: Save docker image
run: docker save 3proxy:local > ./docker-image.tar
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: docker-image
path: ./docker-image.tar
try-to-use:
name: Build and use docker image (auth ${{ matrix.auth }})
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
auth: [yes, no]
needs: [build-image]
steps:
- name: Download builded docker image
uses: actions/download-artifact@v2
with:
name: docker-image
path: .artifact
- name: Prepare image to run
working-directory: .artifact
run: docker load < docker-image.tar
- name: Start server without auth setup
if: matrix.auth != 'yes'
run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" 3proxy:local
- name: Start server with auth setup
if: matrix.auth == 'yes'
run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" -e "PROXY_LOGIN=evil" -e "PROXY_PASSWORD=live" 3proxy:local
- name: Pause - name: Pause
run: sleep 2 run: sleep 3
- name: Try to use HTTP proxy - name: Try to use HTTP proxy
if: matrix.auth != 'yes'
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy http://127.0.0.1:3128 \ --proxy http://127.0.0.1:3128 \
@ -40,6 +77,7 @@ jobs: # Docs: <https://git.io/JvxXE>
https://github.com/robots.txt https://github.com/robots.txt
- name: Try to use SOCKS proxy - name: Try to use SOCKS proxy
if: matrix.auth != 'yes'
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy socks5://127.0.0.1:1080 \ --proxy socks5://127.0.0.1:1080 \
@ -47,22 +85,8 @@ jobs: # Docs: <https://git.io/JvxXE>
--max-time 3 \ --max-time 3 \
https://github.com/robots.txt https://github.com/robots.txt
- name: Stop container - name: Try to use HTTP proxy (with auth)
run: docker stop $(docker ps -a --filter ancestor=image:local -q) if: matrix.auth == 'yes'
- name: Run docker image with auth settings
run: |
docker run --rm -d \
-p "3128:3128/tcp" \
-p "1080:1080/tcp" \
-e "PROXY_LOGIN=evil" \
-e "PROXY_PASSWORD=live" \
image:local
- name: Pause
run: sleep 2
- name: Try to use HTTP proxy
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy http://127.0.0.1:3128 \ --proxy http://127.0.0.1:3128 \
@ -71,7 +95,8 @@ jobs: # Docs: <https://git.io/JvxXE>
--max-time 3 \ --max-time 3 \
https://github.com/robots.txt https://github.com/robots.txt
- name: Try to use SOCKS proxy - name: Try to use SOCKS proxy (with auth)
if: matrix.auth == 'yes'
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy socks5://127.0.0.1:1080 \ --proxy socks5://127.0.0.1:1080 \
@ -81,4 +106,4 @@ jobs: # Docs: <https://git.io/JvxXE>
https://github.com/robots.txt https://github.com/robots.txt
- name: Stop container - name: Stop container
run: docker stop $(docker ps -a --filter ancestor=image:local -q) run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)

View File

@ -1,4 +1,4 @@
#!/usr/bin/3proxy #!/bin/3proxy
config /etc/3proxy/3proxy.cfg config /etc/3proxy/3proxy.cfg
# you may use system to execute some external command if proxy starts # you may use system to execute some external command if proxy starts

View File

@ -4,6 +4,12 @@ All notable changes to this package will be documented in this file.
The format is based on [Keep a Changelog][keepachangelog] and this project adheres to [Semantic Versioning][semver]. The format is based on [Keep a Changelog][keepachangelog] and this project adheres to [Semantic Versioning][semver].
## v1.2.0
### Changed
- 3proxy updated from `0.8.13` up to `0.9.3`
## v1.1.0 ## v1.1.0
### Removed ### Removed

View File

@ -1,46 +1,48 @@
# Image page: <https://hub.docker.com/_/alpine> # Image page: <https://hub.docker.com/_/alpine>
FROM alpine:latest as builder FROM gcc:9.3 as builder
# e.g.: `docker build --build-arg "VERSION=0.8.13" .` # e.g.: `docker build --build-arg "VERSION=0.9.3" .`
ARG VERSION="0.8.13" ARG VERSION="0.9.3"
# Fetch 3proxy sources
RUN set -x \ RUN set -x \
&& apk add --no-cache \ && git clone --branch "${VERSION}" https://github.com/z3APA3A/3proxy.git /tmp/3proxy
linux-headers \
build-base \ WORKDIR /tmp/3proxy
git \
&& git clone --branch ${VERSION} https://github.com/z3APA3A/3proxy.git /tmp/3proxy \ # Patch sources
&& cd /tmp/3proxy \ RUN set -x \
&& echo '#define ANONYMOUS 1' >> /tmp/3proxy/src/3proxy.h \ && echo '#define ANONYMOUS 1' >> ./src/3proxy.h \
# proxy.c source: <https://github.com/z3APA3A/3proxy/blob/0.9.3/src/proxy.c>
&& sed -i 's~\(<\/head>\)~<style>html,body{background-color:#222526;color:#fff;font-family:sans-serif;\ && sed -i 's~\(<\/head>\)~<style>html,body{background-color:#222526;color:#fff;font-family:sans-serif;\
text-align:center;display:flex;flex-direction:column;justify-content:center}h1,h2{margin-bottom:0;font-size:2.5em}\ text-align:center;display:flex;flex-direction:column;justify-content:center}h1,h2{margin-bottom:0;font-size:2.5em}\
h2::before{content:'"'"'Proxy error'"'"';display:block;font-size:0.4em;color:#bbb;font-weight:100}\ h2::before{content:'"'"'Proxy error'"'"';display:block;font-size:0.4em;color:#bbb;font-weight:100}\
h3,p{color:#bbb}</style>\1~' /tmp/3proxy/src/proxy.c \ h3,p{color:#bbb}</style>\1~' ./src/proxy.c \
&& cat ./src/proxy.c | grep '</head>' \ && cat ./src/proxy.c | grep '</head>'
&& make -f Makefile.Linux
FROM alpine:latest
# e.g.: `docker build --build-arg "BUILD_DATE=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" .`
ARG BUILD_DATE
LABEL \
org.label-schema.name="3proxy" \
org.label-schema.description="Tiny free proxy server" \
org.label-schema.url="https://github.com/tarampampam/3proxy-docker" \
org.label-schema.vcs-url="https://github.com/tarampampam/3proxy-docker" \
org.label-schema.docker.cmd="docker run --rm -d -p \"3128:3128/tcp\" -p \"1080:1080/tcp\" this_image" \
org.label-schema.vendor="tarampampam" \
org.label-schema.build-date="$BUILD_DATE" \
org.label-schema.license="WTFPL" \
org.label-schema.schema-version="1.0"
COPY 3proxy.cfg /etc/3proxy/3proxy.cfg
COPY docker-entrypoint.sh /docker-entrypoint.sh
COPY --from=builder /tmp/3proxy/src/3proxy /usr/bin/3proxy
# And compile
RUN set -x \
&& echo "" >> ./Makefile.Linux \
&& echo "PLUGINS = StringsPlugin TrafficPlugin PCREPlugin TransparentPlugin SSLPlugin" >> ./Makefile.Linux \
&& echo "LIBS = -l:libcrypto.a -l:libssl.a -ldl" >> ./Makefile.Linux \
&& make -f Makefile.Linux \
&& strip ./bin/3proxy \
&& strip ./bin/StringsPlugin.ld.so \
&& strip ./bin/TrafficPlugin.ld.so \
&& strip ./bin/PCREPlugin.ld.so \
&& strip ./bin/TransparentPlugin.ld.so \
&& strip ./bin/SSLPlugin.ld.so
# Prepare filesystem for 3proxy running
FROM busybox:1.32-glibc as buffer
# Copy binaries
COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.* /lib/
COPY --from=builder /tmp/3proxy/bin/3proxy /bin/
COPY --from=builder /tmp/3proxy/bin/*.ld.so /usr/local/3proxy/libexec/
# Create unprivileged user
RUN set -x \ RUN set -x \
# Unprivileged user creation <https://stackoverflow.com/a/55757473/12429735RUN>
&& adduser \ && adduser \
--disabled-password \ --disabled-password \
--gecos "" \ --gecos "" \
@ -48,12 +50,38 @@ RUN set -x \
--shell /sbin/nologin \ --shell /sbin/nologin \
--no-create-home \ --no-create-home \
--uid 10001 \ --uid 10001 \
3proxy \ 3proxy
&& chown 3proxy:3proxy -R /etc/3proxy
# Prepare files and directories
RUN set -x \
&& chown -R 10001:10001 /usr/local/3proxy \
&& chmod -R 550 /usr/local/3proxy \
&& chmod -R 555 /usr/local/3proxy/libexec \
&& chown -R root /usr/local/3proxy/libexec \
&& mkdir /etc/3proxy \
&& chown -R 10001:10001 /etc/3proxy
# Copy our config and entrypoint script
COPY 3proxy.cfg /etc/3proxy/3proxy.cfg
COPY docker-entrypoint.sh /docker-entrypoint.sh
# Split all buffered layers into one
FROM scratch
LABEL \
org.opencontainers.image.title="3proxy" \
org.opencontainers.image.description="Tiny free proxy server" \
org.opencontainers.image.url="https://github.com/tarampampam/3proxy-docker" \
org.opencontainers.image.source="https://github.com/tarampampam/3proxy-docker" \
org.opencontainers.image.vendor="Tarampampam" \
org.opencontainers.image.licenses="WTFPL"
# Import from builder
COPY --from=buffer / /
# Use an unprivileged user # Use an unprivileged user
USER 3proxy:3proxy USER 3proxy:3proxy
ENTRYPOINT ["/docker-entrypoint.sh"] ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["/usr/bin/3proxy", "/etc/3proxy/3proxy.cfg"] CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"]

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh #!/bin/sh
set -e set -e
PROXY_LOGIN=${PROXY_LOGIN:-} # string PROXY_LOGIN=${PROXY_LOGIN:-} # string