All pastes #2097871 Raw Edit

Something

public text v1 · immutable
#2097871 ·published 2011-12-31 17:13 UTC
rendered paste body
# ShellUptime.tcl v0.3 [07 Janvier 2002] 
# oranginam@oranginam.com

# Tested on eggdrop 1.6.6, 1.6.7 and 1.6.8, Tcl 8.3.1, 8.3.2 and 8.3.3
# Linux 2.2.x and 2.4.x, BSD 4.3 and 4.4

#ShellUptime is a little script who display uptime of your shell
# on channel
# !shelluptime for all eggdrop who shelluptime is installed replies
# botnet-nick !shelluptime for only this eggdrop replies
# or party-line
# .shelluptime

#History
#V0.3
# some Fix
# Translate in English (french Version on www.oranginam.com)
#V0.2
# some FIX
# Add: Bot !shelluptime
# Add .shelluptime in DCC
# Not release
#V0.1
# 1st Script 28 Septembre 2001
# Not release

# What trigger you would use, ie: !shelluptime or @shelluptime etc ...
set trigger "!"

# Flag allows acces
set upflag "-"

# antiflood(ignore) 0 disable and 1 enable the flood protect.
# if owner (+n) has the upflag, he is not effected by le flood protect
set antiflood(ignore) 1

# antiflood(flood) After how many hits in seconds x:y make flood
set antiflood(flood) 3:15

# antiflood(ignore_time) How many time user is ignored
set antiflood(ignore_time) 3


#####################################################################
# Ne rien modifier en dessous sauf si vous savez ce que vous faites #
#####################################################################

set ver "0.3"
set antiflood(version) "ShellUptime FloodProtect 1.00 By lolomin"

#########################
# Protection anti flood #
#########################

proc antiflood_flood_init {} {
  global antiflood antiflood_flood_array ; if {![string match *:* $antiflood(flood)]} {putlog $antiflood(version): var antiflood(flood) do not correctly set ; return}
  set antiflood(flood_num) [lindex [split $antiflood(flood) :] 0] ; set antiflood(flood_time) [lindex [split $antiflood(flood) :] 1] ; set i [expr $antiflood(flood_num) - 1]
  while {$i >= 0} {set antiflood_flood_array($i) 0 ; incr i -1 ; }
} ; antiflood_flood_init

proc antiflood_flood {nick uhost} {
  if {[matchattr $nick n]} {return 0}
  global antiflood antiflood_flood_array ; if {$antiflood(flood_num) == 0} {return 0} ; set i [expr $antiflood(flood_num) - 1]
  while {$i >= 1} {set antiflood_flood_array($i) $antiflood_flood_array([expr $i - 1]) ; incr i -1} ; set antiflood_flood_array(0) [unixtime]
  if {[expr [unixtime] - $antiflood_flood_array([expr $antiflood(flood_num) - 1])] <= $antiflood(flood_time)} {
    putlog "$antiflood(version): Flood detected By $nick. Ignoring for $antiflood(ignore_time) min(s)" ; if {$antiflood(ignore)} {newignore [join [maskhost *!*[string trimleft $uhost ~]]] $antiflood(version) flood $antiflood(ignore_time)} ; putserv "PRIVMSG $nick :$antiflood(version) - Flood detectected ! ignoring for $antiflood(ignore_time) min(s) !!" ; return 1
  } {return 0}
}

###############
# SHELLUPTIME #
###############

#Public Commande

bind pub $upflag ${trigger}shelluptime pub:shelluptime
bind pubm $upflag "*${botnet-nick} ${trigger}shelluptime*" pub:shelluptime

proc shelluptime2 { } {
	if {[catch {exec uptime} uptime]} { set uptime "Uptime non disponible." }
	if {[catch {exec uname -s} machine]} { set machine [unames] }
	if {[catch {exec hostname} hostname]} {	set hostname [info hostname] }
	return "Uptime for $hostname ($machine): is $uptime"
}

proc pub:shelluptime { nick host hand chan arg } {
	if {[antiflood_flood $nick $host]} {return 0}
	putserv "PRIVMSG $chan :[shelluptime2]"
}

#DCC commande

bind dcc $upflag shelluptime dcc:dccshell

proc dcc:dccshell { hand idx arg } {
	putdcc $idx "[shelluptime2]"
}
	

putlog "ShellUptime.tcl v$ver by Oranginam loaded !!!"
putlog " => $antiflood(version) "