#nop vim: set filetype=tt:; /* 本文件属于 PaoTin++ 的一部分 =========== PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp ) 享有并保留一切法律权利 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。 =========== */ #var lib_ga[META] { {NAME} {GA} {DESC} {GA 处理。IAC GA 是服务器信息输出结尾符号} {AUTHOR} {担子炮} {NOTE} {本文件属于 PaoTin++ 的一部分} }; #config {IAC GA} {ON}; #func {lib_ga.Init} { #class data/lib/ga open; #list gXttPipeLine create {}; #class data/lib/ga close; #return true; }; load-lib telnet; load-lib event; event.Define {GA} {有参} {$MODULE} {接收到 IAC GA 时发射本事件,参数为造成本次输出的命令}; #event {SENT OUTPUT} { #local cmd {%0}; #replace cmd {{$TELNET[CR]?}$TELNET[LF]} {}; #if { "$cmd" != "" } { #list gXttPipeLine add {$cmd}; }; }; #event {RECEIVED PROMPT} { #local rawLine {%0}; #local line {%1}; #if { "$line" == "== 未完继续 %*== (%*继续下一页%*)%*" } { #line gag; #cr; #return; }; }; #action {^> {$TELNET[GA]|$TELNET[EOR]}$} { #local line {%0}; #replace line {{$TELNET[GA]|$TELNET[EOR]}$} {}; #local cmd {}; #if { &gXttPipeLine[] > 0 } { #local cmd {$gXttPipeLine[1]}; #list gXttPipeLine delete {1}; }; event.Emit GA {} {$cmd}; #line gag; } {1.000}; #alias {ga.Off} { #send {$TELNET[IAC]$TELNET[WILL]$TELNET[LINEMODE]\}; #send {$TELNET[IAC]$TELNET[DO]$TELNET[SGA]\}; }; #alias {ga.On} { #send {$TELNET[IAC]$TELNET[WILL]$TELNET[LINEMODE]\}; #send {$TELNET[IAC]$TELNET[DONT]$TELNET[SGA]\}; }; #alias {ga.Sync} { sync.Wait {#0}; }; #alias {ga.Confirm} { #local cmd {%1}; #while { &gXttPipeLine[] > 0 && {$gXttPipeLine[1]} !== {$cmd} } { #list gXttPipeLine delete {1}; }; }; #func {ga.ThisCmd} { #return {$gXttPipeLine[1]}; }; #func {ga.IsUnderway} { #if { &gXttPipeLine[] > 1 } { #return 1; }; #else { #return 0; }; };