# syntax=docker/dockerfile:1.7

FROM python:3.12-slim

# Python оптимизации
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    PIP_NO_CACHE_DIR=1

# Переменные окружения по умолчанию для tg-ws-proxy
ENV TG_WS_PROXY_HOST=0.0.0.0 \
    TG_WS_PROXY_PORT=1080 \
    TG_WS_PROXY_LOGGER=true \
    TG_WS_PROXY_LOG_LEVEL=INFO \
    TG_WS_PROXY_LOG_FILE="" \
    TG_WS_PROXY_LOG_MAX_MB=100 \
    TG_WS_PROXY_LOG_BACKUPS=3 \
    TG_WS_PROXY_BIND_MODE=network \
    TG_WS_PROXY_DC_IPS="2:149.154.167.220 4:149.154.167.220" \
    TG_WS_PROXY_BUF_KB=256 \
    TG_WS_PROXY_POOL_SIZE=4

RUN apt-get update \
    && apt-get install -y --no-install-recommends build-essential cargo libffi-dev libssl-dev tini ca-certificates \
    && rm -rf /var/lib/apt/lists/* \
    && groupadd --system app \
    && useradd --system --gid app --create-home --home-dir /home/app app

WORKDIR /app
COPY pyproject.toml README.md LICENSE ./
COPY proxy ./proxy
COPY utils ./utils
COPY config.py ./

RUN pip install --upgrade pip setuptools wheel \
    && pip install .

USER app

EXPOSE 1080/tcp

# Собираем аргументы командной строки из переменных окружения
ENTRYPOINT ["/usr/bin/tini", "--", "/bin/sh", "-lc", "set -eu; \
args=\"--host ${TG_WS_PROXY_HOST} --port ${TG_WS_PROXY_PORT} --bind-mode ${TG_WS_PROXY_BIND_MODE} \
--log-level ${TG_WS_PROXY_LOG_LEVEL} --buf-kb ${TG_WS_PROXY_BUF_KB} --pool-size ${TG_WS_PROXY_POOL_SIZE}\"; \
\
# Добавляем --quiet если логгер отключен \
if [ \"${TG_WS_PROXY_LOGGER}\" = \"false\" ] || [ \"${TG_WS_PROXY_LOGGER}\" = \"0\" ] || [ \"${TG_WS_PROXY_LOGGER}\" = \"no\" ]; then \
    args=\"$args --quiet\"; \
fi; \
\
# Добавляем log-file если указан \
if [ -n \"${TG_WS_PROXY_LOG_FILE}\" ]; then \
    args=\"$args --log-file ${TG_WS_PROXY_LOG_FILE} --log-max-mb ${TG_WS_PROXY_LOG_MAX_MB} --log-backups ${TG_WS_PROXY_LOG_BACKUPS}\"; \
fi; \
\
# Добавляем dc-ip \
for dc in ${TG_WS_PROXY_DC_IPS}; do \
    args=\"$args --dc-ip $dc\"; \
done; \
\
# Запускаем прокси \
exec python -u -m proxy.tg_ws_proxy $args \"$@\"", "--"]
CMD []
