Releases: skylidefr/Steam-Server-Status-SourceQuery-PHP
Releases · skylidefr/Steam-Server-Status-SourceQuery-PHP
Release list
v1.4.1
v1.4.0
🔄 Changelog - Version 1.4.0
📋 Résumé des modifications
Cette mise à jour majeure corrige tous les bugs identifiés et implémente les fonctionnalités Discord manquantes.
✅ Corrections de bugs
1. Méthodes publiques manquantes
- ✔️
getServerDataCached()est maintenant publique - ✔️
getGameIcon()est maintenant publique - ✔️
getLatencyClass()est maintenant publique - ✔️
getProtocolFromGameType()est maintenant publique
2. Widget Elementor
- ✔️ Utilise maintenant les méthodes publiques du plugin
- ✔️ Plus de duplication de code
- ✔️ Fonctionne correctement pour tous les modes d'affichage
3. JavaScript admin.js
- ✔️ Fonction
test-serverimplémentée avec AJAX - ✔️ Preview des couleurs fonctionnelle
- ✔️ Ajout des éléments
#preview-onlineet#preview-offlinedans le HTML - ✔️ Validation des champs avant soumission
- ✔️ Confirmation avant de quitter avec modifications non sauvegardées
4. Sécurité
- ✔️ Ajout de
noncepour toutes les requêtes AJAX - ✔️ Vérification des permissions avec
check_ajax_referer() - ✔️ Sanitization de toutes les options avec
sanitizeOption() - ✔️ Échappement correct des URLs et couleurs
5. Gestion du cache
- ✔️ Meilleure gestion du fallback si le serveur est indisponible
- ✔️ Nettoyage des caches Discord lors de la désactivation
🆕 Nouvelles fonctionnalités
🔗 Intégration Discord complète
Configuration de base
- ✅ Activation/désactivation des notifications
- ✅ Configuration du webhook URL
- ✅ Personnalisation du nom et avatar du bot
- ✅ Test du webhook en temps réel
Types de notifications
- Serveur hors ligne - Alerte quand un serveur devient inaccessible
- Serveur en ligne - Notification quand un serveur revient
- Seuil de joueurs - Alerte quand X joueurs sont connectés
- Latence élevée - Avertissement si la latence dépasse un seuil
- Résumé quotidien - Rapport automatique à minuit
Fonctionnalités avancées
- Mention de rôle : Mentionne un rôle Discord pour les alertes critiques
- Cooldown : Évite le spam de notifications (configurable)
- Embeds colorés : Couleurs personnalisables (online/offline/warning)
- Rich embeds : Affichage détaillé avec joueurs, latence, version
Backend Discord
- ✅
sendDiscordMessage()- Envoi de messages via webhook - ✅
checkServersStatus()- Vérification automatique (cron toutes les minutes) - ✅
sendDailySummary()- Résumé quotidien (cron à minuit) - ✅
buildDiscordEmbed()- Construction d'embeds riches - ✅ Système de tracking d'état des serveurs
- ✅ Gestion du cooldown entre notifications
🔧 Handlers AJAX
1. Test de webhook Discord
Action: test_discord_webhook
Méthode: ajaxTestDiscordWebhook()
Fonction: Envoie un message de test au webhook2. Test de connexion serveur
Action: test_server_connection
Méthode: ajaxTestServerConnection()
Fonction: Teste la connexion à un serveur et retourne les infos⏰ Système de Cron
Vérification des serveurs
- Fréquence : Toutes les minutes
- Hook :
steam_status_check_servers - Fonction : Détecte les changements d'état et envoie des notifications
Résumé quotidien
- Fréquence : Tous les jours à minuit
- Hook :
steam_status_daily_summary - Fonction : Envoie un rapport complet de tous les serveurs
📝 Enregistrement des options
Nouvelles options Discord enregistrées :
'discord_enable_notifications' // Activation globale
'discord_webhook_url' // URL du webhook
'discord_bot_username' // Nom du bot
'discord_bot_avatar' // Avatar du bot (URL)
'discord_notify_offline' // Notifier offline
'discord_notify_online' // Notifier online
'discord_notify_player_threshold' // Notifier seuil joueurs
'discord_player_threshold_value' // Valeur du seuil
'discord_notify_high_latency' // Notifier latence élevée
'discord_latency_threshold' // Valeur latence max
'discord_daily_summary' // Activer résumé quotidien
'discord_mention_role' // ID du rôle à mentionner
'discord_notification_cooldown' // Cooldown en secondes
'discord_embed_color_online' // Couleur embed online
'discord_embed_color_offline' // Couleur embed offline
'discord_embed_color_warning' // Couleur embed warning🎨 Améliorations UI/UX
Page d'administration
- ✅ Prévisualisation en temps réel des couleurs
- ✅ Boutons de test pour serveurs et webhook
- ✅ Messages d'erreur explicites
- ✅ Toggle automatique des options dépendantes
- ✅ Validation des champs en temps réel
Interface utilisateur
- ✅ Affichage cohérent dans Elementor et shortcodes
- ✅ Responsive design pour mobile
- ✅ Animations de hover sur les cartes
- ✅ Classes CSS optimisées
🗂️ Structure des fichiers modifiés
/Steam-Server-Status-SourceQuery-PHP.php (v1.4.0)
├── Méthodes publiques ajoutées
├── Handlers AJAX implémentés
├── Système Discord complet
├── Enregistrement des options Discord
└── Système de cron
/assets/admin.js
├── Test AJAX des serveurs
├── Test AJAX du webhook Discord
├── Preview en temps réel
├── Validation des formulaires
└── Toggle des options dépendantes
/includes/elementor-widget.php
├── Utilisation des méthodes publiques
├── Suppression de la duplication de code
└── Rendu optimisé
/assets/elementor-styles.css (inchangé)
└── Styles déjà fonctionnels
🚀 Migration depuis v1.3.1
Étapes automatiques
- Les nouvelles options seront créées avec valeurs par défaut
- Les crons seront programmés automatiquement
- L'ancien cache sera compatible
Configuration manuelle requise
- Discord : Configurer le webhook URL si vous voulez les notifications
- Cron : Vérifier que WP-Cron fonctionne sur votre hébergement
Vérification post-migration
// Vérifier que les crons sont actifs
wp_next_scheduled('steam_status_check_servers'); // Doit retourner un timestamp
wp_next_scheduled('steam_status_daily_summary'); // Doit retourner un timestamp⚙️ Configuration recommandée
Pour notifications Discord actives
Cache serveur : 15 secondes (équilibre perf/réactivité)
Cache latence : 5 secondes (mises à jour fréquentes)
Cooldown Discord : 300 secondes (5 min, évite le spam)
Vérification serveurs : 60 secondes (via cron)
Pour performance maximale
Cache serveur : 60 secondes
Cache latence : 30 secondes
Désactiver Discord : Si non utilisé
🐛 Bugs connus corrigés
- Widget Elementor ne pouvait pas accéder aux données serveur
- Test serveur simulé au lieu d'être réel
- Preview des couleurs non fonctionnelle
- Interface Discord sans backend
- Pas de nonce de sécurité
- Options Discord non enregistrées
- Méthodes privées inaccessibles depuis Elementor
- Duplication de code entre widget et plugin
- Cache latence pouvait rester à false indéfiniment
📚 Documentation des nouvelles méthodes
Méthodes AJAX
ajaxTestDiscordWebhook()
// Teste la connexion au webhook Discord
// Retourne: JSON success/error
// Sécurité: Vérifie nonce et permissionsajaxTestServerConnection()
// Teste la connexion à un serveur
// Paramètres: ip, port, game_type
// Retourne: JSON avec données serveur ou erreurMéthodes Discord
sendDiscordMessage($webhook_url, $data)
// Envoie un message via webhook
// Retourne: bool (true si succès)checkServersStatus()
// Vérifie l'état de tous les serveurs
// Appelé automatiquement par cron toutes les minutesbuildDiscordEmbed($server, $state, $type)
// Construit un embed Discord formaté
// Types: offline, online, player_threshold, high_latencysendDailySummary()
// Envoie le résumé quotidien à minuit
// Appelé automatiquement par cronMéthodes publiques (pour Elementor)
public function getServerDataCached($server, $id)
public function getGameIcon($game_type)
public function getLatencyClass($latency)
public function getProtocolFromGameType($game_type)
public function getSupportedGames()
public function getServers()
public function renderServerForElementor($server_id, $options)🧪 Tests recommandés
1. Test des serveurs
- Ajouter un serveur valide et le tester
- Ajouter un serveur invalide et vérifier le message d'erreur
- Tester différents types de jeux (Source, GoldSource, Minecraft)
2. Test Discord
- Configurer un webhook de test
- Cliquer sur "Tester" et vérifier la réception
- Activer les notifications et simuler un serveur offline
- Vérifier le cooldown entre notifications
3. Test Elementor
- Créer une page avec le widget
- Tester l'affichage en mode cartes
- Tester l'affichage en mode tableau
- Vérifier la personnalisation des styles
4. Test shortcodes
[steam_status id="0"] // Serveur unique
[steam_status_all] // Tous les serveurs⚠️ Limitations connues
- WP-Cron : Nécessite du trafic sur le site ou un vrai cron système
- Discord Rate Limits : Max 30 webhooks/minute par webhook
- Latence : 3 requêtes par mesure = charge réseau
- Cache : Les états peuvent être en retard selon la configuration
🔮 Améliorations futures possibles
- Interface de logs pour historique des notifications
- Graphiques de statistiques serveurs
- Intégration Telegram/Slack en p...
v1.3.0
v1.2.2
📋 Résumé des modifications - Ajout Latence
🆕 Nouvelles options admin
- ✅ Checkbox "Afficher latence" par serveur (dans le tableau)
- ✅ Option globale on/off latence
- ✅ Cache latence séparé (5s par défaut)
- ✅ Seuils configurables (Bon <80ms, Moyen <200ms)
🔧 Code modifié
- ✅ queryServer() : Mesure latence avec 3 pings moyennés
- ✅ getServerDataCached() : Cache séparé latence vs statut
- ✅ renderServerStatus() : Affiche
(42ms)avec couleurs - ✅ CSS : Classes
.good,.medium,.badpour couleurs - ✅ Tableaux/Cartes : Colonne latence dans
[steam_status_all]
🎨 Affichage visuel
Avant :
Serveur CS:GO Joueurs connectés : 15/32
Après :
Serveur CS:GO Joueurs connectés : 15/32 (42ms) 🟢
⚙️ Technique
- 3 pings → moyenne pour précision
- Cache intelligent : 5s latence, 15s statut
- Pause 100ms entre pings
- Nettoyage cache à la désactivation
💡 Utilisation
- Admin → Cocher "Afficher latence" par serveur
- Shortcodes :
[steam_status id="0"]et[steam_status_all] - Couleurs auto : Vert/Orange/Rouge selon seuils
v1.2.1
🚀 Version 1.2.1 - Refactorisation Majeure & Optimisations
🏗️ Architecture Améliorée
- Refactorisation complète : Migration vers une architecture orientée objet moderne
- Pattern Singleton : Gestion optimisée de l'instance unique du plugin
- Séparation des responsabilités : Code mieux organisé avec des méthodes spécialisées
- Maintenabilité renforcée : Structure de code plus claire et modulaire
🔒 Sécurité Renforcée
- Échappement systématique : Protection contre les failles XSS avec
esc_html()etesc_attr() - Validation des données : Contrôles renforcés sur tous les paramètres d'entrée
- Permissions vérifiées : Contrôles d'accès administrateur consolidés
- Protection CSRF : Vérifications de sécurité des formulaires
⚡ Performances Optimisées
- Gestion automatique des versions : Plus de duplication, version récupérée depuis l'en-tête
- Cache amélioré : Système de mise en cache plus efficace pour les requêtes serveurs
- Requêtes optimisées : Réduction des appels redondants aux serveurs Steam
- Nettoyage automatique : Suppression des caches lors de la désactivation
🔧 Fonctionnalités Techniques
- Logging des erreurs : Suivi détaillé des problèmes de connexion serveur
- Gestion d'erreurs robuste : Try-catch améliorés avec récupération gracieuse
- Code JavaScript moderne : Utilisation de template literals et syntaxe ES6
- Timeout configuré : Délai d'attente de 10 secondes pour les requêtes GitHub
🎨 Interface Utilisateur
- Messages d'erreur clairs : Feedback utilisateur amélioré
- Administration simplifiée : Interface de paramètres plus intuitive
- Scripts optimisés : Chargement conditionnel des assets administrateur
🛠️ Maintenance & Stabilité
- Code plus lisible : Méthodes courtes et documentation améliorée
- Standards WordPress : Respect des bonnes pratiques de développement
- Compatibilité assurée : Maintien de toutes les fonctionnalités existantes
- Hooks de désactivation : Nettoyage propre lors de la suppression
📊 Améliorations Techniques Invisibles
- Optimisation des transients et du système de cache
- Meilleure gestion de la mémoire et des ressources
- Protection contre les erreurs fatales
- Validation renforcée des configurations serveur