aIRC — File Browser
aIRCv0.8.69 / aIRCv0.8.69 / addons / telnet.mrc
telnet.mrc — 5.56 KB — Download this file
;/**********************************************************************
; *
; * aIRC
; * Telnet Client
; *
; **********************************************************************/
;
;
alias _telnet.addonver { return 1.0 }
alias telnet {
var %i = 1,%sock,%win,%port,%parms = $_parameter($1-,1,Telnet Client [/telnet],normal,$null,Server [port]),%server = $gettok($gettok(%parms,1,32),1,58),%service = 0
if ($gettok(%parms,2,32) != $null) { %port = $ifmatch }
elseif ($gettok(%parms,2,58) != $null) { %port = $ifmatch }
else { %port = 23 }
if (%port == 23) {
info.a Connecting to %server ( $+ %port $+ )
run telnet.exe %server %port
return
}
while ($sock($_nospaces(Telnet,%i))) { inc %i }
%sock = Telnet $+ %i
%win = @ $+ %sock
if ($window(%win) == $null) {
window -aek %win $_window.conf(@Telnet)
_window.font.reset %win @Telnet
}
if ($gettok($_idenport(%port,t),1,32) != $null) { %service = $ifmatch }
echo $colour(info) -it %win $^*** Connecting to %server ( $+ %port $+ )
sockopen %sock %server %port
sockmark %sock %server $+ $chr(9) $+ 0 $+ $chr(9) $+ %service
_recent.add telnet 10 %server %port
}
alias _telnet.unload {
_closematchingwindows @Telnet*
sockclose telnet*
}
alias _telnet.telnetnum {
if ($sockname) && ($2 == $null) { return $remove($sockname,telnet) }
if (@Telnet* iswm $1) { return $remove($1,@Telnet) }
if (@Telnet* iswm $active) { return $remove($active,@Telnet) }
}
alias _telnet.telnetnums {
if ($1) { return Telnet $+ $_telnet.telnetnum($1) }
return Telnet $+ $_telnet.telnetnum
}
alias _telnet.sw {
var %s = telnet $+ $_telnet.telnetnum
if ($_sockmark(%s,2)) { echo -it $target $1- }
sockwrite -n %s $1-
}
alias _telnet.host { return $_sockmark($_telnet.telnetnums($1),1) }
alias _telnet.port { return $sock($_telnet.telnetnums($1)).port }
alias _telnet.service { return $_sockmark($_telnet.telnetnums($1),3) }
alias _telnet.setservice {
var %win = $active
if (@telnet* !iswm $active) { return }
var %sock = $_telnet.telnetnums,%services = eggdrop irc pop3,%tmp,%host = $_telnet.host,%port = $_telnet.port
if ($sock(%sock)) { %tmp = $_selectedit($null,0,Telnet Client [/telnet],1,$_telnet.service,32,%services,Select service for current session:<CRLF>[Blank or escape for none]) }
if ($sock(%sock)) {
sockmark %sock $puttok($sock(%sock).mark,$iif(%tmp != $null,%tmp,$null),3,9)
var %tmps
if (%tmp != $null) { %tmps = ( $+ %tmp $+ ) }
titlebar %win - %host [[ $+ %port $+ ]] %service %tmps
}
else { error.w %win You are not connected. }
}
alias `telnet.pre {
set -u %`sock $_telnet.telnetnums
set -u %`echo $iif($_sockmark(%`sock,2),1,0)
set -u %`thost $gettok($window($active).title,2,32)
set -u %`tport $remove($gettok($window($active).title,3,32),[,])
if ($_telnet.host != $null) {
set -u %`host $ifmatch
set -u %`port $_telnet.port
set -u %`service $_telnet.service
}
}
menu @Telnet {
$`telnet.pre:{ }
-
$iif(%`service == pop3,pop3)
.&login...:{
_telnet.sw user $_param(1,$null,User:)
_telnet.sw pass $_parampass(1,$null,Pass:)
}
.&retr...:{ _telnet.sw retr $_param(isint,1,Message number:) }
.&dele...:{ _telnet.sw dele $_param(isint,1,Message number:) }
-
$iif(%`thost,&service):{ _telnet.setservice }
$iif(%`thost,&ident):{ ident $_telnet.host }
$iif(%`thost && $_portscan.addonver,port&scan):{ portscan $_telnet.host }
$iif(%`thost && $_portscan.addonver,&port ?...):{ portscan $_telnet.host ? }
$iif(%`thost,$iif(%`host,&other conn,&reconnect)):{ telnet $gettok($window($active).title,2,32) $remove($gettok($window($active).title,3,32),[,]) }
$iif(%`host,&terminate):{
sockclose $_telnet.telnetnums
echo $colour(info) -t $active $^*** End of Session
}
-
$`ifmm(%`echo) &echo:{
var %s = $_telnet.telnetnums
sockmark %s $puttok($sock(%s).mark,$iif($_sockmark(%s,2),0,1),2,9)
}
}
ON *:INPUT:@Telnet*:{
if (/* iswm $1-) { $1- }
else {
var %s = $_telnet.telnetnums
if ($sock(%s).status != active) { beep }
else { _telnet.sw $1- }
}
halt
}
ON *:SOCKOPEN:telnet*:{
if ($sockerr) {
error.w @ $+ $sockname Telnet Session with $_telnet.host $+ : $_sockerr
return
}
if ($window(@ [ $+ [ $sockname ] ] ) == $null) {
window -aek @ $+ $sockname $_window.conf(@Telnet)
_window.font.reset @ $+ $sockname @Telnet
}
var %service
if ($_telnet.service != $null) { %service = ( $+ $ifmatch $+ ) }
titlebar @ $+ $sockname - $_telnet.host [[ $+ $_telnet.port $+ ]] %service
echo $colour(info) -it @ $+ $sockname $^*** Connection established: $_telnet.host $^bp($_telnet.port)
}
ON *:SOCKWRITE:telnet*:{
if ($sockerr) { error.w @ $+ $sockname Telnet Session with $_telnet.host $+ : $_sockerr }
}
ON *:SOCKREAD:telnet*:{
if ($sockerr) {
error.w @ $+ $sockname Telnet Session with $_telnet.host $+ : $_sockerr
return
}
var %sr
sockread %sr
while ($sockbr) {
if ($right(%sr,1) == $cr) { %sr = $left(%sr,-1) }
if (%sr == $chr(32)) || ($remove(%sr,$cr) == $null) { echo -it @ $+ $sockname }
elseif (%sr != $null) { echo -it @ $+ $sockname $ansi2mirc($replace(%sr,$chr(32), )) }
if ($sockname == $null) { break }
sockread %sr
}
}
ON *:SOCKCLOSE:telnet*:{ echo $colour(info) -it @ $+ $sockname $^*** End of Session }
alias _onclosewin.telnet {
if ($sock($remove($2,@))) { info.a Closing Telnet Session $remove($2,@Telnet) }
sockclose $remove($2,@)
}
alias _windowsize.Telnet { return X Y 400 241 }
alias _windowopts.Telnet { return 1 1 1 }