Module Expr Str Import alias Import alias Import alias Import alias identifier Import alias Import alias Assign NameStore Dict Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr FunctionDef arguments args defaults body TryExcept body Assign NameStore Call AttributeLoad Call NameLoad Str attr handlers ExceptHandler type NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Num Expr Call AttributeLoad Call NameLoad Str Str attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return Call AttributeLoad Call AttributeLoad NameLoad attr Call NameLoad NameLoad attr decorator_list FunctionDef arguments args defaults body Assign NameStore Call AttributeLoad NameLoad attr While CompareIn NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args defaults body Assign NameStore Call AttributeLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr Str Str attr Str Num If CompareGt Call NameLoad NameLoad Num body Assign TupleStore NameStore NameStore NameLoad If CompareEq NameLoad Call NameLoad NameLoad body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call NameLoad If NameLoad body Return BinOpMod Str TupleLoad NameLoad NameLoad AttributeLoad AttributeLoad NameLoad attr attr orelse Return BinOpMod Str TupleLoad NameLoad AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args defaults body Expr Call AttributeLoad NameLoad attr Str Str keyword Num decorator_list ClassDef bases body FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr keyword Str If CompareEq Call AttributeLoad NameLoad attr Str Str body Expr Call NameLoad Return Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Assign NameStore Call NameLoad Assign SubscriptStore NameLoad Index NameLoad Dict Str AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr SubscriptLoad NameLoad Index NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad NameLoad attr Str NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore AttributeLoad Call AttributeLoad NameLoad attr Str attr Expr Call AttributeLoad NameLoad attr Str Str keyword Num Assign NameStore SubscriptLoad SubscriptLoad NameLoad Index NameLoad Index Str Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr SubscriptLoad NameLoad Index NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr BinOpAdd AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr If CompareEq Call AttributeLoad AttributeLoad NameLoad attr attr Str body Expr Call AttributeLoad NameLoad attr Str BinOpAdd BinOpAdd Call NameLoad AttributeLoad NameLoad attr Str AttributeLoad NameLoad attr Delete SubscriptDel NameLoad Index NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list decorator_list
N/A N/A openid.py: an openid library for web.py

Notes:

 - This will create a file called .openid_secret_key in the 
   current directory with your secret key in it. If someone 
   has access to this file they can log in as any user. And 
   if the app can't find this file for any reason (e.g. you 
   moved the app somewhere else) then each currently logged 
   in user will get logged out.

 - State must be maintained through the entire auth process 
   -- this means that if you have multiple web.py processes 
   serving one set of URLs or if you restart your app often 
   then log ins will fail. You have to replace sessions and 
   store for things to work.

 - We set cookies starting with "openid_".

 N/A os N/A random N/A hmac N/A __init__ web N/A openid.consumer.consumer N/A openid.store.memstore N/A sessions N/A N/A store N/A N/A N/A N/A openid store memstore MemoryStore _secret N/A N/A N/A N/A N/A N/A N/A secret N/A N/A N/A file .openid_secret_key read N/A N/A N/A IOError N/A N/A secret N/A N/A os urandom 20 N/A N/A N/A N/A file .openid_secret_key w write secret N/A secret N/A _hmac N/A N/A identity_url N/A N/A N/A N/A N/A N/A N/A hmac new N/A _secret identity_url hexdigest N/A _random_session N/A N/A N/A N/A N/A n N/A N/A random random N/A N/A n sessions N/A N/A n N/A N/A random random N/A n N/A str n N/A n N/A status N/A N/A N/A N/A N/A oid_hash N/A N/A N/A N/A N/A N/A web cookies get openid_identity_hash split , 1 N/A N/A N/A len oid_hash 1 N/A N/A N/A oid_hash identity_url oid_hash N/A N/A oid_hash N/A _hmac identity_url N/A N/A identity_url N/A None N/A form N/A N/A openid_loc N/A N/A N/A oid N/A status N/A oid N/A N/A N/A 
        <form method="post" action="%s">
          <img src="http://openid.net/login-bg.gif" alt="OpenID" />
          <strong>%s</strong>
          <input type="hidden" name="action" value="logout" />
          <input type="hidden" name="return_to" value="%s" />
          <button type="submit">log out</button>
        </form> N/A openid_loc oid N/A N/A web ctx fullpath N/A N/A N/A 
        <form method="post" action="%s">
          <input type="text" name="openid" value="" 
            style="background: url(http://openid.net/login-bg.gif) no-repeat; padding-left: 18px; background-position: 0 50%%;" />
          <input type="hidden" name="return_to" value="%s" />
          <button type="submit">log in</button>
        </form> N/A openid_loc N/A N/A web ctx fullpath N/A logout N/A N/A N/A N/A N/A N/A N/A web setcookie openid_identity_hash expires -1 N/A host N/A N/A POST N/A N/A self N/A N/A N/A i N/A N/A web input return_to / N/A N/A N/A N/A i get action logout N/A N/A N/A logout N/A N/A N/A web redirect N/A i return_to N/A i N/A N/A web input openid return_to / N/A n N/A _random_session N/A N/A sessions N/A n N/A webpy_return_to N/A i return_to N/A c N/A N/A N/A N/A openid consumer consumer Consumer N/A sessions N/A n store N/A a N/A N/A c begin N/A i openid N/A f N/A N/A a redirectURL N/A N/A web ctx home N/A N/A N/A web ctx home N/A N/A web ctx fullpath N/A N/A N/A web setcookie openid_session_id n N/A N/A N/A web redirect f N/A GET N/A N/A self N/A N/A N/A n N/A N/A N/A web cookies openid_session_id openid_session_id N/A N/A N/A web setcookie openid_session_id expires -1 N/A return_to N/A N/A sessions N/A n N/A webpy_return_to N/A c N/A N/A N/A N/A openid consumer consumer Consumer N/A sessions N/A n store N/A a N/A N/A c complete N/A N/A web input N/A N/A N/A web ctx home N/A N/A web ctx fullpath N/A N/A N/A N/A N/A a status lower success N/A N/A N/A N/A web setcookie openid_identity_hash N/A N/A N/A _hmac N/A a identity_url , N/A a identity_url N/A N/A sessions N/A n N/A N/A N/A web redirect return_to N/A N/A