proxbox
v0.0.0
Published
Transparently make system calls on remote machines.
Downloads
2
Readme
proxbox
Transparently make system calls on remote machines.
proxbox allows you to sandbox your code and selectively run system calls on remote machines. For example you could use this to effortlessly proxy a net
socket or transparently access the fs
on another machine.
All communication between your and the remote machines is securely encrypted via the tls
module.
Installation
$ npm install proxbox
Should you plan on only using one part of proxbox (Proxy or Sandbox) in your environment you can also install the needed packages by only running one of these commands:
$ npm install proxbox-proxy
$ npm install proxbox-sandbox
API synopsis
proxbox
is a bundle of the packages proxbox-sandbox
(your machine) and probox-proxy
(the remote machine). For detailed API docs head over to the coresponding repos.
var proxbox = require("proxbox");
var Proxy = proxbox.Proxy;
var Sandbox = proxbox.Sandbox;
// ...is equivalent to...
var Proxy = require("proxbox-proxy");
var Sandbox = require("proxbox-sandbox");
Example
// your-machine.js
/**
* Module dependencies.
*/
var Sandbox = require("proxbox-sandbox");
/**
* Pre-configure sandbox.
*/
Sandbox.configure({
connection: {
host: "192.168.0.2",
port: "1234",
/**
* Some possible additional parameters for a secure TLS/SSL connection.
* http://nodejs.org/api/tls.html#tls_tls_connect_options_callback
*/
pfx: secureKeyOfLocalMachine,
ca: theirSecureCert
},
/**
* Modules that should be "required" from the remote machine.
*/
modules: ["http", "net", "dgram", "tls", "fs"]
});
/**
* Just like require("./some-module.js");
*/
var someModule = Sandbox("./some-module.js");
// some-module.js
/**
* Module dependencies.
*/
var http = require("http");
http.get("http://wtfismyip.com/text", function(res) {
res.on("data", function(ip) {
console.log("The IP of the remote machine is:", ip);
});
});
// remote-machine.js
/**
* Module dependencies.
*/
var Proxy = require("proxbox-proxy");
/**
* Initialize a new Proxy.
*/
var proxy = Proxy({
connection: {
host: "192.168.0.2",
port: "1234",
/**
* Some possible additional parameters for a secure TLS/SSL connection.
* http://nodejs.org/api/tls.html#tls_tls_connect_options_callback
*/
pfx: secureKeyOfRemoteMachine
},
/**
* Modules that are allowed to be "required" by the sandbox.
*/
modules: ["http", "net", "dgram", "tls", "fs"]
});
proxy.on("listening", function() {
console.log("Proxy is ready.");
});
proxy.on("connection", function(socket) {
console.log("There's a new sandbox connected.");
});