name: tests on: push: branches: [master, main] tags-ignore: ['**'] pull_request: {} concurrency: group: ${{ github.ref }} cancel-in-progress: true jobs: # Docs: gitleaks: name: Gitleaks runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: {fetch-depth: 0} - uses: gacts/gitleaks@v1 build-image: name: Build docker image runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Build docker image run: docker build -f ./Dockerfile --tag 3proxy:local . - name: Save docker image run: docker save 3proxy:local > ./docker-image.tar - name: Upload artifact uses: actions/upload-artifact@v3 with: name: docker-image path: ./docker-image.tar retention-days: 1 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 built docker image uses: actions/download-artifact@v3 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" -e 'EXTRA_ACCOUNTS={"foo":"bar"}' 3proxy:local - name: Pause run: sleep 3 - name: Try to use HTTP proxy if: matrix.auth != 'yes' run: | curl -v --fail \ --proxy http://127.0.0.1:3128 \ --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - name: Try to use SOCKS proxy if: matrix.auth != 'yes' run: | curl -v --fail \ --proxy socks5://127.0.0.1:1080 \ --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - name: Try to use HTTP proxy (with auth) if: matrix.auth == 'yes' run: | curl -v --fail \ --proxy http://127.0.0.1:3128 \ --proxy-user evil:live \ --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - name: Try to use HTTP proxy (with auth, extra user) if: matrix.auth == 'yes' run: | curl -v --fail \ --proxy http://127.0.0.1:3128 \ --proxy-user foo:bar \ --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - name: Try to use SOCKS proxy (with auth) if: matrix.auth == 'yes' run: | curl -v --fail \ --proxy socks5://127.0.0.1:1080 \ --proxy-user evil:live \ --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - name: Stop container run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)