Communauté Eggdrop
[Demande] API JSON compteur utilisateurs - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : [Demande] API JSON compteur utilisateurs (/showthread.php?tid=1727)



API JSON compteur utilisateurs - bodtx - 28/05/2019

Salut j'ai un eggdrop sur un chan

Nous avons un site avec un lien vers kiwiirc qui pointe sur notre chan.
On aimerait mettre le nombre d'utilisateurs connectés à côté du lien.

Le top ce serait de pouvoir exposer une API JSON via l'eggdrop qu'on pourrait requêter depuis le site.

Avez vous des idées ou d'autres pistes? Merci


RE: API JSON compteur utilisateurs - MenzAgitat - 28/05/2019

La librairie standard Tcl (tcllib) fournit les packages json et json_write.


RE: API JSON compteur utilisateurs - bodtx - 29/05/2019

OK bon JSON est pas la priorité mais en fouillant j'ai vu une lib tcl httpd. Je peux démarrer un serveur web dans un eggdrop?

Sinon je lance un serveur python à côté...

J'essaye de trouver des example s d'utilisation mais je trouve pas grand chose.


RE: API JSON compteur utilisateurs - CrazyCat - 29/05/2019

Où est hébergé ton eggdrop ? Sur la même machine que là où est ton site ? Sur un autre serveur ? Sur un PC personnel ? De cela peut dépendre le choix d'une solution.
Si ton eggdrop est sur le même serveur que ton site, il suffit de créer le fichier .json dans un répertoire accessible par le web.
Si ton eggdrop est sur un autre serveur qui n'a pas de service httpd, je te conseille d'installer quelque chose comme lighthttpd plutôt que de charger l'eggdrop avec un httpd.

Une autre option possible, c'est de fonctionner à l'envers: l'eggdrop envoie les infos à ton site chaque fois qu'il y a une entrée/sortie, via une requête http (ce qui nécessite que ton site ait une page pour recevoir les infos).


RE: API JSON compteur utilisateurs - bodtx - 29/05/2019

Yep l'eggdrop est sur le serveur. C'est un orangepi, je voulais éviter d'écrire sur la carte sd avec un fichier mais plutôt que de monter un serveur http avec une pauvre variable en mémoire je vais voir si je peux pas monter le répertoire www en mémoire et pas sur disque.

Bon je fouille les docs du site, faut juste réussir à faire un /names vers un fichier


RE: API JSON compteur utilisateurs - CrazyCat - 29/05/2019

Le site est sur un orangepi ? Donc ta carte mémoire doit être souvent écrite, ne serait-ce qu'avec les logs.
Et pour ne pas trop t'embêter: monte le répertoire /tmp/ en mémoire (si ce n'est pas déjà fait) et c'est là que l'eggdrop doit créer son fichier. Côté www, tu fais un ln -s vers /tmp/tonfichier.
Au pire, suite à un reboot, le fichier est absent le temps que ton eggdrop le régénère.


RE: API JSON compteur utilisateurs - bodtx - 29/05/2019

Pour l'écriture sur carte sd j'utilise armbian qui monte déjà les log et le /tmp en RAM
https://docs.armbian.com/#what-is-armbian

Pas bête le ln -s ça m'evitera de monter un autre rep en mémoire

Thx


RE: API JSON compteur utilisateurs - bodtx - 29/05/2019

Je regardais la doc mais je ne vois pas de fonction tcl qui retourne les utilisateurs, je ne vois comme solution que de faire un putserv #channel /names et de lire le retour dans le chan Sad, il n'y a pas plus simple


RE: API JSON compteur utilisateurs - CrazyCat - 29/05/2019

Tu peux faire chanlist #channel qui te remonte la liste des utilisateurs connectés sur le canal. Ou llength [chanlist #channel] pour juste avoir le nombre.


RE: API JSON compteur utilisateurs - MenzAgitat - 29/05/2019

Ton Eggdrop possède deux jeux d'instructions :
1- les commandes Tcl
2- les commandes Eggdrop.

Ces dernières sont documentées ici : https://docs.eggheads.org/mainDocs/tcl-commands.html


RE: API JSON compteur utilisateurs - CrazyCat - 30/05/2019

et aussi sur https://wiki.eggdrop.fr/Tcl-commands


RE: API JSON compteur utilisateurs - bodtx - 30/05/2019

Super ça fonctionne j'ai du mettre une option sur mon serveur pour suivre les lien symboliques, au début il voulait pas.

Me reste à faire un timer sur la fonction.

Merci