65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
"""
|
|
|
|
SUPPRESS-GO-AHEAD
|
|
|
|
This supports suppressing or activating Evennia
|
|
the GO-AHEAD telnet operation after every server reply.
|
|
If the client sends no explicit DONT SUPRESS GO-AHEAD,
|
|
Evennia will default to supressing it since many clients
|
|
will fail to use it and has no knowledge of this standard.
|
|
|
|
It is set as the NOGOAHEAD protocol_flag option.
|
|
|
|
http://www.faqs.org/rfcs/rfc858.html
|
|
|
|
"""
|
|
from builtins import object
|
|
SUPPRESS_GA = b'\x03'
|
|
|
|
# default taken from telnet specification
|
|
|
|
# try to get the customized mssp info, if it exists.
|
|
|
|
|
|
class SuppressGA(object):
|
|
"""
|
|
Implements the SUPRESS-GO-AHEAD protocol. Add this to a variable on the telnet
|
|
protocol to set it up.
|
|
|
|
"""
|
|
|
|
def __init__(self, protocol):
|
|
"""
|
|
Initialize suppression of GO-AHEADs.
|
|
|
|
Args:
|
|
protocol (Protocol): The active protocol instance.
|
|
|
|
"""
|
|
self.protocol = protocol
|
|
|
|
self.protocol.protocol_flags["NOGOAHEAD"] = True
|
|
# tell the client that we prefer to suppress GA ...
|
|
self.protocol.will(SUPPRESS_GA).addCallbacks(self.will_suppress_ga, self.wont_suppress_ga)
|
|
|
|
def wont_suppress_ga(self, option):
|
|
"""
|
|
Called when client requests to not suppress GA.
|
|
|
|
Args:
|
|
option (Option): Not used.
|
|
|
|
"""
|
|
self.protocol.protocol_flags["NOGOAHEAD"] = False
|
|
self.protocol.handshake_done()
|
|
|
|
def will_suppress_ga(self, option):
|
|
"""
|
|
Client will suppress GA
|
|
|
|
Args:
|
|
option (Option): Not used.
|
|
|
|
"""
|
|
self.protocol.protocol_flags["NOGOAHEAD"] = True
|
|
self.protocol.handshake_done()
|