| 
					
				 | 
			
			
				@@ -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} {  
			 |