From a8644532a1d14b7326bb1042d631793d07328a12 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 26 Jun 2024 04:04:59 +0300 Subject: [PATCH] Escape values for generated form used in `request.post` (#1236) and build docker images for PRs --- .github/workflows/release-docker.yml | 65 +++++++++++++++++----------- src/flaresolverr_service.py | 7 +-- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index 357f906..88d5259 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -4,50 +4,63 @@ on: push: tags: - 'v*.*.*' + pull_request: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true jobs: build-docker-images: runs-on: ubuntu-22.04 steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Downcase repo + - name: Checkout + uses: actions/checkout@v4 + + - name: Downcase repo run: echo REPOSITORY=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV - - - name: Docker meta + + - name: Docker meta id: docker_meta - uses: crazy-max/ghaction-docker-meta@v3 + uses: docker/metadata-action@v5 with: - images: ${{ env.REPOSITORY }},ghcr.io/${{ env.REPOSITORY }} - tag-sha: false - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to DockerHub - uses: docker/login-action@v2 + images: | + ${{ env.REPOSITORY }},enable=${{ github.event_name != 'pull_request' }} + ghcr.io/${{ env.REPOSITORY }} + tags: | + type=semver,pattern={{version}},prefix=v + type=ref,event=pr + flavor: | + latest=auto + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + uses: docker/login-action@v3 + if: github.event_name != 'pull_request' with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GH_PAT }} - - - name: Build and push - uses: docker/build-push-action@v3 + + - name: Build and push + uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile platforms: linux/386,linux/amd64,linux/arm/v7,linux/arm64/v8 - push: ${{ github.event_name != 'pull_request' }} + push: true tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} diff --git a/src/flaresolverr_service.py b/src/flaresolverr_service.py index 82f68df..cfc2088 100644 --- a/src/flaresolverr_service.py +++ b/src/flaresolverr_service.py @@ -3,7 +3,8 @@ import platform import sys import time from datetime import timedelta -from urllib.parse import unquote +from html import escape +from urllib.parse import unquote, quote from func_timeout import FunctionTimedOut, func_timeout from selenium.common import TimeoutException @@ -439,7 +440,7 @@ def _post_request(req: V1RequestBase, driver: WebDriver): value = unquote(parts[1]) except Exception: value = parts[1] - post_form += f'
' + post_form += f'
' post_form += '' html_content = f""" @@ -449,6 +450,6 @@ def _post_request(req: V1RequestBase, driver: WebDriver): """ - driver.get("data:text/html;charset=utf-8," + html_content) + driver.get("data:text/html;charset=utf-8,{html_content}".format(html_content=html_content)) driver.start_session() driver.start_session() # required to bypass Cloudflare