alias localwrite sockwrite -tn sock.local $1-
alias userips return $hget(userips,$1-)
alias sockwait {
if ($sock($1).status != active) { .timer -m 1 10 sockwait $1- | halt }
sockwrite -tn $1-
}
on *:start:sconnect
alias sconnect {
if ($sock(sock.local)) sockclose sock.*
var %p $r(1000,9999)
while (!$portfree(%p)) var %p $r(1000,9999)
socklisten init.connection %p
server localhost %p
}
on *:sockclose:sock.server:{
echo -a * Server disconnected. Retrying.
sockclose sock.local
sconnect
}
on *:socklisten:init.connection:{
sockaccept sock.local
sockclose $sockname
sockopen sock.server buzzen.net 6777
}
on *:sockread:sock.local:{
var %r | sockread %r | tokenize 32 %r
if ($1 = NICK) || ($1 = USER) halt
if ($1 = JOIN) set -u10 %justjoined on
if ($1 = JOIN) && ($numtok($2,44) > 1) {
var %x $numtok($2-,44)
while (%x) { join $gettok($2,%x,44) | dec %x }
}
if ($sock(sock.server)) sockwait sock.server $1-
elseif ($1 == Away) && ($chr(37) isin $3) { sockwrite -n RM.1 AWAY $3 $4 }
elseif ($1 = j) { sockopen sockfind. $+ $+($chr(37),$chr(35),$replace($remove($2-,$chr(37),$chr(35)),$chr(32),\b,$chr(44),\c)) irc.buzzen.net 6777 }
}
on *:sockopen:sock.server:{
if ($sockerr) { sockclose sock.local | .timer 1 5 sconnect | halt }
sockwrite -tn $sockname USER $me $me $me :START_
sockwrite -tn $sockname AUTHTYPE IRCWX1
sockwrite -tn $sockname LOGIN %Email %password
}
on *:sockread:sock.server:{
var %r | sockread %r
if ($userips($remove($gettok(%r,1,33),:))) { var %r $remove($gettok(%r,1,32),@BuzzenPassport,@BCN) $+ @ $+ $userips($remove($gettok(%r,1,33),:)) $gettok(%r,2-,32) }
if ($gettok(%r,2,32) = 353) {
if ($numtok(%r,32) > 29) { localwrite $gettok(%r,1-30,32) | localwrite $gettok(%r,1-5,32) : $+ $gettok(%r,30-,32) }
else { localwrite %r }
halt
}
tokenize 32 %r
if ($window(@debug)) echo @debug $+(,$sockname,: $1-)
if ($2 = 319) || ($2 = 317) || ($2 = 320) || ($2 = 318) { halt }
if ($2 = PART) hdel userips $remove($gettok($1,1,33),:)
if ($2 = JOIN) && ($remove($gettok($1,1,33),:) != $me) { sockwrite -tn $sockname WHOIS $remove($gettok($1,1,33),:) }
if ($2 = 311) {
hadd -m userips $4 $6
if (!%justjoined) {
var %x $comchan($4,0)
while (%x) { echo $comchan($4,%x) $timestamp * $4 $+ 's IP: $6 | dec %x }
}
}
if ($2 = PRIVMSG) { localwrite $1-3 $regsubex($4-,/\x5B[Ss]tyle.+?\x5D(.+)\x5B/[Ss]tyle\x5D/g,\1) | halt }
localwrite $1-
halt
}
raw 353:*:{
var %looptext $remove($3-,:,',.,@,$chr(37),+)
var %x $numtok(%looptext,32)
while (%x > 0) { whois $gettok(%looptext,%x,32) | dec %x }
}