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. |