Moontalk server and client (provided by many parties)
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

34 行
1.0KB

  1. \ Tor specific words.
  2. require libs/parser/parser.4th
  3. create proxyline-parser PARSER_SIZE allot
  4. : (expect&skip) ( str -- )
  5. tuck parser>>string invert abort" parsing exception" parser>> ;
  6. : (extract-before) ( str -- )
  7. parser-mark (expect&skip) 1 parser<< parser-extract 1 parser>> ;
  8. : (hexstr>value) ( str -- n )
  9. hex 2>r 0 0 2r> >number 2drop d>s decimal ;
  10. : (parse-circuitid) ( -- circuitid-n )
  11. s" :" (extract-before) pad place
  12. s" " (extract-before) pad +place
  13. pad count (hexstr>value) ;
  14. : proxyline>circuitid ( line-str -- circuitid-n remaining-str )
  15. proxyline-parser new-parser
  16. s" PROXY TCP6 fc00:dead:beef:4dad::" (expect&skip) (parse-circuitid)
  17. s\" \r\n" (expect&skip) parser-remaining ;
  18. \ TODO: removeme
  19. : proxyline-test1 ( -- )
  20. s\" PROXY TCP6 fc00:dead:beef:4dad::ffff:ffff ::1 65535 42\r\n" proxyline>circuitid
  21. 2drop 4294967295 <> abort" ASDF" ;
  22. : proxyline-test2 ( -- )
  23. s\" PROXY TCP6 fc00:dead:beef:4dad::AABB:CCDD ::1 65535 42\r\n" proxyline>circuitid
  24. 2drop 2864434397 <> abort" ASDF" ;
  25. proxyline-test1
  26. proxyline-test2