commit 7cc658137414540bca6e4a9461178aa9e5301c1d Author: Abdulaziz04 Date: Sat Sep 6 23:57:01 2025 +0000 رفع الملفات إلى "superrecontool04aj" diff --git a/superrecontool04aj/COMMIT_EDITMSG b/superrecontool04aj/COMMIT_EDITMSG new file mode 100644 index 0000000..601692d --- /dev/null +++ b/superrecontool04aj/COMMIT_EDITMSG @@ -0,0 +1 @@ +Initial commit: إضافة جميع ملفات مشروع SuperRecon diff --git a/superrecontool04aj/Dockerfile b/superrecontool04aj/Dockerfile new file mode 100644 index 0000000..f098f9f --- /dev/null +++ b/superrecontool04aj/Dockerfile @@ -0,0 +1,123 @@ +# Official Playwright image (includes browsers) +FROM mcr.microsoft.com/playwright/python:v1.44.0 + +# Build-time arg: اجعلها 1 لفشل البناء إذا وُجدت أي استخدامات pkg_resources في site-packages +ARG FAIL_ON_PKG_RESOURCES=0 +ENV FAIL_ON_PKG_RESOURCES=${FAIL_ON_PKG_RESOURCES} + +# Non-interactive apt +ENV DEBIAN_FRONTEND=noninteractive +WORKDIR /app + +# Copy requirements first to leverage Docker cache +COPY requirements.txt . + +# Install useful system packages +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + build-essential \ + libxml2-dev \ + libxslt1-dev \ + libssl-dev \ + libffi-dev \ + ca-certificates \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Upgrade pip/setuptools/wheel to latest (we aim to support setuptools >= 81 after code migration) +RUN python -m pip install --upgrade pip setuptools wheel + +# Install runtime Python deps from requirements +RUN pip install --no-cache-dir -r requirements.txt + +# Install auxiliary packages / backports & tooling we rely on +# - packaging: requirement parsing & version handling +# - importlib_metadata / importlib_resources: backports if running on older Python +# - wafw00f: WAF detection tool used by the project +RUN pip install --no-cache-dir \ + packaging \ + importlib_metadata \ + importlib_resources \ + wafw00f + +# Copy the rest of the project files +COPY . . + +# Create evidence directory in tmpfs location and set permissions (used by utils.store_raw_evidence) +ENV SUPERR_EVIDENCE_DIR=/dev/shm/superrecon_evidence +RUN mkdir -p ${SUPERR_EVIDENCE_DIR} \ + && chown -R pwuser:pwuser ${SUPERR_EVIDENCE_DIR} \ + && chmod 750 ${SUPERR_EVIDENCE_DIR} || true + +# Optional build-time check: look for any remaining 'import pkg_resources' usages +# If FAIL_ON_PKG_RESOURCES=1 the build will fail when any occurrences are found. +# This check scans site-packages for python files mentioning pkg_resources. +RUN python - <<'PY' || (test "$FAIL_ON_PKG_RESOURCES" = "0" && exit 0) +import os, sys, site +from pathlib import Path + +def scan_paths(paths): + hits = [] + for root in paths: + rootp = Path(root) + if not rootp.exists(): + continue + for p in rootp.rglob("*.py"): + try: + txt = p.read_text(encoding="utf-8", errors="ignore") + except Exception: + continue + if "import pkg_resources" in txt or "pkg_resources." in txt: + hits.append(str(p)) + return hits + +paths = [] +try: + sp = site.getsitepackages() + for p in sp: + paths.append(p) +except Exception: + # fallback common locations + paths += [ + "/usr/local/lib/python3.10/site-packages", + "/usr/lib/python3/dist-packages", + "/usr/local/lib/python3.9/site-packages", + ] + +hits = scan_paths(paths) +if hits: + print("==========================================") + print("WARNING: Detected uses of pkg_resources in installed packages (first 200 shown):") + for h in hits[:200]: + print(" -", h) + print("==========================================") + # If FAIL_ON_PKG_RESOURCES is set, fail the build + if os.environ.get("FAIL_ON_PKG_RESOURCES", "0") == "1": + print("FAIL_ON_PKG_RESOURCES=1 -> Failing build due to pkg_resources usages.") + sys.exit(1) +else: + print("No pkg_resources usages found in scanned site-packages paths.") +PY + +# Ensure non-root runtime (pwuser exists in Playwright base image) +USER pwuser + +# Expose application port (configurable via APP_PORT env) +ENV APP_PORT=8000 +EXPOSE ${APP_PORT} + +# Healthcheck +HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ + CMD curl -f http://127.0.0.1:${APP_PORT}/health || exit 1 + +# Default environment variables (can be overridden at runtime) +ENV PYTHONUNBUFFERED=1 +ENV MAX_CONCURRENT_SCANS=8 +ENV SCAN_TIMEOUT=180 +ENV RATE_LIMIT="15/minute" +ENV LOG_LEVEL=INFO +ENV UVICORN_WORKERS=1 + +# Default command: run Uvicorn (assumes app package path app.main:app) +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1"] diff --git a/superrecontool04aj/config b/superrecontool04aj/config new file mode 100644 index 0000000..54645d7 --- /dev/null +++ b/superrecontool04aj/config @@ -0,0 +1,13 @@ +[core] + repositoryformatversion = 0 + filemode = false + bare = false + logallrefupdates = true + symlinks = false + ignorecase = true +[remote "origin"] + url = https://github.com/abdulazizabuali/SuperRecon.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "main"] + remote = origin + merge = refs/heads/main diff --git a/superrecontool04aj/description b/superrecontool04aj/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/superrecontool04aj/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/superrecontool04aj/requirements.txt b/superrecontool04aj/requirements.txt new file mode 100644 index 0000000..a35987a --- /dev/null +++ b/superrecontool04aj/requirements.txt @@ -0,0 +1,30 @@ +aiohttp +apify-client +beautifulsoup4 +builtwith +certifi +charset-normalizer +cryptography +dnspython +fake-useragent +fastapi[all] +httpx[http2] +importlib_metadata; python_version < "3.10" +importlib_resources; python_version < "3.9" +ipwhois +js2py +lxml +packaging +playwright +pyOpenSSL +python-Wappalyzer +python-dotenv +python-socks +python-whois +redis +requests +slowapi +tenacity +tldextract +uvicorn[standard] +wafw00f