Files
wehub-resource-sync 19ce5adb69
CI / Test (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Type Check (push) Waiting to run
CI / Docker Tests (push) Waiting to run
CI / Build (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:46:45 +08:00

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."