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))