146 lines
4.3 KiB
Bash
Executable File
146 lines
4.3 KiB
Bash
Executable File
#!/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."
|