1
# But let's try and fix setting away messages, shall we?
2
from twisted.application import internet, service
3
from twisted.internet import protocol, reactor, defer
4
from twisted.protocols import basic
6
class FingerProtocol(basic.LineReceiver):
7
def lineReceived(self, user):
8
d = self.factory.getUser(user)
11
return 'Internal error in server'
14
def writeResponse(message):
15
self.transport.write(message + '\r\n')
16
self.transport.loseConnection()
17
d.addCallback(writeResponse)
19
class FingerFactory(protocol.ServerFactory):
20
protocol = FingerProtocol
22
def __init__(self, **kwargs):
25
def getUser(self, user):
26
return defer.succeed(self.users.get(user, "No such user"))
28
class FingerSetterProtocol(basic.LineReceiver):
29
def connectionMade(self):
32
def lineReceived(self, line):
33
self.lines.append(line)
35
def connectionLost(self, reason):
37
status = self.lines[1]
38
self.factory.setUser(user, status)
40
class FingerSetterFactory(protocol.ServerFactory):
41
protocol = FingerSetterProtocol
43
def __init__(self, fingerFactory):
44
self.fingerFactory = fingerFactory
46
def setUser(self, user, status):
47
self.fingerFactory.users[user] = status
49
ff = FingerFactory(moshez='Happy and well')
50
fsf = FingerSetterFactory(ff)
52
application = service.Application('finger', uid=1, gid=1)
53
serviceCollection = service.IServiceCollection(application)
54
internet.TCPServer(79,ff).setServiceParent(serviceCollection)
55
internet.TCPServer(1079,fsf).setServiceParent(serviceCollection)