Eggdrop et phpbb
#1
Salut à tous !

J'ai un projet que je n'arrive pas à mettre en place.

J'ai un serveur Unrealircd et un eggdrop sur un serveur.
Sur un autre, j'ai un forum phpbb.

Sur mon serveur irc, j'ai bloqué l'accès aux utlisateurs non enregistrés aupres de Anope.
J'ai désactivé cette fonction sur un chan. Mon eeggdrop se trouve sur ce channel.

De l'autre coté, sur mon forum, j'ai créé une page php qui liste tous les users de mon forum.

Je voudrais que mon Eggdrop, lors d'un join, liste les utilisateurs de mon forum (grace à la page php créée), qu'il compare avec celle d'Anope et que si l'utilisateur pénétrant sur le chan n'est pas présent dans les membres du forum, soit kicker et supprimer du fichier user de Anope.

Je remercie toute personne qui voudront bien me donner un coup de pouce

Merci d'avance
Répondre Avertir
#2
heu oui mais non.
Cela impliquerait que ton eggdrop soit IRCop, et c'est très déconseillé.

Mais au cas où, le moyen le plus simple est d'envoyer un message à nickserv: "info nick" et de récupérer la chaine "nick n'est pas enregistré".
En l'absence de cette réponse, tu ne fais rien, si tu as cette réponse, tu ban 1h.

Danger: risque de flood, le lag peut géner...
Répondre
#3
Salut et merci pour ta reponse.

Le fait que l'Eggdrop soit IRCOP ne pose pas probleme. Il a les droits minimums que je lui ai configurés sur le serveur.

Pour ta reponse, a ne concorde pas.
Si la personne arrive à penetrer sur ce chan ou un autre, c'est bien qu'elle a été enregistré aupres de nickserv.
Ca ne comparera en rien avec ma base de données des membres du forum !
Wink
Répondre Avertir
#4
trotinet a écrit :J'ai désactivé cette fonction sur un chan. Mon eeggdrop se trouve sur ce channel.
De l'autre coté, sur mon forum, j'ai créé une page php qui liste tous les users de mon forum.
Tu disais bien que sur ce canal, les gens non-enregistrés pouvaient entrer.

Quoi qu'il en soit, le plus simple à mon avis est donc de faire une page simplifiée sur ton forum à laquelle tu passes l'argument "nick" et qui va te renvoyer "true" ou "false" selon que le nick est celui d'un membre de ton forum ou pas.

avec le package http.tcl, ça devrait faire quelque chose de relativement simple:
Code :
package require http

set forum "http://www.tonforum.com/page.php?user="

bind join - #canal test:user
proc test:user {nick uhost handle chan} {
   if {$nick == $::botnick} { return 0}
   set search [concat $::forum $nick]
   set key [http::geturl $::search]
   if {[http::data $key] == "true"} {
      return 0
   }
   putserv "KICK $chan $nick :Not allowed member"
}

Tu noteras que je fais un fonctionnement restrictif, c'est à dire que je ne kick pas si celui qui entre est le robot ou un membre du forum, mais je kick dans tous les autres cas, c'est à dire si le forum renvoit autre chose que "true".
Répondre
#5
Salut CrazyCat et encore merci pour ta reponse.

J'ai, depuis que j'ai posé la question ici, installé une librairie mysql.

J'ai repris le code de bb.tcl (qui marche tres bien) et en ai retiré ce qui m'interessait.

Voici donc ce que ca donne :
http://lpln.pastebin.ca/353426

Cela dit, j'ai une erreur que je n'arrive à resoudre :
Code :
Tcl error [join_tous]: mysqlresult: no result pending

La requete m'a pourtant l'air bonne !

J'essaie de trouvé l'erreur en vain.

Si tu as une solution, ca serait bien aimable !

Merci encore
Répondre Avertir
#6
Je pense que ton erreur est le mysqlenquery.
Code :
set bb(query) [mysqlquery $bb(connect) "SELECT * FROM $bb(prefix)users u JOIN $bb(prefix)user_group ug ON u.user_id = ug.user_id WHERE ug.group_id = 40 AND u.username='$nick'"]
mysqlendquery $bb(query)
if {[mysqlresult $bb(connect) rows] == 0} {puthelp "NOTICE $nick :Vous devez vous identifier"}
mysqlendquery sert à vider les résultats (équivalent du mysql_free_result en php), il doit donc être à la fin de ton script, ou plutôt après avoir exploité ton résultat.
Répondre
#7
bonjour, y a moyen d'avoir la source entier sens bug ? svp
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté