awesome-osint-arsenal/install.sh

111 lines
3.9 KiB
Bash

#!/usr/bin/env bash
# ===================================================================
# Awesome OSINT Arsenal — Master Orchestrator
# Part of awesome-osint-arsenal v2.1 (Unified Production Edition)
# Runs each category installer sequentially with error handling.
# Best support: Kali / Debian / Ubuntu / Parrot.
# Partial: Arch / Manjaro / Fedora / RHEL.
# ===================================================================
set -uo pipefail
# Maintain color scheme and logging alignment with sub-modules
RED="\033[0;31m"
GRN="\033[0;32m"
YLW="\033[1;33m"
BLU="\033[0;34m"
CYN="\033[0;36m"
NC="\033[0m"
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
# Core Environment Guard
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}[✗] error:${NC} This master orchestrator requires elevated privileges."
echo "Please run as root: sudo bash $0"
exit 1
fi
# Switch to the script's execution directory to safely resolve relative script paths
cd "$(dirname "$0")"
# Target Sub-modules
INSTALLERS=(
"osint.sh"
"redteam.sh"
"blueteam.sh"
"forensics.sh"
"hardware.sh"
"labs.sh"
"extras.sh"
)
# Initialize/Wipe Master Error Log
: >"$LOGFILE"
# Operational Metrics Tracker
START_TIME=$SECONDS
PASSED_MODULES=0
FAILED_MODULES=0
declare -ga UNABLE_TO_LOCATE=()
echo -e "${CYN}[i]${NC} Initializing Master Deployment Engine..."
echo -e "${CYN}[i]${NC} Runtime failures will be aggregated inside: $LOGFILE"
for inst in "${INSTALLERS[@]}"; do
echo
echo -e "${BLU}=======================================================${NC}"
echo -e " 🚀 Launching Deployment Segment: ${CYN}$inst${NC}"
echo -e "${BLU}=======================================================${NC}"
# Defensive File Verification Hook
if [ ! -f "$inst" ]; then
echo -e "${YLW}[~] Skipping:${NC} Module script '$inst' not found in workspace directory."
UNABLE_TO_LOCATE+=("$inst")
FAILED_MODULES=$((FAILED_MODULES + 1))
echo "ORCHESTRATOR ERROR: File not found: $inst" >> "$LOGFILE"
continue
fi
# Explicitly grant executable permissions to prevent permission denial traps
chmod +x "$inst"
# Execute subshell layer. Exporting LOGFILE ensures sub-modules write to the same path.
export LOGFILE
if bash "$inst"; then
PASSED_MODULES=$((PASSED_MODULES + 1))
else
echo -e "${RED}[✗] Failure warning:${NC} Module $inst returned a non-zero exit status."
FAILED_MODULES=$((FAILED_MODULES + 1))
echo "ORCHESTRATOR ERROR: Sub-module execution failure status returned from: $inst" >> "$LOGFILE"
fi
done
# Calculate execution duration metrics
ELAPSED_DURATION=$((SECONDS - START_TIME))
MINUTES=$((ELAPSED_DURATION / 60))
SECONDS_REM=$((ELAPSED_DURATION % 60))
# ===================================================================
# Master Compilation Dashboard
# ===================================================================
echo
echo -e "${CYN}=======================================================${NC}"
echo -e " 🎉 GRAND ARCHITECTURE DEPLOYMENT COMPLETE"
echo -e "${CYN}=======================================================${NC}"
echo -e " Total Active Script Modules Checked : $((PASSED_MODULES + FAILED_MODULES))"
echo -e " Successful Module Deployments : ${GRN}$PASSED_MODULES${NC}"
echo -e " Unresolved/Failed Components : ${RED}$FAILED_MODULES${NC}"
echo -e " Total Provisioning Runtime : ${YLW}${MINUTES}m ${SECONDS_REM}s${NC}"
echo -e "${CYN}=======================================================${NC}"
if [ ${#UNABLE_TO_LOCATE[@]} -gt 0 ]; then
echo -e "${YLW}[!] Missing Components Reminder:${NC} ${UNABLE_TO_LOCATE[*]}"
echo "Ensure all complementary module scripts are checked out into this workspace directory."
fi
if [ "$FAILED_MODULES" -gt 0 ]; then
echo -e "${RED}[✗] Some installation routines requirements encountered friction.${NC}"
echo -e " Review explicit error codes and stack failures in: ${YLW}$LOGFILE${NC}"
else
echo -e "${GRN}[✓] Core orchestration layers initialized clean with zero root exceptions.${NC}"
fi