############################# ### Uploads sur AideBot ! ### ############################# bind rcvd - * uploadaidebot proc uploadaidebot {hand nick file} { set hand [nick2hand $nick] if ![validuser $hand] { exec /bin/rm $file return 0 } set idx [hand2idx $hand] set fichier [string range $file 21 end] set extention [string range $file [expr [string length $file] - 3 ] end] set rep_photo "/aide/www/photos" set rep_log "/aide/www/admins/logs" if {([string tolower [string range $fichier 0 2]] == "gt-") & [matchattr $hand p]} { set dategt [lindex [getuser aidebot xtra GTactif] 1] exec /bin/mv $file "/home/www/gt/gt$dategt/photos/[getuser $hand xtra vrainick][unixtime].jpg" putdccsi [hand2idx $hand] "Merci pour la photo GT! Je la met sur la page web! :-) Elle sera inclue dans http://aide.igt.net/gt/gt$dategt/" } elseif {($extention == "jpg") && [matchattr $hand p]} { exec /bin/mv $file "$rep_photo/[getuser $hand xtra vrainick].jpg" putdccsi [hand2idx $hand] "Merci pour la photo! Je la met sur la page web! :-) Pour que les gens puissent la voir, n'oublie pas de faire .afficher!" } elseif {($extention == "log") && [matchattr $hand AE]} { set lenom "[getuser $hand xtra vrainick][unixtime]-ext-$fichier" exec /bin/mv $file "$rep_log/$lenom" if [matchattr $hand A] { putdccsi [hand2idx $hand] "J'ai ajouté le log au répertoire des logs, tu peux le référencer comme: http://aide.igt.net/admins/logs/$lenom" } else { putdccsi [hand2idx $hand] "J'ai enregistré le log, utilises le nom de référence « $lenom » stp." } } elseif {([string tolower [string range $fichier 0 4]] == "info-") & [matchattr $hand A]} { exec /bin/mv $file "/aide/aidebot/infos/[lindex [split [string range $fichier 5 end] .] 0]" putdccsi [hand2idx $hand] "J'ai ajouté ou remplacé le fichier d'information... ( .i pour la liste ... )" } elseif {([string tolower [string range $fichier 0 6]] == "projet-") & [matchattr $hand T]} { regsub -all {\ } "/aide/aidebot/projets/[string tolower [string range $fichier 7 end]]" "_" fichproj regsub -all {.txt} $fichproj "" fichproj exec /bin/mv $file $fichproj putdccsi [hand2idx $hand] "J'ai ajouté ou remplacé le fichier commentaire du projet... ( .projets pour la liste ... )" } elseif [string match *$fichier* [getuser $hand xtra fichiers]] { switch $fichier { "questions.txt" { exec /bin/mv $file "/aide/aidebot/questions.txt" putdccsi [hand2idx $hand] "Voilà, je change le fichier des questions quiz..." } "trucs.txt" { exec /bin/mv $file "/aide/aidebot/trucs.txt" putdccsi [hand2idx $hand] "Voilà, je change le fichier des truc et astuces..." } "bugs.txt" { exec /bin/mv $file "/aide/aidebot/bugs.txt" putdccsi [hand2idx $hand] "Voilà, je remplace le fichier des bugs..." setuser Aidebot xtra bugs "Dernier événement: UPLOAD par [getuser $hand xtra vrainick] à [time] le [date]" } "web.txt" { exec /bin/mv $file "/aide/aidebot/web.txt" putdccsi [hand2idx $hand] "Voilà, je remplace le fichier des NOTES WEB..." setuser Aidebot xtra web "Dernier événement: UPLOAD par [getuser $hand xtra vrainick] à [time] le [date]" } "projets.txt" { exec /bin/mv $file "/aide/www/admins/projets.txt" putdccsi [hand2idx $hand] "J'ai remplacé le fichier projets.txt dans le coin des admins... ( http://aide.igt.net/admins/projets.txt )" } default { putdccsi [hand2idx $hand] "Hum! Erreur! La règle d'emplacement de ce fichier n'a pas été définie... .bug !" } } } else { putdccsi $idx "Le fichier $fichier n'a aucune utilité connue pour moi, alors je l'efface." exec /bin/rm $file } return 0 } ############### ### Projets ### ############### ### GT bind dcc - gt dcc_gt proc dcc_gt {hand idx args} { set gtactif [lindex [getuser aidebot xtra GTactif] 0] set gtdate [lindex [getuser aidebot xtra GTactif] 1] set args [lindex $args 0] if {([matchattr $hand A] | [string match *GT* [getuser $hand xtra responsable]] | [string match *GT* [getuser $hand xtra adjoint]])&& ([string tolower $args] == "on")} { setuser aidebot xtra GTactif "1 $gtdate" putdcc $idx "Commande GT activée" } elseif {([matchattr $hand A] | [string match *GT* [getuser $hand xtra responsable]] | [string match *GT* [getuser $hand xtra adjoint]])&& ([string tolower $args] == "off")} { setuser aidebot xtra GTactif "0 $gtdate" putdcc $idx "Commande GT désactivée" } elseif {([matchattr $hand A] | [string match *GT* [getuser $hand xtra responsable]] | [string match *GT* [getuser $hand xtra adjoint]]) && ([lindex [string tolower $args] 0] == "date") && [estunnombre:ok [lindex $args 1]] && ([string length [lindex $args 1]] == 8) && ([string range [lindex $args 1] 0 2] == "200")} { setuser aidebot xtra GTactif "$gtactif [lindex $args 1]" putdcc $idx "Date de l'ancien GT changée pour [lindex $args 1]" } elseif {([matchattr $hand A] | [string match *GT* [getuser $hand xtra responsable]] | [string match *GT* [getuser $hand xtra adjoint]])&& ([string tolower $args] == "vide")} { setuser aidebot xtra GTviens "" putdcc $idx "Liste des participants GT vidée." } elseif {([matchattr $hand A] | [string match *GT* [getuser $hand xtra responsable]] | [string match *GT* [getuser $hand xtra adjoint]])&& ($args != "")} { putdcc $idx "ANCIENNES INFOS GT -> [getuser AideBot xtra GT]" setuser AideBot XTRA GT $args putdcc $idx "NOUVELLES INFOS GT -> [getuser AideBot xtra GT]" putdcc $idx "## Syntaxe: .gt \[ON|OFF|VIDE|DATE DATEancienGT|Infos sur le GT\]" } else { if $gtactif { putdcc $idx "INFOS GT -> [getuser AideBot xtra GT]" set liste [getuser AideBot xtra gtviens] set tot 0 foreach item $liste { if {[string index $item 1] == "+"} { set tot [expr $tot + [string index $item 2]] } else { incr tot } } putdcc $idx "Se sont inscrits pour le GT -> \[$tot\] [getuser AideBot xtra gtviens]" } else { putdcc $idx "Il n'y a pas de GT scédulé pour le moment ..." } putdcc $idx "Les photos du dernier GT ($gtdate) sont disponibles sur http://aide.igt.net/gt/gt$gtdate ." } return 1 } bind dcc - gt+ dcc_gtplus proc dcc_gtplus {hand idx arg} { if [estunnombre:ok [lindex $arg 0]] { set nombre [string index [lindex $arg 0] 0] set arg [lindex $arg 1] } else { set nombre 0 } set nick [getuser $hand xtra vrainick] if {[matchattr $hand A] & [validuser $arg]} { set bup [getuser $arg xtra vrainick] if {$bup != ""} { set nick $bup } } if [string match "* $nick *" " [getuser AideBot xtra gtviens] "] { set tmp [getuser AideBot xtra gtviens] set rep [lsearch -exact $tmp $nick] set tmp [lreplace $tmp $rep [expr $rep + 1]] setuser AideBot xtra gtviens $tmp } setuser AideBot xtra gtviens "[getuser AideBot xtra gtviens] $nick (+$nombre)" putdcc $idx "Oki, j'ai ajouté $nick (avec $nombre invité(s)) à la liste des gens venant au GT ! :o)" return 1 } bind dcc - gt- dcc_gtmoins proc dcc_gtmoins {hand idx arg} { set arg [lindex $arg 0] set nick [getuser $hand xtra vrainick] if {[matchattr $hand A] & [validuser $arg]} { set nick [getuser $arg xtra vrainick] } if {($arg != "*") | ![matchattr $hand A]} { if [string match "* $nick *" " [getuser AideBot xtra gtviens] "] { set tmp [getuser AideBot xtra gtviens] set rep [lsearch -exact $tmp $nick] set tmp [lreplace $tmp $rep [expr $rep + 1]] setuser AideBot xtra gtviens $tmp } } else { setuser AideBot xtra gtviens putdcc $idx "Oki, j'ai vidé la liste des gens venant au GT ! :-/" } return 1 } ### AideBot&co bind dcc A bugs dcc_bugs proc dcc_bugs {hand idx args} { set args [lindex $args 0] if {$args == ""} { set bla "" foreach user [userlist] { if [regsub -all {\\|\?|\[|\]|\{|\}|\`|\^} $user "" user2] { lappend bla " -- $user $user2 " } } putdcc $idx "Accès contenant des caractères non approuvé:" foreach item $bla { putdcc $idx $item } set bla "" foreach user [userlist] { if ![matchattr $user ABCDEFGHIJKLMNOPQRSTUVWXYZdb|d #Aide] { set bla2 " -- $user [chattr $user] " foreach chan [channels] { append bla2 "($chan [lindex [split [chattr $user $chan] |] 0]) " } lappend bla $bla2 } } putdcc $idx "Accès avec des 'flags' inattendus ou sans flag:" foreach item $bla { putdcc $idx $item } set bla "" foreach user [userlist] { set hosts [getuser $user hosts] set oki 0 foreach host $hosts { if {[regsub -all {\ |\,} $host "" h] | [regsub -all {\!\@} $host "" h] | ![regsub -all {\!} $host "" h] | ![regsub -all {\@} $host "" h] | ![regsub -all {\.} $host "" h]} { set oki 1 } set tst [string index [lindex [split $host !] 1] 0] regsub -all {\*|~} $tst "" tst if {$tst == ""} { set oki 1 } if {[string tolower $host] == [string tolower "\*\!\*\@[getuser $user xtra loginx].users.undernet.org"]} { set oki 0 } } if $oki { lappend bla " -- $user $hosts " } } putdcc $idx "Accès avec des 'hosts' étranges ou illégaux:" foreach item $bla { putdcc $idx $item } putdcc $idx "Erreur dans la fiche au niveau du pays ou du sexe:" foreach user [userlist AGCTOJRPMNNH] { set pays [getuser $user xtra pays] set sexe [getuser $user xtra sexe] set bla " -- $user" set oki 0 if ![estunpays:ok $pays] { append bla " - pays" set oki 1 } if {($sexe != "F") & ($sexe != "H")} { append bla " - sexe" set oki 1 } if $oki { putdcc $idx $bla } } putdcc $idx "Pour vérifier les «mail/email», utiliser '.bugs @'" putdcc $idx "Pour vérifier les logins pour X, utiliser '.loginx'" putdcc $idx "Pour vérifier les cas de différence entre le nick et le vrainick sur AideBot, utiliser '.vrainick'" } elseif {$args == "@"} { set mlst "" foreach user [userlist p] { if {[string tolower [getuser $user xtra email]] != [string tolower [getuser $user xtra mail]]} { append mlst " [getuser $user xtra vrainick]" } } putdcc $idx "Liste des gens ayant le champs 'mail' & 'email' différents ...: $mlst" } elseif {$args == "?"} { putdcc $idx [getuser AideBot xtra bugs] } else { dccsend "bugs.txt" $args putdcc $idx "Je tente d'envoyer le fichier des bugs à $args" } return 1 } ### Page web kin bind dcc p web dcc_web proc dcc_web {hand idx text} { if {![matchattr $hand A] & ![string match *web.txt* [getuser $hand xtra fichiers]]} { aux_poubelles $hand $idx $text } set args [lindex $text 0] if {($args == "") | ($args == "?")} { putdcc $idx [getuser AideBot xtra web] } elseif [validuser [nick2hand $args]] { dccsend "web.txt" $args putdcc $idx "Je tente d'envoyer le fichier d'état WEB à $args" } else { exec echo "\[[date] [time]\] <[getuser $hand xtra vrainick]> $text \r" >> /aide/aidebot/web.txt putdcc $idx "Oki, la NOTE WEB a été inscrite." setuser Aidebot xtra web "Dernier événement: NOTE WEB par [getuser $hand xtra vrainick] à [time] le [date]" putlog "$hand a noté une information pour la page web." } return 0 } ### ircd bind dcc AR olines dcc_olines proc dcc_olines {hand idx pass} { if {![matchattr $hand Ab] & ![string match *ircu* [getuser $hand xtra responsable]]} { return 0 } set passwords [open "passwords.txt" r] while {[gets $passwords line] >= 0} { if [validuser [lindex [split $line :] 0]] { setuser [lindex [split $line :] 0] xtra htpasswd [lindex [split $line :] 1] } } close $passwords set fichier [open "membres.olines" w] foreach user [userlist AOJMRP] { if {[matchattr $user T] || [string match *ircu* [getuser $user xtra responsable]] || [string match *ircu* [getuser $user xtra adjoint]]} { set o "O" } else { set o "o" } set pass [getuser $user xtra htpasswd] if {$pass != ""} { foreach host [getuser $user hosts] { set lehost [lindex [split $host !] 1] if {$lehost != ""} { puts $fichier "$o:$lehost\:$pass\:$user\::10" } } } } close $fichier exec /home/ircd/scripts/upgrade.conf.sh putdccsi $idx "La liste des o:lines a été mise à jour." return 1 } ### FAQ set faqlineinp "" set faqactif 0 bind dcc - faq dcc_faq proc dcc_faq {hand idx arg} { global faqlineinp faqactif if $faqactif { putdcc $idx "## Hum, attends ton tour stp ! :-)" return 0 } set faqlineinp "" set faqactif 1 putdcc $idx "Veuillez inscrire la questions/réponse qui, selon vous, aurait avantage à être connue de tous..." putdcc $idx "Pour terminer: +" putdcc $idx "Pour annuler: -" control $idx control_faq return 1 } proc control_faq {idx arg} { global faqlineinp faqactif if {$arg == "+"} { set faqactif 0 release_faq $idx return 1 } elseif {$arg == "-"} { putdcc $idx "Ok, l'élément de FAQ a été annulé: retour au party line !" set faqactif 0 return 1 } else { lappend faqlineinp $arg return 0 } } proc release_faq {idx} { global faqlineinp putdcc $idx "Ok, j'inscrit l'élément de FAQ dans le fichier des FAQ à ajouter." set fichier [open "/aide/aidebot/faq.txt" a] puts $fichier "Élément FAQ noté par [getuser [idx2hand $idx] xtra vrainick], à [time] le [date]." puts $fichier "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" for {set j 0} {[lindex $faqlineinp $j] != ""} {incr j} { puts $fichier [lindex $faqlineinp $j] } puts $fichier "=======================================================================" puts $fichier "" puts $fichier "" close $fichier putdcc $idx "Élément FAQ enregistré, retour au party line." } ### Commande unifiée timer 1 {foreach commande [getuser aidebot xtra commandesunifiees] {bind dcc p $commande dcc_com_uni}} proc dcc_com_uni {hand idx args} { global lastbind set quoi [string toupper $lastbind] if ![string match "* [string tolower $lastbind] *" " [getuser aidebot xtra commandesunifiees] "] { foreach comm [string tolower [getuser aidebot xtra commandesunifiees]] { if [string match "[string tolower $lastbind]*" $comm] { set quoi [string toupper $comm] } } } set args [lindex $args 0] set pit [lindex $args 0] if {$args == ""} { putdcc $idx "INFOS PROJET $quoi : [getuser aidebot xtra infpro$quoi]" } elseif {([matchattr $hand T] | [string match *$quoi* [string toupper [getuser $hand xtra responsable]]]) & (($pit == "+") | ($pit == "=") | ($pit == "-") | ($pit == "?"))} { if {$pit == "?"} { putdcc $idx "## Syntaxe (Commandes unifiées): \[ peut être pris parmi: [getuser aidebot xtra commandesunifiees]\]" putdcc $idx " . Donne les infos actuelles sur le projet." putdcc $idx " . \[commentaire\] Permet d'entrer un commentaire ou une réponse." putdcc $idx " (ce qui suit ne s'adresse qu'au responsable du projet)" putdcc $idx " . + \[infos\] Permet d'ajuster les infos actuelles/la question pour le projet." putdcc $idx " . = Permet de lire les réponses ou commentaires." putdcc $idx " . - Permet d'effacer/vider les commentaires/réponses." return 0 } elseif {$pit == "+"} { setuser aidebot xtra infpro$quoi [lrange $args 1 end] putdcc $idx "Enregistré ..." } elseif {$pit == "\-"} { exec echo "Fichier réinitialisé le [date]" > [string tolower $quoi].txt putdcc $idx "Réinitialisé ..." } else { putdcc $idx "Lecture du fichier projet $quoi ..." set f [open "[string tolower $quoi].txt" r] while {[gets $f line] >= 0} { putdcc $idx " - $line" } close $f } } else { exec echo "[date] [time] -> <[getuser $hand xtra vrainick]> $args" >> [string tolower $quoi].txt } return 1 } bind dcc T comuni dcc_comuni proc dcc_comuni {hand idx args} { set args [lindex $args 0] if {$args == "?"} { putdcc $idx "## Suntaxe .comuni " putdcc $idx "" putdcc $idx "" putdcc $idx "COMMANDES UNIFIÉES, PETIT ABC (Pour admins projets)" putdcc $idx "" putdcc $idx " Le but de cette commande est de pouvoir donner à un responsable projet une commande permettant l'interactivité directe avec les membres sans avoir à attendre après un scriptage spécifique ou complexe." putdcc $idx " Chaque commande dont le nom se trouve dans la liste du .comuni crée une commande utilisable par TOUS les membres sur le bot. Chaque membre a alors deux syntaxes possibles d'utilisation." putdcc $idx " 1- .lacommande ... qui permet de voir une ligne d'information générale." putdcc $idx " 2- .lacommande ... qui permet de laisser un commentaire au responsable du projet." putdcc $idx " Tout admin projet -ou- le responsable d'un projet dont le NOM DU PROJET contient le NOM DE LA COMMANDE aura accès aux commandes suivantes:" putdcc $idx " 3- .lacommande + ... qui permet de changer la ligne d'information associée au point 1." putdcc $idx " 4- .lacommande = ... qui permet de lire toutes les notes laissées au moyen du point 2." putdcc $idx " 5- .lacommande - ... qui videra au complet ce qui a été noté au point 2 et est lisible au point 4." putdcc $idx "" putdcc $idx " ATTENTION! Éviter des noms de commande courts (utilisez le nom le plus précis possible, la commande sera accessible par raccourcis comme toutes les autres)" putdcc $idx " ATTENTION: NE SURTOUT PAS utiliser un nom pouvant entrer en conflit avec une autre commande, le résultat sera potentiellement problématique. (Pour être sûr, utilisez le .commandes)" putdcc $idx "" return 0 } elseif {$args != ""} { putdcc $idx "Commandes acceptées avant: [getuser aidebot xtra commandesunifiees]" setuser aidebot xtra commandesunifiees $args foreach com $args { bind dcc p $com dcc_com_uni } } putdcc $idx "Commandes acceptées maintenant: [getuser aidebot xtra commandesunifiees]" putdcc $idx "" putdcc $idx " ---> 4AIDE: .comuni ? <---" putdcc $idx "" return 1 } ################ ### .envoyer ### ################ bind dcc x envoyer dcc_envoyer proc dcc_envoyer {hand idx args} { dcc_files 0 "" set args [lindex $args 0] set nick [lindex $args 0] set fichier [lindex $args 1] set commentaire [lrange $args 2 end] if {($nick == "") | ($fichier == "") | ([string index $fichier 1] == ".") | ([string index $fichier 1] == "/") | (![file exist "/aide/ftp/pub/$fichier"])} { putdcc $idx "## Syntaxe: .envoyer \[commentaire\]" putdcc $idx " Le nom du fichier doit être en référence au répertoire 'pub' et ne peut commencer ni par un '.' ni par un '/'" return 0 } else { set nom [split $fichier /] set nom [lindex $nom [expr [llength $nom] -1]] set fichier "/aide/ftp/pub/$fichier" } dccsend $fichier $nick putbot Aide "notice $nick AideBot te fait parvenir \'$nom\' à la demande de [getuser $hand xtra vrainick]: « $commentaire »" putdcc $idx "Oki, j'ai envoyé \'$nom\' à $nick" return 1 } ############################## ### .files (activer samba) ### ############################## bind filt x .files dcc_files proc dcc_files {idx text} { if ![llength [dcclist files]] { exec mount /home/ftp/pub & timer 1 de_samba } return $text } proc de_samba {} { global comsmb if [string match *de_samba* [timers]] {return 0} if ![llength [dcclist files]] { catch [exec umount /home/ftp/pub] } else { timer 1 de_samba } } bind dcc x file aux_poubelles