;/********************************************************************** ; * ; * aIRC ; * Events ; * ; **********************************************************************/ ; ON *:MODE:#:{ if ($nick == $me) || (%++service) || (m isincs %++flags) || (n isincs %++flags) || (b isincs %++flags) { return } _enforce.modes $chan $1- if ($result) && ($_flood.main(1,0,2,0,30,$_nospaces(__enforcemodes,$chan),l)) && ($me isop $chan) && ($nick ison $chan) { deop $chan $nick } } ON *:TOPIC:#:{ if ($1- != $null) { _recent.add topic 20 $replace($1-,$chan,) } if ($nick == $me) || (%++service) || (m isincs %++flags) || (n isincs %++flags) || (b isincs %++flags) { return } _enforce.topic $chan $1- if ($result) && ($_flood.main(1,0,2,0,30,$_nospaces(__enforcetopic,$chan),l)) && ($nick ison $chan) { deop $chan $nick } } ON *:INVITE:#:{ if ($istok(%c.inviteme.c,$chan,32)) { .timer -o 1 0 join $chan } } ON ^*:OPEN:?:{ _prot.bugnick } ON *:OPEN:?:{ _onopen.query $nick } ON *:KICK:#:{ if ($knick == $me) { %c.reial.c = $remtok(%c.reial.c,$chan,1,32) if (%c.reial.c == $null) { unset %c.reial.c } } else { _checkemptychan $chan } } ON *:DCCSERVER:*:{ _prot.bugnick } ON *:JOIN:#:{ if ($nick == $me) { _setd junk _onmeop $chan _synchtime.set 0 $chan %c.inviteme.c = $remtok(%c.inviteme.c,$chan,32) if (%c.inviteme.c == $null) { unset %c.inviteme.c } } else { var %nomsg = 0 if (%++handle != $null) { var %last = $_getuserfield(%++handle,$_nospaces(laston.,$chan)),%infoline if ($_rchini(greet,$chan)) && ($_getsetup(script,use-info)) && ((%last == $null) || ($calc($ctime - %last) > $_getsetup(script,wait-info))) { var %infoline.g = $_getuserfield(%++handle,infoline.default),%infoline.c = $_getuserfield(%++handle,$_nospaces(infoline.,$chan)),%infoline if (@* iswm %infoline.g) && (@* !iswm %infoline.c) { %infoline = %infoline.g } elseif (%infoline.c != $null) || (%infoline.g != $null) { %infoline = $ifmatch } if (%infoline != $null) { if ($_inputcom(@,$ifmatch) != $null) { _puthelp $chan c& msg $chan [[ $+ $nick $+ ]] $ifmatch inc %nomsg } } } } if ($me isop $chan) { if ($_prot.chansetting(cuenforcebans,30,1,$chan)) && (o !isincs %++flags) && (f !isincs %++flags) { if ($fulladdress isban $chan) { var %ifmatch = $ifmatch,%banmask = $ibl(%chan,%ifmatch),%banner = $gettok($ibl(%chan,%ifmatch).by,1,33) .timerENFORCEBAN $+ , $+ $chan $+ , $+ %banmask $+ , $+ $nick 1 $r(3,5) _prot.enforceban $chan %banmask %banner $nick $fulladdress return } } if (o isincs %++flags) && ((a isincs %++flags) || ($_rchini(autoop,$chan))) { pop 5 $chan $nick } elseif (f !isincs %++flags) && ($_matchban($fulladdress,$chan)) { var %hostmask = $gettok($ifmatch,2,32),%seton = $gettok($ifmatch,4,32),%duration = $gettok($ifmatch,5,32),%reason = $gettok($ifmatch,8-,32),%bantime = $calc(%seton + %duration - $ctime) if (%bantime > 9999999) { %bantime = 9999999 } if (%duration) { if (%bantime > 0) { if ($_ischanban(%hostmask,$chan)) { .timer_UNBAN $+ $chan $+ , $+ %hostmask 1 %bantime _raw.unban $chan %hostmask } else { kb -u $+ %bantime %chan %hostmask %reason } } else { -ban %hostmask $chan } } elseif ($_not($_ischanban(%hostmask,$chan))) { kb $chan %hostmask %reason return } elseif ($ialchan(%chan,%hostmask,0)) { kick $chan %hostmask %reason } } elseif (k isincs %++flags) { _autokickloser %++handle $nick $chan } elseif ($nick !isop $chan) && (q !isincs %++flags) && (($_rchini(freevoice,$chan)) || ((v isincs %++flags) && ((g isincs %++flags) || ($_rchini(autovoice,$chan))))) { pvoice 5 $chan $nick } } if (%nomsg == 0) && (b !isincs %++flags) && (k !isincs %++flags) && (d !isincs %++flags) { var %line = $_rchinitxt(_msgonjoin,$chan),%on = $gettok(%line,1,32) if (%on) { _automsghtchan $chan $nick _automsg.onjoinpart %line } } } } ON *:PART:#:{ if ($nick == $me) { %c.reial.c = $remtok(%c.reial.c,$chan,1,32) if (%c.reial.c == $null) { unset %c.reial.c } %c.inviteme.c = $remtok(%c.inviteme.c,$chan,1,32) if (%c.inviteme.c == $null) { unset %c.inviteme.c } } else { _checkemptychan $chan if ($comchan($nick,0) <= 1) { _ircoplist.del $nick } if (b !isincs %++flags) && (k !isincs %++flags) && (d !isincs %++flags) { var %line = $_rchinitxt(_msgonpart,$chan),%on = $gettok(%line,1,32) if (%on) { _automsghtchan $chan $nick _automsg.onjoinpart %line } } } } ON *:QUIT:{ var %i = $comchan($nick,0),%chan,%tmp,%chans,%seenstorechans,%seenchans if ($_seen.addonver) { %seenstorechans = $_seen.getchans(storechans) } _ircoplist.del $nick %tmp = $nick $+ %chan while (%i) { %chan = $comchan($nick,%i) _checkemptychan %chan if (%++isnetsplit) && ($nick isop %chan) { set -u [ $+ [ %wait-split ] ] %+netsplitwasop. [ $+ [ %tmp ] ] 1 } _idle.del %chan $nick %chans = %chans %chan if (%seenstorechans != $null) && ((%seenstorechans == *) || ($istok(%seenstorechans,%chan,44))) { %seenchans = $addtok(%seenchans,%chan,44) } dec %i } %chans = $replace(%chans,$chr(32),$chr(44)) if (%++isnetsplit) { %tmp = $1 $+ $chr(44) $+ $2 .timernetsplitserver. [ $+ [ %tmp ] ] 1 2 info.a Possible Netsplit between $^'($1) and $^'($2) _netsplit.addnick $nick $address $1 $2 $ctime %chans if (%seenchans != $null) { _seen.add $nick $fulladdress %seenchans 7 -1 } } elseif (%seenchans != $null) { _seen.add $nick $fulladdress %seenchans 3 -1 $1- } } ON *:NICK:{ _ircoplist.chnick $nick $newnick if ($nick == $me) { %.myaddress = $newnick $+ ! $+ $address } var %i = $comchan($newnick,0),%chan,%seenstorechans,%seenchans if ($_seen.addonver) { %seenstorechans = $_seen.getchans(storechans) } while (%i) { %chan = $comchan($newnick,%i) _idle.ren %chan $nick $newnick if (%seenstorechans != $null) && ((%seenstorechans == *) || ($istok(%seenstorechans,%chan,44))) { %seenchans = $addtok(%seenchans,%chan,44) } dec %i } if (%seenchans != $null) { _seen.add $nick $fulladdress %seenchans 4 -1 $newnick _seen.add $newnick $newnick $+ ! $+ $address %seenchans 5 -1 $nick } } ON *:TEXT:*:#:{ _remotechantext $1- } ON *:ACTION:*:#:{ _remotechantext $1- } ON *:NOTICE:*:#:{ _remotechantext $1- } alias _remotechantext { if ($_wordisinstring($me,$1-)) { if ($_rchini(_warnyournick,$chan)) { echo -eist $^*** < $+ $nick $+ : $+ $chan $+ > $1- } } } ON *:DEOWNER:#:{ _ondeop } ON *:DEOP:#:{ _ondeop } alias _ondeop { _~checkemptychanoff $chan if ($me isop $chan) && ($nick != $me) && ($nick != $opnick) && (m !isincs %++flags) && (b !isincs %++flags) { if (($_rchini(protectops,$chan)) && (o isincs %++flags2)) || (($_rchini(protectfriends,$chan)) && (f isincs %++flags2) && (d !isincs %++flags2) && (($_not($_prot.chansetting(cubitchmode,19,1,$chan))) || (o isincs %++flags2))) { _puthelp $nick & _qnotice $nick $_evaltext($replace($_defmsg(dontdeopfriend),,$opnick)) op $chan $opnick } } } ON *:OWNER:#:{ _onop } ON *:OP:#:{ _onop } ON *:SERVEROP:#:{ _onop } alias _onop { if ($opnick == $me) { if ($_rchini(_updateial,$chan) >= 1) { _scanial.auto $chan } if ($_rchini(_updatebanlist,$chan) >= 1) { _updatebanlist $chan } _enforce.topic $chan _enforce.modes $chan _autolimit.chan $chan var %last = $_get(junk,_onmeop,$chan) if (%last > $ctime) { %last = $ctime - 5 _setd junk _onmeop $chan %last } if ($calc($ctime - %last) < 10) { return } _setd junk _onmeop $chan $ctime _opcheck $chan } elseif ($nick != $me) && ($me isop $chan) && (d isincs %++flags2) && (m !isincs %++flags) { deop $opnick } } ON *:BAN:#:{ } ON *:UNBAN:#:{ if ($me isop $chan) { var %line,%hostmask,%seton,%duration,%bantime if ($_isban($banmask,$chan)) { %line = $read -nl $+ $ifmatch $_baninifile %hostmask = $gettok(%line,2,32) %seton = $gettok(%line,4,32) %duration = $gettok(%line,5,32) %bantime = $calc(%seton + %duration - $ctime) if (%bantime > 9999999) { %bantime = 9999999 } if ($nick == $me) { info.w $chan $banmask is in my permban list. You need to use /-ban' if you want it gone for good. } elseif ($gettok(%l,7,32)) { ; sticky ban? info.w $chan Enforcing ban: $^'($banmask) (sticky) if (%duration) && (%bantime > 0) { ban -u $+ %bantime $chan $banmask } else { ban $chan $banmask } } elseif ($_not($_rchini(dynamicbans,$chan))) { if (o isincs %++flags) { _puthelp $nick & _qnotice $nick $banmask is in my permban list. You need to use .-ban' in dcc chat if you want it gone for good. } elseif (%duration) && (%bantime > 0) { ban -u $+ %bantime $chan $banmask } else { ban $chan $banmask } } } } } CTCP *:DCC:?:{ if (%+dcc.badcc) { error.a Invalid DCC $2 request from $nick $^bp($address) - Invalid $^b($upper(%+dcc.badcc)) halt } elseif ($2 == CHAT) { if ($halted) { halt } elseif ($nick == $me) { } elseif (C isincs %++flags) { .timer -o 1 0 .creq $iif($_minio(0,20),+m,-m) $creq .creq +m auto } elseif (N isincs %++flags) { echo $colour(ctcp) -est $^*** DCC Chat request from $nick rejected [ignoring DCCs from $nick $+ ] halt } elseif ($creq == ignore) { echo $colour(ctcp) -est $^*** DCC Chat request from $nick rejected halt } } elseif ($2 == SEND) { if ($_dccignore(%+dcc.file)) { } elseif (N isincs %++flags) && ($nick != $me) { echo $colour(ctcp) -est $^*** DCC Send request from $nick rejected [ignoring DCCs from $nick $+ ] halt } elseif ($halted) { halt } elseif (S isincs %++flags) && ($nick != $me) { .timer -o 1 0 .sreq $iif($_minio(0,16),+m,-m) $sreq .sreq +m auto } elseif ($sreq == ignore) { echo $colour(ctcp) -est $^*** DCC Send request from $nick rejected halt } } }