################################## ## Accès X par AideBot via Aide proc modaccesw {nick niveau} { putbot Aide "auth" set loginx [getuser $nick xtra loginx] set ancien [getuser $nick xtra acces] if {$ancien == ""} { set ancien 0 } if $niveau { setuser $nick xtra acces $niveau if {$niveau > 100} { chattr $nick -|+fov #Aide } else { chattr $nick -|+f-om #Aide } putbot Aide "accesw * adduser #Aide $loginx $niveau" putbot Aide "accesw * modinfo #Aide access $loginx $niveau" sendnote AideBot $nick "J'ai tenté de mettre à jour ton accès sur X (#Aide), en cas de problème, vois un admin canal." } else { setuser $nick xtra acces chattr $nick -|-fovm #Aide putbot Aide "accesw * remuser #Aide $loginx" } } proc modacceswcours {nick niveau} { putbot Aide "auth" set loginx [getuser $nick xtra loginx] set ancien [getuser $nick xtra accescours] if {$ancien == ""} { set ancien 0 } if $niveau { setuser $nick xtra accescours $niveau if {$niveau > 100} { chattr $nick -|+fo #Cours } else { chattr $nick -|+f-om #Cours } putbot Aide "accesw * adduser #Cours $loginx $niveau" putbot Aide "accesw * modinfo #Cours access $loginx $niveau" sendnote AideBot $nick "J'ai tenté de mettre à jour ton accès sur X (#Cours), en cas de problème, vois un admin projet." } else { setuser $nick xtra accescours delchanrec $nick #Cours putbot Aide "accesw * remuser #Cours $loginx" } } ############################## # Vérification automatique des accès sur #Aide bind time - "40 * * * *" timer_accescspre proc timer_accescspre {min hour day month year} { exec cservice/getpage & timer 1 {catch [exec killall lynx]} } bind time - "45 * * * *" timer_accescs proc timer_accescs {min hour day month year} { foreach canal "aide cours" { set fichier "" set acces "" set bans "" set f [open "cservice/cservice-$canal.txt" r] while {[gets $f line] >= 0} { lappend fichier $line } close $f set gobans 0 foreach line $fichier { if !$gobans { if {[string index $line 3] == "\["} { set loginx [lindex $line 0] set loginx [string range $loginx [expr [string first "\]" $loginx] + 1] end] set level [lindex $line 1] lappend acces "$loginx $level" } elseif {[lindex $line 0] == "Banmask"} { set gobans 1 } } else { if {$line == ""} { set gobans 0 } else { lappend bans [lrange $line 0 end] } } } if {$acces != ""} {cservice_menage_acces $acces $canal} if {$bans != ""} {cservice_menage_bans $bans $canal} # Rajustons les suspensiosn pendant qu'on y est ... foreach user [userlist S] { set reste [expr [expr [getuser $user xtra susp_reste] * 60] + 10] putbot Aide "accesw * suspend $canal [getuser $user xtra loginx] $reste M 250" } } } proc cservice_menage_acces {acces canal} { set accesbot "" if {$canal == "aide"} { set canal "" set chan "#aide" set flag "C" } else { set chan "#cours" set flag "T" } foreach acc $acces { set niv [lindex $acc 1] if {$niv < 425} { lappend accesbot $acc } } set accesbot [string tolower $accesbot] foreach user [userlist] { set niv [getuser $user xtra acces$canal] if {$niv != ""} { set loginx [string tolower [getuser $user xtra loginx]] set ou [lsearch $accesbot "$loginx $niv"] if {$ou != -1} { set accesbot [lreplace $accesbot $ou $ou] } else { if {($loginx != "") & ($niv < 425)} { lappend manque "$user $chan $loginx $niv" } } } } putbot Aide "auth" if {[llength $accesbot] < 6} { foreach user $accesbot { putbot Aide "accesw * remuser $chan [lindex $user 0]" foreach adm [userlist $flag] { sendnote AideBot $adm "\[Ajustements X\] \[+$flag\] Il y avait cet accès en trop sur $chan, je l'ai retiré -> loginx: [lindex $user 0] / accès: [lindex $user 1]" } } } else { putlog "Oups, bobo! Selon ce que j'ai ici il y a [llength $accesbot] accès en trop sur $canal. C'est probablement une erreur. J'attends la prochaine heure!" } if [info exist manque] { if {[llength $manque] < 6} { foreach user $manque { putbot Aide "accesw * adduser $chan [lindex $user 2] [lindex $user 3]" foreach adm [userlist $flag] { sendnote AideBot $adm "\[Ajustements X\] \[+$flag\] Il manquait cet accès sur $chan, je l'ai rajouté -> Membre: [lindex $user 0] / loginx: [lindex $user 2] / accès: [lindex $user 3]" } } } else { putlog "Oups, bobo! Selon ce que j'ai ici il manque [llength $manque] accès sur $canal. C'est probablement une erreur. J'attends la prochaine heure!" } } } proc cservice_menage_bans {bans canal} { set last "" foreach ban $bans { if [string match *@* [lindex $ban 0]] { lappend buf $last set last $ban } else { append last " $ban" } } lappend buf $last foreach ban [lrange $buf 1 end] { if {([string trimright [lindex $ban 3] s] > 36000) & [estunnombre:ok [string trimright [lindex $ban 3] s]]} { putbot Aide "accesw * unban \#$canal [lindex $ban 0]" foreach user [userlist OR] { if {[string tolower [lindex $ban 1]] == [string tolower [getuser $user xtra loginx]]} { sendnote AideBot $user "Ce ban ($ban) dépasse la durée maximale des bans autorisés sur X. Les bans de longue durée DOIVENT être faits sur Aidebot uniquement." } } putlog "Retiré le ban X suivant (trop long): «$ban»" } } }