Bonjour à tous,
je vous mets à disposition un de mes tcl qui permet de compter le nombre de connexion journalière sur votre serveur IRC à l'aide de la commande !nb .
Tout d'abord il vous faudra une base de donnée sql avec comme structure :
ident (VARCHAR 20),
seen (DATE),
itr (INT 2)
Ensuite voici le tcl:
Il incrémentera votre base de donnée pour ajouter une itération pour une connexion déjà existante, ou créera une ligne pour chaque nouvelle connexion.
Ensuite à l'aide de la commande !nb il vous retournera le nombre de connexion à l'heure de l’exécution de la commande.
Pour avoir le nombre de connexion unique de votre serveur irc, il faudra changer la requête :
en
C'est une base, vous pouvez l'optimiser à vos souhaits, par exemple ajouter un bind time pour afficher vos stats toutes les heures ou fin de journée.
L'avantage de la base de donnée sql est que vous pouvez afficher vos statistiques dans une page web.
J'ai plusieurs tcl assez utile et sympathique, il me faudra un peu de temps pour nettoyer le code pour les rendre accessible à tous.
PS: L'eggdrop doit être IRCop et avoir le flag (snomask) +c pour voir la snotice des connexions.
je vous mets à disposition un de mes tcl qui permet de compter le nombre de connexion journalière sur votre serveur IRC à l'aide de la commande !nb .
Tout d'abord il vous faudra une base de donnée sql avec comme structure :
ident (VARCHAR 20),
seen (DATE),
itr (INT 2)
Ensuite voici le tcl:
tcl
#############################
# Compteur.tcl by Amand (www.eggdrop.fr) #
#############################
if {[::tcl::info::commands ::compteurirc::uninstall] eq "::compteurirc::uninstall"} { ::compteurirc::uninstall }
if { [package vcompare [regexp -inline {^[[:digit:]\.]+} $::version] 1.6.20] == -1 } {
putloglev o * "\00304\[compteurirc - erreur\]\003 La version de votre Eggdrop est\00304 ${::version}\003; compteurirc ne fonctionnera correctement que sur les Eggdrops version 1.6.20 ou supérieure." ; return }
if { [::tcl::info::tclversion] < 8.5 } {
putloglev o * "\00304\[compteurirc - erreur\]\003 compteurirc nécessite que Tcl 8.5 (ou plus) soit installé pour fonctionner. Votre version actuelle de Tcl est\00304 ${::tcl_version}\003." ; return }
package require Tcl 8.5
catch {package require mysqltcl}
namespace eval ::compteurirc {
############
# VARIABLE SQL #
############
set ::compteurirc::sql(login) "votre-login"
# Mot de passe
set ::compteurirc::sql(pass) "votre-pass"
# Nom de la base de donnée
set ::compteurirc::sql(db) "nom-de-la-base"
# L'host a l'aquelle ce connecté
set ::compteurirc::sql(host) "localhost"
#########
# VARIABLE #
#########
# Regexp pour la connection de l'user
set ::compteurirc::regexpclient {:\ (.*)\ \((.*?)@(.*?)\) \[(.*?)\] \[vhost: (.*?)\] .* \[country: (.*?)\] \[reputation: (.*?)\] (.+)}
# Procédure de désinstallation : le script se désinstalle totalement avant
# chaque rehash ou à chaque relecture au moyen de la commande "source" ou
# autre.
proc ::compteurirc::uninstall {args} {
putlog "Désallocation des ressources de \002compteurirc\002..."
# Suppression des binds.
foreach binding [lsearch -inline -all -regexp [binds *[set ns [::tcl::string::range [namespace current] 2 end]]*] " \{?(::)?$ns"] {
unbind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] [lindex $binding 4]
}
# Arrêt des utimers en cours.
foreach running_utimer [utimers] {
if { [::tcl::string::match "*[namespace current]::*" [lindex $running_utimer 1]] } { killutimer [lindex $running_utimer 2] }
}
namespace delete ::compteurirc
}
}
proc ::compteurirc::service:connect {} {
set ::mysqlink [::mysql::connect -host $::compteurirc::sql(host) -user $::compteurirc::sql(login) -password $::compteurirc::sql(pass) -encoding binary]
::mysql::use $::mysqlink $::compteurirc::sql(db)
}
proc ::compteurirc::service:deconnect {} {
::mysql::close $::mysqlink; unset -nocomplain ::mysqlink
}
##############################
# PROC TRAITEMENT CONNECTING #
##############################
proc ::compteurirc::who:co {from keyword text} {
if {![string match -nocase "*Client connecting*" $text]} {
return;
}
regexp $::compteurirc::regexpclient $text - nick username ip ipdns vhost codepays reputation other
::compteurirc::CountIRC $username
}
############
# PROCÉDURES #
############
proc ::compteurirc::nbtoday {nick uhost hand chan arg} {
set format "%Y-%m-%d"
set query "SELECT SUM(itr) as total FROM compteur WHERE seen='[clock format [clock seconds] -format $format]'"
::compteurirc::service:connect
set res [::mysql::sel $::mysqlink $query -flatlist]
::compteurirc::service:deconnect
puthelp "PRIVMSG $chan :Il y a eu $res connexions sur votre serveur irc aujourd'hui à [clock format [clock seconds] -format "%T"]."
}
proc ::compteurirc::CountIRC {username} {
set now [strftime "%Y-%m-%d"]
set query "SELECT ident,seen FROM compteur WHERE ident='$username' AND seen='$now'"
::compteurirc::service:connect
set res [::mysql::sel $::mysqlink $query]
::compteurirc::service:deconnect
if {[lindex $res 0] == 1} {
set query "UPDATE compteur SET itr=itr+1 WHERE ident='$username' AND seen='$now'"
::compteurirc::service:connect
set res [::mysql::sel $::mysqlink $query]
::compteurirc::service:deconnect
} else {
set query "INSERT INTO compteur (ident, seen, itr) VALUES ('$username', NOW(), 1)"
::compteurirc::service:connect
set res [::mysql::sel $::mysqlink $query]
::compteurirc::service:deconnect
}
}
#######
# BIND #
#######
bind pub - !nb ::compteurirc::nbtoday
bind raw - NOTICE ::compteurirc::who:co
bind evnt - prerehash ::compteurirc::uninstall
putlog "Compteur IRC (www.eggdrop.fr) a été chargé."
Il incrémentera votre base de donnée pour ajouter une itération pour une connexion déjà existante, ou créera une ligne pour chaque nouvelle connexion.
Ensuite à l'aide de la commande !nb il vous retournera le nombre de connexion à l'heure de l’exécution de la commande.
Pour avoir le nombre de connexion unique de votre serveur irc, il faudra changer la requête :
tcl
set query "SELECT SUM(itr) as total FROM compteur WHERE seen='[clock format [clock seconds] -format $format]'"
en
tcl
set query "SELECT COUNT(itr) as total FROM compteur WHERE seen='[clock format [clock seconds] -format $format]'"
C'est une base, vous pouvez l'optimiser à vos souhaits, par exemple ajouter un bind time pour afficher vos stats toutes les heures ou fin de journée.
L'avantage de la base de donnée sql est que vous pouvez afficher vos statistiques dans une page web.
J'ai plusieurs tcl assez utile et sympathique, il me faudra un peu de temps pour nettoyer le code pour les rendre accessible à tous.
PS: L'eggdrop doit être IRCop et avoir le flag (snomask) +c pour voir la snotice des connexions.