proxy-oidcv2/verify-installation.sh
2025-12-03 21:51:02 +01:00

214 lines
5.7 KiB
Bash

#!/bin/bash
# Installation verification script for Secure Proxy
set -e
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}╔════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ Secure Proxy - Installation Verification ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════════╝${NC}"
echo ""
# Check Node.js
echo -n "Checking Node.js... "
if command -v node &> /dev/null; then
NODE_VERSION=$(node -v)
echo -e "${GREEN}${NC} $NODE_VERSION"
else
echo -e "${RED}${NC} Node.js not installed"
exit 1
fi
# Check npm
echo -n "Checking npm... "
if command -v npm &> /dev/null; then
NPM_VERSION=$(npm -v)
echo -e "${GREEN}${NC} $NPM_VERSION"
else
echo -e "${RED}${NC} npm not installed"
exit 1
fi
# Check project structure
echo ""
echo -e "${BLUE}Project Structure:${NC}"
check_file() {
if [ -f "$1" ]; then
echo -e " ${GREEN}${NC} $1"
else
echo -e " ${RED}${NC} $1 (missing)"
fi
}
check_dir() {
if [ -d "$1" ]; then
echo -e " ${GREEN}${NC} $1/"
else
echo -e " ${RED}${NC} $1/ (missing)"
fi
}
echo "Core files:"
check_file "src/server.js"
check_file "src/config.js"
check_file "src/db.js"
echo "Middleware:"
check_file "src/middleware/oidcMiddleware.js"
check_file "src/middleware/security.js"
check_file "src/middleware/proxyMiddleware.js"
echo "Routes:"
check_file "src/routes/authRoutes.js"
check_file "src/routes/adminRoutes.js"
check_file "src/routes/dashboardRoutes.js"
echo "Controllers:"
check_file "src/controllers/authController.js"
check_file "src/controllers/serviceController.js"
check_file "src/controllers/adminController.js"
echo "Frontend:"
check_file "public/admin.html"
echo "Configuration:"
check_file "package.json"
check_file ".env"
echo "Scripts:"
check_file "scripts/initDb.js"
check_file "scripts/seedDb.js"
echo "Documentation:"
check_file "README.md"
check_file "DEVELOPMENT-MODE.md"
check_file "QUICKSTART.md"
check_file "INSTALLATION.md"
# Check directories
echo ""
echo "Directories:"
check_dir "src"
check_dir "src/middleware"
check_dir "src/routes"
check_dir "src/controllers"
check_dir "src/services"
check_dir "src/utils"
check_dir "public"
check_dir "scripts"
# Check dependencies
echo ""
echo -e "${BLUE}Dependencies:${NC}"
if [ -d "node_modules" ]; then
echo -e " ${GREEN}${NC} node_modules/ exists"
# Check key packages
for pkg in express sqlite3 openid-client http-proxy; do
if [ -d "node_modules/$pkg" ]; then
echo -e " ${GREEN}${NC} $pkg"
else
echo -e " ${RED}${NC} $pkg (missing)"
fi
done
else
echo -e " ${YELLOW}${NC} node_modules/ not found - run: npm install"
fi
# Check database
echo ""
echo -e "${BLUE}Database:${NC}"
if [ -f "db/services.db" ]; then
echo -e " ${GREEN}${NC} db/services.db exists"
# Check database tables
if command -v sqlite3 &> /dev/null; then
TABLES=$(sqlite3 db/services.db ".tables")
if echo "$TABLES" | grep -q "services"; then
echo -e " ${GREEN}${NC} services table"
else
echo -e " ${RED}${NC} services table (missing)"
fi
if echo "$TABLES" | grep -q "audit_logs"; then
echo -e " ${GREEN}${NC} audit_logs table"
else
echo -e " ${RED}${NC} audit_logs table (missing)"
fi
if echo "$TABLES" | grep -q "access_logs"; then
echo -e " ${GREEN}${NC} access_logs table"
else
echo -e " ${RED}${NC} access_logs table (missing)"
fi
fi
else
echo -e " ${YELLOW}${NC} db/services.db not found - run: npm run init-db"
fi
# Configuration check
echo ""
echo -e "${BLUE}Configuration:${NC}"
if [ -f ".env" ]; then
echo -e " ${GREEN}${NC} .env file exists"
# Check key settings
if grep -q "PORT=" .env; then
PORT=$(grep "PORT=" .env | cut -d'=' -f2 | tr -d ' ')
echo -e " ${GREEN}${NC} PORT=$PORT"
fi
if grep -q "NODE_ENV=" .env; then
ENV=$(grep "NODE_ENV=" .env | cut -d'=' -f2 | tr -d ' ')
echo -e " ${GREEN}${NC} NODE_ENV=$ENV"
fi
# Check OIDC status
if grep -q "^OIDC_ISSUER=" .env; then
echo -e " ${GREEN}${NC} OIDC configured (production mode)"
else
echo -e " ${YELLOW}${NC} OIDC not configured (development mode)"
fi
else
echo -e " ${RED}${NC} .env file not found"
fi
# Ready status
echo ""
echo -e "${BLUE}╔════════════════════════════════════════════════════╗${NC}"
if [ -f "db/services.db" ] && [ -d "node_modules" ] && [ -f ".env" ]; then
echo -e "${GREEN}✓ Installation complete and ready to run!${NC}"
echo ""
echo "Next steps:"
echo " 1. Start the server: ${BLUE}npm run dev${NC}"
echo " 2. Open in browser: ${BLUE}http://localhost:3000/admin${NC}"
echo " 3. Read the guide: ${BLUE}DEVELOPMENT-MODE.md${NC}"
echo ""
echo -e "${BLUE}╚════════════════════════════════════════════════════╝${NC}"
else
echo -e "${YELLOW}⚠ Setup incomplete. Run the following:${NC}"
if [ ! -d "node_modules" ]; then
echo " ${BLUE}npm install${NC}"
fi
if [ ! -f "db/services.db" ]; then
echo " ${BLUE}npm run init-db${NC}"
fi
echo ""
echo -e "${BLUE}╚════════════════════════════════════════════════════╝${NC}"
fi