(2, "Whom would you like to awaken?", ""),
)
+test_crlf_eol = (
+ # Send a CR+LF at the end of the line instead of the default CR+NUL,
+ # to make sure they're treated the same
+ (2, "> ", b"say I use CR+LF as my EOL, not CR+NUL.\r\n"),
+ (2, r'You say, "I use CR\+LF as my EOL, not CR\+NUL\.".*> ', ""),
+)
+
test_telnet_iac = (
# Send a double (escaped) IAC byte within other text, which should get
# unescaped and deduplicated to a single \xff in the buffer and then
# the line of input discarded as a non-ASCII sequence
- (2, "> ", b"say argle\xff\xffbargle\r\n"),
+ (2, "> ", b"say argle\xff\xffbargle\r\0"),
(2, r"Non-ASCII characters from admin: b'say argle\\xffbargle'.*> ", ""),
)
test_telnet_unknown = (
# Send an unsupported negotiation command #127 which should get filtered
# from the line of input
- (2, "> ", b"say glop\xff\x7fglyf\r\n"),
+ (2, "> ", b"say glop\xff\x7fglyf\r\0"),
(2, r'Unknown Telnet IAC command 127 ignored\..*"Glopglyf\.".*> ', ""),
)
(test_actor_disappears, "actor spontaneous disappearance"),
(test_account1_teardown, "second account teardown"),
(test_admin_setup, "admin account setup"),
+ (test_crlf_eol, "send crlf from the client as eol"),
(test_telnet_iac, "escape stray telnet iac bytes"),
(test_telnet_unknown, "strip unknown telnet command"),
(test_admin_restriction, "restricted admin commands"),
break
if type(answer) is str:
tlog("luser%s sending: %s" % (conversant, answer), quiet=True)
- lusers[conversant].write(("%s\r\n" % answer).encode("utf-8"))
+ lusers[conversant].write(("%s\r\0" % answer).encode("utf-8"))
captures[conversant] += "%s\r\n" % answer
elif type(answer) is bytes:
tlog("luser%s sending raw bytes: %s" % (conversant, answer),