‘botnet saldirisi’ olarak etiketlenmiş yazılar

botserv tcl

Cumartesi, 09 Mayıs 2009

### Thanks to C|ty_Hunter, M4rUsCi4, Neiken and all the members of #egghelp for the helpful test.

set ver “1.6″

set csrehash 30
set msgdelay 8
set reasonsfile “scripts/reasons.txt”
set lamahreason “lamer!”
set noexec “Accesso negato. Non e` possibile eseguire comandi kick e ban su utenti della stessa lista o superiore.”

set tmpchans “”
set dynlist “”
set dyntmpchan “”
set tmpnick “”
set gnick “”
set gnuser “”
set gchan “”
set gcmd “”
set timeleft 0
set listinuse 0

set csmask “ChanServ!service@GarantiShell.com”
set liststrig “*list di*”
set xoplist “*) * (*) by *”
set stopcode “*Fine della Lista*”

bind pub – !op giveop
bind pub – !deop takeop
bind pub – !ban buser
bind pub – !kick kickuser
bind pub n !csrehash rehashlists
bind raw – “NOTICE” addoptolist
bind raw – 307 setid

set flood-msg 0

proc checkid {nick} {
putserv “whois $nick”
}

proc setid {from keyword text} {
global gnick gchan gcmd
checkop $gnick $gchan $gcmd
}

proc checklevel {nick channel} {
global tmpchans
foreach tmplevel $tmpchans {
set dynnick [join [lindex [split $tmplevel ":"] 0]]
set dynchan [join [lindex [split $tmplevel ":"] 1]]
set dynlevel [join [lindex [split $tmplevel ":"] 2]]
if {([string tolower $nick] == [string tolower $dynnick]) && ([string tolower $channel] == [string tolower $dynchan])} {
return $dynlevel
}
}
}

proc checkop {nick channel comando} {
global tmpchans gnuser greason noexec
foreach tmpchan $tmpchans {

set dynnick [join [lindex [split $tmpchan ":"] 0]]
set dynchan [join [lindex [split $tmpchan ":"] 1]]
if {([string tolower $gnuser] == [string tolower $dynnick]) && ([string tolower $channel] == [string tolower $dynchan])} {
switch — [string tolower $comando] {
op { putserv “mode $channel +o $nick” }
deop { putserv “mode $channel -o $nick” }
kick { if {[checklevel $gnuser $channel] > [checklevel $nick $channel]} {
putserv “kick $channel $nick :$greason”
} else { putserv “notice $gnuser :$noexec” }
}
ban { if {[checklevel $gnuser $channel] > [checklevel $nick $channel]} {
putserv “mode $channel +b [getchanhost $nick]”
putserv “kick $channel $nick :$greason”
} else { putserv “notice $gnuser :$noexec” }
}
}
}
}
}

proc giveop {nick uhost handle channel text} {
global gcmd gchan gnick gnuser
set gnuser $nick
set gnick $nick
set gchan $channel
set gcmd “op”
checkid $nick
}

proc takeop {nick uhost handle channel text} {
global gcmd gchan gnick gnuser
set gnuser $nick
set gnick $nick
set gchan $channel
set gcmd “deop”
checkid $nick
}

proc buser {nick uhost handle channel text} {
global botnick gcmd gchan gnick gnuser greason lamahreason
set gnuser $nick
set gnick [string tolower [lindex $text 0]]
set gchan $channel
set gcmd “ban”
set greason [join [lrange [split $text] 1 end]]
if {[llength $text] == 1} { set greason [getreason] }
if {[string tolower $gnick] == [string tolower $botnick]} {
putserv “kick $gchan $nick :$lamahreason”
return
}
checkid $nick
}

proc kickuser {nick uhost handle channel text} {
global botnick gcmd gchan gnick gnuser greason lamahreason
set gnuser $nick
set gnick [string tolower [lindex $text 0]]
set gchan $channel
set gcmd “kick”
set greason [join [lrange [split $text] 1 end]]
if {[string tolower [llength $text]] == 1} { set greason [getreason] }
if {[string tolower $gnick] == [string tolower $botnick]} {
putserv “kick $gchan $nick :$lamahreason”
return
}
checkid $nick
}

proc rehashlists {nick uhost handle channel text} {
sendrehash
}

proc getreason {} {
global reasonsfile
set count 0
set file [open $reasonsfile r]
while {![eof $file]} {
set line [gets $file]
set count [expr $count +1]
}
close $file
set count [rand $count]
set file [open $reasonsfile r]
while {$count > 0 && ![eof $file]} {
set line [gets $file]
set count “[expr $count -1]”
}
close $file
return $line
}

proc sendrehash {} {
global tmpchans csrehash
set tmpchans “”
foreach chan [channels] {
checklist aop $chan
}
dccbroadcast “BotServ: Updating CS lists.”
timer $csrehash sendrehash
}

proc checklist {list chan} {
global msgdelay timeleft
set timeleft [expr $timeleft + $msgdelay]
set msgcmd “putserv \”privmsg ChanServ :$list $chan list\”"
utimer $timeleft $msgcmd
}

proc addoptolist {from keyword text} {
global csmask dynlist liststrig xoplist tmpchans dyntmpchan tmpnick stopcode listinuse
regsub -all “\002″ $text “” text
if {[string tolower $from] == [string tolower $csmask]} {

if {[string match [string tolower $liststrig] [string tolower $text]]} {
set dyntmpchan [lindex $text 4]
regsub “:” [lindex $text 1] “” acclevel
switch — [string tolower $acclevel] {
aop { set listinuse 1 }
sop { set listinuse 2 }
co-founder { set listinuse 3 }
}
}
}

if {[string match [string tolower $xoplist] [string tolower $text]]} {
set tmpnick [lindex $text 3]
regsub -all “\002″ $tmpnick “” tmpnick
lappend tmpchans “$tmpnick:$dyntmpchan:$listinuse”
}

if {[string match [string tolower $stopcode] [string tolower $text]]} {
switch — $listinuse {
1 { checklist sop $dyntmpchan }
2 { checklist cf $dyntmpchan }
}
}
}

timer $csrehash sendrehash
putlog “BotServ $ver by Progeny”

相关文章:

中文关键字: