rusthound-ce 2.3.5

Active Directory data collector for Bloodhound Community Edition written in rust.
Documentation
prog :=rusthound-ce

cargo := $(shell command -v cargo 2> /dev/null)
cargo_v := $(shell cargo -V| cut -d ' ' -f 2)
rustup := $(shell command -v rustup 2> /dev/null)

check_cargo:
  ifndef cargo
    $(error cargo is not available, please install it! curl https://sh.rustup.rs -sSf | sh)
  else
	@echo "Make sure your cargo version is up to date! Current version is $(cargo_v)"
  endif

check_rustup:
  ifndef rustup
    $(error rustup is not available, please install it! curl https://sh.rustup.rs -sSf | sh)
  endif

update_rustup:
	rustup update

release: check_cargo
	cargo build --release
	cp target/release/$(prog) .
	@echo -e "[+] You can find \033[1;32m$(prog)\033[0m in your current folder."

debug: check_cargo
	cargo build
	cp target/debug/$(prog) ./$(prog)_debug
	@echo -e "[+] You can find \033[1;32m$(prog)_debug\033[0m in your current folder."

doc: check_cargo
	cargo doc --open --no-deps

install: check_cargo
	cargo install --path .
	@echo "[+] rusthound-ce installed!"

uninstall:
	@cargo uninstall rusthound-ce

clean:
	cargo clean

install_windows_deps: update_rustup
	@rustup install stable-x86_64-pc-windows-gnu --force-non-host
	@rustup target add x86_64-pc-windows-gnu
	@rustup install stable-i686-pc-windows-gnu --force-non-host
	@rustup target add i686-pc-windows-gnu

build_windows_x64:
	RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-pc-windows-gnu
	cp target/x86_64-pc-windows-gnu/release/$(prog).exe .
	@echo -e "[+] You can find \033[1;32m$(prog).exe\033[0m in your current folder."

build_windows_x86:
	RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target i686-pc-windows-gnu
	cp target/i686-pc-windows-gnu/release/$(prog).exe ./$(prog)_x86.exe
	@echo -e "[+] You can find \033[1;32m$(prog)_x86.exe\033[0m in your current folder."

windows: check_rustup install_windows_deps build_windows_x64

windows_x64: check_rustup install_windows_deps build_windows_x64

windows_x86: check_rustup install_windows_deps build_windows_x86

build_windows_noargs:
	RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-pc-windows-gnu --features noargs
	cp target/x86_64-pc-windows-gnu/release/$(prog).exe ./$(prog)_noargs.exe
	@echo -e "[+] You can find \033[1;32m$(prog)_noargs.exe\033[0m in your current folder."

windows_noargs: check_rustup install_windows_deps build_windows_noargs

install_linux_musl_deps:
	@rustup install x86_64-unknown-linux-musl --force-non-host
	@rustup target add x86_64-unknown-linux-musl

build_linux_musl:
	cross build --target x86_64-unknown-linux-musl --release --features nogssapi --no-default-features
	cp target/x86_64-unknown-linux-musl/release/$(prog) ./$(prog)_musl
	@echo -e "[+] You can find \033[1;32m$(prog)_musl\033[0m in your current folder."

linux_musl: check_rustup install_cross build_linux_musl

install_linux_deps:update_rustup
	@rustup install stable-x86_64-unknown-linux-gnu --force-non-host
	@rustup target add x86_64-unknown-linux-gnu

build_linux_aarch64:
	cross build --target aarch64-unknown-linux-gnu --release --features nogssapi --no-default-features
	cp target/aarch64-unknown-linux-gnu/release/$(prog) ./$(prog)_aarch64
	@echo -e "[+] You can find \033[1;32m$(prog)_aarch64\033[0m in your current folder."

linux_aarch64: check_rustup install_cross build_linux_aarch64

build_linux_x86_64:
	RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --features nogssapi --target x86_64-unknown-linux-gnu --no-default-features
	cp target/x86_64-unknown-linux-gnu/release/$(prog) ./$(prog)_x86_64
	@echo -e "[+] You can find \033[1;32m$(prog)_x86_64\033[0m in your current folder."

linux_x86_64: check_rustup install_linux_deps build_linux_x86_64

linux: check_rustup install_cross build_linux_aarch64

install_macos_deps:
	@sudo git clone https://github.com/tpoechtrager/osxcross /usr/local/bin/osxcross || exit
	@sudo wget -P /usr/local/bin/osxcross/ -nc https://s3.dockerproject.org/darwin/v2/MacOSX10.10.sdk.tar.xz && sudo mv /usr/local/bin/osxcross/MacOSX10.10.sdk.tar.xz /usr/local/bin/osxcross/tarballs/
	@sudo UNATTENDED=yes OSX_VERSION_MIN=10.7 /usr/local/bin/osxcross/build.sh
	@sudo chmod 775 /usr/local/bin/osxcross/ -R
	@export PATH="/usr/local/bin/osxcross/target/bin:$PATH"
	@grep 'target.x86_64-apple-darwin' ~/.cargo/config || echo "[target.x86_64-apple-darwin]" >> ~/.cargo/config
	@grep 'linker = "x86_64-apple-darwin14-clang"' ~/.cargo/config || echo 'linker = "x86_64-apple-darwin14-clang"' >> ~/.cargo/config
	@grep 'ar = "x86_64-apple-darwin14-clang"' ~/.cargo/config || echo 'ar = "x86_64-apple-darwin14-clang"' >> ~/.cargo/config
	@echo "[?] Now you need to uncomment line 32 and comment line 34 in Cargo.toml for MacOS and run 'make macos'"

build_macos:
	@export PATH="/usr/local/bin/osxcross/target/bin:$PATH"
	RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-apple-darwin --features nogssapi --no-default-features
	cp target/x86_64-apple-darwin/release/$(prog).exe ./$(prog)_MacOS
	@echo -e "[+] You can find \033[1;32m$(prog)_MacOS\033[0m in your current folder."

macos: build_macos

install_cross:
	@cargo install --version 0.1.16 cross

arm_musl: check_rustup install_cross
	cross build --target arm-unknown-linux-musleabi --release --features nogssapi --no-default-features
	cp target/arm-unknown-linux-musleabi/release/$(prog) ./$(prog)_arm_musl
	@echo -e "[+] You can find \033[1;32m$(prog)_arm_musl\033[0m in your current folder."

armv7: check_rustup install_cross
	cross build --target armv7-unknown-linux-gnueabihf --release --features nogssapi --no-default-features
	cp target/armv7-unknown-linux-gnueabihf/release/$(prog) ./$(prog)_armv7
	@echo -e "[+] You can find \033[1;32m$(prog)_armv7\033[0m in your current folder."

help:
	@echo ""
	@echo "Default:"
	@echo "usage: make install"
	@echo "usage: make uninstall"
	@echo "usage: make debug"
	@echo "usage: make release"
	@echo ""
	@echo "Static:"
	@echo "usage: make windows"
	@echo "usage: make windows_x64"
	@echo "usage: make windows_x86"
	@echo "usage: make linux"
	@echo "usage: make linux_aarch64"
	@echo "usage: make linux_x86_64"
	@echo "usage: make linux_musl"
	@echo "usage: make macos"
	@echo "usage: make arm_musl"
	@echo "usage: make armv7"
	@echo ""
	@echo "Without cli argument:"
	@echo "usage: make windows_noargs"
	@echo ""
	@echo "Dependencies:"
	@echo "usage: make install_windows_deps"
	@echo "usage: make install_linux_musl_deps"
	@echo "usage: make install_macos_deps"
	@echo ""