CGI Script Service

Crossbar.io’s Web server allows you to serve plain old CGI scripts. This can be useful if you have some legacy or other scripts that you want to run as part of a Crossbar.io node.

Configuration

To configure a CGI Script Service, attach a dictionary element to a path in your Web transport Services :

attribute

description

type

Must be “cgi”.

directory

The CGI base directory containing your scripts. The path can be absolute or relative to the Crossbar.io node directory

processor

The CGI script processor to use. This MUST be a fully qualified path to an executable.

Example

Here is a complete example. First, create a new Crossbar.io node

cd ~
mkdir test1
cd test1
crossbar init

Now activate CGI. Add the following snippet to configuration file at ~/test1/.crossbar./config.json

"myscripts": {
   "type": "cgi",
   "directory": "../cgi",
   "processor": "/usr/bin/python"
}

so your complete configuration file looks like

{
   "type": "web",
   "endpoint": {
      "type": "tcp",
      "port": 8080
   },
   "paths": {
      "/": {
         "type": "static",
         "directory": ".."
      },
      "ws": {
         "type": "websocket",
         "url": "ws://localhost:8080/ws"
      },
      "myscripts": {
         "type": "cgi",
         "directory": "../cgi",
         "processor": "/usr/bin/python"
      }
   }
}

This configuration starts a Web Transport that includes a CGI processor on a subpath.

Now create an example CGI directory ~/test1/cgi and create a script file ~/test1/cgi/foo with this contents:

import sys

print("Content-Type: text/html\n\n")

print("""<!doctype html>
<html>
   <body>
      <p>This is {} running {}</p>
   </body>
</html>
""".format(sys.executable, __file__))

Then start Crossbar.io

crossbar start

and open the page http://localhost:8080/myscripts/foo in your browser. You should see a hello from the Python CGI script.