;ò ‘ç…Dc@sğdZdkZdkZdkZdklZlZdkZdkZeii eii e ƒƒZ eii e dƒZdeifd„ƒYZd„Zd„Zdfd „ƒYZdS( sThe su (switch user) module allows you to execute commands as root. Typical usage: def fn(): proxy_maker = SuProxyMaker('I need root access to change /etc/fstab') yield proxy_maker.blocker root = proxy_maker.get_root() call = root.open('/etc/fstab') yield call fd = call.result ... root.finish() tasks.Task(fn()) See rox.suchild for a list of operations available on the 'root' object. N(s master_proxystaskss suchild.shs SuProxyMakercBs tZeZd„Zd„ZRS(NcCs.tƒ}tƒ}tƒ}tiƒdjo²zy…|iiƒ|i iƒ|i}|i }t i |t i dƒt i |t i dƒdk}|||||idƒdƒWntiƒnXWdtidƒXn|iiƒ|i iƒti|i|i ƒi|_|iiƒ|_dS(sİDisplays a box prompting the user for a password. Creates a new master_proxy.MasterObject and starts the child process. The user is prompted for the root password.iNi(s_Pipesto_childs from_childsget_term_commands exec_termsossforks writeablesclosesreadables to_parents from_parentsfcntlsF_SETFDspwdsmessagesgetpwuids tracebacks print_excs_exits master_proxys MasterProxysrootsselfs_rootsgetuidsblocker(sselfsmessagesto_childs to_parents from_parents exec_termspwds from_child((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pys__init__"s6           cCsLy|ii}Wn%tij otidƒ‚nXt|_|i SdS(s%Raises UserAbort if the user cancels.s4Failed to become root (cancelled at user's request?)N( sselfsblockersresultsuids master_proxysLostConnectionsroxs UserAbortsNones_root(sselfsuid((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pysget_rootFs (s__name__s __module__sNonesblockers__init__sget_root(((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pys SuProxyMakers $cCs.d„}|dƒotSntdƒ‚dS(NcCsVxKtididƒD]3}titii||ƒtiƒot SqqWt SdS(NsPATHs:( sossenvironssplitsxsaccessspathsjoinscommandsX_OKsTruesFalse(scommandsx((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pyspresent_in_PATHRs % sxtermsDNo suitable terminal emulator could be found. Try installing "xterm"(spresent_in_PATHs _exec_xterms Exception(spresent_in_PATH((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pysget_term_commandQs  cCsPtidddddddt|tit|iƒƒt|iƒƒ|ƒ dS(Nsxterms -geometrys40x10s-titlesEnter passwords-e( sossexeclps _child_scriptsmessagessyss executablesstrs to_parentsfilenos from_parents root_user(smessages to_parents from_parents root_user((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pys _exec_xterm[s s_PipecBs#tZdZeZeZd„ZRS(sxContains Python file objects for two pipe ends. Wrapping the FDs in this way ensures that they will be freed on error.cCs|tiƒ\}}yti|dƒ|_Wnti|ƒ‚nXyti|dƒ|_Wnti|ƒ‚nXdS(Nsrsw( sosspipesrswsfdopensselfsreadablescloses writeable(sselfsrsw((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pys__init__ns  (s__name__s __module__s__doc__sNonesreadables writeables__init__(((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pys_Pipegs (s__doc__sosssyssroxs master_proxystaskss tracebacksfcntlspathsabspathsdirnames__file__s_my_dirsjoins _child_scriptsBlockers SuProxyMakersget_term_commands _exec_xterms_Pipe( sfcntlsroxstaskss_my_dirs SuProxyMakers tracebacks_Pipesget_term_commandssyss _exec_xterms _child_scripts master_proxysos((sP/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/su.pys?s   2