|
@@ -5,7 +5,7 @@
|
|
|
namespace eval ::putils {
|
|
|
## some internal variables for messaging and stuff :) not your business after all.
|
|
|
|
|
|
- set local_ver "0.4truncatesender"
|
|
|
+ set local_ver "0.4truncateSR"
|
|
|
|
|
|
package require base64
|
|
|
package require md5
|
|
@@ -30,10 +30,10 @@ proc ::putils::proper_botnick {botnick} {
|
|
|
|
|
|
set temp [string tolower $botnick]
|
|
|
# abfrage ob zu lang, dann fixen
|
|
|
- # putlog "::putils:: $botnick lowercase: $temp"
|
|
|
+ # putlog "::putils::proper_botnick: $botnick lowercase: $temp"
|
|
|
if {[string length $botnick] > 9} {
|
|
|
set temp [string range $temp 0 8 ]
|
|
|
- # putlog "::putils:: botnickname $botnick too long: capping to: $temp"
|
|
|
+ # putlog "::putils::proper_botnick: botnickname $botnick too long: capping to: $temp"
|
|
|
}
|
|
|
return $temp
|
|
|
|
|
@@ -80,16 +80,16 @@ proc ::putils::put_bot {target_botnetnick fromdata} {
|
|
|
if {[islinked $target_botnetnick] == 1} {
|
|
|
|
|
|
# prepare data ...! encode. send multiple data, if needed.
|
|
|
- # encode it, base64
|
|
|
+ # encode it, base64, all in one line! '-wrapchar ""'
|
|
|
set data [::base64::encode -wrapchar "" $fromdata]
|
|
|
#::putils::filelog "scripts/cims/cims.log" "put_bot to $target_botnetnick: full base64 $data"
|
|
|
|
|
|
# make a hash of $data
|
|
|
set md5 [::md5::md5 -hex $data]
|
|
|
- putlog "md5: $md5"
|
|
|
+ putlog "::putils::put_bot: md5 of full base64 message: $md5"
|
|
|
|
|
|
set data_len [string length $data]
|
|
|
- putlog "data_len: $data_len"
|
|
|
+ putlog "::putils::put_bot: data_len of full base64 message: $data_len"
|
|
|
|
|
|
# into how many pieces does this message to be splitted?
|
|
|
# default 1
|
|
@@ -98,11 +98,11 @@ proc ::putils::put_bot {target_botnetnick fromdata} {
|
|
|
set count_parts [expr $data_len / $calcmsglen]
|
|
|
set remainder [expr $data_len % $calcmsglen]
|
|
|
set real [expr ${data_len}.00 / ${calcmsglen}.00]
|
|
|
- putlog "remainder: $remainder real: $real"
|
|
|
+ putlog "::putils::put_bot: remainder: $remainder real: $real"
|
|
|
if {[expr $data_len % $calcmsglen] > 0} {
|
|
|
set count_parts [expr $count_parts + 1]
|
|
|
}
|
|
|
- putlog "length: $data_len messagedata will be divided into $count_parts parts"
|
|
|
+ putlog "::putils::put_bot: length: $data_len messagedata will be divided into $count_parts parts"
|
|
|
}
|
|
|
#MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=
|
|
|
#MTIzNDU2
|
|
@@ -115,7 +115,7 @@ proc ::putils::put_bot {target_botnetnick fromdata} {
|
|
|
|
|
|
# get the part
|
|
|
set part [string range $data 0 $maxmsglen]
|
|
|
- putlog "part $x is $part"
|
|
|
+ putlog "::putils::put_bot: part $x is $part"
|
|
|
|
|
|
# kill the part out of the original string
|
|
|
set data [string replace $data 0 $maxmsglen ""]
|
|
@@ -124,7 +124,7 @@ proc ::putils::put_bot {target_botnetnick fromdata} {
|
|
|
}
|
|
|
|
|
|
|
|
|
- putlog "::putils:: put_bot: + a message delivered to ${target_botnetnick}."
|
|
|
+ putlog "::putils:: put_bot: + delivered a message part to ${target_botnetnick}."
|
|
|
|
|
|
} else {
|
|
|
|
|
@@ -133,21 +133,6 @@ proc ::putils::put_bot {target_botnetnick fromdata} {
|
|
|
|
|
|
}
|
|
|
|
|
|
-#
|
|
|
-# Proc to generate a string of (given) characters
|
|
|
-# Range defaults to "ABCDEF...wxyz'
|
|
|
-#
|
|
|
-proc ::putils::randomRangeString {length {chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}} {
|
|
|
- set range [expr {[string length $chars]-1}]
|
|
|
-
|
|
|
- set txt ""
|
|
|
- for {set i 0} {$i < $length} {incr i} {
|
|
|
- set pos [expr {int(rand()*$range)}]
|
|
|
- append txt [string range $chars $pos $pos]
|
|
|
- }
|
|
|
- return $txt
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
|
|
|
proc ::putils::rec_bot {sender_botnetnick cmd rec_data} {
|
|
@@ -254,14 +239,14 @@ proc ::putils::rec_bot {sender_botnetnick cmd rec_data} {
|
|
|
|
|
|
set md5 [::md5::md5 -hex $base64]
|
|
|
if {$md5 == $message_hash} {
|
|
|
- putlog "received decoded base64 message with correct md5"
|
|
|
+ putlog "::putils::rec_bot: received decoded base64 message with correct md5"
|
|
|
# start the targetted procedure with the received data. if available.
|
|
|
set bindlist [split [join [binds bot]]]
|
|
|
foreach {type o cmd cnt procedure} $bindlist {
|
|
|
- putlog "cmd: $cmd procedure: $procedure"
|
|
|
+ #putlog "::putils::put_bot: cmd: $cmd procedure: $procedure"
|
|
|
# FIXME: we currently don't check for permissions...
|
|
|
if {$cmd == [join [lindex $original_data 0]]} {
|
|
|
- putlog "execute procedure $procedure $sender_botnetnick [join [lindex $original_data 0]] [join [lrange $original_data 1 end]]"
|
|
|
+ putlog "::putils::rec_bot: execute procedure: $procedure $sender_botnetnick [join [lindex $original_data 0]] [join [lrange $original_data 1 end]]"
|
|
|
#execute procedure
|
|
|
$procedure $sender_botnetnick [join [lindex $original_data 0]] [join [lrange $original_data 1 end]]
|
|
|
}
|
|
@@ -327,6 +312,21 @@ proc ::putils::umlauts {text} {
|
|
|
return ${text}
|
|
|
}
|
|
|
|
|
|
+#
|
|
|
+# Proc to generate a string of (given) characters
|
|
|
+# Range defaults to "ABCDEF...wxyz'
|
|
|
+#
|
|
|
+proc ::putils::randomRangeString {length {chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}} {
|
|
|
+ set range [expr {[string length $chars]-1}]
|
|
|
+
|
|
|
+ set txt ""
|
|
|
+ for {set i 0} {$i < $length} {incr i} {
|
|
|
+ set pos [expr {int(rand()*$range)}]
|
|
|
+ append txt [string range $chars $pos $pos]
|
|
|
+ }
|
|
|
+ return $txt
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
# safe "bot-knows-the-channel-and-is-in-there"-function, returns boolean
|
|
|
proc ::putils::botonchannel {chan} {
|