proxbox

0.0.0 • Public • Published

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.");
});

Readme

Keywords

Package Sidebar

Install

npm i proxbox

Weekly Downloads

2

Version

0.0.0

License

MIT

Last publish

Collaborators

  • silvinci