Part of twisted.protocols.telnet View Source View In Hierarchy
Known subclasses: twisted.manhole.telnet.Shell
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.
|Method||write||Send the given data over my transport.|
|Method||connectionMade||I will write a welcomeMessage and loginPrompt to the client.|
|Method||welcomeMessage||Override me to return a string which will be sent to the client before login.|
|Method||loginPrompt||Override me to return a 'login:'-type prompt.|
|Method||processLine||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.|
|Method||telnet_Password||I accept a password as an argument, and check it with the checkUserAndPass method. If the login is successful, I call loggedIn().|
|Method||telnet_Command||The default 'command processing' mode. You probably want to override me.|
|Method||processChunk||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.|
|Method||dataReceived||Called whenever data is received.|
|Method||loggedIn||Called after the user succesfully logged in.|
Inherited from Protocol:
|Method||connectionLost||Called when the connection is shut down.|
|Method||makeConnection||Make a connection to a transport and a server.|
Called whenever data is received.Use this method to translate to a higher-level message. Usually, some callback will be made upon the receipt of each complete protocol message.
|Parameters||data||a string of indeterminate length. Please keep in mind that you will probably need to buffer some data, as partial (or multiple) protocol messages may be received! I recommend that unit tests for protocols call through to this method with differing chunk sizes, down to one byte at a time.|