From 8f50823e5781012f8a0a267d3e76cd0d705491e7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 9 Mar 2026 22:08:57 +0000 Subject: [PATCH] Framework anti-regression v1.0: 46 checks (27 pages + 6 APIs + 2 WEVIA + 5 tracking + 6 infra/confidentialite) Co-authored-by: Yacineutt --- nonreg-framework.sh | 120 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100755 nonreg-framework.sh diff --git a/nonreg-framework.sh b/nonreg-framework.sh new file mode 100755 index 0000000..9a656b0 --- /dev/null +++ b/nonreg-framework.sh @@ -0,0 +1,120 @@ +#!/bin/bash +# WEVAL ANTI-REGRESSION FRAMEWORK v1.0 +# Execute depuis n'importe quel poste avec curl +# Usage: ./nonreg_framework.sh + +PASS=0; FAIL=0; TOTAL=0 +RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' + +check() { + TOTAL=$((TOTAL+1)) + local NAME=$1 EXPECTED=$2 ACTUAL=$3 + if [ "$ACTUAL" = "$EXPECTED" ]; then + PASS=$((PASS+1)) + echo -e "${GREEN}[PASS]${NC} $NAME" + else + FAIL=$((FAIL+1)) + echo -e "${RED}[FAIL]${NC} $NAME (expected=$EXPECTED actual=$ACTUAL)" + fi +} + +check_http() { + local NAME=$1 URL=$2 TIMEOUT=${3:-15} + local CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time $TIMEOUT "$URL" 2>&1) + check "$NAME" "200" "$CODE" +} + +check_api() { + local NAME=$1 URL=$2 METHOD=${3:-GET} DATA=${4:-} + local START=$(date +%s%N) + if [ "$METHOD" = "POST" ]; then + RESP=$(curl -s --max-time 120 -X POST "$URL" -H "Content-Type: application/json" -d "$DATA" 2>&1) + else + RESP=$(curl -s --max-time 120 "$URL" 2>&1) + fi + local END=$(date +%s%N) + local MS=$(( (END - START) / 1000000 )) + local LEN=${#RESP} + TOTAL=$((TOTAL+1)) + if [ $LEN -gt 10 ] && echo "$RESP" | grep -q '"error"' 2>/dev/null; then + FAIL=$((FAIL+1)) + echo -e "${RED}[FAIL]${NC} $NAME (${MS}ms, error in response)" + elif [ $LEN -gt 10 ]; then + PASS=$((PASS+1)) + echo -e "${GREEN}[PASS]${NC} $NAME (${MS}ms, ${LEN}c)" + else + FAIL=$((FAIL+1)) + echo -e "${RED}[FAIL]${NC} $NAME (${MS}ms, empty response)" + fi +} + +echo "========================================" +echo "WEVAL ANTI-REGRESSION FRAMEWORK v1.0" +echo "$(date '+%Y-%m-%d %H:%M:%S')" +echo "========================================" + +# === 1. FRONTEND - 27 pages produits === +echo -e "\n${YELLOW}--- FRONTEND: Pages produits ---${NC}" +for p in academy affiliates arsenal blueprintai cloud-providers content-factory dashboard deliverads deliverscore formbuilder gpu-inference index leadforge mailforge mailwarm medreach outreachai proposalai sentinel services signup storeforge wevads wevads-ia wevia-enterprise wevia-whitelabel workspace; do + check_http "products/$p" "https://weval-consulting.com/products/${p}.html" +done + +echo -e "\n${YELLOW}--- FRONTEND: Pages principales ---${NC}" +for p in "/" "/solutions" "/wevia" "/contact-us" "/platform/" "/products/"; do + check_http "main$p" "https://weval-consulting.com${p}" +done + +# === 2. BACKEND APIs === +echo -e "\n${YELLOW}--- BACKEND: APIs SaaS ---${NC}" +check_api "DeliverScore" "https://weval-consulting.com/api/deliverscore/scan.php?domain=weval-consulting.com" +check_api "MedReach" "https://weval-consulting.com/api/medreach/search.php?specialty=cardiologue&country=MA&limit=3" +check_api "Auth" "https://weval-consulting.com/api/products/auth.php?action=products" +check_api "Guardian" "http://89.167.40.150:5890/api/guardian-scan.php?action=status" + +# === 3. WEVIA IA === +echo -e "\n${YELLOW}--- WEVIA: Widget + Fullscreen ---${NC}" +check_api "WEVIA greeting" "https://weval-consulting.com/api/weval-ia" "POST" '{"message":"bonjour","mode":"fast"}' +check_api "WEVIA deep" "https://weval-consulting.com/api/weval-ia-full" "POST" '{"message":"services WEVAL","mode":"deep"}' + +# === 4. TRACKING === +echo -e "\n${YELLOW}--- TRACKING: S151 + consent ---${NC}" +check_http "S151 root" "http://151.80.235.110/" +check_http "S151 /o (open)" "http://151.80.235.110/o" +check_http "S151 /c (click)" "http://151.80.235.110/c" +check_http "S151 /u (unsub)" "http://151.80.235.110/u" +check_http "consent.wevup.app" "http://consent.wevup.app" + +# === 5. INFRA === +echo -e "\n${YELLOW}--- INFRA: Services ---${NC}" +check_api "Sentinel API" "http://89.167.40.150:5890/api/sentinel-brain.php" "POST" '{"action":"exec","cmd":"echo OK"}' + +# === 6. CONFIDENTIALITE === +echo -e "\n${YELLOW}--- CONFIDENTIALITE: Scan pages ---${NC}" +SECRETS_FOUND=0 +for p in index medreach workspace proposalai blueprintai arsenal wevads gpu-inference; do + HTML=$(curl -s --max-time 15 "https://weval-consulting.com/products/${p}.html" 2>&1) + for term in "McKinsey" "OpenAI" "Anthropic" "Abbott" "AbbVie" "89.167.40.150" "88.198.4.195"; do + if echo "$HTML" | grep -q "$term"; then + SECRETS_FOUND=$((SECRETS_FOUND+1)) + echo -e "${RED}[FAIL]${NC} CONFIDENTIAL: '$term' in $p.html" + fi + done +done +TOTAL=$((TOTAL+1)) +if [ $SECRETS_FOUND -eq 0 ]; then + PASS=$((PASS+1)) + echo -e "${GREEN}[PASS]${NC} 0 info confidentielle detectee" +else + FAIL=$((FAIL+1)) +fi + +# === BILAN === +echo -e "\n========================================" +echo -e "BILAN: ${GREEN}${PASS} PASS${NC} / ${RED}${FAIL} FAIL${NC} / ${TOTAL} TOTAL" +PCT=$((PASS * 100 / TOTAL)) +if [ $FAIL -eq 0 ]; then + echo -e "${GREEN}GO LIVE: ALL PASS${NC}" +else + echo -e "${RED}NO GO: $FAIL failures${NC}" +fi +echo "========================================"