Allow to configure log output and make CI great again (#60)

This commit is contained in:
Pаramtamtām 2024-11-12 15:38:36 +04:00 committed by GitHub
parent 2a4024db68
commit 1f42c9285b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 56 additions and 204 deletions

View File

@ -1,8 +1,6 @@
.editorconfig ## Ignore everything
.git *
.github
.idea ## Except the following files (and directories)
.vscode !/3proxy.cfg.json
temp !/3proxy.cfg.mustach
tmp
LICENSE

View File

@ -1,3 +1,5 @@
# EditorConfig docs: <https://editorconfig.org/>
root = true root = true
[*] [*]
@ -8,5 +10,6 @@ indent_style = space
indent_size = 2 indent_size = 2
trim_trailing_whitespace = true trim_trailing_whitespace = true
[Dockerfile] [{*.yml,*.yaml}]
indent_size = 4 ij_any_spaces_within_braces = false
ij_any_spaces_within_brackets = false

13
.github/release.yml vendored Normal file
View File

@ -0,0 +1,13 @@
# yaml-language-server: $schema=https://json.schemastore.org/github-release-config.json
# docs: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
changelog:
categories:
- title: 🛠 Fixes
labels: [type:fix, type:bug]
- title: 🚀 Features
labels: [type:feature, type:feature_request]
- title: 📦 Dependency updates
labels: [dependencies]
- title: Other Changes
labels: ['*']

View File

@ -8,7 +8,7 @@ on:
jobs: jobs:
docker-hub-description: docker-hub-description:
name: Docker Hub Description name: Docker Hub Description
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4

View File

@ -1,4 +1,7 @@
name: release # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
# docs: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: 🚀 Release
on: on:
release: # Docs: <https://git.io/JeBz1#release-event-release> release: # Docs: <https://git.io/JeBz1#release-event-release>
@ -7,27 +10,21 @@ on:
jobs: jobs:
docker-image: docker-image:
name: Build docker image name: Build docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- {uses: gacts/github-slug@v1, id: slug} - {uses: gacts/github-slug@v1, id: slug}
- uses: docker/setup-qemu-action@v3 - uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3 - uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action> - uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
with: with:
username: ${{ secrets.DOCKER_LOGIN }} username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action> - uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6 # Action page: <https://github.com/docker/build-push-action> - uses: docker/build-push-action@v6 # Action page: <https://github.com/docker/build-push-action>
with: with:
context: . context: .

View File

@ -1,4 +1,7 @@
name: tests # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
# docs: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: 🧪 Tests
on: on:
push: push:
@ -12,63 +15,45 @@ concurrency:
jobs: # Docs: <https://git.io/JvxXE> jobs: # Docs: <https://git.io/JvxXE>
gitleaks: gitleaks:
name: Gitleaks name: Check for GitLeaks
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - {uses: actions/checkout@v4, with: {fetch-depth: 0}}
with: {fetch-depth: 0}
- uses: gacts/gitleaks@v1 - uses: gacts/gitleaks@v1
build-image: build-image:
name: Build docker image name: Build the docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: docker build -f ./Dockerfile --tag 3proxy:local .
- name: Build docker image - run: docker save 3proxy:local > ./docker-image.tar
run: docker build -f ./Dockerfile --tag 3proxy:local . - uses: actions/upload-artifact@v4
- name: Save docker image
run: docker save 3proxy:local > ./docker-image.tar
- name: Upload artifact
uses: actions/upload-artifact@v4
with: with:
name: docker-image name: docker-image
path: ./docker-image.tar path: ./docker-image.tar
retention-days: 1 retention-days: 1
try-to-use: try-to-use:
name: Build and use docker image (auth ${{ matrix.auth }}) name: Build and use the docker image (auth ${{ matrix.auth }})
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
auth: [yes, no] auth: [yes, no]
needs: [build-image] needs: [build-image]
steps: steps:
- name: Download built docker image - uses: actions/download-artifact@v4
uses: actions/download-artifact@v4
with: with:
name: docker-image name: docker-image
path: .artifact path: .artifact
- working-directory: .artifact
- name: Prepare image to run
working-directory: .artifact
run: docker load < docker-image.tar run: docker load < docker-image.tar
- if: matrix.auth != 'yes'
- 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 run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" 3proxy:local
- if: matrix.auth == 'yes'
- 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" -e 'EXTRA_ACCOUNTS={"foo":"bar"}' 3proxy:local run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" -e "PROXY_LOGIN=evil" -e "PROXY_PASSWORD=live" -e 'EXTRA_ACCOUNTS={"foo":"bar"}' 3proxy:local
- run: sleep 3
- name: Pause
run: sleep 3
- name: Try to use HTTP proxy - name: Try to use HTTP proxy
if: matrix.auth != 'yes' if: matrix.auth != 'yes'
run: | run: |
@ -77,7 +62,6 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use SOCKS proxy - name: Try to use SOCKS proxy
if: matrix.auth != 'yes' if: matrix.auth != 'yes'
run: | run: |
@ -86,7 +70,6 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use HTTP proxy (with auth) - name: Try to use HTTP proxy (with auth)
if: matrix.auth == 'yes' if: matrix.auth == 'yes'
run: | run: |
@ -96,7 +79,6 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use HTTP proxy (with auth, extra user) - name: Try to use HTTP proxy (with auth, extra user)
if: matrix.auth == 'yes' if: matrix.auth == 'yes'
run: | run: |
@ -106,7 +88,6 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use SOCKS proxy (with auth) - name: Try to use SOCKS proxy (with auth)
if: matrix.auth == 'yes' if: matrix.auth == 'yes'
run: | run: |
@ -116,6 +97,4 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)
- name: Stop container
run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)

View File

@ -1,6 +1,6 @@
{ {
"log": { "log": {
"output": "/dev/stdout" "output": "${LOG_OUTPUT:-/dev/stdout}"
}, },
"name_servers": [ "name_servers": [
"${PRIMARY_RESOLVER:-1.0.0.1}", "${PRIMARY_RESOLVER:-1.0.0.1}",

View File

@ -1,133 +0,0 @@
# Changelog
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].
## v1.9.1
### Fixed
- Extra configuration now applies before defining the proxy server in the configuration file [#49]
[#49]:https://github.com/tarampampam/3proxy-docker/pull/49
## v1.9.0
### Added
- `EXTRA_CONFIG` environment variable is supported now [#47]
[#47]:https://github.com/tarampampam/3proxy-docker/issues/47
## v1.8.3
### Fixed
- Missing port definitions when `EXTRA_ACCOUNTS` is set
## v1.8.2
### Removed
- `ppc64le` architecture support
## v1.8.1
### Added
- Multi-arch image support (plus `arm64` and `ppc64le`) [#31]
### Fixed
- Error page colors now depend on the theme, and the text is centered [#31]
[#31]:https://github.com/tarampampam/3proxy-docker/pull/31
## v1.8.0
### Added
- `EXTRA_ACCOUNTS` environment variable is supported now [#28]
[#28]:https://github.com/tarampampam/3proxy-docker/issues/28
## v1.7.0
### Added
- The following environment variables are supported now: `MAX_CONNECTIONS`, `PROXY_PORT`, `SOCKS_PORT`
### Changed
- Entrypoint script (`bash`) replaced with [`mustpl`](https://github.com/tarampampam/mustpl)
- The result docker image `busybox:1.34.1-glibc` replaced with `busybox:stable-glibc`
### Removed
- Dockerfile healthcheck
## v1.6.0
### Added
- Possibility of changing DNS resolvers using environment variables `PRIMARY_RESOLVER` (primary) and `SECONDARY_RESOLVER` (secondary)
## v1.5.0
### Fixed
- Docker image building optimized
### Added
- Healthcheck in the dockerfile
## v1.4.0
### Changed
- 3proxy updated from `0.9.3` up to `0.9.4`
## v1.3.0
### Changed
- Logging in JSON format
## v1.2.0
### Changed
- 3proxy updated from `0.8.13` up to `0.9.3`
## v1.1.0
### Removed
- Environment variable `AUTH_REQUIRED` support
### Changed
- Proxy error pages a little bit styled
## v1.0.0
### Fixed
- Dockerfile and docker entry-point script cleanup
## v0.1.1
### Fixed
- Docker entry-point script clean
## v0.1.0
### Changed
- First project release
[keepachangelog]:https://keepachangelog.com/en/1.0.0/
[semver]:https://semver.org/spec/v2.0.0.html

View File

@ -1,5 +1,6 @@
# Image page: <https://hub.docker.com/_/gcc> # syntax=docker/dockerfile:1
FROM gcc:13.2.0 as builder
FROM gcc:13.2.0 AS builder
# renovate: source=github-tags name=z3APA3A/3proxy # renovate: source=github-tags name=z3APA3A/3proxy
ARG Z3PROXY_VERSION=0.9.4 ARG Z3PROXY_VERSION=0.9.4
@ -36,7 +37,7 @@ RUN set -x \
&& strip ./bin/SSLPlugin.ld.so && strip ./bin/SSLPlugin.ld.so
# Prepare filesystem for 3proxy running # Prepare filesystem for 3proxy running
FROM alpine:latest as buffer FROM alpine:latest AS buffer
# create a directory for the future root filesystem # create a directory for the future root filesystem
WORKDIR /tmp/rootfs WORKDIR /tmp/rootfs

View File

@ -56,6 +56,7 @@ Image: ghcr.io/tarampampam/3proxy:1.8.2
| `PROXY_PORT` | HTTP proxy port number (`3128` by default) | `8080` | | `PROXY_PORT` | HTTP proxy port number (`3128` by default) | `8080` |
| `SOCKS_PORT` | SOCKS proxy port number (`1080` by default) | `8888` | | `SOCKS_PORT` | SOCKS proxy port number (`1080` by default) | `8888` |
| `EXTRA_CONFIG` | Additional 3proxy configuration (will be added to the **end** of the config file, but before the `proxy` and `flush`) | `# line 1\n# line 2` | | `EXTRA_CONFIG` | Additional 3proxy configuration (will be added to the **end** of the config file, but before the `proxy` and `flush`) | `# line 1\n# line 2` |
| `LOG_OUTPUT` | Log output file path (`/dev/stdout` by default, set `/dev/null` to disable logging) | `/tmp/3proxy.log` |
## How can I use this? ## How can I use this?
@ -87,13 +88,6 @@ Publishing new versions is very simple: just make the required changes in this r
Docker images will be built and published automatically. Docker images will be built and published automatically.
> The new release will overwrite the `latest` docker image tag in both registries. > The new release will overwrite the `latest` docker image tag in both registries.
>
## Changes log
[![Release date][badge_release_date]][link_releases]
[![Commits since latest release][badge_commits_since_release]][link_commits]
Changes log can be [found here][link_changes_log].
## Support ## Support