X-Git-Url: https://mudpy.org/gitweb?a=blobdiff_plain;f=lib%2Fmudpy%2Ftelnet.py;h=dfac1ee97fdf72c499dc8d66cc83cebace872850;hb=bca875d67e9f4fad50bf47a6c9695687a6e95778;hp=043c86be3a7cf80277c53b0dc28913b15fd4f69c;hpb=a9c695831c3cce25df4c487100525c618a926b3b;p=mudpy.git diff --git a/lib/mudpy/telnet.py b/lib/mudpy/telnet.py index 043c86b..dfac1ee 100644 --- a/lib/mudpy/telnet.py +++ b/lib/mudpy/telnet.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- -u"""Telnet functions and constants for the mudpy engine.""" +"""Telnet functions and constants for the mudpy engine.""" -# Copyright (c) 2004-2011 Jeremy Stanley . Permission +# Copyright (c) 2004-2014 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) @@ -48,18 +50,17 @@ US = 1 def telnet_proto(*arguments): - u"""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 a concatenated series of Telnet protocol commands.""" + return bytes((arguments)) def send_command(user, *command): - u"""Sends a Telnet command string to the specified user's socket.""" + """Sends a Telnet command string to the specified user's socket.""" user.send(telnet_proto(IAC, *command), raw=True) def is_enabled(user, telopt, party, state=YES): - u"""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: @@ -69,7 +70,7 @@ def is_enabled(user, telopt, party, state=YES): def enable(user, telopt, party): - u"""Negotiates enabling a Telnet option for the indicated user's socket.""" + """Negotiates enabling a Telnet option for the indicated user's socket.""" if party is HIM: txpos = DO else: @@ -86,7 +87,7 @@ def enable(user, telopt, party): def disable(user, telopt, party): - u"""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: @@ -103,8 +104,7 @@ def disable(user, telopt, party): def negotiate_telnet_options(user): - u"""Reply to and remove telnet negotiation options from partial_input.""" - import misc + """Reply to and remove telnet negotiation options from partial_input.""" # make a local copy to play with text = user.partial_input @@ -124,8 +124,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: @@ -137,8 +136,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 @@ -182,12 +180,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:] @@ -196,7 +192,7 @@ def negotiate_telnet_options(user): # otherwise, strip out a two-byte IAC command elif len_text > position + 2: - misc.log(u"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