#!/usr/bin/env bash
# PentestGPT Authentication Configuration
# Interactive setup for Claude Code authentication

set -e

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
YELLOW='\033[0;33m'
NC='\033[0m'

# Get the directory where this script is located, then go up to project root
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
ENV_FILE="${PROJECT_DIR}/.env.auth"

echo -e "${PURPLE}"
cat << "EOF"
    ____             __            __  __________ ______
   / __ \___  ____  / /____  _____/ /_/ ____/ __ /_  __/
  / /_/ / _ \/ __ \/ __/ _ \/ ___/ __/ / __/ /_/ // /
 / ____/  __/ / / / /_/  __(__  ) /_/ /_/ / ____// /
/_/    \___/_/ /_/\__/\___/____/\__/\____/_/    /_/

    Authentication Configuration
EOF
echo -e "${NC}"

echo -e "${BLUE}Select authentication method:${NC}\n"
echo -e "  ${GREEN}[1]${NC} Claude Code Subscription ${YELLOW}(Recommended)${NC}"
echo -e "      Use your Claude Code subscription via 'claude login'"
echo ""
echo -e "  ${GREEN}[2]${NC} OpenRouter API Key"
echo -e "      Route requests through OpenRouter to use GPT-5.1, Gemini, etc."
echo ""
echo -e "  ${GREEN}[3]${NC} Anthropic API Key"
echo -e "      Use Anthropic's Claude directly with your API key"
echo ""
echo -e "  ${GREEN}[4]${NC} Local LLM (via LM Studio, Ollama, etc.)"
echo -e "      Route requests to a local LLM server on your host machine"
echo ""

read -p "Enter your choice [1-4] (default: 1): " choice
choice="${choice:-1}"

case $choice in
    1)
        # Save auth mode for Claude Code subscription (manual login)
        cat > "$ENV_FILE" << EOF
# PentestGPT Authentication Configuration
# Generated by make config
PENTESTGPT_AUTH_MODE=manual
EOF

        echo -e "${GREEN}Claude Code subscription mode selected.${NC}"
        echo -e "${BLUE}After running 'make connect', execute 'claude login' inside the container.${NC}"
        ;;

    2)
        echo ""
        echo -e "${BLUE}OpenRouter Configuration${NC}"
        echo -e "${YELLOW}Get your API key from: https://openrouter.ai/keys${NC}"
        echo ""
        read -sp "Enter your OpenRouter API key: " openrouter_key
        echo ""

        if [ -z "$openrouter_key" ]; then
            echo -e "${RED}Error: API key cannot be empty${NC}"
            exit 1
        fi

        # Save auth mode
        cat > "$ENV_FILE" << EOF
# PentestGPT Authentication Configuration
# Generated by make config
PENTESTGPT_AUTH_MODE=openrouter
OPENROUTER_API_KEY=${openrouter_key}
EOF

        # Set restrictive permissions on the file
        chmod 600 "$ENV_FILE"

        echo -e "${GREEN}OpenRouter configuration saved!${NC}"
        echo -e "${BLUE}CCR will be configured automatically when you run 'make connect'${NC}"
        ;;

    3)
        echo ""
        echo -e "${BLUE}Anthropic API Key Configuration${NC}"
        echo -e "${YELLOW}Get your API key from: https://console.anthropic.com/settings/keys${NC}"
        echo ""
        read -sp "Enter your Anthropic API key: " anthropic_key
        echo ""

        if [ -z "$anthropic_key" ]; then
            echo -e "${RED}Error: API key cannot be empty${NC}"
            exit 1
        fi

        # Save auth mode
        cat > "$ENV_FILE" << EOF
# PentestGPT Authentication Configuration
# Generated by make config
PENTESTGPT_AUTH_MODE=anthropic
ANTHROPIC_API_KEY=${anthropic_key}
EOF

        # Set restrictive permissions on the file
        chmod 600 "$ENV_FILE"

        echo -e "${GREEN}Anthropic API key saved!${NC}"
        ;;

    4)
        # Save auth mode for Local LLM
        cat > "$ENV_FILE" << EOF
# PentestGPT Authentication Configuration
# Generated by make config
PENTESTGPT_AUTH_MODE=local
EOF

        echo -e "${GREEN}Local LLM mode selected!${NC}"
        echo ""
        echo -e "${BLUE}Setup Instructions:${NC}"
        echo "  1. Start your local LLM server (e.g., LM Studio) on your host machine"
        echo "     Default expected URL: http://localhost:1234/v1/chat/completions"
        echo ""
        echo "  2. To customize models or URL, edit:"
        echo "     scripts/ccr-config-template.json"
        echo ""
        echo "  3. Run 'make connect' to start PentestGPT"
        ;;

    *)
        echo -e "${RED}Invalid choice. Exiting.${NC}"
        exit 1
        ;;
esac

echo ""
echo -e "${GREEN}Configuration complete!${NC}"
echo -e "Run ${PURPLE}make connect${NC} to start PentestGPT."