123456789101112131415161718192021222324252627282930313233343536373839404142 |
- # Copyright (c) Twisted Matrix Laboratories.
- # See LICENSE for details.
-
-
- """The Finger User Information Protocol (RFC 1288)"""
-
- from twisted.protocols import basic
-
-
- class Finger(basic.LineReceiver):
- def lineReceived(self, line):
- parts = line.split()
- if not parts:
- parts = [b""]
- if len(parts) == 1:
- slash_w = 0
- else:
- slash_w = 1
- user = parts[-1]
- if b"@" in user:
- hostPlace = user.rfind(b"@")
- user = user[:hostPlace]
- host = user[hostPlace + 1 :]
- return self.forwardQuery(slash_w, user, host)
- if user:
- return self.getUser(slash_w, user)
- else:
- return self.getDomain(slash_w)
-
- def _refuseMessage(self, message):
- self.transport.write(message + b"\n")
- self.transport.loseConnection()
-
- def forwardQuery(self, slash_w, user, host):
- self._refuseMessage(b"Finger forwarding service denied")
-
- def getDomain(self, slash_w):
- self._refuseMessage(b"Finger online list denied")
-
- def getUser(self, slash_w, user):
- self.transport.write(b"Login: " + user + b"\n")
- self._refuseMessage(b"No such user")
|