-í
ç¶<c       s     d  Z    d k Z  d k Z  d k Z  d k Z  d g Z  d f  d „  ƒ  YZ " d e f d „  ƒ  YZ 0 d Z 5 d e f d	 „  ƒ  YZ	 ? d
 e i
 f d „  ƒ  YZ p e i Z q e i Z t d e i f d „  ƒ  YZ hd „  Z ¢e d j o £e i 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 ...")?)

Ns   RExecs   FileBasec    
  s2    t  Z  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   __name__s
   __module__s   ok_file_methods(    (    (    s   /usr/lib/python2.2/rexec.pys   FileBase s   	s   FileWrapperc      s#   " t  Z & d „  Z , d „  Z RS(   Nc    sq   & ' | |  _  ( xX |  i D( ]J } ) t |  | ƒ o t | | ƒ o  * t |  | t | | ƒ ƒ n q Wd  S(   N(   s   fs   selfs   ok_file_methodss   ms   hasattrs   setattrs   getattr(   s   selfs   fs   m(    (    s   /usr/lib/python2.2/rexec.pys   __init__& s
    	$c    s   , - |  i ƒ  d  S(   N(   s   selfs   flush(   s   self(    (    s   /usr/lib/python2.2/rexec.pys   close, s   (   s   __name__s
   __module__s   __init__s   close(    (    (    s   /usr/lib/python2.2/rexec.pys   FileWrapper" s   	sR   
def %s(self, *args):
        return apply(getattr(self.mod, self.name).%s, args)
s   FileDelegatec      sM   5 t  Z 7 d „  Z ; x0 e i d f D; ] Z < e e e f d  Uq) WRS(   Nc    s   7 8 | |  _  9 | |  _ d  S(   N(   s   mods   selfs   name(   s   selfs   mods   name(    (    s   /usr/lib/python2.2/rexec.pys   __init__7 s   s   close(   s   __name__s
   __module__s   __init__s   FileBases   ok_file_methodss   ms   TEMPLATE(    (    (    s   /usr/lib/python2.2/rexec.pys   FileDelegate5 s   	 	s   RHooksc      s›   ? t  Z A d „  Z R d „  Z V d „  Z Y d „  Z ] d „  Z ^ d „  Z _ d „  Z ` d „  Z	 b d	 „  Z
 e d
 „  Z h d „  Z k d „  Z RS(   Nc    sÖ   A E d } F t } G | o t | d ƒ t d ƒ j o H | d } I | d  } n J | o t | d d ƒ o K | d } L | d } n M | o N t d ‚ n O t i i	 |  | ƒ P | |  _ d  S(   Ni    iÿÿÿÿs	   __class__i   s   too many arguments(   s   verboses   Nones   rexecs   argss   types   hasattrs	   TypeErrors   ihookss   Hookss   __init__s   self(   s   selfs   argss   rexecs   verbose(    (    s   /usr/lib/python2.2/rexec.pys   __init__A s   		'
c    s   R T | |  _  d  S(   N(   s   rexecs   self(   s   selfs   rexec(    (    s   /usr/lib/python2.2/rexec.pys	   set_rexecR s   c    s   V W |  i i | ƒ Sd  S(   N(   s   selfs   rexecs
   is_builtins   name(   s   selfs   name(    (    s   /usr/lib/python2.2/rexec.pys
   is_builtinV s   c    s,   Y Z t  | ƒ } [ |  i i | f  ƒ Sd  S(   N(   s
   __import__s   names   ms   selfs   rexecs   copy_except(   s   selfs   names   m(    (    s   /usr/lib/python2.2/rexec.pys   init_builtinY s   c    s   ] ] t  d ‚ d  S(   Ns   don't use this(   s   SystemError(   s   selfs   name(    (    s   /usr/lib/python2.2/rexec.pys   init_frozen] s    c    s   ^ ^ t  d ‚ d  S(   Ns   don't use this(   s   SystemError(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   load_source^ s    c    s   _ _ t  d ‚ d  S(   Ns   don't use this(   s   SystemError(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   load_compiled_ s    c    s   ` ` t  d ‚ d  S(   Ns   don't use this(   s   SystemError(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   load_package` s    c    s    b c |  i i | | | ƒ Sd  S(   N(   s   selfs   rexecs   load_dynamics   names   filenames   file(   s   selfs   names   filenames   file(    (    s   /usr/lib/python2.2/rexec.pys   load_dynamicb s   c    s   e f |  i i | ƒ Sd  S(   N(   s   selfs   rexecs
   add_modules   name(   s   selfs   name(    (    s   /usr/lib/python2.2/rexec.pys
   add_modulee s   c    s   h i |  i i Sd  S(   N(   s   selfs   rexecs   modules(   s   self(    (    s   /usr/lib/python2.2/rexec.pys   modules_dicth s   c    s   k l |  i i d i Sd  S(   Ns   sys(   s   selfs   rexecs   moduless   path(   s   self(    (    s   /usr/lib/python2.2/rexec.pys   default_pathk s   (   s   __name__s
   __module__s   __init__s	   set_rexecs
   is_builtins   init_builtins   init_frozens   load_sources   load_compileds   load_packages   load_dynamics
   add_modules   modules_dicts   default_path(    (    (    s   /usr/lib/python2.2/rexec.pys   RHooks? s   	c      s{  t t  Z d  Z v x e e i ƒ Z z d d 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- d. f Z
 ‰ e d/ 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 ü d= „  Z  d> „  Z d? „  Z h  h  g  d@ „ Z dA „  Z dB „  Z dC „  Z dD „  Z  )dE „  Z! 1dF „  Z" 6dG „  Z# ;f  e dH „ Z$ GdI „  Z% JdJ „  Z& MdK „  Z' PdL „  Z( SdM „  Z) VdN „  Z* [dO dP dQ „ Z+ bdR „  Z, RS(S   s!   Restricted Execution environment.s   audioops   arrays   binasciis   cmaths   errnos   imageops   marshals   maths   md5s   operators   parsers   regexs   pcres   rotors   selects   shas   _sres   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   files   reloads
   __import__i    c    s$  ‰ Š t  i i |  | ƒ Œ | p
 t | ƒ |  _  |  i i |  ƒ Ž h  |  _  |  i	 |  _
  g  } ‘ x; |  i	 D‘ ]- } ’ | t i j o “ | i | ƒ n qv W” t | ƒ |  _	 • |  i ƒ  – |  i ƒ  — |  i ƒ  š |  i ƒ  › t |  i | ƒ |  _ œ t |  i | ƒ |  _ d  S(   N(   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   mnames   list(    (    s   /usr/lib/python2.2/rexec.pys   __init__‰ s"   	 	c    s%   ž ¡ t  t i i t i ƒ |  _ d  S(   N(   s   filters   oss   paths   isabss   syss   selfs   trusted_path(   s   self(    (    s   /usr/lib/python2.2/rexec.pys   set_trusted_pathž s   c    s˜   £ ¤ | |  i j o ¥ t d | ‚ n ¦ t i i | ƒ o § t i | } n% © d  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   dst(    (    s   /usr/lib/python2.2/rexec.pys   load_dynamic£ s   c    s!   ® ¯ |  i ƒ  ° |  i ƒ  d  S(   N(   s   selfs	   make_mains   make_osname(   s   self(    (    s   /usr/lib/python2.2/rexec.pys   make_initial_modules® s   c    s   ´ µ | |  i j Sd  S(   N(   s   mnames   selfs   ok_builtin_modules(   s   selfs   mname(    (    s   /usr/lib/python2.2/rexec.pys
   is_builtin´ s   c    sS   ¹ º |  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   opens   file(   s   selfs   m(    (    s   /usr/lib/python2.2/rexec.pys   make_builtin¹ s   c    s   ¿ À |  i d ƒ } d  S(   Ns   __main__(   s   selfs
   add_modules   m(   s   selfs   m(    (    s   /usr/lib/python2.2/rexec.pys	   make_main¿ s   c    s}   Â Ã t  i } Ä t | ƒ } Å |  i | |  i ƒ } Æ h  | _	 } Ç x- t  i	 i ƒ  DÇ ] \ } } È | | | <qY Wd  S(   N(   s   oss   names   osnames
   __import__s   srcs   selfs	   copy_onlys   ok_posix_namess   dsts   environs   es   itemss   keys   value(   s   selfs   srcs   es   keys   dsts   values   osname(    (    s   /usr/lib/python2.2/rexec.pys   make_osnameÂ s    c    s²   Ê Ë |  i t |  i ƒ } Ì |  i | _ Í d g | _ Î t t |  i	 ƒ | _
 Ï |  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
   r_exc_infos   exc_infos   keyss   lists   ok_builtin_moduless   ls   sorts   tuples   builtin_module_names(   s   selfs   ms   l(    (    s   /usr/lib/python2.2/rexec.pys   make_sysÊ s   c    s£   × Ø |  i | ƒ } Ù x3 t | ƒ DÙ ]" } Ú t | | t | | ƒ ƒ q% WÛ xD | DÛ ]9 } Ü y Ý t	 | | ƒ Wn Þ t
 j
 o
 ß n XqX Wà | Sd  S(   N(   s   selfs	   copy_nones   srcs   dsts   dirs   names   setattrs   getattrs
   exceptionss   delattrs   AttributeError(   s   selfs   srcs
   exceptionss   names   dst(    (    s   /usr/lib/python2.2/rexec.pys   copy_except× s    	 
 	c    s‚   â ã |  i | ƒ } ä x\ | Dä ]Q } å y æ t | | ƒ } Wn ç t j
 o è q n Xé t	 | | | ƒ q Wê | Sd  S(   N(
   s   selfs	   copy_nones   srcs   dsts   namess   names   getattrs   values   AttributeErrors   setattr(   s   selfs   srcs   namess   dsts   values   name(    (    s   /usr/lib/python2.2/rexec.pys	   copy_onlyâ s   
 	c    s2   ì í |  i | i ƒ } î | i | _ ï | Sd  S(   N(   s   selfs
   add_modules   srcs   __name__s   ms   __doc__(   s   selfs   srcs   m(    (    s   /usr/lib/python2.2/rexec.pys	   copy_noneì s   c    si   ó ô |  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   m(    (    s   /usr/lib/python2.2/rexec.pys
   add_moduleó s
    c    s'   ü ý |  i d ƒ } þ | | i Ud  S(   Ns   __main__(   s   selfs
   add_modules   ms   codes   __dict__(   s   selfs   codes   m(    (    s   /usr/lib/python2.2/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   m(    (    s   /usr/lib/python2.2/rexec.pys   r_eval s   c    s,   |  i d ƒ } t | | i ƒ d  S(   Ns   __main__(   s   selfs
   add_modules   ms   execfiles   files   __dict__(   s   selfs   files   m(    (    s   /usr/lib/python2.2/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   fromlist(    (    s   /usr/lib/python2.2/rexec.pys   r_imports   c    s   |  i i | ƒ Sd  S(   N(   s   selfs   importers   reloads   m(   s   selfs   m(    (    s   /usr/lib/python2.2/rexec.pys   r_reloads   c    s   |  i i | ƒ Sd  S(   N(   s   selfs   importers   unloads   m(   s   selfs   m(    (    s   /usr/lib/python2.2/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   s(    (    s   /usr/lib/python2.2/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   s(    (    s   /usr/lib/python2.2/rexec.pys	   set_filess   c    sQ   )*|  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   s(    (    s   /usr/lib/python2.2/rexec.pys   reset_files)s
   c    s4   12t  i |  _ 3t  i |  _ 4t  i |  _ d  S(   N(   s   syss   stdins   selfs
   save_stdins   stdouts   save_stdouts   stderrs   save_stderr(   s   self(    (    s   /usr/lib/python2.2/rexec.pys
   save_files1s   c    s4   67|  i t _ 8|  i t _ 9|  i t _ d  S(   N(   s   selfs
   save_stdins   syss   stdins   save_stdouts   stdouts   save_stderrs   stderr(   s   self(    (    s   /usr/lib/python2.2/rexec.pys   restore_files6s   c    sx   ;<|  i ƒ  =zF >|  i ƒ  ?| o @t | | | ƒ } n Bt | | ƒ } Wd  CD|  i ƒ  XE| Sd  S(   N(	   s   selfs
   save_filess	   set_filess   kws   applys   funcs   argss   rs   restore_files(   s   selfs   funcs   argss   kws   r(    (    s   /usr/lib/python2.2/rexec.pys   s_apply;s   
c    s   GH|  i |  i | ƒ Sd  S(   N(   s   selfs   s_applys   r_execs   args(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   s_execGs   c    s   JK|  i |  i | ƒ Sd  S(   N(   s   selfs   s_applys   r_evals   args(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   s_evalJs   c    s   MN|  i |  i | ƒ Sd  S(   N(   s   selfs   s_applys
   r_execfiles   args(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys
   s_execfileMs   c    s   PQ|  i |  i | ƒ Sd  S(   N(   s   selfs   s_applys   r_imports   args(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   s_importPs   c    s   ST|  i |  i | ƒ Sd  S(   N(   s   selfs   s_applys   r_reloads   args(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   s_reloadSs   c    s   VW|  i |  i | ƒ Sd  S(   N(   s   selfs   s_applys   r_unloads   args(   s   selfs   args(    (    s   /usr/lib/python2.2/rexec.pys   s_unloadVs   s   riÿÿÿÿc    s@   [\| 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   buf(    (    s   /usr/lib/python2.2/rexec.pys   r_open[s   c    s8   bct  i ƒ  \ } } } dt } e| | | f Sd  S(   N(   s   syss   exc_infos   tys   vas   trs   None(   s   selfs   vas   tys   tr(    (    s   /usr/lib/python2.2/rexec.pys
   r_exc_infobs   	(-   s   __name__s
   __module__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_opens
   r_exc_info(    (    (    s   /usr/lib/python2.2/rexec.pys   RExect sN   E6
		c     sl  hid  k  } d  k } j| i  t i d d ƒ \ } } kd } lg  } mx\ | Dm]Q \ }	 } n|	 d j o o| d } n p|	 d j o q| i
 | ƒ n qV Wrt d | ƒ } s| o t| i t | ƒ | _ n u| oD v| | i d _ w| i d i i d t i i | d ƒ ƒ n y| i d i i d d ƒ zt i }  {| o | d d	 j o^ |y }t | d ƒ }  Wn= ~t j
 o. } d
 t i d | d f GH€d Sn Xn |  i ƒ  o÷ ‚d Gt i GHƒd GH†xÖ †d oË ‡yŒ ˆy ‰t d ƒ } Wn Št j
 o ‹HŒPn X| o | d d j o6 Ž| d } t | d d ƒ } | i  | ƒ n Wn5 ‘t! j
 o }
 ’|
 Sn “”| i# ƒ  n XqWn‹ –|  i$ ƒ  } —|  i& ƒ  ˜t | |  i' d ƒ } ™y š| i  | ƒ Wn< ›t! j
 o }
 œ|
 Sn ž| i# ƒ  Ÿd Sn Xd  S(   Ni   s   vt:i    s   -vs   -ts   verboses   syss    s   -s   %s: can't open file %ss   *** RESTRICTED *** PythonsF   Type "help", "copyright", "credits" or "license" for more information.s   >>> s   #s   
s   <stdin>s   singles   exec((   s   getopts	   tracebacks   syss   argvs   optss   argss   verboses   trusteds   os   as   appends   RExecs   rs   ok_builtin_moduless   tuples   moduless   paths   inserts   oss   dirnames   stdins   fps   opens   IOErrors   msgs   isattys   versions	   raw_inputs   ss   EOFErrors   compiles   cs   s_execs
   SystemExits   ns	   print_excs   reads   texts   closes   name(   s   fps   verboses   texts   argss   getopts   trusteds   as   cs	   tracebacks   os   ns   ss   rs   msgs   opts(    (    s   /usr/lib/python2.2/rexec.pys   testhsj   "		
 

1 
	s   __main__(   s   __doc__s   syss   __builtin__s   oss   ihookss   __all__s   FileBases   FileWrappers   TEMPLATEs   FileDelegates   Hookss   RHookss   FancyModuleLoaders   RModuleLoaders   ModuleImporters   RModuleImporters   _Verboses   RExecs   tests   __name__s   exit(   s   FileBases   RModuleLoaders   RModuleImporters   RHookss   __all__s   FileDelegates   __builtin__s   syss   ihookss   tests   RExecs   TEMPLATEs   FileWrappers   os(    (    s   /usr/lib/python2.2/rexec.pys   ? s    	
1ô: