on *:text:*:#MYCHAN: {
if (http:// isin $1-) {
sockclose linkchecker
set %link $remove($matchtok($1-,http://,1,32),http://)
set %linkchan $chan
set %actlink $matchtok($1-,http://,1,32)
if (/ !isin %link) { set %link %link $+ / }
sockopen linkchecker $remove($left(%link,$pos(%link,/,1)),/) 80
halt
}
if (www. isin $1-) {
sockclose linkchecker
set %link $matchtok($1-,www.,1,32)
set %linkchan $chan
set %actlink $matchtok($1-,www.,1,32)
if (/ !isin %link) { set %link %link $+ / }
sockopen linkchecker $remove($left(%link,$pos(%link,/,1)),/) 80
halt
}
}
on *:sockopen:linkchecker: {
if $sockerr > 0 { sockclose $sockname | halt }
sockwrite -n $sockname GET / $+ $right(%link,$calc($len(%link)- $pos(%link,/,1))) HTTP/1.1
sockwrite -n $sockname Host: $remove($left(%link,$pos(%link,/,1)),/)
sockwrite -n $sockname $crlf
}
on *:sockread:linkchecker: {
if $sockerr > 0 { sockclose $sockname | halt }
sockread %linkh
if (%delbug != $null) && ($len(%linkch) <= 150) && (</title> !isin %linkh) { set %linkch %linkch %linkh }
if (%delbug != $null) && (</title> isin %linkh) {
msg %linkchan $replace(%linkch,",",',',&,&,<,<,>,>,©,©,®,®,™,™,€,€,£,£,¥,¥) (3 %actlink )
unset %delbug
sockclose $sockname
halt
}
if (<title> isin %linkh) {
set %linkch $remove($left(%linkh,$pos(%linkh,</title>,1)),</title>)
set %linkch $right(%linkch,$calc($len(%linkch)- $pos(%linkch,<title>,1) -6))
set %linkch $left(%linkch,$calc($len(%linkch)-1))
set %delbug 1
if (%linkch != $null) {
msg %linkchan $replace(%linkch,",",',',&,&,<,<,>,>,©,©,®,®,™,™,€,€,£,£,¥,¥) (3 %actlink )
sockclose $sockname
unset %delbug
halt
}
}
}
if (*HTTP*302* iswm %x) set -e %web.tmp 1
if (Location: isin %x) {
if ($mtc(%x)) {
tokenize 32 %e
sockclose %z
soc $regml(web,1) $iif($regml(web,2),$v1,/) $iif($3,$3,1) %z $iif(%web.tmp,Redirected)
unset %web.tmp
}
}
on *:sockclose:website.*: unset $+(%,$sockname)
alias -l soc {
var %x = $iif($4,$4,$+(website.,$r(a,z),$r(a,z),$r(a,z),$r(0,9),$r(0,9),$r(0,9)))
set -e $+(%,%x) $1-2 $iif($3 ischan && $me ison $3,$3) $iif($5,$ntc($5))
sockopen %x $1 80
}
alias -l mtc return $regex(web,$1,/(?:https?:\/\/)?((?:www\.)?[\w-.]+\.(?>[a-z]{2,4})(?![a-z]))([\w-_#?=%.\/&?]+)?/ig)
alias -l ptc return $replacecs($1,—,-,",",&,&,<,<,>,>,?,$chr(233),?,$chr(231),ç,$chr(231),ñ,$chr(241),?,$chr(209),?,$chr(220),?,$chr(244))
alias -l btc return $+($chr(2),$1,$chr(2))
alias -l ntc return $+($chr(40),$1,$chr(41))
alias rtc {
if ($mtc($2-)) && (!%website.flood [ $+ [ $regml(web,1) ] ]) {
var %x = 1, %v
while ($regml(web,%x)) {
var %z = $iif(/ isin $regml(web,$calc(%x +1)),$v2,/), %i = $regml(web,%x)
if (/ !isin %i) && (!$istok(%v,%i,32)) {
soc %i %z $1
%v = %v %i
}
inc %x 1
}
set -eu5 %website.flood $+ $regml(web,1) 1
}
}