diff --git a/Dockerfile b/Dockerfile index c99b05a..e5b75ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,11 @@ RUN chown -R appuser:appuser /app # Switch to non-root user USER appuser +# Set default environment variables +ENV PAD_DOMAIN=aukpad.com +ENV DUMP_DOMAIN=linedump.com +ENV PROXY_DOMAIN=bin.aukpad.com + # Expose port EXPOSE 8000 diff --git a/README.md b/README.md index 5fc6600..e9f637d 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,46 @@ -# Aukpad Paste Proxy +# Project Name -This proxy allows the paste creation from temporary [aukpad](https://aukpad.com/) via [linedump](https://linedump.com/). Can be used as a 'GUI' for linedump. +This proxy allows the paste creation from temporary aukpads via linedump. Can be used as a 'GUI' for linedump. + +- Status: Beta - Docs missing, not suited for current linedump version + +--- + +## Features + +**Available**: + +**Ideas**: + +**Not planned**: --- ## Usage -- Create a pad in your aukpad instance of choice. -- Replace the domain of the aukpad instance with the domain of the this proxy while leaving the {paste_id}- for example: https://aukpad.com/fef3 into https://bin.aukpad.com/fef3 -- This will create a paste on the chosen linedump instanec of this proxy. - -Information can be found on the root page of the proxy instance. +- Create a pad in aukpad. +- Change the domain of the pad from `aukpad.com` `bin.aukpad.com` +- Create new paste in linedump instance and get redirected --- ## Installation -### Environment Variables - -| Variable | Description | Default | -|----------|-------------|---------| -| `PAD_BASEURL` | Source paste service base URL including protocol | `https://aukpad.com` | -| `DUMP_BASEURL` | Destination paste service base URL including protocol | `https://linedump.com` | -| `PROXY_BASEURL` | This proxy's base URL for documentation including protocol | `https://bin.aukpad.com` | - - -### Docker / Podman +WIP ```bash -# Example with Podman -podman run -d --name aukpad-paste-proxy \ - --replace \ - -p 127.0.0.1:8001:8000 \ - -e PAD_BASEURL="https://aukpad.com" \ - -e DUMP_BASEURL="https://linedump.com" \ - -e PROXY_BASEURL="https://bin.aukpad.com" \ +$CONTAINER_CMD run --name ${CONTAINER_NAME} \ + -p 127.0.0.1:${PORT_HOST}:${PORT_CONTAINER} \ + -e PAD_DOMAIN="${PAD_DOMAIN}" \ + -e DUMP_DOMAIN="${DUMP_DOMAIN}" \ + -e PROXY_DOMAIN="${PROXY_DOMAIN}" \ --read-only \ --security-opt no-new-privileges:true \ --cap-drop ALL \ --user 1000:1000 \ - git.uphillsecurity.com/cf7/aukpad-paste-proxy:latest + -d ${IMAGE_NAME}:latest ``` -_Replace 'podman' with 'docker'._ - --- ## Security diff --git a/main.py b/main.py index 91a4484..b3a97bc 100644 --- a/main.py +++ b/main.py @@ -7,32 +7,32 @@ import os app = FastAPI(title="Aukpad Proxy Service", description="Proxy service for aukpad.com to linedump.com") # Configuration from environment variables -PAD_BASEURL = os.getenv("PAD_BASEURL", "https://aukpad.com") -DUMP_BASEURL = os.getenv("DUMP_BASEURL", "https://linedump.com") -PROXY_BASEURL = os.getenv("PROXY_BASEURL", "https://bin.aukpad.com") +PAD_DOMAIN = os.getenv("PAD_DOMAIN", "aukpad.com") +DUMP_DOMAIN = os.getenv("DUMP_DOMAIN", "linedump.com") +PROXY_DOMAIN = os.getenv("PROXY_DOMAIN", "bin.aukpad.com") @app.get("/{paste_id}") async def proxy_paste(paste_id: str): try: # Fetch content from pad domain - pad_url = f"{PAD_BASEURL}/{paste_id}/raw" - + pad_url = f"https://{PAD_DOMAIN}/{paste_id}/raw" + async with httpx.AsyncClient() as client: # Get content from pad pad_response = await client.get(pad_url) pad_response.raise_for_status() content = pad_response.text - + # Post content to dump domain dump_response = await client.post( - DUMP_BASEURL, + f"https://{DUMP_DOMAIN}", data=content, headers={"Content-Type": "text/plain"} ) dump_response.raise_for_status() - - # linedump.com returns the full URL in the first line of the response - dump_url = dump_response.text.strip().splitlines()[0] + + # linedump.com returns the full URL in the response body + dump_url = dump_response.text.strip() # Redirect to the dump URL return RedirectResponse(url=dump_url, status_code=302) @@ -48,14 +48,13 @@ async def proxy_paste(paste_id: str): async def root(): return { "service": "Aukpad Proxy Service", - "description": f"This service proxies paste content from {PAD_BASEURL} to {DUMP_BASEURL}", - "usage": f"Visit {PROXY_BASEURL}/{{paste_id}} to fetch content from {PAD_BASEURL}/{{paste_id}}/raw and redirect to the posted URL on {DUMP_BASEURL}", - "example": f"{PROXY_BASEURL}/abc123 → fetches {PAD_BASEURL}/abc123/raw → posts to {DUMP_BASEURL} → redirects to result URL", - "source_code": "https://git.uphillsecurity.com/cf7/aukpad-paste-proxy", - "base_urls": { - "proxy": PROXY_BASEURL, - "source": PAD_BASEURL, - "destination": DUMP_BASEURL + "description": f"This service proxies paste content from {PAD_DOMAIN} to {DUMP_DOMAIN}", + "usage": f"Visit https://{PROXY_DOMAIN}/{{paste_id}} to fetch content from https://{PAD_DOMAIN}/{{paste_id}}/raw and redirect to the posted URL on {DUMP_DOMAIN}", + "example": f"https://{PROXY_DOMAIN}/abc123 → fetches https://{PAD_DOMAIN}/abc123/raw → posts to https://{DUMP_DOMAIN} → redirects to result URL", + "domains": { + "proxy": PROXY_DOMAIN, + "source": PAD_DOMAIN, + "destination": DUMP_DOMAIN } }