# adduser.tcl - lägg till users via /msg # # Ladda i eggdrop.conf med: source scripts/adduser.tcl # ===== CONFIG ===== # Tillåtna user@host-masker (samma format som eggdrops hostmasks). # Endast användare vars nick!user@host matchar någon av dessa # kan använda !adduser-kommandot. set adduser_owners { "*raven@*.thern.io" } # Kanalen som nya users får sin flagga i. set adduser_chan "#ai.se.labb" # ===== KOD ===== bind msg - !adduser adduser:msg bind join - * adduser:join proc adduser:join {nick uhost hand chan} { global adduser_chan if {![string equal -nocase $chan $adduser_chan]} { return } if {![botisop $chan]} { return } if {[isbotnick $nick]} { return } if {$hand eq "*"} { return } if {[matchattr $hand o|o $chan] || [matchattr $hand a|a $chan]} { pushmode $chan +o $nick return } if {[matchattr $hand v|v $chan]} { pushmode $chan +v $nick } } proc adduser:msg {nick uhost hand text} { global adduser_owners adduser_chan set src "$nick!$uhost" set ok 0 foreach mask $adduser_owners { if {[string match -nocase $mask $src]} { set ok 1 break } } if {!$ok} { putserv "NOTICE $nick :Access denied." putlog "adduser: nekad $src försökte: !adduser $text" return } set args [split [string trim $text]] set argc [llength $args] if {$argc != 2 && $argc != 3} { putserv "NOTICE $nick :Användning: !adduser \[host\] " putserv "NOTICE $nick :Ex: !adduser Jonaz op (hämtar host från kanalen)" putserv "NOTICE $nick :Ex: !adduser Jonaz *raven@*.thern.io op" return } set newname [lindex $args 0] if {$argc == 3} { set newhost [lindex $args 1] set type [string tolower [lindex $args 2]] } else { set type [string tolower [lindex $args 1]] if {![onchan $newname $adduser_chan]} { putserv "NOTICE $nick :$newname finns inte i $adduser_chan, ange host manuellt." return } set uh [getchanhost $newname $adduser_chan] if {$uh eq ""} { putserv "NOTICE $nick :Kunde inte hämta host för $newname." return } set newhost [maskhost "$newname!$uh"] putserv "NOTICE $nick :Använder host $newhost för $newname." } if {$type ne "op" && $type ne "voice"} { putserv "NOTICE $nick :Typ måste vara 'op' eller 'voice'." return } if {![validchan $adduser_chan]} { putserv "NOTICE $nick :Kanalen $adduser_chan finns inte i botens kanallista." return } if {[validuser $newname]} { setuser $newname HOSTS $newhost putserv "NOTICE $nick :$newname fanns redan, lade till host $newhost." } else { adduser $newname $newhost putserv "NOTICE $nick :Skapade user $newname med host $newhost." } switch -- $type { "op" { chattr $newname |+ao $adduser_chan putserv "NOTICE $nick :$newname har nu +ao (autoop) i $adduser_chan." } "voice" { chattr $newname |+v $adduser_chan putserv "NOTICE $nick :$newname har nu +v (autovoice) i $adduser_chan." } } putlog "adduser: $src la till $newname ($newhost) som $type i $adduser_chan" } putlog "adduser.tcl laddad"