from django.http import HttpResponse import sys sys.path.append('/home/xsx/__usrsrc__/pypy-trunk') #from pypy.translator.sandbox.sandlib import SandboxedProc from pypy.translator.sandbox.pypy_interact import PyPySandboxedProc from cStringIO import StringIO SANDBOX_BIN = 'pypy-sandbox' registered_funcs = {} def register_func(f): registered_funcs[f.__name__] = f class DjangoSandbox(PyPySandboxedProc): def __init__(self, code): #for f in registered_funcs: # setattr(self, f, registered_funcs[f]) super(DjangoSandbox, self).__init__(SANDBOX_BIN, ['-c', code]) def sandbox(request): if request.method == 'POST': code = request.POST['codepad'] code_output = StringIO() #sandproc = pypy_interact.PyPySandboxedProc(SANDBOX_BIN, ['-c', code]) sandproc = DjangoSandbox(code) try: sandproc.interact(stdout=code_output, stderr=code_output) finally: sandproc.kill() page = """
%s
%s