1
1
# Read username, output from factory interfacing to web, drop connections
2
3
from twisted.internet import protocol, reactor, defer, utils
3
4
from twisted.protocols import basic
4
5
from twisted.web import client
5
7
class FingerProtocol(basic.LineReceiver):
6
8
def lineReceived(self, user):
7
self.factory.getUser(user
8
).addErrback(lambda _: "Internal error in server"
9
).addCallback(lambda m:
10
(self.transport.write(m+"\r\n"),
11
self.transport.loseConnection()))
9
d = self.factory.getUser(user)
12
return 'Internal error in server'
15
def writeResponse(message):
16
self.transport.write(message + '\r\n')
17
self.transport.loseConnection()
18
d.addCallback(writeResponse)
12
20
class FingerFactory(protocol.ServerFactory):
13
21
protocol = FingerProtocol
14
def __init__(self, prefix): self.prefix=prefix
23
def __init__(self, prefix):
15
26
def getUser(self, user):
16
27
return client.getPage(self.prefix+user)
17
29
reactor.listenTCP(1079, FingerFactory(prefix='http://livejournal.com/~'))