97 lines
2.7 KiB
Bash
Executable File
97 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# BRAIN ENGINE TESTER - Utilise admin_email/admin_password
|
|
# Usage: ./brain-tester.sh [NUM_TESTS]
|
|
|
|
NUM_TESTS=${1:-10}
|
|
LOG_FILE="/var/log/wevads/brain-test.log"
|
|
mkdir -p /var/log/wevads
|
|
|
|
echo "$(date) - Starting brain tests ($NUM_TESTS)" >> $LOG_FILE
|
|
|
|
# Config qui a besoin de tests
|
|
CONFIG=$(PGPASSWORD=admin123 psql -U admin -d adx_system -t -A -c "
|
|
SELECT id, isp_target, send_method, domain_used
|
|
FROM admin.brain_configs
|
|
WHERE total_sent < 20
|
|
ORDER BY total_sent ASC, RANDOM()
|
|
LIMIT 1;
|
|
")
|
|
|
|
if [ -z "$CONFIG" ]; then
|
|
echo "No configs need testing"
|
|
exit 0
|
|
fi
|
|
|
|
CONFIG_ID=$(echo $CONFIG | cut -d'|' -f1)
|
|
ISP=$(echo $CONFIG | cut -d'|' -f2)
|
|
|
|
echo "Testing config #$CONFIG_ID: $ISP"
|
|
|
|
# Seeds pour cet ISP
|
|
SEEDS=$(PGPASSWORD=admin123 psql -U admin -d adx_system -t -A -c "
|
|
SELECT email FROM admin.brain_seeds
|
|
WHERE isp = '$ISP' AND is_active = true
|
|
ORDER BY RANDOM() LIMIT $NUM_TESTS;
|
|
")
|
|
|
|
# Compte O365 actif avec les BONNES colonnes
|
|
SENDER=$(PGPASSWORD=admin123 psql -U admin -d adx_system -t -A -c "
|
|
SELECT admin_email, admin_password FROM admin.office_accounts
|
|
WHERE status = 'Active'
|
|
AND admin_email IS NOT NULL
|
|
AND admin_password IS NOT NULL
|
|
ORDER BY RANDOM() LIMIT 1;
|
|
")
|
|
|
|
SENDER_EMAIL=$(echo $SENDER | cut -d'|' -f1)
|
|
SENDER_PASS=$(echo $SENDER | cut -d'|' -f2)
|
|
|
|
if [ -z "$SENDER_EMAIL" ]; then
|
|
echo "No active O365 account found"
|
|
exit 1
|
|
fi
|
|
|
|
SENT=0
|
|
for SEED in $SEEDS; do
|
|
[ -z "$SEED" ] && continue
|
|
|
|
python3 << PYEOF
|
|
import smtplib
|
|
from email.mime.text import MIMEText
|
|
|
|
try:
|
|
msg = MIMEText("Brain test - Config #$CONFIG_ID for $ISP")
|
|
msg['Subject'] = "Test $ISP #$CONFIG_ID"
|
|
msg['From'] = '$SENDER_EMAIL'
|
|
msg['To'] = '$SEED'
|
|
msg['X-MS-Exchange-Organization-SCL'] = '-1'
|
|
|
|
server = smtplib.SMTP('smtp.office365.com', 587, timeout=30)
|
|
server.starttls()
|
|
server.login('$SENDER_EMAIL', '$SENDER_PASS')
|
|
server.sendmail('$SENDER_EMAIL', '$SEED', msg.as_string())
|
|
server.quit()
|
|
print("OK")
|
|
except Exception as e:
|
|
print(f"ERROR:{e}")
|
|
PYEOF
|
|
|
|
if [ $? -eq 0 ]; then
|
|
((SENT++))
|
|
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
|
|
INSERT INTO admin.brain_test_jobs (config_id, seed_email, sender_email, status, created_at)
|
|
VALUES ($CONFIG_ID, '$SEED', '$SENDER_EMAIL', 'sent', NOW());
|
|
" 2>/dev/null
|
|
fi
|
|
|
|
sleep 3
|
|
done
|
|
|
|
# Update total_sent
|
|
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
|
|
UPDATE admin.brain_configs SET total_sent = total_sent + $SENT WHERE id = $CONFIG_ID;
|
|
" 2>/dev/null
|
|
|
|
echo "$(date) - Sent $SENT tests for config #$CONFIG_ID" >> $LOG_FILE
|
|
echo "{\"config_id\":$CONFIG_ID,\"sent\":$SENT}"
|