Ñò +z2Wc@sædZddkZddklZlZdefd„ƒYZdefd„ƒYZd dd „ƒYZd efd „ƒYZd dd„ƒYZdefd„ƒYZ ddd„ƒYZ defd„ƒYZ ddd„ƒYZ dS(s8Module handling /etc/{passwd, shadow, group} style filesiÿÿÿÿNi(tConft SystemFulltConfPwcBsheZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z RS( sConfPw(Conf) This class implements a dictionary based on a :-separated file. It takes as arguments the filename and the field number to key on; The data provided is a list including all fields including the key. Has its own write method to keep files sane. cCs2||_||_ti||ddddƒdS(Ntt:i(tkeyfieldt numfieldsRt__init__(tselftfilenameRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRs  cCsti|ƒ|iƒdS(N(Rtreadtinitvars(R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR s cCs€h|_g|_|iƒxS|iƒoE|iƒ}||i||i<|ii||iƒ|iƒqW|iƒdS(N(tvarst ordered_keystrewindtfindnextcodelinet getfieldsRtappendtnextline(Rtfields((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR s     cCsR|i|i|ƒp|iƒ|ii|ƒn|i|ƒ||i|/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt __setitem__"s   cCs#|ii|ƒo |i|SgS(N(R thas_key(RR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt __getitem__(s cCsÀ|iƒ}|iƒ|i|i|ƒo|iƒn|ii|ƒo|i|=nxQtt|i ƒƒD]:}||i ||d!jog|i ||d+PqqqqW|i |ƒdS(Ni( ttellRRRt deletelineR RtrangetlenR tseek(RRtplaceti((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt __delitem__,s   cCs|iS(N(R (R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pytkeys8scCs|ii|ƒS(N(R R(RR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR:scCsøt|idddƒ}tii|iƒo;|idjo+ti|idti|iƒdƒn|idjoti|id|iƒnx5tt |i ƒƒD]}|i |i |dƒq®W|i ƒti |id|iƒdS(Ns.newtwiÿÿÿÿis (topenR tostpathtisfiletmodetchmodtstatRRtlinestwritetclosetrename(Rtmfiletindex((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR.<s&+ cCsO|iƒ|i|i|ƒti|||ƒ|g|i|||d+dS(Ni(RRRRt changefieldR (RRtfieldnot fieldtext((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt kchangefieldHs ( t__name__t __module__t__doc__RR R RRR#R$RR.R6(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRs       tConfPwOcBs;eZdZd„Zd„Zd„Zd„Zd„ZRS(s­ConfPwO This class presents a data-oriented meta-class for making changes to ConfPw-managed files. Applications should not instantiate this class directly. cCs#ti||||ƒ||_dS(N(RRt reflector(RR RRR;((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRTscCs,|ii|ƒo|i||ƒSdSdS(N(R RR;tNone(RR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRXscCs,ttd|t|ƒt|ƒfƒ‚dS(Ns+Object %s is immutable. Cannot set %s to %s(tAttributeErrortstr(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR^s cCs;|ii|ƒot|d‚nti|||ƒdS(Ns exists(R RR=RR(RRtmlist((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt addentry_listgscCsþd}xV|iiƒD]E}t|i||ƒ}||jo|djo|d}qqW|djoth}x2|iiƒD]!}d|t|i||ƒ/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt getfreeidks$   (R7R8R9RRRR@RG(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR:Ns    t_passwd_reflectorcBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs||_||_dS(N(tpwtuser(RRIRJ((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR€s cCsH|idƒ}|dgdt|ƒ7}|||/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pytsetgecos„s cCs2|idƒ}|dgdt|ƒ7}||S(Ns, Ri(RKR(RRMRBRN((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pytgetgecosscCs |i|ƒS(N(t __getattr__(Rtname((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR•scCs|i||ƒS(N(t __setattr__(RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR˜scCs |ii|iƒpt|id‚nt|dƒp|ii|idSt|dƒp|ii|idSt|dƒp|ii|idSt|dƒp|ii|id St|d ƒp|ii|id St|d ƒp"|i|ii|id dƒSt|d ƒp"|i|ii|id dƒSt|dƒp"|i|ii|id dƒSt|dƒp"|i|ii|id d ƒSt|dƒp|ii|idSt|dƒp|ii|idSt|‚dS(Ns has been deletedtusernameitpasswordituiditgiditgecositfullnametofficet officephonet homephonethomediritshelli(RIRRJR=tcmpR RP(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRQ›s2""""cCsüt|dƒ p3t|dƒ p"t|dƒ pt|dƒ o||i|ROR (RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRS·sD" ##++++( R7R8RRORPRRRQRS(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRH~s     t ConfPasswdcBs2eZdZd„Zd„Zd„Zd„ZRS(svConfPasswd(ConfPwO) This class presents a data-oriented class for making changes to the /etc/passwd file. cCsti|dddtƒdS(Ns /etc/passwdii(R:RRH(R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRâsc Cs,ti|||||||||gƒdS(N(R:R@(RRTRURVRWRXR]R^((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pytaddentryäs  c Cs;|i||||di||||dgƒ| | ƒdS(Ns, R(RbRL( RRTRURVRWRYRZR[R\R]R^((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt addfullentryèscCs(y|idƒSWntd‚nXdS(NisNo UIDs available(RGR(R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt getfreeuidìs(R7R8R9RRbRcRd(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRaÝs    t_shadow_reflectorcBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs||_||_dS(N(RIRJ(RRIRJ((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRõs cCs|ii|i|S(N(RIR RJ(RR4((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt_readstrøscCsT|ii|i|}y"t|ƒot|ƒ}|SWntj odSXdS(Niÿÿÿÿ(RIR RJRRAt ValueError(RR4tretval((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt_readintús   cCs |i|ƒS(N(RQ(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRscCs|i||ƒS(N(RS(RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRscCs'|ii|iƒpt|id‚nt|dƒp|idƒSt|dƒp|idƒSt|dƒp|idƒSt|dƒp|id ƒSt|d ƒp|id ƒSt|d ƒp|id ƒSt|dƒp|idƒSt|dƒp|idƒSt|‚dS(Ns has been deletedRTiRUit lastchangeditmindaysitmaxdaysitwarndaysit gracedaysitexpiresi(RIRRJR=R_RfRi(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRQs&cCsðt|dƒ pt|dƒ o||i|(RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRSsD" ! #! #! #! #! #! #( R7R8RRfRiRRRQRS(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyReós     t ConfShadowcBs)eZdZd„Zd„Zd„ZRS(svConfShadow(ConfPwO) This class presents a data-oriented class for making changes to the /etc/shadow file. cCsti|dddtƒdS(Ns /etc/shadowii (R:RRe(R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRGsc Cshti|||||i|ƒ|i|ƒ|i|ƒ|i|ƒ|i|ƒ|i|ƒdg ƒdS(NR(R:R@t _intfield( RRTRURjRkRlRmRnRo((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRbIs  cCsDyt|ƒSWn/tj o#|djodSt|ƒSnXdS(NiÿÿÿÿR(RARgR>(RR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRqRs  (R7R8R9RRbRq(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRpBs  t_group_reflectorcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs||_||_dS(N(RItgroup(RRIRs((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR]s cCs |i|ƒS(N(RQ(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR`scCs|i||ƒS(N(RS(RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRbscCsÏ|ii|iƒpt|id‚nt|dƒp|ii|idSt|dƒp|ii|idSt|dƒp|ii|idSt|dƒp|ii|id St|‚dS( Ns has been deletedRRiRUiRWituserlisti(RIRRsR=R_R (RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRQdscCst|dƒ pt|dƒ o||i|(RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRSrs" #(R7R8RRRRQRS(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRr[s     t ConfGroupcBs2eZdZd„Zd„Zd„Zd„ZRS(s©ConfGroup(ConfPwO) This class presents a data-oriented class for making changes to the /etc/group file. May be replaced by a pwdb-based module, we hope. cCsti|dddtƒdS(Ns /etc/groupii(R:RRr(R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRŠscCs#ti||||||gƒdS(N(R:R@(RRsRURWRt((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRbŒscCs(y|idƒSWntd‚nXdS(NisNo GIDs available(RGR(R((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt getfreegidŽscCsyy^t|ƒ}xK|iiƒD]:}t|i|dƒ}||jo|i|dSqWWntj odSXdS(NiiR(RAR R$Rg(RRWRstmgid((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyt nameofgid”s  (R7R8R9RRbRvRx(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRu„s    t_unix_reflectorcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs||_||_dS(N(RIRJ(RRIRJ((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR¡s cCs |i|ƒS(N(RQ(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR¤scCs|i||ƒS(N(RS(RRRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyR¦scCs‰|iii|iƒpt|id‚nt|dƒp:|iio|ii|iiS|ii|iiSnt|dƒp:|iio|ii|iiS|ii|iiSnÅt|dƒp|ii|ii St|dƒp|ii|ii St|dƒp|ii|ii St|dƒp|ii|ii St|dƒp|ii|ii St|d ƒp|ii|iiSt|d ƒp|ii|iiSt|d ƒp|ii|iiSt|d ƒp|ii|iiSt|d ƒp-|iiƒo|ii|iiSdSn;t|dƒp-|iiƒo|ii|iiSdSnþt|dƒp-|iiƒo|ii|iiSdSnÁt|dƒp-|iiƒo|ii|iiSdSn„t|dƒp-|iiƒo|ii|iiSdSnGt|dƒp-|iiƒo|ii|iiSdSn t|‚dS(Ns has been deletedRTRURVRWRXRYRZR[R\R]R^RjiÿÿÿÿRkRlRmRnRo(RItpasswdRRJR=R_tshadowRTRURVRWRXRYRZR[R\R]R^t shadowexistsRjRkRlRmRnRo(RRR((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRQ¨sj  cCsÎt|dƒ pt|dƒ o||i|/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRSçs`"  (R7R8RRRRQRS(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyRyŸs     ?((((( R9R'RRRR:RHRaReRpRrRuRy(((s>/usr/share/system-config-network/netconfpkg/conf/ConfPasswd.pyts G0_O)