Ñò Ÿ‹Jc@skddklZddklZddklZdefd„ƒYZd„Zd„Z d d d„Z d S( iÿÿÿÿ(t implements(tIAuthenticator(t resolveDottedtHTPasswdPlugincBs-eZeeƒd„Zd„Zd„ZRS(cCs||_||_dS(N(tfilenametcheck(tselfRR((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyt__init__ s c Csy|d}|d}Wntj odSXt|idƒo|iidƒ|i}nFyt|idƒ}Wn,tj o |did|iƒdSXxr|D]j}y"|iƒi dd ƒ\}}Wnt j o q«nX||jo|i ||ƒo|Sq«q«WdS( Ntlogintpasswordtseekitrsrepoze.who.loggerscould not open htpasswd file %st:i( tKeyErrortNonethasattrRR topentIOErrortwarntrstriptsplitt ValueErrorR( RtenvirontidentityRR tftlinetusernamethashed((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyt authenticates0    "  cCsd|iit|ƒfS(Ns<%s %s>(t __class__t__name__tid(R((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyt__repr__,s (Rt __module__RRRRR (((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyRs   cCs-ddkl}|d }||||ƒjS(Niÿÿÿÿ(tcrypti(R"(R RR"tsalt((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyt crypt_check0s cCs ||jS(N((R R((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyt plain_check5scCsS|djotdƒ‚n|djotdƒ‚nt|ƒ}t||ƒS(Nsfilename must be specifiedscheck_fn must be specified(RRRR(Rtcheck_fnR((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyt make_plugin8s    N( tzope.interfaceRtrepoze.who.interfacesRtrepoze.who.utilsRtobjectRR$R%RR'(((s?/usr/lib/python2.6/site-packages/repoze/who/plugins/htpasswd.pyts *