Files
wevads-platform/scripts/validate-passwords.sh
2026-02-26 04:53:11 +01:00

82 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Valide les mots de passe O365 en masse
# Usage: ./validate-passwords.sh [LIMIT]
LIMIT=${1:-50}
LOG_FILE="/var/log/wevads/password-validation.log"
mkdir -p /var/log/wevads
echo "$(date) - Validating $LIMIT accounts" >> $LOG_FILE
ACCOUNTS=$(PGPASSWORD=admin123 psql -U admin -d adx_system -t -A -c "
SELECT id, admin_email, admin_password
FROM admin.office_accounts
WHERE status = 'Active'
AND admin_password IS NOT NULL
AND (password_status IS NULL OR password_status != 'invalid')
ORDER BY last_check ASC NULLS FIRST
LIMIT $LIMIT;
")
VALID=0
INVALID=0
SMTP_DISABLED=0
while IFS='|' read -r ID EMAIL PASS; do
[ -z "$ID" ] && continue
RESULT=$(python3 << PYEOF
import smtplib
try:
server = smtplib.SMTP('smtp.office365.com', 587, timeout=15)
server.starttls()
server.login('$EMAIL', '$PASS')
server.quit()
print("VALID")
except smtplib.SMTPAuthenticationError as e:
if b"5.7.139" in e.smtp_error:
print("SMTP_DISABLED")
else:
print("INVALID")
except:
print("ERROR")
PYEOF
)
case $RESULT in
VALID)
((VALID++))
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
UPDATE admin.office_accounts
SET password_status='valid', last_check=NOW()
WHERE id=$ID;
" 2>/dev/null
echo "$EMAIL"
;;
INVALID)
((INVALID++))
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
UPDATE admin.office_accounts
SET password_status='invalid', last_check=NOW()
WHERE id=$ID;
" 2>/dev/null
echo "$EMAIL - Invalid password"
;;
SMTP_DISABLED)
((SMTP_DISABLED++))
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
UPDATE admin.office_accounts
SET password_status='smtp_disabled', last_check=NOW()
WHERE id=$ID;
" 2>/dev/null
echo "⚠️ $EMAIL - SMTP disabled"
;;
esac
sleep 1
done <<< "$ACCOUNTS"
echo ""
echo "Results: $VALID valid, $INVALID invalid, $SMTP_DISABLED smtp_disabled"
echo "$(date) - Results: $VALID valid, $INVALID invalid, $SMTP_DISABLED smtp_disabled" >> $LOG_FILE