#!/usr/bin/env bash # Find all hardcoded IP addresses in scripts and configuration files # Usage: ./scripts/find-hardcoded-ips.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo "=== Hardcoded IP Address Finder ===" echo "" # IP patterns to find IP_PATTERNS=( "192\.168\.11\.[0-9]+" "192\.168\.0\.[0-9]+" "76\.53\.10\.[0-9]+" ) # File types to search FILE_TYPES=( "*.sh" "*.py" "*.conf" "*.config" "*.env" "*.yaml" "*.yml" "*.json" "*.toml" ) OUTPUT_FILE="$PROJECT_ROOT/reports/hardcoded-ips-report-$(date +%Y%m%d_%H%M%S).md" mkdir -p "$(dirname "$OUTPUT_FILE")" { echo "# Hardcoded IP Address Report" echo "" echo "**Generated:** $(date)" echo "**Purpose:** Identify all hardcoded IP addresses for centralization" echo "" echo "---" echo "" } > "$OUTPUT_FILE" TOTAL_FOUND=0 for pattern in "${IP_PATTERNS[@]}"; do echo "Searching for pattern: $pattern" { echo "## Pattern: \`$pattern\`" echo "" } >> "$OUTPUT_FILE" for file_type in "${FILE_TYPES[@]}"; do while IFS= read -r file; do if [ -f "$file" ]; then matches=$(grep -nE "$pattern" "$file" 2>/dev/null | grep -v "\.example\|\.template\|\.sample" || true) if [ -n "$matches" ]; then count=$(echo "$matches" | wc -l) TOTAL_FOUND=$((TOTAL_FOUND + count)) { echo "### \`$file\`" echo "" echo "Found $count occurrence(s):" echo "" echo '```' echo "$matches" | head -10 echo '```' echo "" } >> "$OUTPUT_FILE" fi fi done < <(find "$PROJECT_ROOT" -type f -name "$file_type" ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/venv/*" 2>/dev/null) done echo "" >> "$OUTPUT_FILE" done { echo "---" echo "" echo "## Summary" echo "" echo "- **Total Hardcoded IPs Found:** $TOTAL_FOUND" echo "- **Recommendation:** Move all IPs to configuration files" echo "- **Configuration File:** Use \`docs/11-references/IP_ADDRESS_REGISTRY.md\` as reference" echo "" } >> "$OUTPUT_FILE" echo "" echo -e "${GREEN}✅ Report generated: $OUTPUT_FILE${NC}" echo -e "Total hardcoded IPs found: ${YELLOW}$TOTAL_FOUND${NC}"