FROM ubuntu:22.04 AS builder

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
		apt-utils build-essential git cmake pkg-config \
		openssl libssl-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev \
		iptables clang libclang-dev vim valgrind \
		&& rm -rf /var/lib/apt/lists/*

WORKDIR /tmp
RUN echo "Start building packages..."

# using clang
ENV CFLAGS="-Wno-gnu-variable-sized-type-not-at-end"
ENV CXXFLAGS="-Wno-gnu-variable-sized-type-not-at-end"
RUN ln -sf /usr/bin/clang /usr/bin/cc


# json-c
RUN \
	git clone https://github.com/json-c/json-c.git && \
	cd json-c && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr . && \
	make && \
	make install

# libubox
RUN \
      git clone  git://git.openwrt.org/project/libubox.git && \
      cd libubox && mkdir build && cd build && \
      cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String="Release" -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF .. && \
      make -j2 && \
      make install

# uci
RUN \
	git clone git://git.openwrt.org/project/uci.git && \
	cd uci && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String="Release" -DBUILD_LUA=OFF . && \
	make -j2 && \
	make install

# ubus
RUN \
	git clone https://git.openwrt.org/project/ubus.git && \
	cd ubus && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String="Release" -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF . && \
	make -j2 && \
	make install

# libeasy
RUN \
	git clone https://dev.iopsys.eu/hal/libeasy.git && \
	cd libeasy && mkdir build && cd build && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr .. && make -j2 && make install

# libwifiutils + libwifi-7
RUN \
	git clone https://dev.iopsys.eu/hal/libwifi.git && \
	cd libwifi && mkdir -p libwifiutils/build && cd libwifiutils/build && \
	cmake .. && make -j2 && make install && cd - && \
	mkdir -p libwifi/build && cd libwifi/build && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr .. -DHAS_WIFI=ON && make -j2 && make install

# wifimngr
RUN \
	git clone https://dev.iopsys.eu/hal/wifimngr.git && \
	mkdir -p wifimngr/build && cd wifimngr/build && \
	cmake .. && make -j2 && make install

# ieee1905
RUN \
	git clone https://dev.iopsys.eu/multi-ap/ieee1905.git && \
	cd ieee1905/src && \
	CC=clang CFLAGS="-DHAS_WIFI -DHAS_UBUS -DEXTENSION_ALLOWED -DEASYMESH_VERSION=6" make -j2 && \
	CC=clang make install

RUN echo "Done building packages. Preparing image..."

#ieee1905 test image
FROM builder AS i1905test
RUN rm -rf /tmp/*
WORKDIR /root/

RUN mkdir -p /etc/config
COPY ./files/* /etc/config/

COPY multiap.sh /root/multiap.sh
ENTRYPOINT ["/root/multiap.sh"]
CMD ["--multiap_mode","full","--alid","cc:cc:cc:11:22:33"]
