Skip to content

Releases: skylidefr/Steam-Server-Status-SourceQuery-PHP

v1.4.1

Choose a tag to compare

@skylidefr skylidefr released this 06 Oct 01:11
Update Steam-Server-Status-SourceQuery-PHP.php

v1.4.0

Choose a tag to compare

@skylidefr skylidefr released this 01 Oct 01:16

🔄 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-server implémentée avec AJAX
  • ✔️ Preview des couleurs fonctionnelle
  • ✔️ Ajout des éléments #preview-online et #preview-offline dans le HTML
  • ✔️ Validation des champs avant soumission
  • ✔️ Confirmation avant de quitter avec modifications non sauvegardées

4. Sécurité

  • ✔️ Ajout de nonce pour 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

  1. Serveur hors ligne - Alerte quand un serveur devient inaccessible
  2. Serveur en ligne - Notification quand un serveur revient
  3. Seuil de joueurs - Alerte quand X joueurs sont connectés
  4. Latence élevée - Avertissement si la latence dépasse un seuil
  5. 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 webhook

2. 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

  1. Les nouvelles options seront créées avec valeurs par défaut
  2. Les crons seront programmés automatiquement
  3. L'ancien cache sera compatible

Configuration manuelle requise

  1. Discord : Configurer le webhook URL si vous voulez les notifications
  2. 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 permissions

ajaxTestServerConnection()

// Teste la connexion à un serveur
// Paramètres: ip, port, game_type
// Retourne: JSON avec données serveur ou erreur

Mé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 minutes

buildDiscordEmbed($server, $state, $type)

// Construit un embed Discord formaté
// Types: offline, online, player_threshold, high_latency

sendDailySummary()

// Envoie le résumé quotidien à minuit
// Appelé automatiquement par cron

Mé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

  1. WP-Cron : Nécessite du trafic sur le site ou un vrai cron système
  2. Discord Rate Limits : Max 30 webhooks/minute par webhook
  3. Latence : 3 requêtes par mesure = charge réseau
  4. 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...
Read more

v1.3.0

Choose a tag to compare

@skylidefr skylidefr released this 27 Sep 06:12
0fe2b97

v1.3.0

v1.2.2

Choose a tag to compare

@skylidefr skylidefr released this 27 Sep 02:19

📋 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, .bad pour 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

  1. Admin → Cocher "Afficher latence" par serveur
  2. Shortcodes : [steam_status id="0"] et [steam_status_all]
  3. Couleurs auto : Vert/Orange/Rouge selon seuils

v1.2.1

Choose a tag to compare

@skylidefr skylidefr released this 26 Sep 23:49
501ce97

🚀 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() et esc_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

v1.2

Choose a tag to compare

@skylidefr skylidefr released this 26 Sep 05:18

Ajout du système de mise à jour automatique GitHub
Amélioration de l'interface d'administration
Correction de bugs mineurs

v1.1

Choose a tag to compare

@skylidefr skylidefr released this 26 Sep 05:07

Version initiale stable
Support multi-serveurs
Système de cache intégré
Personnalisation avancée

1.0

1.0

Choose a tag to compare

@skylidefr skylidefr released this 26 Sep 03:57
589873f

1.0