X-Git-Url: https://mudpy.org/gitweb?a=blobdiff_plain;f=lib%2Fmudpy%2Ftelnet.py;h=9feac03c2d3d5fb62163788b7c20bd933b4e0048;hb=70d0f64a6079d83f8937a51c23d4c721cbb6672c;hp=d6abd5a6ba4bb73d3d5255be1de17f75f5187927;hpb=45860f93b7e1c505359917f1ed90562a0b0d31ff;p=mudpy.git diff --git a/lib/mudpy/telnet.py b/lib/mudpy/telnet.py index d6abd5a..9feac03 100644 --- a/lib/mudpy/telnet.py +++ b/lib/mudpy/telnet.py @@ -1,10 +1,11 @@ -# -*- coding: utf-8 -*- """Telnet functions and constants for the mudpy engine.""" -# Copyright (c) 2004-2012 Jeremy Stanley . Permission +# Copyright (c) 2004-2015 Jeremy Stanley . Permission # to use, copy, modify, and distribute this software is granted under # terms provided in the LICENSE file distributed with this software. +import mudpy + # telnet options (from bsd's arpa/telnet.h since telnetlib's are ambiguous) TELOPT_BINARY = 0 # transmit 8-bit data by the receiver (rfc 856) TELOPT_ECHO = 1 # echo received data back to the sender (rfc 857) @@ -49,8 +50,7 @@ US = 1 def telnet_proto(*arguments): """Return a concatenated series of Telnet protocol commands.""" - # (this will need to be byte type during 2to3 migration) - return "".join([chr(x) for x in arguments]) + return bytes((arguments)) def send_command(user, *command): @@ -59,8 +59,7 @@ def send_command(user, *command): def is_enabled(user, telopt, party, state=YES): - """Returns True if the indicated Telnet option is enabled, False if - not.""" + """Indicates whether a specified Telnet option is enabled.""" if (telopt, party) in user.telopts and user.telopts[ (telopt, party) ] is state: @@ -87,8 +86,7 @@ def enable(user, telopt, party): def disable(user, telopt, party): - """Negotiates disabling a Telnet option for the indicated user's - socket.""" + """Negotiates disabling a Telnet option for the user's socket.""" if party is HIM: txneg = DONT else: @@ -106,7 +104,6 @@ def disable(user, telopt, party): def negotiate_telnet_options(user): """Reply to and remove telnet negotiation options from partial_input.""" - import misc # make a local copy to play with text = user.partial_input @@ -126,8 +123,7 @@ def negotiate_telnet_options(user): break # the byte following the IAC is our command - # (this will need to be byte type during 2to3 migration) - command = ord(text[position + 1]) + command = text[position+1] # replace a double (literal) IAC if there's an LF later if command is IAC: @@ -139,8 +135,7 @@ def negotiate_telnet_options(user): # implement an RFC 1143 option negotiation queue here elif len_text > position + 2 and WILL <= command <= DONT: - # this will need to be byte type during 2to3 migration - telopt = ord(text[position + 2]) + telopt = text[position+2] if telopt in supported: if command <= WONT: party = HIM @@ -184,12 +179,10 @@ def negotiate_telnet_options(user): # subnegotiation options elif len_text > position + 4 and command is SB: - # this will need to be byte type during 2to3 migration telopt = ord(text[position + 2]) if telopt is TELOPT_NAWS: - # this will need to be byte type during 2to3 migration - user.columns = ord(text[position + 3]) * \ - 256 + ord(text[position + 4]) + user.columns = ( + ord(text[position + 3]) * 256 + ord(text[position + 4])) end_subnegotiation = text.find(telnet_proto(IAC, SE), position) if end_subnegotiation > 0: text = text[:position] + text[end_subnegotiation + 2:] @@ -198,7 +191,7 @@ def negotiate_telnet_options(user): # otherwise, strip out a two-byte IAC command elif len_text > position + 2: - misc.log("Unknown Telnet IAC command %s ignored." % command) + mudpy.misc.log("Unknown Telnet IAC command %s ignored." % command) text = text[:position] + text[position + 2:] # and this means we got the begining of an IAC