PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  YFTc@sdZddlZddlZddlZddlZyddlmZeZWne k rie ZnXddl Z ej dZdZdZdZdZd Zdd d Zd ZdS( s8Functions that handle parsing pyzor configuration files.iN(t SentryHandlers((?<=[^\\])#.*)c Cs?tjd}tjt}tjj|sT|jdtd|t j <|St |}x|D]}|j sg|dd krqgny;g|j d D]}|jj ^q\}}} Wn$tk r|jd |qgnXyitd 6td 6| } Wn$tk r4|jd |qgnX|dkrJd}n%g|j D]} | j ^qW}|dkr|}n%g|j D]} | j ^q}xq|D]i} | r|jddj|| || j|q|jddj|| || j|qWqgW|j|jd||S(sLoad the ACL from the specified file, if it exists, and return an ACL dictionary, where each key is a username and each value is a set of allowed permissions (if the permission is not in the set, then it is not allowed). 'accounts' is a dictionary of accounts that exist on the server - only the keys are used, which must be the usernames (these are the users that are granted permission when the 'all' keyword is used, as described below). Each line of the file should be in the following format: operation : user : allow|deny where 'operation' is a space-separated list of pyzor commands or the keyword 'all' (meaning all commands), 'username' is a space-separated list of usernames or the keyword 'all' (meaning all users) - the anonymous user is called "anonymous", and "allow|deny" indicates whether or not the specified user(s) may execute the specified operations. The file is processed from top to bottom, with the final match for user/operation being the value taken. Every file has the following implicit final rule: all : all : deny If the file does not exist, then the following default is used: check report ping info : anonymous : allow tpyzordsXUsing default ACL: the anonymous user may use the check, report, ping and info commands.tchecktreporttpingtpongtinfoit#t:sInvalid ACL line: %rtallowtdenytallt whitelistsGranting %s to %s.t,sRevoking %s from %s.sACL: %r(scheckRRRsinfo(scheckRRRsinfos whitelist(tloggingt getLoggert collectionst defaultdicttsettostpathtexistsRtpyzortanonymous_usertopentstriptsplittlowert ValueErrortwarntTruetFalsetKeyErrortdebugtjointupdatetdifference_updatetclose( t access_fntaccountstlogtacltaccessftlinetpartt operationstuserstallowedt operationtuser((s0/usr/lib/python2.7/site-packages/pyzor/config.pytload_access_filesN   8    "  %  cCstjd}i}tjj|s8|jd|St|}x|D]}|j sK|ddkrtqKny|jd\}}Wn$t k r|j d|qKnX|j}|j}|j d|||||s&         O # )   &