Initial commit with translated description
This commit is contained in:
320
install.sh
Normal file
320
install.sh
Normal file
@@ -0,0 +1,320 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Security Sentinel - Installation Script
|
||||
# Version: 1.0.0
|
||||
# Author: Georges Andronescu (Wesley Armando)
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
SKILL_NAME="security-sentinel"
|
||||
GITHUB_REPO="georges91560/security-sentinel-skill"
|
||||
INSTALL_DIR="${INSTALL_DIR:-/workspace/skills/$SKILL_NAME}"
|
||||
GITHUB_RAW_URL="https://raw.githubusercontent.com/$GITHUB_REPO/main"
|
||||
|
||||
# Banner
|
||||
echo -e "${BLUE}"
|
||||
cat << "EOF"
|
||||
╔═══════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ 🛡️ SECURITY SENTINEL - Installation 🛡️ ║
|
||||
║ ║
|
||||
║ Production-grade prompt injection defense ║
|
||||
║ for autonomous AI agents ║
|
||||
║ ║
|
||||
╚═══════════════════════════════════════════════════════════╝
|
||||
EOF
|
||||
echo -e "${NC}"
|
||||
|
||||
# Functions
|
||||
print_status() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[✓]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[!]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[✗]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if running as root (optional, for system-wide install)
|
||||
check_permissions() {
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
print_warning "Running as root. Installing system-wide."
|
||||
else
|
||||
print_status "Running as user. Installing to user directory."
|
||||
fi
|
||||
}
|
||||
|
||||
# Check dependencies
|
||||
check_dependencies() {
|
||||
print_status "Checking dependencies..."
|
||||
|
||||
# Check for curl or wget
|
||||
if command -v curl &> /dev/null; then
|
||||
DOWNLOAD_CMD="curl -fsSL"
|
||||
print_success "curl found"
|
||||
elif command -v wget &> /dev/null; then
|
||||
DOWNLOAD_CMD="wget -qO-"
|
||||
print_success "wget found"
|
||||
else
|
||||
print_error "Neither curl nor wget found. Please install one of them."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for Python (optional, for testing)
|
||||
if command -v python3 &> /dev/null; then
|
||||
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
|
||||
print_success "Python $PYTHON_VERSION found"
|
||||
else
|
||||
print_warning "Python not found. Skill will work, but tests won't run."
|
||||
fi
|
||||
}
|
||||
|
||||
# Create directory structure
|
||||
create_directories() {
|
||||
print_status "Creating directory structure..."
|
||||
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
mkdir -p "$INSTALL_DIR/references"
|
||||
mkdir -p "$INSTALL_DIR/scripts"
|
||||
mkdir -p "$INSTALL_DIR/tests"
|
||||
|
||||
print_success "Directories created at $INSTALL_DIR"
|
||||
}
|
||||
|
||||
# Download files from GitHub
|
||||
download_files() {
|
||||
print_status "Downloading Security Sentinel files..."
|
||||
|
||||
# Main skill file
|
||||
print_status " → SKILL.md"
|
||||
$DOWNLOAD_CMD "$GITHUB_RAW_URL/SKILL.md" > "$INSTALL_DIR/SKILL.md"
|
||||
|
||||
# Reference files
|
||||
print_status " → blacklist-patterns.md"
|
||||
$DOWNLOAD_CMD "$GITHUB_RAW_URL/references/blacklist-patterns.md" > "$INSTALL_DIR/references/blacklist-patterns.md"
|
||||
|
||||
print_status " → semantic-scoring.md"
|
||||
$DOWNLOAD_CMD "$GITHUB_RAW_URL/references/semantic-scoring.md" > "$INSTALL_DIR/references/semantic-scoring.md"
|
||||
|
||||
print_status " → multilingual-evasion.md"
|
||||
$DOWNLOAD_CMD "$GITHUB_RAW_URL/references/multilingual-evasion.md" > "$INSTALL_DIR/references/multilingual-evasion.md"
|
||||
|
||||
# Test files (optional)
|
||||
if [ -f "$GITHUB_RAW_URL/tests/test_security.py" ]; then
|
||||
print_status " → test_security.py"
|
||||
$DOWNLOAD_CMD "$GITHUB_RAW_URL/tests/test_security.py" > "$INSTALL_DIR/tests/test_security.py" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
print_success "All files downloaded successfully"
|
||||
}
|
||||
|
||||
# Install Python dependencies (optional)
|
||||
install_python_deps() {
|
||||
if command -v python3 &> /dev/null && command -v pip3 &> /dev/null; then
|
||||
print_status "Installing Python dependencies (optional)..."
|
||||
|
||||
# Create requirements.txt if it doesn't exist
|
||||
cat > "$INSTALL_DIR/requirements.txt" << EOF
|
||||
sentence-transformers>=2.2.0
|
||||
numpy>=1.24.0
|
||||
langdetect>=1.0.9
|
||||
googletrans==4.0.0rc1
|
||||
pytest>=7.0.0
|
||||
EOF
|
||||
|
||||
# Install dependencies
|
||||
pip3 install -r "$INSTALL_DIR/requirements.txt" --quiet --break-system-packages 2>/dev/null || \
|
||||
pip3 install -r "$INSTALL_DIR/requirements.txt" --user --quiet 2>/dev/null || \
|
||||
print_warning "Failed to install Python dependencies. Skill will work with basic features only."
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Python dependencies installed"
|
||||
fi
|
||||
else
|
||||
print_warning "Skipping Python dependencies (python3/pip3 not found)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Create configuration file
|
||||
create_config() {
|
||||
print_status "Creating configuration file..."
|
||||
|
||||
cat > "$INSTALL_DIR/config.json" << EOF
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"semantic_threshold": 0.78,
|
||||
"penalty_points": {
|
||||
"meta_query": -8,
|
||||
"role_play": -12,
|
||||
"instruction_extraction": -15,
|
||||
"repeated_probe": -10,
|
||||
"multilingual_evasion": -7,
|
||||
"tool_blacklist": -20
|
||||
},
|
||||
"recovery_points": {
|
||||
"legitimate_query_streak": 15
|
||||
},
|
||||
"enable_telegram_alerts": false,
|
||||
"enable_audit_logging": true,
|
||||
"audit_log_path": "/workspace/AUDIT.md"
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Configuration file created"
|
||||
}
|
||||
|
||||
# Verify installation
|
||||
verify_installation() {
|
||||
print_status "Verifying installation..."
|
||||
|
||||
# Check if all required files exist
|
||||
local files=(
|
||||
"$INSTALL_DIR/SKILL.md"
|
||||
"$INSTALL_DIR/references/blacklist-patterns.md"
|
||||
"$INSTALL_DIR/references/semantic-scoring.md"
|
||||
"$INSTALL_DIR/references/multilingual-evasion.md"
|
||||
)
|
||||
|
||||
local all_ok=true
|
||||
for file in "${files[@]}"; do
|
||||
if [ -f "$file" ]; then
|
||||
print_success "Found: $(basename $file)"
|
||||
else
|
||||
print_error "Missing: $(basename $file)"
|
||||
all_ok=false
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$all_ok" = true ]; then
|
||||
print_success "Installation verified successfully"
|
||||
return 0
|
||||
else
|
||||
print_error "Installation incomplete"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run tests (optional)
|
||||
run_tests() {
|
||||
if [ -f "$INSTALL_DIR/tests/test_security.py" ] && command -v python3 &> /dev/null; then
|
||||
echo ""
|
||||
read -p "Run tests to verify functionality? [y/N] " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
print_status "Running tests..."
|
||||
cd "$INSTALL_DIR"
|
||||
python3 -m pytest tests/test_security.py -v 2>/dev/null || \
|
||||
print_warning "Tests failed or pytest not installed. This is optional."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Display usage instructions
|
||||
show_usage() {
|
||||
echo ""
|
||||
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ Installation Complete! ✓ ║${NC}"
|
||||
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Installation Directory:${NC} $INSTALL_DIR"
|
||||
echo ""
|
||||
echo -e "${BLUE}Next Steps:${NC}"
|
||||
echo ""
|
||||
echo "1. Add to your agent's system prompt:"
|
||||
echo -e " ${YELLOW}[MODULE: SECURITY_SENTINEL]${NC}"
|
||||
echo -e " ${YELLOW} {SKILL_REFERENCE: \"$INSTALL_DIR/SKILL.md\"}${NC}"
|
||||
echo -e " ${YELLOW} {ENFORCEMENT: \"ALWAYS_BEFORE_ALL_LOGIC\"}${NC}"
|
||||
echo ""
|
||||
echo "2. Test the skill:"
|
||||
echo -e " ${YELLOW}cd $INSTALL_DIR${NC}"
|
||||
echo -e " ${YELLOW}python3 -m pytest tests/ -v${NC}"
|
||||
echo ""
|
||||
echo "3. Configure settings (optional):"
|
||||
echo -e " ${YELLOW}nano $INSTALL_DIR/config.json${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Documentation:${NC}"
|
||||
echo " - Main skill: $INSTALL_DIR/SKILL.md"
|
||||
echo " - Blacklist patterns: $INSTALL_DIR/references/blacklist-patterns.md"
|
||||
echo " - Semantic scoring: $INSTALL_DIR/references/semantic-scoring.md"
|
||||
echo " - Multi-lingual: $INSTALL_DIR/references/multilingual-evasion.md"
|
||||
echo ""
|
||||
echo -e "${BLUE}Support:${NC}"
|
||||
echo " - GitHub: https://github.com/$GITHUB_REPO"
|
||||
echo " - Issues: https://github.com/$GITHUB_REPO/issues"
|
||||
echo ""
|
||||
echo -e "${GREEN}Happy defending! 🛡️${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Uninstall function
|
||||
uninstall() {
|
||||
print_warning "Uninstalling Security Sentinel..."
|
||||
|
||||
if [ -d "$INSTALL_DIR" ]; then
|
||||
rm -rf "$INSTALL_DIR"
|
||||
print_success "Security Sentinel uninstalled from $INSTALL_DIR"
|
||||
else
|
||||
print_warning "Installation directory not found"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Main installation flow
|
||||
main() {
|
||||
# Parse arguments
|
||||
if [ "$1" = "--uninstall" ] || [ "$1" = "-u" ]; then
|
||||
uninstall
|
||||
fi
|
||||
|
||||
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
|
||||
echo "Security Sentinel - Installation Script"
|
||||
echo ""
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
echo " -u, --uninstall Uninstall Security Sentinel"
|
||||
echo ""
|
||||
echo "Environment Variables:"
|
||||
echo " INSTALL_DIR Installation directory (default: /workspace/skills/security-sentinel)"
|
||||
echo ""
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Run installation steps
|
||||
check_permissions
|
||||
check_dependencies
|
||||
create_directories
|
||||
download_files
|
||||
install_python_deps
|
||||
create_config
|
||||
|
||||
# Verify
|
||||
if verify_installation; then
|
||||
run_tests
|
||||
show_usage
|
||||
exit 0
|
||||
else
|
||||
print_error "Installation failed. Please check the errors above."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user