Dashmini/_Dashmini.mrc

64 lines
1.5 KiB
Plaintext

/*
Dashmini 0.1
By Sunblade
sunblade@tilde.club
https://tilde.club/~sunblade/
Usage:
/dashmini < url > (without gemini://)
*/
alias -l gemurlformat {
tokenize 47 $1
if (($left($2,1) == $chr(126)) && (!$3-)) {
return $+($1,/,$2,/index.gmi)
}
else {
return $+($1,/,$2,/,$3-)
}
}
alias dashmini {
if (!$window(@dashmini)) {
window -k @dashmini
}
var %u = $gemurlformat($1)
var %h = $token($1,1,47)
sockopen -e dashmini %h 1965
sockmark dashmini $1
}
on 1:sockopen:dashmini:{
if ($sockerr > 0) { echo -st * /dashmini : Unable to connect. | return }
echo -tg @dashmini * /dashmini : Connection successful to $sock($sockname).mark $+([,$sock($sockname).ip,])
sockwrite -n $sockname gemini:// $+ $sock($sockname).mark
;sockwrite -n $sockname Host: $sock($sockname).mark
;sockwrite -n $sockname Connection: close
;sockwrite $sockname $crlf
echo -tg @dashmini * /dashmini : Receiving informations...
}
on 1:sockread:dashmini:{
if ($sockerr > 0) { echo -tg @dashmini * /dashmini : An error has ocurred. Connection closed. | return }
var %read
;var %line = 1
:read
sockread -f %read
if ($sockbr == 0) return
echo -tg @dashmini * /dashmini : %read
inc %line
goto read
}
on 1:sockclose:dashmini:{
echo -tg @dashmini * /dashmini : The connection has been closed.
}
on *:hotlink:*:@dashmini:{
if ($hotlink(event) == sclick) {
if ($hotlink(match) isurl) {
dashmini $gemurlformat($remove($hotlink(match),gemini://))
}
}
}