0.6.1 • Published 10 years ago

serve-cgi v0.6.1

Weekly downloads
1
License
BSD
Repository
-
Last release
10 years ago

#node-serve-cgi

Serve cgi by express or node

Install

npm install serve-cgi

Usage

var app = require('express')();
var cgi = require('serve-cgi')({
  root: __dirname + '/cgi-bin',
  roles: {
    '.php': '/usr/bin/php5-cgi',
    '.sh': '/bin/sh'
  },
  indexes: ['index.php', 'index.sh']
});

app.use('/cgi-bin', cgi);

// dir structure
//  app.js
//  cgi-bin/
//  └── index.php

Options

mount: (default: see Express app.use). See root.

root: (default: process.env.DOCUMENT_ROOT || process.cwd) The root of cgi dir. Work with mount, for example:

app.use('/cgi-bin', cgi({}))
// http://127.0.0.1/cgi-bin/hello.sh  =>  #{root}/hello.sh   mount = /cgi-bin

app.use('/cgi-bin', cgi({mount: '/'}))
// http://127.0.0.1/cgi-bin/hello.sh  =>  #{root}/cgi-bin/hello.sh   mount = /

app.use(cgi)
// http://127.0.0.1/cgi-bin/hello.sh  =>  #{root}/cgi-bin/hello.sh   mount = /

cwd: (default: same as root) The work directory of cgi processt.

indexes: (default: empty) An array of index filenames, when a directory is matched serve-cgi will try them in order. If none of index exists, serve-cgi will do nothing(jump to next middleware, if no middleware deal it, then 404)

roles: As you see in Usage

redirect_dir: (default true) If this is true, when you access 127.0.0.1/cgi/dir, you will jump to 127.0.0.1/cgi/dir/. This will be help in most case.

decorator: (default: do nothing) After cgi is invoked, you can decorate the result of cgi. For example, use layout decared in node.

// default implement
var decorator = function(headers, body, done) {
  // headers is an Object
  // headers.status is cgi status
  // headers['content-type'] is content-type
  // take care here, do not decorate binary data
  done(headers, body);
};

env: (default: {}) Set custom env into cgi, envs here has high priority. for example you can cover DOCUMENT_ROOT here.

logger: (default: console.log) Where to output logs about serve-cgi. stderr: (default: process.stdout.write) Where to output stderr of cgi.

POST requests

For some reasons, node-serve-cgi cannot get raw body from express 4 directly. So node-serve-cgi cannot deal POST requests directly. We need an extra middleware to get rawBody.

See https://github.com/jinchizhong/express-grab-body

Of course, you can set req.rawBody by other ways.

See demo/app.js...

0.6.1

10 years ago

0.6.0

10 years ago

0.5.0

10 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.2.10

10 years ago

0.2.9

10 years ago

0.2.8

10 years ago

0.2.7

10 years ago

0.2.6

10 years ago

0.2.5

10 years ago

0.1.4

10 years ago