FROM python:3.8-slim-bullseye

LABEL maintainer="HoneyGPT maintainers"

ENV COWRIE_GROUP=cowrie \
    COWRIE_USER=cowrie \
    COWRIE_HOME=/cowrie \
    COWRIE_REPO=/cowrie/cowrie-git \
    STDOUT=yes \
    HONEYGPT_JSON_LOG_DIR=/cowrie/cowrie-git/var/json \
    PATH=/cowrie/cowrie-git/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

RUN groupadd -r -g 1000 "${COWRIE_GROUP}" \
    && useradd -r -u 1000 -d "${COWRIE_HOME}" -m -g "${COWRIE_GROUP}" "${COWRIE_USER}" \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
        build-essential \
        ca-certificates \
        libffi-dev \
        libssl-dev \
        net-tools \
        procps \
    && rm -rf /var/lib/apt/lists/*

WORKDIR ${COWRIE_REPO}

COPY requirements*.txt ./
RUN pip install --no-cache-dir --upgrade "pip<24" setuptools wheel \
    && pip install --no-cache-dir -r requirements.txt

COPY . ${COWRIE_REPO}

RUN mkdir -p var/log/cowrie var/run var/lib/cowrie/tty var/json \
    && if [ ! -f etc/cowrie.cfg ]; then cp etc/cowrie.cfg.dist etc/cowrie.cfg; fi \
    && if [ ! -f share/cowrie/fs.pickle ] && [ -f share/cowrie/ffs.pickle ]; then cp share/cowrie/ffs.pickle share/cowrie/fs.pickle; fi \
    && mkdir -p /cowrie/cowrie-defaults \
    && cp etc/cowrie.cfg.dist /cowrie/cowrie-defaults/cowrie.cfg.dist \
    && chmod +x bin/cowrie bin/docker-entrypoint bin/fsctl bin/asciinema bin/createfs bin/playlog \
    && chown -R "${COWRIE_USER}:${COWRIE_GROUP}" "${COWRIE_HOME}"

USER ${COWRIE_USER}

VOLUME ["/cowrie/cowrie-git/etc", "/cowrie/cowrie-git/var"]
EXPOSE 2222 2223

ENTRYPOINT ["docker-entrypoint"]
CMD ["cowrie", "start", "-n"]
