54 lines
1.4 KiB
Tcl
54 lines
1.4 KiB
Tcl
if {![info exists blowfish_version]} {
|
|
putscr "You MUST load the blowfish encryption module prior to loading this!"
|
|
return 0
|
|
}
|
|
|
|
set crypt_timeout 60
|
|
|
|
#borrowed from alltools.tcl
|
|
proc randstring {count} {
|
|
set rs ""
|
|
for {set j 0} {$j < $count} {incr j} {
|
|
set x [rand 62]
|
|
append rs [string range "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" $x $x]
|
|
}
|
|
unset x
|
|
unset j
|
|
return $rs
|
|
}
|
|
|
|
proc crop {n args} {
|
|
global cryptkeeper cryptlist crypt_timeout
|
|
if [onchan $n [_T]] {
|
|
if {![info exists cryptkeeper([string tolower $n])]} {
|
|
putscr "You must first set a pair of crypt keys before using this."
|
|
putscr "Try /addcrypt <nick> <key1> <key2>"
|
|
return 0
|
|
}
|
|
putserv "privmsg $n :crypt_op"
|
|
set cryptlist([string tolower $n]) [utimer $crypt_timeout "unset cryptlist([string tolower $n])"]
|
|
}
|
|
return 0
|
|
}
|
|
|
|
bind msg -1 crypt_op crypt_response
|
|
|
|
proc crypt_response {n u h a} {
|
|
global cryptkeeper cryptlist
|
|
if {![info exists cryptlist([string tolower $n])]} {
|
|
putscr "$n requesting UNAUTHORIZED crypt verification!"
|
|
return 1
|
|
} {
|
|
unset cryptlist([string tolower $n])
|
|
putserv "privmsg $n :crypt_reply [encrypt [lindex $cryptkeeper([string tolower $n]) 1] [decrypt [lindex $cryptkeeper([string tolower $n]) 0] $a]]"
|
|
}
|
|
return 1
|
|
}
|
|
|
|
proc addcrypt {n k1 k2 args} {
|
|
global cryptkeeper
|
|
set cryptkeeper([string tolower $n]) "$k1 $k2"
|
|
putscr "Added $n to the crypt keeper with keys $k1 and $k2."
|
|
}
|
|
return 0
|