Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
RExec Class Reference
Inheritance diagram for RExec:
_Verbose

Public Member Functions

def __init__
 
def set_trusted_path
 
def load_dynamic
 
def make_initial_modules
 
def is_builtin
 
def make_builtin
 
def make_main
 
def make_osname
 
def make_sys
 
def copy_except
 
def copy_only
 
def copy_none
 
def add_module
 
def r_exec
 
def r_eval
 
def r_execfile
 
def r_import
 
def r_reload
 
def r_unload
 
def make_delegate_files
 
def set_files
 
def reset_files
 
def save_files
 
def restore_files
 
def s_apply
 
def s_exec
 
def s_eval
 
def s_execfile
 
def s_import
 
def s_reload
 
def s_unload
 
def r_open
 
def r_exc_info
 
- Public Member Functions inherited from _Verbose
def __init__
 
def get_verbose
 
def set_verbose
 
def note
 
def message
 

Data Fields

 hooks
 
 modules
 
 ok_dynamic_modules
 
 ok_builtin_modules
 
 loader
 
 importer
 
 trusted_path
 
 delegate_stdin
 
 delegate_stdout
 
 delegate_stderr
 
 restricted_stdin
 
 restricted_stdout
 
 restricted_stderr
 
 save_stdin
 
 save_stdout
 
 save_stderr
 
- Data Fields inherited from _Verbose
 verbose
 

Static Public Attributes

tuple ok_path = tuple(sys.path)
 
tuple ok_builtin_modules
 
tuple ok_posix_names
 
tuple ok_sys_names
 
tuple nok_builtin_names = ('open', 'file', 'reload', '__import__')
 

Detailed Description

Restricted Execution environment.

Definition at line 116 of file rexec.py.

Constructor & Destructor Documentation

def __init__ (   self,
  hooks = None,
  verbose = 0 
)

Definition at line 137 of file rexec.py.

References _Verbose.__init__().

138  def __init__(self, hooks = None, verbose = 0):
139  ihooks._Verbose.__init__(self, verbose)
140  # XXX There's a circular reference here:
141  self.hooks = hooks or RHooks(verbose)
142  self.hooks.set_rexec(self)
143  self.modules = {}
145  list = []
146  for mname in self.ok_builtin_modules:
147  if mname in sys.builtin_module_names:
148  list.append(mname)
149  self.ok_builtin_modules = tuple(list)
150  self.set_trusted_path()
151  self.make_builtin()
152  self.make_initial_modules()
153  # make_sys must be last because it adds the already created
154  # modules to its builtin_module_names
155  self.make_sys()
156  self.loader = RModuleLoader(self.hooks, verbose)
157  self.importer = RModuleImporter(self.loader, verbose)

Member Function Documentation

def add_module (   self,
  mname 
)

Definition at line 243 of file rexec.py.

References RExec.modules, and BasicModuleImporter.modules.

244  def add_module(self, mname):
245  if self.modules.has_key(mname):
246  return self.modules[mname]
247  self.modules[mname] = m = self.hooks.new_module(mname)
248  m.__builtins__ = self.modules['__builtin__']
249  return m
def copy_except (   self,
  src,
  exceptions 
)

Definition at line 215 of file rexec.py.

References RExec.copy_none(), and sre_parse.dir.

216  def copy_except(self, src, exceptions):
217  dst = self.copy_none(src)
218  for name in dir(src):
219  setattr(dst, name, getattr(src, name))
220  for name in exceptions:
221  try:
222  delattr(dst, name)
223  except AttributeError:
224  pass
225  return dst
def copy_none (   self,
  src 
)

Definition at line 236 of file rexec.py.

References RHooks.add_module(), Hooks.add_module(), and RExec.add_module().

237  def copy_none(self, src):
238  m = self.add_module(src.__name__)
239  m.__doc__ = src.__doc__
240  return m
def copy_only (   self,
  src,
  names 
)

Definition at line 226 of file rexec.py.

References RExec.copy_none().

227  def copy_only(self, src, names):
228  dst = self.copy_none(src)
229  for name in names:
230  try:
231  value = getattr(src, name)
232  except AttributeError:
233  continue
234  setattr(dst, name, value)
235  return dst
def is_builtin (   self,
  mname 
)

Definition at line 180 of file rexec.py.

References RExec.ok_builtin_modules.

181  def is_builtin(self, mname):
182  return mname in self.ok_builtin_modules
def load_dynamic (   self,
  name,
  filename,
  file 
)

Definition at line 163 of file rexec.py.

References RExec.copy_except(), and RExec.ok_dynamic_modules.

164  def load_dynamic(self, name, filename, file):
165  if name not in self.ok_dynamic_modules:
166  raise ImportError, "untrusted dynamic module: %s" % name
167  if sys.modules.has_key(name):
168  src = sys.modules[name]
169  else:
170  import imp
171  src = imp.load_dynamic(name, filename, file)
172  dst = self.copy_except(src, [])
173  return dst
def make_builtin (   self)

Definition at line 185 of file rexec.py.

References RExec.copy_except(), RExec.nok_builtin_names, RExec.r_import(), RExec.r_open(), and RExec.r_reload().

186  def make_builtin(self):
187  m = self.copy_except(__builtin__, self.nok_builtin_names)
188  m.__import__ = self.r_import
189  m.reload = self.r_reload
190  m.open = m.file = self.r_open
def make_delegate_files (   self)

Definition at line 275 of file rexec.py.

References RExec.modules, and BasicModuleImporter.modules.

276  def make_delegate_files(self):
277  s = self.modules['sys']
278  self.delegate_stdin = FileDelegate(s, 'stdin')
279  self.delegate_stdout = FileDelegate(s, 'stdout')
280  self.delegate_stderr = FileDelegate(s, 'stderr')
281  self.restricted_stdin = FileWrapper(sys.stdin)
282  self.restricted_stdout = FileWrapper(sys.stdout)
283  self.restricted_stderr = FileWrapper(sys.stderr)
def make_initial_modules (   self)

Definition at line 174 of file rexec.py.

References RExec.make_main(), and RExec.make_osname().

175  def make_initial_modules(self):
176  self.make_main()
177  self.make_osname()
def make_main (   self)

Definition at line 191 of file rexec.py.

References RHooks.add_module(), Hooks.add_module(), and RExec.add_module().

192  def make_main(self):
193  m = self.add_module('__main__')
def make_osname (   self)

Definition at line 194 of file rexec.py.

References RExec.copy_only(), and RExec.ok_posix_names.

195  def make_osname(self):
196  osname = os.name
197  src = __import__(osname)
198  dst = self.copy_only(src, self.ok_posix_names)
199  dst.environ = e = {}
200  for key, value in os.environ.items():
201  e[key] = value
def make_sys (   self)

Definition at line 202 of file rexec.py.

References RExec.copy_only(), RExec.modules, BasicModuleImporter.modules, RExec.ok_builtin_modules, RExec.ok_path, RExec.ok_sys_names, RExec.r_exc_info(), and log_faction_ships.tuple.

203  def make_sys(self):
204  m = self.copy_only(sys, self.ok_sys_names)
205  m.modules = self.modules
206  m.argv = ['RESTRICTED']
207  m.path = map(None, self.ok_path)
208  m.exc_info = self.r_exc_info
209  m = self.modules['sys']
210  l = self.modules.keys() + list(self.ok_builtin_modules)
211  l.sort()
212  m.builtin_module_names = tuple(l)
def r_eval (   self,
  code 
)

Definition at line 256 of file rexec.py.

References RHooks.add_module(), Hooks.add_module(), and RExec.add_module().

257  def r_eval(self, code):
258  m = self.add_module('__main__')
259  return eval(code, m.__dict__)
def r_exc_info (   self)

Definition at line 354 of file rexec.py.

355  def r_exc_info(self):
356  ty, va, tr = sys.exc_info()
357  tr = None
358  return ty, va, tr
359 
def r_exec (   self,
  code 
)

Definition at line 252 of file rexec.py.

References RHooks.add_module(), Hooks.add_module(), and RExec.add_module().

253  def r_exec(self, code):
254  m = self.add_module('__main__')
255  exec code in m.__dict__
def r_execfile (   self,
  file 
)

Definition at line 260 of file rexec.py.

References RHooks.add_module(), Hooks.add_module(), and RExec.add_module().

261  def r_execfile(self, file):
262  m = self.add_module('__main__')
263  execfile(file, m.__dict__)
def r_import (   self,
  mname,
  globals = {},
  locals = {},
  fromlist = [] 
)

Definition at line 264 of file rexec.py.

265  def r_import(self, mname, globals={}, locals={}, fromlist=[]):
266  return self.importer.import_module(mname, globals, locals, fromlist)
def r_open (   self,
  file,
  mode = 'r',
  buf = -1 
)

Definition at line 347 of file rexec.py.

References aifc.open().

348  def r_open(self, file, mode='r', buf=-1):
349  if mode not in ('r', 'rb'):
350  raise IOError, "can't open files for writing in restricted mode"
351  return open(file, mode, buf)
def r_reload (   self,
  m 
)

Definition at line 267 of file rexec.py.

268  def r_reload(self, m):
269  return self.importer.reload(m)
def r_unload (   self,
  m 
)

Definition at line 270 of file rexec.py.

271  def r_unload(self, m):
272  return self.importer.unload(m)
def reset_files (   self)

Definition at line 297 of file rexec.py.

References RExec.modules, BasicModuleImporter.modules, RExec.restore_files(), RExec.restricted_stderr, RExec.restricted_stdin, and RExec.restricted_stdout.

298  def reset_files(self):
299  self.restore_files()
300  s = self.modules['sys']
301  self.restricted_stdin = s.stdin
302  self.restricted_stdout = s.stdout
303  self.restricted_stderr = s.stderr
304 
def restore_files (   self)

Definition at line 310 of file rexec.py.

References RExec.save_stderr, RExec.save_stdin, and RExec.save_stdout.

311  def restore_files(self):
312  sys.stdin = self.save_stdin
313  sys.stdout = self.save_stdout
314  sys.stderr = self.save_stderr
def s_apply (   self,
  func,
  args = (),
  kw = None 
)

Definition at line 315 of file rexec.py.

References RExec.restore_files(), RExec.save_files(), and RExec.set_files().

316  def s_apply(self, func, args=(), kw=None):
317  self.save_files()
318  try:
319  self.set_files()
320  if kw:
321  r = apply(func, args, kw)
322  else:
323  r = apply(func, args)
324  finally:
325  self.restore_files()
326  return r
def s_eval (   self,
  args 
)

Definition at line 330 of file rexec.py.

References RExec.r_eval(), and RExec.s_apply().

331  def s_eval(self, *args):
332  return self.s_apply(self.r_eval, args)
def s_exec (   self,
  args 
)

Definition at line 327 of file rexec.py.

References RExec.r_exec(), and RExec.s_apply().

328  def s_exec(self, *args):
329  return self.s_apply(self.r_exec, args)
def s_execfile (   self,
  args 
)

Definition at line 333 of file rexec.py.

References RExec.r_execfile(), and RExec.s_apply().

334  def s_execfile(self, *args):
335  return self.s_apply(self.r_execfile, args)
def s_import (   self,
  args 
)

Definition at line 336 of file rexec.py.

References RExec.r_import(), and RExec.s_apply().

337  def s_import(self, *args):
338  return self.s_apply(self.r_import, args)
def s_reload (   self,
  args 
)

Definition at line 339 of file rexec.py.

References RExec.r_reload(), and RExec.s_apply().

340  def s_reload(self, *args):
341  return self.s_apply(self.r_reload, args)
def s_unload (   self,
  args 
)

Definition at line 342 of file rexec.py.

References RExec.r_unload(), and RExec.s_apply().

343  def s_unload(self, *args):
344  return self.s_apply(self.r_unload, args)
def save_files (   self)

Definition at line 305 of file rexec.py.

306  def save_files(self):
307  self.save_stdin = sys.stdin
308  self.save_stdout = sys.stdout
309  self.save_stderr = sys.stderr
def set_files (   self)

Definition at line 284 of file rexec.py.

References RExec.delegate_stderr, RExec.delegate_stdin, RExec.delegate_stdout, RExec.make_delegate_files(), RExec.modules, BasicModuleImporter.modules, RExec.restricted_stderr, RExec.restricted_stdin, RExec.restricted_stdout, and RExec.save_files().

285  def set_files(self):
286  if not hasattr(self, 'save_stdin'):
287  self.save_files()
288  if not hasattr(self, 'delegate_stdin'):
289  self.make_delegate_files()
290  s = self.modules['sys']
291  s.stdin = self.restricted_stdin
292  s.stdout = self.restricted_stdout
293  s.stderr = self.restricted_stderr
294  sys.stdin = self.delegate_stdin
295  sys.stdout = self.delegate_stdout
296  sys.stderr = self.delegate_stderr
def set_trusted_path (   self)

Definition at line 158 of file rexec.py.

159  def set_trusted_path(self):
160  # Set the path from which dynamic modules may be loaded.
161  # Those dynamic modules must also occur in ok_builtin_modules
162  self.trusted_path = filter(os.path.isabs, sys.path)

Field Documentation

delegate_stderr

Definition at line 279 of file rexec.py.

delegate_stdin

Definition at line 277 of file rexec.py.

delegate_stdout

Definition at line 278 of file rexec.py.

hooks

Definition at line 140 of file rexec.py.

importer

Definition at line 156 of file rexec.py.

loader

Definition at line 155 of file rexec.py.

modules

Definition at line 142 of file rexec.py.

tuple nok_builtin_names = ('open', 'file', 'reload', '__import__')
static

Definition at line 135 of file rexec.py.

tuple ok_builtin_modules
static
Initial value:
1 = ('audioop', 'array', 'binascii',
2  'cmath', 'errno', 'imageop',
3  'marshal', 'math', 'md5', 'operator',
4  'parser', 'regex', 'pcre', 'rotor', 'select',
5  'sha', '_sre', 'strop', 'struct', 'time')

Definition at line 122 of file rexec.py.

ok_builtin_modules

Definition at line 148 of file rexec.py.

ok_dynamic_modules

Definition at line 143 of file rexec.py.

tuple ok_path = tuple(sys.path)
static

Definition at line 120 of file rexec.py.

tuple ok_posix_names
static
Initial value:
1 = ('error', 'fstat', 'listdir', 'lstat', 'readlink',
2  'stat', 'times', 'uname', 'getpid', 'getppid',
3  'getcwd', 'getuid', 'getgid', 'geteuid', 'getegid')

Definition at line 128 of file rexec.py.

tuple ok_sys_names
static
Initial value:
1 = ('ps1', 'ps2', 'copyright', 'version',
2  'platform', 'exit', 'maxint')

Definition at line 132 of file rexec.py.

restricted_stderr

Definition at line 282 of file rexec.py.

restricted_stdin

Definition at line 280 of file rexec.py.

restricted_stdout

Definition at line 281 of file rexec.py.

save_stderr

Definition at line 308 of file rexec.py.

save_stdin

Definition at line 306 of file rexec.py.

save_stdout

Definition at line 307 of file rexec.py.

trusted_path

Definition at line 161 of file rexec.py.


The documentation for this class was generated from the following file: