X-Git-Url: https://mudpy.org/gitweb?a=blobdiff_plain;f=lib%2Fmudpy%2Ftelnet.py;h=9feac03c2d3d5fb62163788b7c20bd933b4e0048;hb=49f76e99340119c5bd403a05913531aed07e5e9b;hp=3ce73a308b85ef390ae1d3c9f57c539ef38b8483;hpb=a9b9405dd3f37bea336b297d9cef848868591557;p=mudpy.git diff --git a/lib/mudpy/telnet.py b/lib/mudpy/telnet.py index 3ce73a3..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 mudpy.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:]