Kod: Kodu kopyalamak için üzerine çift tıklayın!
#
#
#
# *****************************************
# **** AutoExpire ****
# *****************************************
#
# v0.5 -- 15Juln97
# v1.0 -- 10Dec98 [fixed it up for 1.3 multi-channel]
#
#
# automatic erasing useless ban-entry everydays!
# Don't need to invoke weed so much. Go to journey or enjoy beatiful life
# much more! =D
# MrKubo (On undernet) =)
#
#
# IGNITION -- When do first QUEUE.
#
#
proc exe_timersequence { } {
set IGNITION 2
putlog "Okay queue will be done when it re-submitted."
timer $IGNITION bcheck
timer $IGNITION ulcheck
dccbroadcast "Engineering: Finally! systems are online! :D"
putlog "** SUBMIT QUEUE DONE **"
}
exe_timersequence
#
#
# ****** Automatic ban-tuner *******
#
#
# CK_INTERBAL1 -- time interval of banlist-check (720 --> 12hrs)
# CK_INTERBAL2 -- when do userlist-check after CK_INTERBAL1 (360 --> 6hrs)
#
proc bcheck {} {
set CK_INTERBAL1 720
set CK_INTERBAL2 360
foreach j [timers] {
if {[string compare [lindex $j 1] bcheck] == 0} {
killtimer [lindex $j 2]
}
}
putlog "******* Full Automatic tuner of banlist. "
blistcheck GLOBAL
foreach channame [channels] {
putlog "******* Channel ban check. ($channame) "
blistcheck $channame
putlog "******* O.K"
}
backup
save
dccbroadcast "******* Banlist check finished.(^^) "
timer $CK_INTERBAL1 bcheck
timer $CK_INTERBAL2 ulcheck
}
proc blistcheck {watchchannel} {
set CGLOBAL GLOBAL
if {[string compare $watchchannel $CGLOBAL] == 0 } {
foreach bansentry [banlist] {
set watchchannel #japan
delban $watchchannel $bansentry
}
} else {
foreach bansentry [banlist $watchchannel] {
delban $watchchannel $bansentry
}
}
}
#
#
# diagnose banlist
#
# EXPIRE_LIMIT --- term of ineffective (150 is enough, 100 is probably good)
# NV_LIMIT --- term of ineffective (40 is enough, 30 is probably good)
# NV_LIMIT2 --- term of ineffective (50 is enough, 30 is probably good)
# note: unit is "day"
proc delban {watchchannel bansentry} {
set EXPIRE_LIMIT 150
set NV_LIMIT 40
set NV_LIMIT2 50
set createdday [lindex $bansentry 3]
set usedday [lindex $bansentry 4]
set currnttime [unixtime]
set daylength 86400
set createdday [expr ($currnttime - $createdday)/$daylength]
set bannedperson [lindex $bansentry 0]
set bywho [lindex $bansentry 5]
set breason [lindex $bansentry 1]
if { $usedday == 0} {
if { $createdday > $NV_LIMIT } {
putlog "** Useless entry is detected."
putlog "Entry $bannedperson , Created by $bywho "
putlog "Reason: $breason"
putlog "The entry has never been used since created."
if {[isban $bannedperson] == 0} {
killchanban $watchchannel $bannedperson
putlog "Okay Expired."
} else {
killban $bannedperson
putlog "Okay Expired."
}
dccbroadcast "Shipyard controller: This time, *please* be more careful, okay?"
}
} else {
set usedday [expr ($currnttime - $usedday)/$daylength]
if {$usedday > $EXPIRE_LIMIT } {
putlog "** Dead-Entry is detected."
putlog "Entry $bannedperson, Created by $bywho"
putlog "Reason: $breason"
putlog "Last used $usedday days ago"
if {[isban $bannedperson] == 0} {
killchanban $watchchannel $bannedperson
putlog "Okay Expired."
} else {
killban $bannedperson
putlog "Okay Expired."
}
dccbroadcast "Shipyard controller: This time, *please* be more careful, okay?"
} elseif { ($usedday == $createdday) && ($createdday > $NV_LIMIT2 ) } {
putlog "** Dead-Entry is detected."
putlog "Entry $bannedperson, Created by $bywho"
putlog "Reason: $breason"
putlog "Last used $usedday days ago"
putlog "The entry was only effective at created time."
if {[isban $bannedperson] == 0} {
killchanban $watchchannel $bannedperson
putlog "Okay Expired."
} else {
killban $bannedperson
putlog "Okay Expired."
}
dccbroadcast "Shipyard controller: This time, *please* be more careful, okay?"
}
}
}
#
#
# ****** Automatic userlist maintainer *******
#
proc ulcheck {} {
foreach j [timers] {
if { [string compare [lindex $j 1] ulcheck] == 0} {
killtimer [lindex $j 2]
}
}
putlog "******* userlist-checker is invoked automatically. "
ulistcheck
backup
save
dccbroadcast "******* User list -- checked "
putlog "******* Okay done. "
}
#
# User Entry_checker
#
# LIMITOFEMPTY --- threshhold value of empty time. (365 is enough)
#
proc ulistcheck { } {
set LIMITOFEMPTY 365
set currnttime [unixtime]
set daylength 86400
set wcount 0
set mcount 0
foreach person [userlist] {
if { [matchattr $person "m"] != 1 } {
set lastinform [getuser $person LASTON]
set whenseen [lindex $lastinform 0]
if {$whenseen == "" } {
set whenseen 0
}
set theday [ctime $whenseen]
if { $whenseen != 0} {
set whenseen [expr ($currnttime - $whenseen)/$daylength]
if { $whenseen > $LIMITOFEMPTY } {
set userlocation [getuser $person HOSTS]
set usersinform "User: $person"
set addrinform "($userlocation)"
set lastinform "$whenseen days ago ($theday)"
putlog "**Entry - $usersinform"
putlog " LAST: $lastinform"
putlog " ADDR: $addrinform"
deluser $person
putlog "** $person was removed from database."
dccbroadcast "I hope $person is hapy in real life. byebye $person :~( "
}
} else {
set wcount [expr $wcount + 1]
putlog "**Warning: I've never seen $person. (probably, ineffective)"
set userlocation [getuser $person HOSTS]
set addrinform "($userlocation)"
putlog " ADDR: $addrinform"
}
} else {
set mcount [expr $mcount +1]
}
}
putlog "** W-mesg: $wcount lines"
putlog "$mcount bot-operators exist on database."
}
putlog "** Auto-Expire INITIATED **"
arkadaşlar böyle bir kod buldum otamatik toplu ban açma komutu galiba bu komutu nasıl ayarlayacam bilmiyorum 30 dakka arayla toplu ban açmasını istiyorum nasıl ayarları yazarsanız sevinirim .. ek olarak bana join/part saldırısı için tcl lazım yardımcı olursanız sevnirim.kolay gelsin