FROM registry.yandex.net/rtc-base/focal:stable

MAINTAINER Andrey Smirnov "ya-andrei@yandex-team.ru"

# If modified remember changing CMD arguments
ARG CONFIGS_PATH=/c3po/configs
ARG RESOURCES_PATH=/c3po/resources
ARG SCRIPTS_PATH=/c3po/scripts
ARG C3PO_BIN=/c3po/c3po
ARG C3PO_LOG=/c3po/logs
RUN cat /etc/resolv.conf

ENV TZ=Europe/Moscow
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ENV DEBIAN_FRONTEND=noninteractive

RUN set -xe && \
    apt-get -y update && \
    apt-get install -y --no-install-recommends apt-utils && \
    apt-get -y --force-yes install \
                           cron \
                           git \
                           net-tools \
                           iputils-ping \
                           python3 \
                           supervisor \
                           vim \
                           host \
                           tmux \
                           checkinstall \
                           libreadline-gplv2-dev \
                           libncursesw5-dev \
                           libssl-dev \
                           libsqlite3-dev \
                           tk-dev \
                           libgdbm-dev \
                           libc6-dev \
                           libbz2-dev \
                           zlib1g-dev \
                           openssl \
                           libffi-dev \
                           python3-dev \
                           python3-setuptools \
                           python3-pip \
                           cmake \
                           locales \
                           gdb \
                           strace

ADD supervisor/c3po.conf /etc/supervisor/conf.d/c3po.conf
ADD ca-certificates.crt /etc/ssl/certs/
ADD ca-certificates.crt /usr/share/ca-certificates/
RUN set -xe && update-ca-certificates
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/
ADD yt_lock /bin/yt_lock

# Prevent supervisor/cron start without X-DC sync check (SECROBOTS-115)
RUN /lib/systemd/systemd-sysv-install disable supervisor
RUN /lib/systemd/systemd-sysv-install disable cron

RUN set -xe && mkdir -p $C3PO_LOG $SCRIPTS_PATH $CONFIGS_PATH $RESOURCES_PATH
ADD c3po $C3PO_BIN
ADD scripts $SCRIPTS_PATH
ADD resources $RESOURCES_PATH
RUN set -xe && chmod +x $SCRIPTS_PATH/*.sh

RUN ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime && \
    mkdir -p $C3PO_LOG && \
    touch $C3PO_LOG/c3po.log && \
#    pip3 install -i https://pypi.yandex-team.ru/simple/ tvmauth && \
#    pip3 install -i https://pypi.yandex-team.ru/simple/ pdb && \
#    pip3 install --no-cache-dir -i https://pypi.yandex-team.ru/simple/ yaseclib && \
#    pip3 install -r /c3po_modules/requirements.txt --no-cache-dir -i https://pypi.yandex-team.ru/simple/ && \
#    pip3 install /c3po_modules/dists/c3po-1.2.84.tar.gz && \
    sed -ri 's/^session\s+required\s+pam_loginuid.so$/#session required pam_loginuid.so/' /etc/pam.d/cron && \
    (crontab -l ; echo "*/6 * * * * $C3PO_BIN -c $CONFIGS_PATH/config_6min.ini") | crontab - && \
    (crontab -l ; echo "*/6 * * * * $C3PO_BIN -m BlockerConcealer -c $CONFIGS_PATH/generic_config.ini") | crontab - && \
#    (crontab -l ; echo "0 11 * */3 1 $C3PO_BIN -m AbcReviewer -c $CONFIGS_PATH/generic_config.ini") | crontab - && \
    (crontab -l ; echo "*/30 * * * * $C3PO_BIN -c $CONFIGS_PATH/config_30min.ini") | crontab - && \
    (crontab -l ; echo "0 12 * * * $C3PO_BIN -c $CONFIGS_PATH/config_noon.ini") | crontab - && \
    (crontab -l ; echo "5 0 * * * $C3PO_BIN -c $CONFIGS_PATH/config_midnight.ini") | crontab - && \
    (crontab -l ; echo "0 7 * * Wed $C3PO_BIN -c $CONFIGS_PATH/config-ticket-escalator.ini") | crontab - && \
    (crontab -l ; echo "0 10 * * Fri $C3PO_BIN -c $CONFIGS_PATH/config-ticket-reporter.ini") | crontab - && \
    (crontab -l ; echo "0 3 28 * * $C3PO_BIN -c $CONFIGS_PATH/config-ycloud.ini") | crontab -

CMD ["/c3po/scripts/set_up.sh", "/c3po/configs"]
