dzp 3 лет назад
Родитель
Сommit
3f967f6199
2 измененных файлов с 67 добавлено и 0 удалено
  1. 63 0
      plugins/lib/ga.tin
  2. 4 0
      plugins/lib/telnet.tin

+ 63 - 0
plugins/lib/ga.tin

@@ -0,0 +1,63 @@
+#nop vim: set filetype=tt:;
+
+/*
+本文件属于 PaoTin++ 的一部分
+===========
+PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
+你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
+===========
+*/
+
+#var lib_ga[META] {
+    {NAME}      {GA}
+    {DESC}      {GA 处理。IAC GA 是服务器信息输出结尾符号}
+    {AUTHOR}    {担子炮}
+    {NOTE}      {本文件属于 PaoTin++ 的一部分}
+};
+
+#config {IAC GA} {ON};
+
+#function {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" == "== 未完继续 %*== (q 离开%*,其他继续下一页)%*" } {
+        #cr;
+        #return;
+    };
+};
+
+#action {^> {$TELNET[GA]|$TELNET[EOR]}$} {
+    #local line {%0};
+    #replace line {{$TELNET[GA]|$TELNET[EOR]}$} {};
+
+    #if { &gXttPipeLine[] > 0 } {
+        #local cmd {$gXttPipeLine[1]};
+        #list gXttPipeLine delete {1};
+    };
+
+    event.Emit GA {} {$cmd};
+
+    #line gag;
+
+} {1.000};

+ 4 - 0
plugins/lib/telnet.tin

@@ -15,3 +15,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 #var TELNET[SE]   {\xF0};
 #var TELNET[GMCP] {\xC9};
 #var TELNET[MXP]  {\x5B};
+#var TELNET[CR]   {\x0D};
+#var TELNET[LF]   {\x0A};
+#var TELNET[GA]   {\xF9};
+#var TELNET[EOR]  {\xEF};