1
# Copyright (c) Twisted Matrix Laboratories.
2
# See LICENSE for details.
4
if __name__ == '__main__':
5
# Avoid using any names defined in the "__main__" module.
6
from pbecho import main
7
raise SystemExit(main())
9
from zope.interface import implements
11
from twisted.spread import pb
12
from twisted.cred.portal import IRealm
14
class DefinedError(pb.Error):
18
class SimplePerspective(pb.Avatar):
20
def perspective_echo(self, text):
24
def perspective_error(self):
25
raise DefinedError("exception!")
28
print self, "logged out"
34
def requestAvatar(self, avatarId, mind, *interfaces):
35
if pb.IPerspective in interfaces:
36
avatar = SimplePerspective()
37
return pb.IPerspective, avatar, avatar.logout
39
raise NotImplementedError("no interface")
43
from twisted.internet import reactor
44
from twisted.cred.portal import Portal
45
from twisted.cred.checkers import InMemoryUsernamePasswordDatabaseDontUse
46
portal = Portal(SimpleRealm())
47
checker = InMemoryUsernamePasswordDatabaseDontUse()
48
checker.addUser("guest", "guest")
49
portal.registerChecker(checker)
50
reactor.listenTCP(pb.portno, pb.PBServerFactory(portal))