Skip to content

bmeck/sandbox

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node Sandbox

A nifty javascript sandbox for node.js.

Some features

  • Can be used to execute untrusted code.
  • Support for timeouts (e.g. prevent infinite loops)
  • Handles errors gracefully
  • Restricted code (cannot access node.js methods)
  • Supports console.log and print utility methods

Example

Be sure to check out example/example.js

var s = new Sandbox()
s.run( '1 + 1 + " apples"', function( output ) {
  // output.result == "2 apples"
})

Documentation

Basic syntax: sandbox_instance.run( code, callback )

code is the string of Javascript to be executed.

callback is a function, and it's called with a two arguments, err and output.

output is an object with the following properties properties:

result is an inspected string of the return value of the code. console is an array of all console output. typeof is the typeof the result (useful for when things do not encode as JSON).

For example, given the following code:

function add( a, b ){
  console.log( a )
  console.log( b )
  return a + b
}
add( 20, 22 )

The resulting output object is:

{ result: "42"
, console: [ "20", "22" ]
, typeof: "number"
}

Installation & Running

Let's get it! The easiest way is through npm:

npm install sandbox

Or if you'd like to play with the code, see the examples, run the tests, what-the-fuck-ever...

git clone git://github.com/gf3/sandbox.git

And run some examples:

node example/example.js

Tests

To run the tests you'll have to install async_testing, then simply run the spec files from node.

npm install async_testing
node spec/sandbox.spec.js

License

Sandbox is UNLICENSED.

Author

About

A nifty javascript sandbox for node.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 86.8%
  • C++ 13.2%