static-toolbox/build/targets/build_nmap.sh
2021-04-19 13:40:47 +02:00

74 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
if [ -z "$GITHUB_WORKSPACE" ];then
echo "GITHUB_WORKSPACE environemnt variable not set!"
exit 1
fi
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
set -e
set -o pipefail
set -x
source $GITHUB_WORKSPACE/build/lib.sh
init_lib $1
build_nmap() {
fetch "https://github.com/nmap/nmap.git" "${BUILD_DIRECTORY}/nmap" git
cd "${BUILD_DIRECTORY}/nmap"
git clean -fdx || true
# make sure we only build the static libraries
sed -i '/build-zlib: $(ZLIBDIR)\/Makefile/!b;n;c\\t@echo Compiling zlib; cd $(ZLIBDIR) && $(MAKE) static;' "${BUILD_DIRECTORY}/nmap/Makefile.in"
CC='gcc -static -fPIC' \
CXX='g++ -static -static-libstdc++ -fPIC' \
LD=ld \
LDFLAGS="-L/build/openssl" \
./configure \
--host="$(get_host_triple)" \
--without-ndiff \
--without-zenmap \
--without-nmap-update \
--without-libssh2 \
--with-pcap=linux \
--with-openssl="${BUILD_DIRECTORY}/openssl"
sed -i -e "s/shared\: /shared\: #/" "${BUILD_DIRECTORY}/nmap/libpcap/Makefile"
make
strip nmap ncat/ncat nping/nping
}
main() {
lib_build_openssl
build_nmap
if [ ! -f "${BUILD_DIRECTORY}/nmap/nmap" -o \
! -f "${BUILD_DIRECTORY}/nmap/ncat/ncat" -o \
! -f "${BUILD_DIRECTORY}/nmap/nping/nping" ];then
echo "[-] Building Nmap ${CURRENT_ARCH} failed!"
exit 1
fi
VERSION_CMD=$(get_version "${BUILD_DIRECTORY}/nmap/nmap --version")
NMAP_VERSION=$(echo "$VERSION_CMD" | grep "Nmap version" | awk '{print $3}')
if [ -n "$NMAP_VERSION" ];then
NMAP_VERSION="-${NMAP_VERSION}"
fi
cp "${BUILD_DIRECTORY}/nmap/nmap" "${OUTPUT_DIRECTORY}/nmap${NMAP_VERSION}"
cp "${BUILD_DIRECTORY}/nmap/ncat/ncat" "${OUTPUT_DIRECTORY}/ncat${NMAP_VERSION}"
cp "${BUILD_DIRECTORY}/nmap/nping/nping" "${OUTPUT_DIRECTORY}/nping${NMAP_VERSION}"
echo "[+] Finished building Nmap ${CURRENT_ARCH}"
NMAP_COMMIT=$(cd "${BUILD_DIRECTORY}/nmap/" && git rev-parse --short HEAD)
NMAP_DIR="${OUTPUT_DIRECTORY}/nmap-data${NMAP_VERSION}-${NMAP_COMMIT}"
if [ ! -d "$NMAP_DIR" ];then
echo "[-] ${NMAP_DIR} does not exist, creating it"
mkdir -p "${NMAP_DIR}"
fi
if [ -n "$(ls $NMAP_DIR)" ];then
echo "[+] Data directory is not empty"
exit
fi
cd "${BUILD_DIRECTORY}/nmap"
make install
cp -r /usr/local/share/nmap/* $NMAP_DIR
echo "[+] Copied data to Nmap data dir"
}
main