| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #nop vim: set filetype=tt:;
- /*
- 本文件属于 PaoTin++ 的一部分
- ===========
- PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
- 你可以在遵照 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;
- };
- };
|