1 from twisted.internet import protocol, reactor, defer, endpoints
2 from twisted.protocols import basic
3
4 class FingerProtocol(basic.LineReceiver):
5 def lineReceived(self, user):
6 d = self.factory.getUser(user)
7
8 def onError(err):
9 return 'Internal error in server'
10 d.addErrback(onError)
11
12 def writeResponse(message):
13 self.transport.write(message + b'\r\n')
14 self.transport.loseConnection()
15 d.addCallback(writeResponse)
16
17 class FingerFactory(protocol.ServerFactory):
18 protocol = FingerProtocol
19
20 def __init__(self, users):
21 self.users = users
22
23 def getUser(self, user):
24 return defer.succeed(self.users.get(user, b"No such user"))
25
26 fingerEndpoint = endpoints.serverFromString(reactor, "tcp:1079")
27 fingerEndpoint.listen(FingerFactory({b'moshez': b'Happy and well'}))
28 reactor.run()
1 from twisted.application import service, strports
2 from twisted.internet import protocol, reactor, defer
3 from twisted.protocols import basic
4
5 class FingerProtocol(basic.LineReceiver):
6 def lineReceived(self, user):
7 d = self.factory.getUser(user)
8
9 def onError(err):
10 return 'Internal error in server'
11 d.addErrback(onError)
12
13 def writeResponse(message):
14 self.transport.write(message + b'\r\n')
15 self.transport.loseConnection()
16 d.addCallback(writeResponse)
17
18 class FingerFactory(protocol.ServerFactory):
19 protocol = FingerProtocol
20
21 def __init__(self, users):
22 self.users = users
23
24 def getUser(self, user):
25 return defer.succeed(self.users.get(user, b"No such user"))
26
27 application = service.Application('finger', uid=1, gid=1)
28 factory = FingerFactory({b'moshez': b'Happy and well'})
29 strports.service("tcp:79", factory, reactor=reactor).setServiceParent(
30 service.IServiceCollection(application))