ARG from=ros:noetic
FROM ${from}

RUN apt-get update && apt-get install -y python3-pip git ca-certificates
RUN apt-get update && apt-get install -y libsdl2-dev libusb-1.0-0-dev build-essential cmake && apt-get install -y openssh-server iputils-ping net-tools sudo nano ros-noetic-cv-bridge v4l-utils

RUN pip3 install git+https://github.com/catkin/catkin_tools.git
RUN pip install opencv-python

RUN echo "freshenst"

# clone ros package repo
ENV ROS_WS /opt/ros_ws
RUN mkdir -p $ROS_WS/src
WORKDIR $ROS_WS
RUN git -C src clone https://git.caslab.ece.vt.edu/hlarkin3/base-station-ros/

WORKDIR $ROS_WS/src/base-station-ros
RUN git submodule init && git submodule update
WORKDIR $ROS_WS

# install ros package dependencies
RUN apt-get update && \
    rosdep update && \
    rosdep install -y --from-paths src/* --ignore-src && \
    rm -rf /var/lib/apt/lists/*

# build ros package source
RUN catkin config \
      --extend /opt/ros/$ROS_DISTRO && \
    catkin build --cmake-args -DCMAKE_CXX_FLAGS="-std=c++17"

COPY ros_entrypoint.sh /usr/local/bin/ros_entrypoint.sh

RUN useradd -m -s /bin/bash -p $(openssl passwd -1 password) ssher
RUN usermod -aG sudo ssher
# add ssher user to the video group to allow streaming
RUN adduser ssher video
RUN usermod -a -G video ssher

RUN chmod 755 /usr/local/bin/ros_entrypoint.sh

# make ssh-ing easier
RUN echo "source /opt/ros/noetic/setup.bash" >> /home/ssher/.bashrc
RUN echo "source /opt/ros_ws/devel/setup.bash" >> /home/ssher/.bashrc
RUN echo "ssh-keyscan -H service-master >> /home/ssher/.ssh/known_hosts" >> /home/ssher/.bashrc
RUN echo "ssh-keyscan -H service-drone >> /home/ssher/.ssh/known_hosts" >> /home/ssher/.bashrc
# just doing this with hosts file now

# put rsa key in image
RUN mkdir -p /home/ssher/.ssh
RUN chown -R ssher:ssher /home/ssher/.ssh
RUN service ssh start
EXPOSE 22

ENTRYPOINT ["/usr/local/bin/ros_entrypoint.sh"]
CMD ["/usr/sbin/sshd","-D"]
CMD ["bash"]

# run ros package launch file
# CMD ["roslaunch", "roscpp_tutorials", "talker_listener.launch"]