ga.tin 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分
  4. ===========
  5. PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  6. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  7. ===========
  8. */
  9. #var lib_ga[META] {
  10. {NAME} {GA}
  11. {DESC} {GA 处理。IAC GA 是服务器信息输出结尾符号}
  12. {AUTHOR} {担子炮}
  13. {NOTE} {本文件属于 PaoTin++ 的一部分}
  14. };
  15. #config {IAC GA} {ON};
  16. #func {lib_ga.Init} {
  17. #class data/lib/ga open;
  18. #list gXttPipeLine create {};
  19. #class data/lib/ga close;
  20. #return true;
  21. };
  22. load-lib telnet;
  23. load-lib event;
  24. event.Define {GA} {有参} {$MODULE} {接收到 IAC GA 时发射本事件,参数为造成本次输出的命令};
  25. #event {SENT OUTPUT} {
  26. #local cmd {%0};
  27. #replace cmd {{$TELNET[CR]?}$TELNET[LF]} {};
  28. #if { "$cmd" != "" } {
  29. #list gXttPipeLine add {$cmd};
  30. };
  31. };
  32. #event {RECEIVED PROMPT} {
  33. #local rawLine {%0};
  34. #local line {%1};
  35. #if { "$line" == "== 未完继续 %*== (%*继续下一页%*)%*" } {
  36. #line gag;
  37. #cr;
  38. #return;
  39. };
  40. };
  41. #action {^> {$TELNET[GA]|$TELNET[EOR]}$} {
  42. #local line {%0};
  43. #replace line {{$TELNET[GA]|$TELNET[EOR]}$} {};
  44. #if { &gXttPipeLine[] > 0 } {
  45. #local cmd {$gXttPipeLine[1]};
  46. #list gXttPipeLine delete {1};
  47. };
  48. event.Emit GA {} {$cmd};
  49. #line gag;
  50. } {1.000};