All pastes #632928 Raw Edit

Anonymous

public text v1 · immutable
#632928 ·published 2007-07-25 09:38 UTC
rendered paste body
                          #############################
                        ###            -+-            ###
                        # PREBOT <b style="color:black;background-color:#ffff66">TCL</b>/TXT v1.0 by noname #
                        ###     - -- ---+--- -- -     ###
                        #    0x539 [at] web [d0t] de    #
                      ####             -+-             ####
################################################################################
# notes:                                                                       #
# well its my first <b style="color:black;background-color:#ffff66">tcl</b> script...                                              #
# so i dont give a fuck on crapy coded parts :>                                #
# worx with announces as seen belwo:                                           #
# [ PRE ] PREBOT v1 <b style="color:black;background-color:#ffff66">TCL</b> TXT noname [ 0DAY ]                                    #
# [ NUKE ] PREBOT.v1.<b style="color:black;background-color:#ffff66">TCL</b>.TXT-noname reason: sumone.forgot.reason               #
# [ UNNUKE ] PREBOT.v1.<b style="color:black;background-color:#ffff66">TCL</b>.TXT-noname reason: sumone.forgot.reason             #
################################################################################
# usage:                                                                       #
# !pre RELEASE                                                                 #
# !pred RELEASE                                                                #
# !search RELEASE                                                              #
# !group GROUP                                                                 #
# !section SECTiON                                                             #
# !last                                                                        #
# !nuke                                                                        #
# !unnuke                                                                      #
# !addpre RELEASE SECTiON UNXTiME                                              #
# !addnuke RELEASE REASON SECTiON UNXTiME                                      #
# !addunnuke RELEASE REASON SECTiON UNXTiME                                    #
################################################################################
# config:                                                                      #
# <b style="color:black;background-color:#a0ffff">predb</b>              = file to store                                           #
# searchresults      = max results posted on !search !pre                      #
# chan_(pred)        = chan with an existing announcebot                       #
# chan_(echo)        = chan where u want to annonuce                           #
# chan_(pred_pre4ll) = prefix of new rls (e.g. [ PRE ])                        #
# chan_(pred_nuk4ll) = prefix of nuked rls (e.g. [ NUKE ])                     #
# chan_(pred_unn4ll) = prefix of nuked rls (e.g. [ UNNUKE ])                   #
################################################################################
# support:                                                                     #
# support me and i'll support u ;>                                             #
################################################################################
# to do:                                                                       #
# sql port                                                                     #
# prevent redudant data                                                        #
# improve search function                                                      #
# backfill option                                                              #
# blowfish support                                                             #
# fix bugs (as ever)                                                           #
################################################################################
# greetz to:                                                                   #
# #hackers           -+-- irc.after-all.org                                    #
# tumor crew         -+-- w00tw00t                                             #
# Abortion           -+-- wh0re! ^.-                                           #
# auron              -+-- my favourite lhama :>                                #
# CaReS              -+-- who cares?                                           #
# ChIcKeN            -+-- << koerner picken no time                            #
# doomhammer         -+-- a great chum                                         #
# maZer`-            -+-- for being a gr8 coder                                #
# oli geissen        -+-- teh best tv-show-moderator ever! ^^                  #
# Shockwav3          -+-- *tsunami kekse                                       #
# tenti              -+-- repair ya workstation                                #
# forgotten ones...  -+-- i dislike u all... so dont bitch about me :>         #
################################################################################
# copyright:                                                                   #
# who cares? its free! just respect my work n leave my nick in ya impoved one. #
# i would b grateful if u could send me an/your improved one ;>                #
################################################################################
#                            du sollst nicht luegen                            #
#                            du sollst nicht toeten                            #
#                           sollst deine eltern ehrn                           #
#                            sollst nicht begehren                             #
#                           die frau  vom naechsten                            #
#                        und du sollst auch nicht stehln                       #
################################################################################
                ####          - -- ----+---- -- -           ####
                 #    dedicated to the memory of my father    #
                 ###                 --+--                  ###
                   ##########################################







### config
set <b style="color:black;background-color:#a0ffff">predb</b>  "./logs/<b style="color:black;background-color:#a0ffff">predb</b>.txt"
set pretmp "./logs/<b style="color:black;background-color:#a0ffff">predb</b>.tmp"
set searchresults "3"
set minchars "3"
set chan_(pred) "#nopre"
set chan_(echo) "#nopre.test"
set chan_(pred_pre4ll) "\[  09 PRE   \]"
set chan_(pred_nuk4ll) "\[  04 NUKE   \]"
set chan_(pred_unn4ll) "\[  04 UNNUKE   \]"
bind pub - !addpre echo:addpre
bind pub - !addnuke echo:addnuke
bind pub - !addunnuke echo:addunnuke
bind pub - !pre echo:checkpre
bind pub - !pred echo:checkpre
bind pub - !search echo:checkpre
bind pub - !last echo:checklast
bind pub - !group echo:checkgrp
bind pub - !section echo:checksec
bind pub - !nuke echo:checknuk
bind pub - !unnuke echo:checkunn

### style
set announce_(pre)    {  01,00 [  09#section# 01,00 ]--[ #releasename#-#releasegroup# ]--[  was pred at #pretime#  ]   }
set announce_(nuke)   {  01,00 [  04NUKE 01,00 ]--[ #releasename#-#releasegroup# ]--[  was nuked at #pretime#  ]--[  04#reason# 01,00 ]   }
set announce_(unnuke) {  01,00 [  09UN 04NUKE 01,00 ]--[ #releasename#-#releasegroup# ]--[  was unnuked at #pretime#  ]--[  09#reason# 01,00 ]   }


### config (do not change)
set chan_(pred_pre1st) [lindex $chan_(pred_pre4ll) 0]
set chan_(pred_nuk1st) [lindex $chan_(pred_nuk4ll) 0]
set chan_(pred_unn1st) [lindex $chan_(pred_unn4ll) 0]
bind pub - $chan_(pred_pre1st) echo:check
bind pub - $chan_(pred_nuk1st) echo:check
bind pub - $chan_(pred_unn1st) echo:check
set minchar [expr ($minchars - 1)]


### check second prefix
proc echo:check { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_ 
 if { $chan == $chan_(pred) && [ string match [lindex $chan_(pred_pre4ll) 1] [lindex $arg 0] ] == "1" } { echo:nopre $nick $uhost $handle $chan $arg } elseif {
  $chan == $chan_(pred) && [ string match [lindex $chan_(pred_nuk4ll) 1] [lindex $arg 0] ] == "1" } { echo:nonuke $nick $uhost $handle $chan $arg } elseif {
  $chan == $chan_(pred) && [ string match [lindex $chan_(pred_unn4ll) 1] [lindex $arg 0] ] == "1" } { echo:nounnuke $nick $uhost $handle $chan $arg}
}


### check (pre)
proc echo:checkpre { nick uhost handle chan arg } {
 global minchar chan_
 if { $chan == $chan_(echo) } {
  if { $arg == "" } { echo:search $nick $uhost $handle $chan PRE LAST } elseif {
   [string length $arg] > $minchar } { echo:search $nick $uhost $handle $chan $arg PRE } elseif {
   [string length $arg] <= $minchar } { putserv "NOTICE $nick : 01,00 *$arg* doesnt reached teh minimum of $minchars chars  "; putlog "PRESEARCH *$arg* min. chars not reached"; return 0}
 }
}


### check (group)
proc echo:checkgrp { nick uhost handle chan arg } {
 global minchar chan_
 if { $chan == $chan_(echo) } {
  if { [string length $arg] > $minchar } { echo:search $nick $uhost $handle $chan $arg GRP } elseif {
   [string length $arg] <= $minchar } { putserv "NOTICE $nick : 01,00 *$arg* doesnt reached teh minimum of $minchars chars  "; putlog "GRPSEARCH *$arg* min. chars not reached"; return 0}
 }
}


### check (section)
proc echo:checksec { nick uhost handle chan arg } {
 global minchar chan_
 if { $chan == $chan_(echo) } {
  if { [string length $arg] > $minchar } { echo:search $nick $uhost $handle $chan $arg SEC } elseif {
   [string length $arg] <= $minchar } { putserv "NOTICE $nick : 01,00 *$arg* doesnt reached teh minimum of $minchars chars  "; putlog "SECSEARCH *$arg* min. chars not reached"; return 0}
 }
}


### check (last)
proc echo:checklast { nick uhost handle chan arg } {
 global chan_
 if { $chan == $chan_(echo) } { 
  echo:search $nick $uhost $handle $chan e LAST
 }
}


### check (nuke)
proc echo:checknuk { nick uhost handle chan arg } {
 global chan_
 if { $chan == $chan_(echo) } { 
  echo:search $nick $uhost $handle $chan NUKE NUK
 }
}


### check (unnuke)
proc echo:checkunn { nick uhost handle chan arg } {
 global chan_
 if { $chan == $chan_(echo) } { 
  echo:search $nick $uhost $handle $chan UNNUKE NUK
 }
}


### search
proc echo:search { nick uhost handle chan arg wut } {
 global <b style="color:black;background-color:#a0ffff">predb</b> pretmp chan_ searchresults
 set pretemp $pretmp.[unixtime]
 set count "0"
 set found "0"
 set rep "\*"
 set search *$arg*
 regsub -all { }  $search $rep search
 regsub -all {\.} $search $rep search
 regsub -all {\_} $search $rep search
 set db [open $<b style="color:black;background-color:#a0ffff">predb</b> r]
 set tmp [open $pretemp w]
 while {![eof $db]} {
  gets $db data
  if { $wut == "PRE" } { set searchdata [lindex $data 4]-[lindex $data 3] } elseif { 
   $wut == "LAST" } { set searchdata [lindex $data 0] } elseif { 
   $wut == "GRP" } { set searchdata [lindex $data 3] } elseif { 
   $wut == "SEC" } { set searchdata [lindex $data 2] } elseif { 
   $wut == "NUK" } { set searchdata [lindex $data 0]; set search $arg }
  if {[ string match [string toupper $search] [string toupper $searchdata] ] } {
   incr count
   puts $tmp "$data"
  }
 }
 close $tmp
 set county $count
 if {$count == 0} { putserv "NOTICE $nick : 01,00 $search was not found in db  "; putlog "SEARCH $search not found" } else {
  putserv "NOTICE $nick : 01,00 $count releases found...  "; putlog "SEARCH $search $count releases found"
  for {set x 0} {$x < $searchresults} {incr x} {
   set tmp [open $pretemp r]
   if {$county == 0} {return 0}
   for {set y 0} {$y < $county} {incr y} {
    gets $tmp data
   }
   close $tmp
   incr county -1
   echo:annorep [lindex $data 0] [lindex $data 2] [lindex $data 4] [lindex $data 3] [lindex $data 1] [lindex $data 5] $nick 0
  }
 }
 close $db
 file delete -force -- $pretemp
} 


### announce (pre)
proc echo:nopre { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_
 set prestamp [unixtime]
 set rlstmp [check:string $arg]
 set sec [lindex $rlstmp 1]
 set rlstmp [lindex $rlstmp 0]
 set rlsgrp [check:rlsgrp $rlstmp]
 set grp [lindex $rlsgrp 1]
 set nam [lindex $rlsgrp 0]
 echo:annorep PRE $sec $nam $grp $prestamp PRE $chan_(echo) 1
}


### announce (nuke)
proc echo:nonuke { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_ announce_nuke
 set prestamp [unixtime]
 set sec ""
 set reason [lindex $arg 4]
 set rlstmp [lindex $arg 2]
 set rlsgrp [check:addrlsgrp $rlstmp]
 set grp [lindex $rlsgrp 1]
 set nam [lindex $rlsgrp 0]
 echo:annorep NUKE $sec $nam $grp $prestamp $reason $chan_(echo) 1
}


### announce (unnuke)
proc echo:nounnuke { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_ announce_unnuke
 set prestamp [unixtime]
 set sec "UNKNOWN"
 set reason [lindex $arg 4]
 set rlstmp [lindex $arg 2]
 set rlsgrp [check:addrlsgrp $rlstmp]
 set grp [lindex $rlsgrp 1]
 set nam [lindex $rlsgrp 0]
 echo:annorep UNNUKE $sec $nam $grp $prestamp $reason $chan_(echo) 1
}


### announce (addpre)
proc echo:addpre { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_
 if { $chan == $chan_(pred) } {
  set prestamp [check:stamp [lindex $arg 2]]
  set rlstmp [lindex $arg 0]
  if { $rlstmp == "" } { putserv "NOTICE $nick : 01,00 USAGE\: !addpre RELEASE SECTiON UNXTiME \[SECTiON and UNXTiME are optional\]  "; return 0 }
  set sec [lindex $arg 1]
  set rlsgrp [check:addrlsgrp $rlstmp]
  set grp [lindex $rlsgrp 1]
  set nam [lindex $rlsgrp 0]
 echo:annorep PRE $sec $nam $grp $prestamp PRE $chan_(echo)
 }
}


### announce (addnuke)
proc echo:addnuke { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_
 if { $chan == $chan_(pred) } {
  set rlstmp [lindex $arg 0]
  if { $rlstmp == "" } { putserv "NOTICE $nick : 01,00 USAGE\: !addnuke RELEASE REASON UNXTiME SECTiON \[RELEASE REASON UNXTiME\[now\|\<stamp\>\] and SECTiON are optional\]  "; return 0 }
  set reason [lindex $arg 1]
  set prestamp [check:stamp [lindex $arg 2]]
  set sec [lindex $arg 3]
  set rlsgrp [check:addrlsgrp $rlstmp]
  set grp [lindex $rlsgrp 1]
  set nam [lindex $rlsgrp 0]
  echo:annorep NUKE $sec $nam $grp $prestamp $reason $chan_(echo) 1
 }
}


### announce (addunnuke)
proc echo:addunnuke { nick uhost handle chan arg } {
 global <b style="color:black;background-color:#a0ffff">predb</b> chan_
 if { $chan == $chan_(pred) } {
  set rlstmp [lindex $arg 0]
  if { $rlstmp == "" } { putserv "NOTICE $nick : 01,00 USAGE\: !addunnuke RELEASE REASON UNXTiME SECTiON \[RELEASE REASON UNXTiME\[now\|\<stamp\>\] and SECTiON are optional\]  "; return 0 }
  set reason [lindex $arg 1]
  set prestamp [check:stamp [lindex $arg 2]]
  set sec [lindex $arg 3]
  set rlsgrp [check:addrlsgrp $rlstmp]
  set grp [lindex $rlsgrp 1]
  set nam [lindex $rlsgrp 0]
  echo:annorep UNNUKE $sec $nam $grp $prestamp $reason $chan_(echo) 1
 }
}


### announce (rep n sav)
proc echo:annorep { stat sec nam grp prestamp reason chan_echo save } {
 global <b style="color:black;background-color:#a0ffff">predb</b> announce_
 if { $save == "1" } {
  if { $sec == "" } { set sec "UNKNOWN" }
  if { $reason == "" } { set reason "UNKNOWN" }
  set data [open $<b style="color:black;background-color:#a0ffff">predb</b> a]
  puts $data "$stat $prestamp $sec $grp $nam $reason"
  close $data
  putlog "$stat $prestamp $sec $nam\-$grp $reason added"
 }
 if { $stat == "PRE" } { set announce $announce_(pre) } elseif {
  $stat == "NUKE" } { set announce $announce_(nuke) } elseif {
  $stat == "UNNUKE" } { set announce $announce_(unnuke) }
 set pretime [unx2nps $prestamp]
 regsub -- {#section#} $announce $sec announce
 regsub -- {#releasename#} $announce $nam announce
 regsub -- {#releasegroup#} $announce $grp announce
 regsub -- {#pretime#} $announce $pretime announce
 regsub -- {#reason#} $announce $reason announce
 if { $save == "1" } { putserv "PRIVMSG $chan_echo :$announce" } else { putserv "NOTICE $chan_echo :$announce" }
}


### filter color bold /bla code add dots
proc check:string { nostring } {
 global chan_
 regsub -all -- { [0-9][0-9],[0-9][0-9]}  $nostring ""   nostring
 regsub -all -- { [0-9][0-9],[0-9]}       $nostring ""   nostring
 regsub -all -- { [0-9][0-9]}             $nostring ""   nostring
 regsub -all -- { [0-9]}                  $nostring ""   nostring
 regsub -all -- { }                       $nostring ""   nostring
 regsub -all -- { }                       $nostring ""   nostring
 regsub -all -- { }                       $nostring ""   nostring
 regsub -all -- { }                       $nostring ""   nostring
 regsub -all -- { }                       $nostring ""   nostring
 regsub -all -- {PRE}                     $nostring ""   nostring
 regsub -all -- { }                       $nostring "\." nostring
 regsub -all -- {\.\]\.}                  $nostring " "  nostring
 regsub -all -- {\.\[\.}                  $nostring " "  nostring
 regsub -all -- {\.\]}                    $nostring ""   nostring
 regsub -all -- {\.\.}                    $nostring "\." nostring
 return $nostring
}


proc check:addrlsgrp { nostring } {
 regsub -all -- {\-}                      $nostring " "   nostring
 set grp [lindex $nostring end]
 regsub -all -- { }                       $nostring "\-"   nostring
 set grprep1 "\-$grp"
 set grprep2 " $grp"
 regsub -all -- $grprep1                 $nostring $grprep2   nostring
 return $nostring
}


proc check:rlsgrp { nostring } {
 regsub -all -- {\.}  $nostring " "     nostring
 set grp [lindex $nostring end]
 regsub -all -- $grp  $nostring "\-rep" nostring
 regsub -all -- { \-} $nostring "\-"    nostring
 regsub -all -- {rep} $nostring $grp    nostring
 regsub -all -- { }   $nostring "\."    nostring
 regsub -all -- {\-}  $nostring " "     nostring
 return $nostring
}


proc check:stamp { timestamp } {
 regsub -- {[nN][oO][wW]} $timestamp "" timestamp
 if { $timestamp == "" || $timestamp == "\-" } { return [unixtime] } else { return $timestamp}
}


proc unx2nps { timestamp } {
 if {[regexp "\[^\\d\]" $timestamp]} { error "unx2nps: parameter is not a valid unix timestamp" }
 if {$timestamp > "2000000000"} { error "unx2nps: parameter is too large" }
 return [clock format $timestamp -format "%Y/%m/%d %H:%M:%S"]
}


#bind pub - .rehash test:rehash
# proc test:rehash {nick uhost hand channel arg} {
# rehash
# putserv "PRIVMSG $channel :rehased..."
#}


putlog "PREBOT <b style="color:black;background-color:#ffff66">TCL</b>/TXT v1.0 loaded (by noname)."



### EOF ### /1337? yea.. a bit.