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 Summary |
| |
connectionFailed(self)
(Deprecated) (inherited from Protocol)
|
| |
connectionLost(self,
reason)
Called when the connection is shut down. (inherited from Protocol)
|
| |
connectionMade(self)
I will write a welcomeMessage and loginPrompt to the client. |
| |
dataReceived(self,
data)
Called whenever data is received. |
| |
iac_DO(self,
feature)
|
| |
iac_DONT(self,
feature)
|
| |
iac_IP(self,
feature)
|
| |
iac_WILL(self,
feature)
|
| |
iac_WONT(self,
feature)
|
| |
iacSBchunk(self,
chunk)
|
| |
loggedIn(self)
Called after the user succesfully logged in. |
| |
loginPrompt(self)
Override me to return a 'login:'-type prompt. |
| |
processChunk(self,
chunk)
I take a chunk of data and delegate out to telnet_* methods by way of
processLine. |
| |
processLine(self,
line)
I call a method that looks like 'telnet_*' where '*' is filled in by
the current mode. |
| |
telnet_Command(self,
cmd)
The default 'command processing' mode. |
| |
telnet_Password(self,
paswd)
I accept a password as an argument, and check it with the
checkUserAndPass method. |
| |
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. |
| |
welcomeMessage(self)
Override me to return a string which will be sent to the client before
login. |
| |
write(self,
data)
Send the given data over my transport. |