12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- FROM debian
- # Install all packages available from the repos
- # second line is for GUI requirements
- RUN apt-get update -y && apt-get install -y \
- build-essential git cmake libpcap-dev libjsoncpp-dev wget libssl-dev libreadline-dev pkg-config \
- qtdeclarative5-dev
- WORKDIR /root/build
- RUN wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz \
- && tar xfz boost_1_72_0.tar.gz \
- && rm boost_1_72_0.tar.gz \
- && cd boost_1_72_0 \
- && ./bootstrap.sh --prefix=/usr/local \
- && ./b2 -j$(nproc) install \
- && cd .. \
- && rm -rf boost_1_72_0
- # Build and install libtins
- RUN git clone https://github.com/mfontanini/libtins.git \
- && cd libtins && git checkout v4.2 \
- && mkdir build && cd build \
- && cmake ../ -DLIBTINS_ENABLE_CXX11=1 && make -j$(nproc) && make install \
- && cd ../.. && rm -rf libtins
- # Build and install googletest
- RUN git clone https://github.com/google/googletest.git \
- && cd googletest \
- && mkdir build && cd build \
- && cmake .. && make -j$(nproc) && make install \
- && cd ../.. && rm -rf googletest
- # Copy all required data into image
- COPY .cmake_modules/ /root/build/.cmake_modules
- RUN mkdir -p /root/build/daemon/build /root/build/cli/build
- RUN mkdir -p /root/build/gui/build
- # Daemon
- COPY /daemon/include /root/build/daemon/include
- COPY /daemon/src /root/build/daemon/src
- COPY /daemon/test /root/build/daemon/test
- COPY /daemon/CMakeLists.txt /root/build/daemon/
- # CLI
- COPY /cli/include /root/build/cli/include
- COPY /cli/src /root/build/cli/src
- COPY /cli/test /root/build/cli/test
- COPY /cli/CMakeLists.txt /root/build/cli/
- # GUI
- COPY /gui/include /root/build/gui/include
- COPY /gui/src /root/build/gui/src
- COPY /gui/CMakeLists.txt /root/build/gui/
- # Create Daemon config
- # must be located in WORKDIR because running the container will set this as default dir, so all other scripts are also run from there
- RUN mkdir /root/build/files \
- && touch /root/build/config.txt \
- && echo "port=1234" >> /root/build/config.txt \
- && echo "interface=lo" >> /root/build/config.txt \
- && echo "userdatabase=userStorage.txt" >> /root/build/config.txt \
- && echo "filedirectory=./files/" >> /root/build/config.txt \
- && echo "activateCovertChannel=false" >> /root/build/config.txt
- # Compile daemon
- RUN cd daemon/build && cmake -DENABLE_TESTS=true .. && make -j$(nproc) \
- && rm -rf ../src ../include ../test ../CMakeLists.txt \
- && rm -rf CMakeFiles Makefile CMakeCache.txt cmake_install.cmake \
- CTestTestfile.cmake
- # Compile ccats with tests
- RUN cd cli/build && cmake -DENABLE_TESTS=true .. && make -j$(nproc) \
- && rm -rf ../src ../include ../test ../CMakeLists.txt \
- && rm -rf CMakeFiles Makefile CMakeCache.txt cmake_install.cmake \
- CTestTestfile.cmake
- # Compile ccats-gui
- RUN cd gui/build && cmake .. && make -j$(nproc) \
- && cd ../.. && rm -rf gui
- ENTRYPOINT /root/build/daemon/build/bin/ccats
|