3proxy updated up to 0.9.3 (#1)
This commit is contained in:
parent
bad8266d07
commit
9d5ceade36
8
.dockerignore
Normal file
8
.dockerignore
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.editorconfig
|
||||||
|
.git
|
||||||
|
.github
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
temp
|
||||||
|
tmp
|
||||||
|
LICENSE
|
3
.github/CODEOWNERS
vendored
Normal file
3
.github/CODEOWNERS
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# @link <https://help.github.com/en/articles/about-code-owners>
|
||||||
|
|
||||||
|
* @tarampampam
|
21
.github/dependabot.yml
vendored
Normal file
21
.github/dependabot.yml
vendored
Normal 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
21
.github/labeler.yml
vendored
Normal 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
12
.github/workflows/labeler.yml
vendored
Normal 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
|
31
.github/workflows/release.yml
vendored
31
.github/workflows/release.yml
vendored
@ -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"
|
|
||||||
|
83
.github/workflows/tests.yml
vendored
83
.github/workflows/tests.yml
vendored
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
102
Dockerfile
102
Dockerfile
@ -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"]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PROXY_LOGIN=${PROXY_LOGIN:-} # string
|
PROXY_LOGIN=${PROXY_LOGIN:-} # string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user