Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Unified Diff: third_party/twisted_8_1/twisted/protocols/telnet.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/twisted_8_1/twisted/protocols/sux.py ('k') | third_party/twisted_8_1/twisted/protocols/toc.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/twisted_8_1/twisted/protocols/telnet.py
diff --git a/third_party/twisted_8_1/twisted/protocols/telnet.py b/third_party/twisted_8_1/twisted/protocols/telnet.py
deleted file mode 100644
index 592d93aa322f6178f4badaf653e5035adfd82bdb..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/protocols/telnet.py
+++ /dev/null
@@ -1,325 +0,0 @@
-
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-"""TELNET implementation, with line-oriented command handling.
-"""
-
-import warnings
-warnings.warn(
- "As of Twisted 2.1, twisted.protocols.telnet is deprecated. "
- "See twisted.conch.telnet for the current, supported API.",
- DeprecationWarning,
- stacklevel=2)
-
-
-# System Imports
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
-
-# Twisted Imports
-from twisted import copyright
-from twisted.internet import protocol
-
-# Some utility chars.
-ESC = chr(27) # ESC for doing fanciness
-BOLD_MODE_ON = ESC+"[1m" # turn bold on
-BOLD_MODE_OFF= ESC+"[m" # no char attributes
-
-
-# Characters gleaned from the various (and conflicting) RFCs. Not all of these are correct.
-
-NULL = chr(0) # No operation.
-LF = chr(10) # Moves the printer to the
- # next print line, keeping the
- # same horizontal position.
-CR = chr(13) # Moves the printer to the left
- # margin of the current line.
-BEL = chr(7) # Produces an audible or
- # visible signal (which does
- # NOT move the print head).
-BS = chr(8) # Moves the print head one
- # character position towards
- # the left margin.
-HT = chr(9) # Moves the printer to the
- # next horizontal tab stop.
- # It remains unspecified how
- # either party determines or
- # establishes where such tab
- # stops are located.
-VT = chr(11) # Moves the printer to the
- # next vertical tab stop. It
- # remains unspecified how
- # either party determines or
- # establishes where such tab
- # stops are located.
-FF = chr(12) # Moves the printer to the top
- # of the next page, keeping
- # the same horizontal position.
-SE = chr(240) # End of subnegotiation parameters.
-NOP= chr(241) # No operation.
-DM = chr(242) # "Data Mark": The data stream portion
- # of a Synch. This should always be
- # accompanied by a TCP Urgent
- # notification.
-BRK= chr(243) # NVT character Break.
-IP = chr(244) # The function Interrupt Process.
-AO = chr(245) # The function Abort Output
-AYT= chr(246) # The function Are You There.
-EC = chr(247) # The function Erase Character.
-EL = chr(248) # The function Erase Line
-GA = chr(249) # The Go Ahead signal.
-SB = chr(250) # Indicates that what follows is
- # subnegotiation of the indicated
- # option.
-WILL = chr(251) # Indicates the desire to begin
- # performing, or confirmation that
- # you are now performing, the
- # indicated option.
-WONT = chr(252) # Indicates the refusal to perform,
- # or continue performing, the
- # indicated option.
-DO = chr(253) # Indicates the request that the
- # other party perform, or
- # confirmation that you are expecting
- # the other party to perform, the
- # indicated option.
-DONT = chr(254) # Indicates the demand that the
- # other party stop performing,
- # or confirmation that you are no
- # longer expecting the other party
- # to perform, the indicated option.
-IAC = chr(255) # Data Byte 255.
-
-# features
-
-ECHO = chr(1) # User-to-Server: Asks the server to send
- # Echos of the transmitted data.
-
- # Server-to User: States that the server is
- # sending echos of the transmitted data.
- # Sent only as a reply to ECHO or NO ECHO.
-
-SUPGA = chr(3) # Supress Go Ahead...? "Modern" telnet servers
- # are supposed to do this.
-
-LINEMODE = chr(34) # I don't care that Jon Postel is dead.
-
-HIDE = chr(133) # The intention is that a server will send
- # this signal to a user system which is
- # echoing locally (to the user) when the user
- # is about to type something secret (e.g. a
- # password). In this case, the user system
- # is to suppress local echoing or overprint
- # the input (or something) until the server
- # sends a NOECHO signal. In situations where
- # the user system is not echoing locally,
- # this signal must not be sent by the server.
-
-
-NOECHO= chr(131) # User-to-Server: Asks the server not to
- # return Echos of the transmitted data.
- #
- # Server-to-User: States that the server is
- # not sending echos of the transmitted data.
- # Sent only as a reply to ECHO or NO ECHO,
- # or to end the hide your input.
-
-
-
-iacBytes = {
- DO: 'DO',
- DONT: 'DONT',
- WILL: 'WILL',
- WONT: 'WONT',
- IP: 'IP'
- }
-
-def multireplace(st, dct):
- for k, v in dct.items():
- st = st.replace(k, v)
- return st
-
-class Telnet(protocol.Protocol):
- """I am a Protocol for handling Telnet connections. I have two
- sets of special methods, telnet_* and iac_*.
-
- telnet_* methods get called on every line sent to me. The method
- to call is decided by the current mode. The initial mode is 'User';
- this means that telnet_User is the first telnet_* method to be called.
- All telnet_* methods should return a string which specifies the mode
- to go into next; thus dictating which telnet_* method to call next.
- For example, the default telnet_User method returns 'Password' to go
- into Password mode, and the default telnet_Password method returns
- 'Command' to go into Command mode.
-
- The iac_* methods are less-used; they are called when an IAC telnet
- byte is received. You can define iac_DO, iac_DONT, iac_WILL, iac_WONT,
- and iac_IP methods to do what you want when one of these bytes is
- received."""
-
-
- gotIAC = 0
- iacByte = None
- lastLine = None
- buffer = ''
- echo = 0
- delimiters = ['\r\n', '\r\000']
- mode = "User"
-
- def write(self, data):
- """Send the given data over my transport."""
- self.transport.write(data)
-
-
- def connectionMade(self):
- """I will write a welcomeMessage and loginPrompt to the client."""
- self.write(self.welcomeMessage() + self.loginPrompt())
-
- def welcomeMessage(self):
- """Override me to return a string which will be sent to the client
- before login."""
- x = self.factory.__class__
- return ("\r\n" + x.__module__ + '.' + x.__name__ +
- '\r\nTwisted %s\r\n' % copyright.version
- )
-
- def loginPrompt(self):
- """Override me to return a 'login:'-type prompt."""
- return "username: "
-
- def iacSBchunk(self, chunk):
- pass
-
- def iac_DO(self, feature):
- pass
-
- def iac_DONT(self, feature):
- pass
-
- def iac_WILL(self, feature):
- pass
-
- def iac_WONT(self, feature):
- pass
-
- def iac_IP(self, feature):
- pass
-
- def processLine(self, line):
- """I call a method that looks like 'telnet_*' where '*' is filled
- in by the current mode. telnet_* methods should return a string which
- will become the new mode. If None is returned, the mode will not change.
- """
- mode = getattr(self, "telnet_"+self.mode)(line)
- if mode is not None:
- self.mode = mode
-
- def telnet_User(self, user):
- """I take a username, set it to the 'self.username' attribute,
- print out a password prompt, and switch to 'Password' mode. If
- you want to do something else when the username is received (ie,
- create a new user if the user doesn't exist), override me."""
- self.username = user
- self.write(IAC+WILL+ECHO+"password: ")
- return "Password"
-
- def telnet_Password(self, paswd):
- """I accept a password as an argument, and check it with the
- checkUserAndPass method. If the login is successful, I call
- loggedIn()."""
- self.write(IAC+WONT+ECHO+"*****\r\n")
- try:
- checked = self.checkUserAndPass(self.username, paswd)
- except:
- return "Done"
- if not checked:
- return "Done"
- self.loggedIn()
- return "Command"
-
- def telnet_Command(self, cmd):
- """The default 'command processing' mode. You probably want to
- override me."""
- return "Command"
-
- def processChunk(self, chunk):
- """I take a chunk of data and delegate out to telnet_* methods
- by way of processLine. If the current mode is 'Done', I'll close
- the connection. """
- self.buffer = self.buffer + chunk
-
- #yech.
- for delim in self.delimiters:
- idx = self.buffer.find(delim)
- if idx != -1:
- break
-
- while idx != -1:
- buf, self.buffer = self.buffer[:idx], self.buffer[idx+2:]
- self.processLine(buf)
- if self.mode == 'Done':
- self.transport.loseConnection()
-
- for delim in self.delimiters:
- idx = self.buffer.find(delim)
- if idx != -1:
- break
-
- def dataReceived(self, data):
- chunk = StringIO()
- # silly little IAC state-machine
- for char in data:
- if self.gotIAC:
- # working on an IAC request state
- if self.iacByte:
- # we're in SB mode, getting a chunk
- if self.iacByte == SB:
- if char == SE:
- self.iacSBchunk(chunk.getvalue())
- chunk = StringIO()
- del self.iacByte
- del self.gotIAC
- else:
- chunk.write(char)
- else:
- # got all I need to know state
- try:
- getattr(self, 'iac_%s' % iacBytes[self.iacByte])(char)
- except KeyError:
- pass
- del self.iacByte
- del self.gotIAC
- else:
- # got IAC, this is my W/W/D/D (or perhaps sb)
- self.iacByte = char
- elif char == IAC:
- # Process what I've got so far before going into
- # the IAC state; don't want to process characters
- # in an inconsistent state with what they were
- # received in.
- c = chunk.getvalue()
- if c:
- why = self.processChunk(c)
- if why:
- return why
- chunk = StringIO()
- self.gotIAC = 1
- else:
- chunk.write(char)
- # chunks are of a relatively indeterminate size.
- c = chunk.getvalue()
- if c:
- why = self.processChunk(c)
- if why:
- return why
-
- def loggedIn(self):
- """Called after the user succesfully logged in.
-
- Override in subclasses.
- """
- pass
« no previous file with comments | « third_party/twisted_8_1/twisted/protocols/sux.py ('k') | third_party/twisted_8_1/twisted/protocols/toc.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698