N
๗๙O5c    	   s์   d  Z  k Z k Z k Z k Z d f  d     YZ d e f d     YZ d Z d e f d     YZ d e i	 f d	     YZ
 d
 e i f d     YZ d e i f d     YZ d e i f d     YZ d   Z e d j o e   n d S(   s9  Restricted execution facilities.

The class RExec exports methods r_exec(), r_eval(), r_execfile(), and
r_import(), which correspond roughly to the built-in operations
exec, eval(), execfile() and import, but executing the code in an
environment that only exposes those built-in operations that are
deemed safe.  To this end, a modest collection of 'fake' modules is
created which mimics the standard modules by the same names.  It is a
policy decision which built-in modules and operations are made
available; this module provides a reasonable default, but derived
classes can change the policies e.g. by overriding or extending class
variables like ok_builtin_modules or methods like make_sys().

XXX To do:
- r_open should allow writing tmp dir
- r_exec etc. with explicit globals/locals? (Use rexec("exec ... in ...")?)

s   FileBasec    
  s&   d d d d d d d d d	 d
 f
 Z  RS(   Ns   filenos   flushs   isattys   reads   readlines	   readliness   seeks   tells   writes
   writelines(   s   ok_file_methods(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   FileBase s    s   FileWrapperc      s   d   Z  d   Z RS(   Nc    sa   | |  _  xQ |  i d rD } t |  |  o t | |  o t |  | t | |   n q Wd  S(   Ni    (   s   fs   selfs   ok_file_methodss   ms   hasattrs   setattrs   getattr(   s   selfs   fs   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   __init__% s
    	 !c    s   |  i   d  S(   N(   s   selfs   flush(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   close+ s    (   s   __init__s   close(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   FileWrapper! s    	sR   
def %s(self, *args):
        return apply(getattr(self.mod, self.name).%s, args)
s   FileDelegatec      s:   d   Z  x, e i d f d r Z e e e f d  Uq WRS(   Nc    s   | |  _  | |  _ d  S(   N(   s   mods   selfs   name(   s   selfs   mods   names/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   __init__6 s    	s   closei    (   s   __init__s   FileBases   ok_file_methodss   ms   TEMPLATE(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   FileDelegate4 s    	 s   RHooksc      se   d   Z  d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d	   Z	 d
   Z
 RS(   Nc    sฒ   d } t } | o t | d  t d  j o | d } | d  } n | o t | d d  o | d } | d } n | o t d  n t i i	 |  |  | |  _ d  S(   Ni    i   s	   __class__s   too many arguments(   s   verboses   Nones   rexecs   argss   types   hasattrs	   TypeErrors   ihookss   Hookss   __init__s   self(   s   selfs   argss   verboses   rexecs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   __init__@ s    %
c    s   | |  _  d  S(   N(   s   rexecs   self(   s   selfs   rexecs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys	   set_rexecQ s    c    s   |  i i |  Sd  S(   N(   s   selfs   rexecs
   is_builtins   name(   s   selfs   names/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   is_builtinU s    c    s#   t  |  } |  i i | f   Sd  S(   N(   s
   __import__s   names   ms   selfs   rexecs   copy_except(   s   selfs   names   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   init_builtinX s    c    s   t  d  d  S(   Ns   don't use this(   s   SystemError(   s   selfs   names/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   init_frozen\ s    c    s   t  d  d  S(   Ns   don't use this(   s   SystemError(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   load_source] s    c    s   |  i i | | |  Sd  S(   N(   s   selfs   rexecs   load_dynamics   names   filenames   file(   s   selfs   names   filenames   files/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   load_dynamic` s    c    s   |  i i |  Sd  S(   N(   s   selfs   rexecs
   add_modules   name(   s   selfs   names/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   add_modulec s    c    s   |  i i Sd  S(   N(   s   selfs   rexecs   modules(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   modules_dictf s    c    s   |  i i d i Sd  S(   Ns   sys(   s   selfs   rexecs   moduless   path(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   default_pathi s    (   s   __init__s	   set_rexecs
   is_builtins   init_builtins   init_frozens   load_sources   load_compileds   load_dynamics
   add_modules   modules_dicts   default_path(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   RHooks> s    										s   RModuleLoaderc      s   d   Z  RS(   Nc    s8   | \ } } } t i i |  | |  } | | _
 | Sd  S(   N(   s   stuffs   files   filenames   infos   ihookss   FancyModuleLoaders   load_modules   selfs   names   ms   __filename__(   s   selfs   names   stuffs   files   filenames   infos   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   load_moduleo s    	(   s   load_module(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   RModuleLoaderm s    s   RModuleImporterc      s   e  d  Z RS(   Nc    sn   | t j o t | d  o7 t i  i | i  \ } } t i  i	 | d  g } n t
 i i |  | |  Sd  S(   Ns   __filename__s    (   s   paths   Nones   hasattrs   modules   oss   splits   __filename__s   heads   tails   joins   ihookss   ModuleImporters   reloads   self(   s   selfs   modules   paths   heads   tails/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   reloadx s    (   s   Nones   reload(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   RModuleImporterv s    s   RExecc      s์  d  Z  e e i  Z d d d d d d d d d	 d
 d d d d d d d d f Z d d d d d d d d d d d d d d  d! f Z d" d# d$ d% d& d' d( f Z d) d* d+ f Z e	 d- d,  Z
 d.   Z d/   Z d0   Z d1   Z d2   Z d3   Z d4   Z d5   Z d6   Z d7   Z d8   Z d9   Z d:   Z d;   Z d<   Z h  h  g  d=  Z d>   Z d?   Z d@   Z dA   Z dB   Z dC   Z  dD   Z! f  e	 dE  Z" dF   Z# dG   Z$ dH   Z% dI   Z& dJ   Z' dK   Z( dM dN dL  Z) RS(O   s!   Restricted Execution environment.s   audioops   arrays   binasciis   cmaths   errnos   imageops   marshals   maths   md5s   operators   parsers   regexs   pcres   rotors   selects   strops   structs   times   errors   fstats   listdirs   lstats   readlinks   stats   timess   unames   getpids   getppids   getcwds   getuids   getgids   geteuids   getegids   ps1s   ps2s	   copyrights   versions   platforms   exits   maxints   opens   reloads
   __import__c    s๐   t  i i |  |  | p
 t |  |  _ |  i i |   h  |  _ |  i	 |  _
 g  } x4 |  i	 d r' } | t i j o | i |  n q` Wt |  |  _	 |  i   |  i   |  i   |  i   t |  i |  |  _ t |  i |  |  _ d  S(   Ni    (   s   ihookss   _Verboses   __init__s   selfs   verboses   hookss   RHookss	   set_rexecs   moduless   ok_builtin_moduless   ok_dynamic_moduless   lists   mnames   syss   builtin_module_namess   appends   tuples   set_trusted_paths   make_builtins   make_initial_moduless   make_syss   RModuleLoaders   loaders   RModuleImporters   importer(   s   selfs   hookss   verboses   lists   mnames/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   __init__ s"    	 



i    c    s   t  t i i t i  |  _ d  S(   N(   s   filters   oss   paths   isabss   syss   selfs   trusted_path(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   set_trusted_pathฉ s    c    sz   | |  i j o t d |  n t i i |  o t i | } n k } | i	 | | |  } |  i | g   } | Sd  S(   Ns   untrusted dynamic module: %s(   s   names   selfs   ok_dynamic_moduless   ImportErrors   syss   moduless   has_keys   srcs   imps   load_dynamics   filenames   files   copy_excepts   dst(   s   selfs   names   filenames   files   srcs   imps   dsts/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   load_dynamicฎ s    c    s   |  i   |  i   d  S(   N(   s   selfs	   make_mains   make_osname(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   make_initial_modulesน s    
c    s   | |  i j Sd  S(   N(   s   mnames   selfs   ok_builtin_modules(   s   selfs   mnames/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   is_builtinฟ s    c    s=   |  i t |  i  } |  i | _ |  i | _ |  i	 | _
 d  S(   N(   s   selfs   copy_excepts   __builtin__s   nok_builtin_namess   ms   r_imports
   __import__s   r_reloads   reloads   r_opens   open(   s   selfs   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   make_builtinฤ s    c    s   |  i d  } d  S(   Ns   __main__(   s   selfs
   add_modules   m(   s   selfs   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys	   make_mainส s    c    sg   t  i } t |  } |  i | |  i  } h  | _	 } x) t  i	 i   d r \ } } | | | <qI Wd  S(   Ni    (   s   oss   names   osnames
   __import__s   srcs   selfs	   copy_onlys   ok_posix_namess   dsts   environs   es   itemss   keys   value(   s   selfs   osnames   srcs   dsts   es   keys   values/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   make_osnameอ s    	 c    s   |  i t |  i  } |  i | _ d g | _ t t |  i	  | _
 |  i d } |  i i   t |  i  } | i   t |  | _ d  S(   Ns
   RESTRICTEDs   sys(   s   selfs	   copy_onlys   syss   ok_sys_namess   ms   moduless   argvs   maps   Nones   ok_paths   paths   keyss   lists   ok_builtin_moduless   ls   sorts   tuples   builtin_module_names(   s   selfs   ms   ls/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   make_sysี s    
c    s   |  i |  } x/ t |  d r } t | | t | |   q Wx7 | d r- } y t	 | |  Wn t
 j
 o n XqJ W| Sd  S(   Ni    (   s   selfs	   copy_nones   srcs   dsts   dirs   names   setattrs   getattrs
   exceptionss   delattrs   AttributeError(   s   selfs   srcs
   exceptionss   dsts   names/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   copy_exceptแ s     	 	c    sf   |  i |  } xL | d rB } y t | |  } Wn t j
 o
 q n Xt	 | | |  q W| Sd  S(   Ni    (
   s   selfs	   copy_nones   srcs   dsts   namess   names   getattrs   values   AttributeErrors   setattr(   s   selfs   srcs   namess   dsts   names   values/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys	   copy_only์ s    	 c    s   |  i | i  Sd  S(   N(   s   selfs
   add_modules   srcs   __name__(   s   selfs   srcs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys	   copy_none๖ s    c    sW   |  i i |  o |  i | Sn |  i i |  |  i | <} |  i d | _ | Sd  S(   Ns   __builtin__(   s   selfs   moduless   has_keys   mnames   hookss
   new_modules   ms   __builtins__(   s   selfs   mnames   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   add_module๛ s
    c    s   |  i d  } | | i Ud  S(   Ns   __main__(   s   selfs
   add_modules   ms   codes   __dict__(   s   selfs   codes   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   r_execs    c    s#   |  i d  } t | | i  Sd  S(   Ns   __main__(   s   selfs
   add_modules   ms   evals   codes   __dict__(   s   selfs   codes   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   r_evals    c    s#   |  i d  } t | | i  Sd  S(   Ns   __main__(   s   selfs
   add_modules   ms   execfiles   files   __dict__(   s   selfs   files   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   r_execfiles    c    s   |  i i | | | |  Sd  S(   N(   s   selfs   importers   import_modules   mnames   globalss   localss   fromlist(   s   selfs   mnames   globalss   localss   fromlists/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   r_imports    c    s   |  i i |  Sd  S(   N(   s   selfs   importers   reloads   m(   s   selfs   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   r_reloads    c    s   |  i i |  Sd  S(   N(   s   selfs   importers   unloads   m(   s   selfs   ms/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   r_unloads    c    s}   |  i d } t | d  |  _ t | d  |  _ t | d  |  _ t t i	  |  _
 t t i  |  _ t t i  |  _ d  S(   Ns   syss   stdins   stdouts   stderr(   s   selfs   moduless   ss   FileDelegates   delegate_stdins   delegate_stdouts   delegate_stderrs   FileWrappers   syss   stdins   restricted_stdins   stdouts   restricted_stdouts   stderrs   restricted_stderr(   s   selfs   ss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   make_delegate_filess    c    s   t  |  d  o |  i   n t  |  d  o |  i   n |  i d } |  i | _ |  i | _	 |  i
 | _ |  i t _ |  i t _	 |  i t _ d  S(   Ns
   save_stdins   delegate_stdins   sys(   s   hasattrs   selfs
   save_filess   make_delegate_filess   moduless   ss   restricted_stdins   stdins   restricted_stdouts   stdouts   restricted_stderrs   stderrs   delegate_stdins   syss   delegate_stdouts   delegate_stderr(   s   selfs   ss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys	   set_files$s    c    s?   |  i   |  i d } | i |  _ | i |  _ | i |  _	 d  S(   Ns   sys(
   s   selfs   restore_filess   moduless   ss   stdins   restricted_stdins   stdouts   restricted_stdouts   stderrs   restricted_stderr(   s   selfs   ss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   reset_files1s
    
c    s(   t  i |  _ t  i |  _ t  i |  _ d  S(   N(   s   syss   stdins   selfs
   save_stdins   stdouts   save_stdouts   stderrs   save_stderr(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   save_files9s    c    s(   |  i t _ |  i t _ |  i t _ d  S(   N(   s   selfs
   save_stdins   syss   stdins   save_stdouts   stdouts   save_stderrs   stderr(   s   selfs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   restore_files>s    c    sV   |  i   z: |  i   | o t | | |  } n t | |  } Wd  |  i   Xd  S(   N(	   s   selfs
   save_filess	   set_filess   kws   applys   funcs   argss   rs   restore_files(   s   selfs   funcs   argss   kws   rs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   s_applyCs    

 c    s   |  i |  i |  d  S(   N(   s   selfs   s_applys   r_execs   args(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   s_execNs    c    s   |  i |  i |  d  S(   N(   s   selfs   s_applys   r_evals   args(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   s_evalQs    c    s   |  i |  i |  d  S(   N(   s   selfs   s_applys
   r_execfiles   args(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys
   s_execfileTs    c    s   |  i |  i |  d  S(   N(   s   selfs   s_applys   r_imports   args(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   s_importWs    c    s   |  i |  i |  d  S(   N(   s   selfs   s_applys   r_reloads   args(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   s_reloadZs    c    s   |  i |  i |  d  S(   N(   s   selfs   s_applys   r_unloads   args(   s   selfs   argss/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   s_unload]s    c    s4   | d d f j o t d  n t | | |  Sd  S(   Ns   rs   rbs/   can't open files for writing in restricted mode(   s   modes   IOErrors   opens   files   buf(   s   selfs   files   modes   bufs/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   r_openbs    s   ri   (*   s   __doc__s   tuples   syss   paths   ok_paths   ok_builtin_moduless   ok_posix_namess   ok_sys_namess   nok_builtin_namess   Nones   __init__s   set_trusted_paths   load_dynamics   make_initial_moduless
   is_builtins   make_builtins	   make_mains   make_osnames   make_syss   copy_excepts	   copy_onlys	   copy_nones
   add_modules   r_execs   r_evals
   r_execfiles   r_imports   r_reloads   r_unloads   make_delegate_filess	   set_filess   reset_filess
   save_filess   restore_filess   s_applys   s_execs   s_evals
   s_execfiles   s_imports   s_reloads   s_unloads   r_open(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   RExec sL    <3										
																				c     s๏   k  }  t d d t i d j  } d Gt i GHt i GHxฒ d oช yq y t d  } Wn t	 j
 o	 HPn X| o | d d j o- | d } t
 | d	 d
  } | i |  n Wn2 t j
 o } t i |  n |  i   n Xq9 Wd  S(   Ns   verboses   -vi   s   *** RESTRICTED *** Pythons   >>> i    s   #s   
s   <stdin>s   single(   s	   tracebacks   RExecs   syss   argvs   rs   versions	   copyrights	   raw_inputs   ss   EOFErrors   compiles   cs   r_execs
   SystemExits   ns   exits	   print_exc(   s	   tracebacks   rs   ss   cs   ns/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   tesths(     
s   __main__N(   s   __doc__s   syss   __builtin__s   oss   ihookss   FileBases   FileWrappers   TEMPLATEs   FileDelegates   Hookss   RHookss   FancyModuleLoaders   RModuleLoaders   ModuleImporters   RModuleImporters   _Verboses   RExecs   tests   __name__(    s/   /var/tmp/python-root/usr/lib/python1.5/rexec.pys   ? s   
/		้	