Guest User

Untitled

a guest
Apr 8th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.20 KB | None | 0 0
  1. class LoginForm(rend.Page):
  2.     """ Minimalist Login Page"""
  3.     addSlash = True
  4.     docFactory = loaders.stan(
  5.         T.html[
  6.             T.head[
  7.                 T.title["Please Login"]
  8.             ],
  9.             T.body[
  10.                 T.form(action=guard.LOGIN_AVATAR, method="post")[
  11.                     T.table[
  12.                         T.tr[
  13.                             T.td[ "Username:" ],
  14.                             T.td[ T.input(type='text', name='username') ],
  15.                         ],
  16.                         T.tr[
  17.                             T.td[ "Password:" ],
  18.                             T.td[ T.input(type='password', name='password') ],
  19.                         ]
  20.                     ],
  21.                     T.input(type='submit'),
  22.                 ]
  23.             ]
  24.         ])
  25. class opsviewWebChecker:
  26.     implements(checkers.ICredentialsChecker)
  27.     credentialInterfaces = (IUsernamePassword)
  28.    
  29.     def __init__(self):
  30.         pass
  31.    
  32.     def requestAvatarId(self, credentials):
  33.         uname = credentials.username
  34.         passwd = credentials.password
  35.         sub = subscriber.addSubscriber(uname, passwd)
  36.         auth_result = sub.authenticateNodes()
  37.         if auth_result:
  38.             return defer.succeed(uname)
  39.         else:
  40.             return defer.fail(credError.UnauthorizedLogin("Incorrect Login"))
  41.        
  42.        
  43. class opsviewRealm(object):
  44.     implements(IRealm)
  45.    
  46.     def __init__(self, pageResource):
  47.         self.pageResource = pageResource
  48.        
  49.     def requestAvatar(self, avatarId, mind, *interfaces):
  50.         for iface in interfaces:
  51.             if avatarId is checkers.ANONYMOUS:
  52.                 resc = LoginForm()
  53.                 resc.realm = self
  54.                 return (inevow.IResource, resc, lambda: None)
  55.             else:
  56.                 resc = self.pageResource
  57.                 resc.realm = self
  58.                 return (inevow.IResource, resc, lambda: None)
  59.         raise NotImplementedError()
  60.    
  61. class RootPage(rend.Page):
  62.    
  63.     def __init__(self, *args, **kwargs):
  64.         rend.Page.__init__(self, *args, **kwargs)
  65.        
  66.     addSlash = True
  67.     docFactory = loaders.stan(
  68.         T.html[
  69.             T.head[
  70.                 T.title["Main Page"]
  71.             ],
  72.             T.body["logged in!"]
  73.         ]
  74.     )
  75.  
  76. def wrapAuthorized(site):
  77.     site = inevow.IResource(site)
  78.     realmObject = opsviewRealm(site)
  79.     portalObject = Portal(realmObject)
  80.     myChecker = opsviewWebChecker()
  81.     #Allow anonymous access to the login page
  82.     portalObject.registerChecker(
  83.         checkers.AllowAnonymousAccess(), IAnonymous
  84.     )
  85.     #Allow authenticated users to the main page
  86.     portalObject.registerChecker(myChecker)
  87.     site = appserver.NevowSite(resource=guard.SessionWrapper(portalObject))
  88.     return site
  89.  
  90. site = wrapAuthorized(RootPage())
  91.  
  92. def getService():
  93.     service = internet.TCPServer(httpport, site)
  94.     service.setName("WEBService")
  95.     return service
  96.  
  97.  
  98. --------------------
  99.  
  100.  
  101. <type 'exceptions.AttributeError'>: 'str' object has no attribute 'providedBy'
  102. /usr/local/lib/python2.7/site-packages/Twisted-11.0.0-py2.7-linux-x86_64.egg/twisted/internet/defer.py, line 133 in maybeDeferred
  103. 131    """
  104. 132    try:
  105. 133        result = f(*args, **kw)
  106. 134    except:
  107. Locals
  108. args    (PageContext(tag=<nevow.guard.SessionWrapper object at 0x14ea7510>), ('__login__',))
  109. kw  {}
  110. f   <bound method SessionWrapper.locateChild of <nevow.guard.SessionWrapper object at 0x14ea7510>>
  111. /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 314 in locateChild
  112. 312            #                 ^ we are this getChild
  113. 313            # with or without a session
  114. 314            return self._delegate(ctx, segments)
  115. 315
  116. Locals
  117. ctx PageContext(tag=<nevow.guard.SessionWrapper object at 0x14ea7510>)
  118. segments    ('__login__',)
  119. self    <nevow.guard.SessionWrapper object at 0x14ea7510>
  120. /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 332 in _delegate
  121. 330            if sessionKey in self.sessions:
  122. 331                session = self.sessions[sessionKey]
  123. 332                return self.checkLogin(ctx, session, segments)
  124. 333        # without a session
  125. Locals
  126. session <nevow.guard.GuardSession instance at 0x15128638>
  127. segments    ('__login__',)
  128. ctx PageContext(tag=<nevow.guard.SessionWrapper object at 0x14ea7510>)
  129. sessionKey  'b6f82dcba56ff793c96b54b43e055fb3'
  130. self    <nevow.guard.SessionWrapper object at 0x14ea7510>
  131. /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 461 in checkLogin
  132. 459                    u = u.child(seg)
  133. 460                return u, ()
  134. 461            return self.login(request, session, self.getCredentials(request), subSegments).addCallback(
  135. 462                unmangleURL).addErrback(
  136. Locals
  137. subSegments ()
  138. request <POST /__login__ HTTP/1.1>
  139. session <nevow.guard.GuardSession instance at 0x15128638>
  140. unmangleURL <function unmangleURL at 0x16eff938>
  141. self    <nevow.guard.SessionWrapper object at 0x14ea7510>
  142. /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 529 in login
  143. 527        mind = self.mindFactory(request, credentials)
  144. 528        session.mind = mind
  145. 529        return self.portal.login(credentials, mind, self.credInterface).addCallback(
  146. 530            self._cbLoginSuccess, session, segments
  147. Locals
  148. session <nevow.guard.GuardSession instance at 0x15128638>
  149. credentials <twisted.cred.credentials.UsernamePassword instance at 0x16fd6a28>
  150. mind    None
  151. segments    ()
  152. request <POST /__login__ HTTP/1.1>
  153. self    <nevow.guard.SessionWrapper object at 0x14ea7510>
  154. /usr/local/lib/python2.7/site-packages/Twisted-11.0.0-py2.7-linux-x86_64.egg/twisted/cred/portal.py, line 114 in login
  155. 112        """
  156. 113        for i in self.checkers:
  157. 114            if i.providedBy(credentials):
  158. 115                return maybeDeferred(self.checkers[i].requestAvatarId, credentials
  159. Locals
  160. i   'checkPassword'
  161. credentials <twisted.cred.credentials.UsernamePassword instance at 0x16fd6a28>
  162. self    <twisted.cred.portal.Portal instance at 0x14ea8320>
  163. Globals
  164. providedBy  <built-in function providedBy>
  165. maybeDeferred   <function maybeDeferred at 0x143ef1b8>
  166. <type 'exceptions.AttributeError'>: 'str' object has no attribute 'providedBy'
Add Comment
Please, Sign In to add comment