コード例 #1
0
ファイル: yii.activeForm.test.js プロジェクト: Alex-Bond/yii2
 function registerTestableCode() {
     var yii = registerYii();
     var code = fs.readFileSync(yiiActiveFormPath);
     var script = new vm.Script(code);
     var context = new vm.createContext({window: window, document: window.document, yii: yii});
     script.runInContext(context);
 }
コード例 #2
0
ファイル: webpack-util.test.js プロジェクト: 18F/calc
function execInVm(file) {
  const sandbox = {};
  const script = new vm.Script(file.contents.toString());
  const context = vm.createContext(sandbox);
  script.runInContext(context);
  return sandbox;
}
コード例 #3
0
        this.connPromise.then((conn) => {
          let sandbox = {r: r, conn: conn, result: null};
          let script = new vm.Script('result = ' + this.lineBuffer+ '.run(conn);');
          let context = new vm.createContext(sandbox);
          this.lineBuffer ='';

          try {
            script.runInContext(context);
            sandbox.result.then((cursor) => {

              cursor.toArray().then((item) => {
                console.log(item);
                this.promptLine();
              }).error((error)=>{
                console.log(error.msg);
                this.promptLine();
              });

            }).error((error)=> {
              console.log(error.msg);
              this.promptLine();
            });
          } catch (error) {

            console.error(error);
            this.promptLine();
          }
        });
コード例 #4
0
function newContext (globals) {
  var sandbox = globals || {module:module,require:require,process:process,console:console}
  sandbox.global = sandbox;
  var ctx = vm.createContext(sandbox);
  cljsScript.runInContext(ctx);
  return ctx;
}
コード例 #5
0
    function registerTestableCode() {
        var code = fs.readFileSync(yiiCaptchaPath);
        var script = new vm.Script(code);
        var context = new vm.createContext({window: window});

        script.runInContext(context);
    }
コード例 #6
0
function initialize(filename, data){
    const id = '__hola_xyzzy__';
    let text = fs.readFileSync(filename, 'utf8');
    let script = new vm.Script(text, {filename: filename});
    let m = {exports: {}};
    let console = Object.create(global.console);
    // console.log = console.info = ()=>{}; // silence debug logging
    let context = vm.createContext({
        module: m,
        exports: m.exports,
        console,
        Buffer,
    });
    context.global = context;
    script.runInContext(context);
    if (m.exports.init)
    {
        if (data)
        {
            Object.defineProperty(context, id, {value: data});
            vm.runInContext(`module.exports.init(${id})`, context);
        }
        else
            vm.runInContext(`module.exports.init()`, context);
    } else if (data)
        throw new Error('data supplied but no init function');
    return context;
}
コード例 #7
0
ファイル: mcook.js プロジェクト: lhz516/mcook
 fs.readFile(configFile, 'utf8', function (err, data) {
   if (err) {
     console.log('Read configuration file failed');
   } else {
     console.log('Read configuration file success');
     let obj;
     try {
       const vm = require('vm');
       let sandbox  = { module };
       let script = new vm.Script(data);
       const context = new vm.createContext(sandbox);
       script.runInContext(context);
       obj = sandbox.module.exports;
     } catch (err) {
       console.log(`[Error] Json parse failed: ${err.message}`);
     }
     if (obj) {
       const Mcook = require('../lib');
       const mcook = new Mcook(obj);
       mcook.validateConfiguration((err) => {
         if (err) {
           console.log(err.message);
         } else {
           mcook.createProject((err) => {
             if (err) {
               console.log(err.message);
             }
           });
         }
       });
     }
   }
 });
コード例 #8
0
ファイル: index.js プロジェクト: gremlinLee/VM_Test
function runContext(func) {
  var context = vm.createContext(sandBox);
  var script = new vm.Script(func, {
    timeout: 5000
  });
  script.runInContext(context);
}
コード例 #9
0
function initialize(filename, data) {

    var text = fs.readFileSync(filename, 'utf8');

    var script = new vm.Script(text, {filename: filename});
    m = {exports: {}};
    var console = Object.create(global.console);
//    console.log = console.info = ()=>{}; // silence debug logging
    console.log(filename);
    var context = vm.createContext({
        module: m,
        exports: m.exports,
        console: console,
        Buffer: Buffer,
    });
    context.global = context;
    script.runInContext(context);
    if (m.exports.init)
    {
        if (data)
        {
            context['data'] = {value: data};
            vm.runInContext(m.exports.init(data), context);
        }
        else
            vm.runInContext(m.exports.init(), context);
    } else if (data)
        throw new Error('data supplied but no init function');

    return context;
}
コード例 #10
0
ファイル: index.js プロジェクト: EugeneOne/Eproject
HtmlWebpackPlugin.prototype.evaluateCompilationResult = function (compilation, source) {
  if (!source) {
    return Promise.reject('The child compilation didn\'t provide a result');
  }

  // The LibraryTemplatePlugin stores the template result in a local variable.
  // To extract the result during the evaluation this part has to be removed.
  source = source.replace('var HTML_WEBPACK_PLUGIN_RESULT =', '');
  var template = this.options.template.replace(/^.+!/, '').replace(/\?.+$/, '');
  var vmContext = vm.createContext(_.extend({HTML_WEBPACK_PLUGIN: true, require: require}, global));
  var vmScript = new vm.Script(source, {filename: template});
  // Evaluate code and cast to string
  var newSource;
  try {
    newSource = vmScript.runInContext(vmContext);
  } catch (e) {
    return Promise.reject(e);
  }
  if (typeof newSource === 'object' && newSource.__esModule && newSource.default) {
    newSource = newSource.default;
  }
  return typeof newSource === 'string' || typeof newSource === 'function'
    ? Promise.resolve(newSource)
    : Promise.reject('The loader "' + this.options.template + '" didn\'t return html.');
};
コード例 #11
0
  execute(input){

    this.createSandbox();

    this.sandbox.print = data => {
      this.getOutputstream().emit('print', data);
      this.getOutputstream().write(data);
    }

    this.sandbox.template = template => {
      const fileName = __dirname + '/../../templates/' + template + '.tpl'
      const data = fs.readFileSync(fileName);
      const TextParser = require('./TextParser');
      return new TextParser({
        sandbox: this.getSandbox()
      }).parse(''+data);
    };

    
   
    this.createContext();
    
    if (input.indexOf('use strict') === -1) {
      input = '"use strict"; \n' + input;
    }

    var script = new vm.Script(input);
    script.runInContext(this.getContext());
    

  }
コード例 #12
0
ファイル: Validator.js プロジェクト: Botachio/formio
  var _toggleCustomConditional = function(componentKey) {
    if (_customConditionals.hasOwnProperty(componentKey)) {
      var cond = _customConditionals[componentKey];

      try {
        // Create the sandbox.
        var sandbox = vm.createContext({
          data: submission.data
        });

        // Execute the script.
        var script = new vm.Script(cond);
        script.runInContext(sandbox, {
          timeout: 250
        });

        if (boolean.hasOwnProperty(sandbox.show)) {
          show[componentKey] = boolean[sandbox.show];
        }
        else {
          show[componentKey] = true;
        }
      }
      catch (e) {
        debug.validator('Custom Conditional Error: ');
        debug.validator(e);
        debug.error(e);
        // Default to true, if a validation error occurred.
        show[componentKey] = true;
      }
    }
  };
コード例 #13
0
function evaluateJSON(data, incomingMsg, process, options) {
  var sandbox = {
    msg: incomingMsg,
    pv: function pv(name) {
      if (name === 'accessToken') {
        return options.accessToken;
      }
      var val = process._processVariables[name];
      if (typeof val === 'undefined' && process._parentProcessVariables) {
        val = process._parentProcessVariables[name];
      }
      return val;
    },
    data: data,
    _output: null
  };

  var script = '_output = ' + data;
  // eslint-disable-next-line
  var context = new vm.createContext(sandbox);
  try {
    var compiledScript = new vm.Script(script);
    compiledScript.runInContext(context, { timeout: 1000 });
  } catch (e) {
    log.error(options, e);
    return e;
  }
  return sandbox._output;
}
コード例 #14
0
ファイル: yii.activeForm.test.js プロジェクト: Alex-Bond/yii2
 function registerYii() {
     var code = fs.readFileSync(yiiPath);
     var script = new vm.Script(code);
     var sandbox = {window: window, jQuery: $};
     var context = new vm.createContext(sandbox);
     script.runInContext(context);
     return sandbox.window.yii;
 }
コード例 #15
0
ファイル: index.js プロジェクト: wcandillon/courrier
 tests.forEach(test => {
     let script = new vm.Script(test.script.exec);
     try {
         script.runInContext(context);
     } catch(e) {
         tests['Script execute without throwing an exception'] = false;   
     }
 });
コード例 #16
0
ファイル: hot-tests.js プロジェクト: KaroseLiu/meteor-hmr
  constructor() {
    this.context = new vm.createContext(contextBase);
    this.exec('window = this; global = this;');

    meteorRuntimeConfig.runInContext(this.context);

    for (let pkg of packages)
      this.loadPackage(pkg);
  }
コード例 #17
0
    function loadScript(path) {
        var code = fs.readFileSync(path, {encoding: 'utf8'});
        var script = new vm.Script(code, {
            filename: path,
            displayErrors: true
        });

        script.runInContext(context);
    }
コード例 #18
0
ファイル: postmanLib.js プロジェクト: scriptllh/yapi-k8s
function sandboxByNode(sandbox={}, script){
  const vm = require('vm');
  script = new vm.Script(script);
  const context = new vm.createContext(sandbox);
  script.runInContext(context, {
    timeout: 3000
  });
  return sandbox;
}
コード例 #19
0
ファイル: index.js プロジェクト: torvalamo/querista-define
 files.forEach((file) => {
   let branch = fs.readFileSync(path.join(dir, file), 'utf8');
   branch = new vm.Script('obj = Statement(' + branch + ');', {
     filename: file,
     displayErrors: true
   });
   let thisCtx = Object.assign({obj: null}, ctx);
   branch.runInContext(thisCtx);
   merge(blueprint, thisCtx.obj);
 });
コード例 #20
0
ファイル: index.js プロジェクト: orangemug/node-env
      b.bundle(function(err, buffer) {
        if(err) {
          done(err);
          return;
        }

        var script = new vm.Script(buffer.toString()+"; testOut=require('env')");
        context = new vm.createContext({testOut: null});
        script.runInContext(context);
        done(undefined, context);
      })
コード例 #21
0
ファイル: builder.js プロジェクト: trypton/node-ckbuilder
		loaderScripts = ( function() {
			var code = 'var CKEDITOR = { basePath : \'/ckeditor/\' }; ' + ckbuilder.io.readFile( loaderFile );
			var script = new vm.Script( code, { filename: loaderFile } );
			var scope = {};
			vm.createContext( scope );

			try {
				script.runInContext( scope );
				return scope.CKEDITOR.loader.scripts;
			} catch ( e ) {
				throw( 'Invalid JavaScript file: ' + loaderFile + '.\nError: ' + e.message );
			}
		}() );
コード例 #22
0
 }).then( async function ( bundle ) {
   var generated = await bundle.generate({format: "es"});
   var code = generated.code;
   var script = new vm.Script(code);
   var context = vm.createContext({
     dirname: path.join(__dirname, 'fixtures'),
     filename: path.join(__dirname, 'fixtures', 'dirname.js'),
     setTimeout: setTimeout,
     clearTimeout: clearTimeout,
   });
   context.self = context;
   script.runInContext(context);
 });
コード例 #23
0
ファイル: Index.js プロジェクト: DavidZal/chainsaw.js
    function executeCode(code, isCodeBlock) {

        var flatScope = flattenScopes(); //make all levels of the scope accessable

        if (!isCodeBlock) {
            flatScope.__ChainsawResult = null; //get the result
            code = "__ChainsawResult=(\n" + code + "\n)";
        }
        var context = new vm.createContext(flatScope);
        var script = new vm.Script(code);
        script.runInContext(context);

        updateScopes(flatScope);
        return flatScope.__ChainsawResult;
    }
コード例 #24
0
 WebpackResourceLoader.prototype._evaluate = function (fileName, source) {
     try {
         var vmContext = vm.createContext(Object.assign({ require: require }, global));
         var vmScript = new vm.Script(source, { filename: fileName });
         // Evaluate code and cast to string
         var newSource = void 0;
         newSource = vmScript.runInContext(vmContext);
         if (typeof newSource == 'string') {
             return Promise.resolve(newSource);
         }
         return Promise.reject('The loader "' + fileName + '" didn\'t return a string.');
     }
     catch (e) {
         return Promise.reject(e);
     }
 };
コード例 #25
0
    response.on('end', function() {
        var pattern = /var (beaches = .*);\/\/]]>/g;
        var match = pattern.exec(body);

        var sandbox = {beaches: []};

        const script = new vm.Script(match[1]);
        const context = vm.createContext(sandbox);
        script.runInContext(context);

        context.beaches.forEach(function (station) {
          stations.push(buildStation(station));
        });

        printStations();
    });
コード例 #26
0
 _evaluate(fileName, source) {
     try {
         const vmContext = vm.createContext(Object.assign({ require: require }, global));
         const vmScript = new vm.Script(source, { filename: fileName });
         // Evaluate code and cast to string
         let newSource;
         newSource = vmScript.runInContext(vmContext);
         if (typeof newSource == 'string') {
             return Promise.resolve(newSource);
         }
         return Promise.reject('The loader "' + fileName + '" didn\'t return a string.');
     }
     catch (e) {
         return Promise.reject(e);
     }
 }
コード例 #27
0
ファイル: SandboxVM.js プロジェクト: senssei/tessellate
  run(source: string): Object {
    const globals = {
      module: {},
      exports: {}
    };
    globals.module.exports = globals.exports;
    const script = new vm.Script(source, { displayErrors: true });
    const sandbox = Object.assign({}, globals, this.globals);
    const context = vm.createContext(sandbox);
    const result = script.runInContext(context);

    if (result && isExport(result.default)) return result.default;
    if (isExport(result)) return result;
    if (isExport(sandbox.module.exports)) return sandbox.module.exports;
    if (isExport(sandbox.exports)) return sandbox.exports;
    else return {};
  }
コード例 #28
0
ファイル: resource_loader.js プロジェクト: Kaijul/MySite
 _evaluate(output) {
     try {
         const outputName = output.outputName;
         const vmContext = vm.createContext(Object.assign({ require: require }, global));
         const vmScript = new vm.Script(output.source, { filename: outputName });
         // Evaluate code and cast to string
         let evaluatedSource;
         evaluatedSource = vmScript.runInContext(vmContext);
         if (typeof evaluatedSource == 'string') {
             return Promise.resolve(evaluatedSource);
         }
         return Promise.reject('The loader "' + outputName + '" didn\'t return a string.');
     }
     catch (e) {
         return Promise.reject(e);
     }
 }
コード例 #29
0
ファイル: _sandboxCode.js プロジェクト: Clembl-git/kuzzle
process.on('message', data => {
  let sandbox = {};

  if (data.sandbox !== undefined) {
    sandbox = data.sandbox;
  }

  if (data.code === undefined) {
    process.send({
      error: 'No code given'
    });
  }

  try {
    const sandboxContext = vm.createContext(sandbox);
    const script = new vm.Script(data.code);
    const result = script.runInContext(sandboxContext);

    process.send({
      result,
      context: sandboxContext
    });
  }
  catch (e) {

    if (e.name === 'SyntaxError') {
      process.send({
        error: 'Error running sandbox code',
        err: {
          name: e.name,
          message: e.message,
          stack: e.stack
        }
      });
    }
    else {
      process.send({
        result: true,
        context: {}
      });
    }
  }
});
コード例 #30
0
ファイル: actions.js プロジェクト: 2947721120/formio
        async.eachSeries(actions, function(action, cb) {
          var execute = true;

          // See if there is a custom condition.
          if (
            action.condition &&
            action.condition.custom
          ) {
            try {
              var script = new vm.Script(action.condition.custom);
              var sandbox = {
                data: req.body.data,
                execute: false
              };
              script.runInContext(vm.createContext(sandbox), {
                timeout: 500
              });
              execute = sandbox.execute;
            }
            catch (e) {
              debug(e);
              execute = false;
            }
          }

          // See if a condition is not established within the action.
          if (
            action.condition &&
            action.condition.field &&
            (action.condition.eq === 'equals') &&
            (req.body.data[action.condition.field] !== action.condition.value)
          ) {
            execute = false;
          }

          if (!execute) {
            return cb();
          }

          // Resolve the action.
          action.resolve(handler, method, req, res, cb);
        }, function(err) {