From 9d34cd99561d793b8cd73cf0156a14a82a6e3ada Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 29 Jan 2018 19:48:21 +0100 Subject: [PATCH 1/3] Add FORCEDENDLINE default exception for later Tinyfugue with TTYPE support --- evennia/server/portal/ttype.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/evennia/server/portal/ttype.py b/evennia/server/portal/ttype.py index 4279c52dd6..3102762edf 100644 --- a/evennia/server/portal/ttype.py +++ b/evennia/server/portal/ttype.py @@ -116,17 +116,22 @@ class Ttype(object): if cupper.startswith("MUDLET"): # supports xterm256 stably since 1.1 (2010?) xterm256 = cupper.split("MUDLET", 1)[1].strip() >= "1.1" - else: - xterm256 = (cupper.startswith("XTERM") or - cupper.endswith("-256COLOR") or - cupper in ("ATLANTIS", # > 0.9.9.0 (aug 2009) - "CMUD", # > 3.04 (mar 2009) - "KILDCLIENT", # > 2.2.0 (sep 2005) - "MUDLET", # > beta 15 (sep 2009) - "MUSHCLIENT", # > 4.02 (apr 2007) - "PUTTY", # > 0.58 (apr 2005) - "BEIP", # > 2.00.206 (late 2009) (BeipMu) - "POTATO")) # > 2.00 (maybe earlier) + + if cupper.startswith("TINYFUGUE"): + # tinyfugue expects _GA + endline + self.protocol.protocol_flags["FORCEDENDLINE"] = True + + if (cupper.startswith("XTERM") or + cupper.endswith("-256COLOR") or + cupper in ("ATLANTIS", # > 0.9.9.0 (aug 2009) + "CMUD", # > 3.04 (mar 2009) + "KILDCLIENT", # > 2.2.0 (sep 2005) + "MUDLET", # > beta 15 (sep 2009) + "MUSHCLIENT", # > 4.02 (apr 2007) + "PUTTY", # > 0.58 (apr 2005) + "BEIP", # > 2.00.206 (late 2009) (BeipMu) + "POTATO")): # > 2.00 (maybe earlier) + xterm256 = True # all clients supporting TTYPE at all seem to support ANSI self.protocol.protocol_flags['ANSI'] = True From 3a3f2bfe9e46f01c1328e38291e84974bcf85679 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 29 Jan 2018 20:03:54 +0100 Subject: [PATCH 2/3] Further refactor when an extra endline is added with the FORCEDENDLINE option --- evennia/server/portal/telnet.py | 8 +++----- evennia/server/portal/ttype.py | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/evennia/server/portal/telnet.py b/evennia/server/portal/telnet.py index 17044ae110..558475cd34 100644 --- a/evennia/server/portal/telnet.py +++ b/evennia/server/portal/telnet.py @@ -234,12 +234,10 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session): # escape IAC in line mode, and correctly add \r\n (the TELNET end-of-line) line = line.replace(IAC, IAC + IAC) line = line.replace('\n', '\r\n') - if not self.protocol_flags.get("NOGOAHEAD", True): - if self.protocol_flags.get("FORCEDENDLINE", False): - line += "\r\n" - line += IAC + GA - elif not line.endswith("\r\n"): + if not line.endswith("\r\n") and self.protocol_flags.get("FORCEDENDLINE", True): line += "\r\n" + if not self.protocol_flags.get("NOGOAHEAD", True): + line += IAC + GA return self.transport.write(mccp_compress(self, line)) # Session hooks diff --git a/evennia/server/portal/ttype.py b/evennia/server/portal/ttype.py index 3102762edf..45a60d625b 100644 --- a/evennia/server/portal/ttype.py +++ b/evennia/server/portal/ttype.py @@ -113,6 +113,7 @@ class Ttype(object): # only support after a certain version, but all support # it since at least 4 years. We assume recent client here for now. cupper = clientname.upper() + xterm256 = False if cupper.startswith("MUDLET"): # supports xterm256 stably since 1.1 (2010?) xterm256 = cupper.split("MUDLET", 1)[1].strip() >= "1.1" From 0aff168f3ea3e412f1a5daa0adf6848faf50ac44 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 29 Jan 2018 20:22:35 +0100 Subject: [PATCH 3/3] Add xterm256 exception for tinyfugue --- evennia/server/portal/ttype.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/evennia/server/portal/ttype.py b/evennia/server/portal/ttype.py index 45a60d625b..b07384ab26 100644 --- a/evennia/server/portal/ttype.py +++ b/evennia/server/portal/ttype.py @@ -131,7 +131,9 @@ class Ttype(object): "MUSHCLIENT", # > 4.02 (apr 2007) "PUTTY", # > 0.58 (apr 2005) "BEIP", # > 2.00.206 (late 2009) (BeipMu) - "POTATO")): # > 2.00 (maybe earlier) + "POTATO", # > 2.00 (maybe earlier) + "TINYFUGUE" # > 4.x (maybe earlier) + )): xterm256 = True # all clients supporting TTYPE at all seem to support ANSI