Un contenedor minimalista y sin dependencia para alojar scripts CGI con soporte HTTP/1.1. Publicado bajo la licencia MIT.
Instale la última versión estable de cgi-core
:
npm instala cgi-core
Luego, inicie un servidor CGI:
npx servidor cgi --filePath ./cgi-bin
Aquí hay un ejemplo de cómo configurar un servidor CGI con cgi-core
:
import { createServer } from "node:http";import { createHandler } from "cgi-core";// crea un servidor http que maneja solicitudes CGI bajo la ruta URL /cgi-binconst handler = createHandler({ rutaURL: "/cgi-bin", rutadelarchivo: "./cgi-bin", extensiones: {"/usr/bin/perl": ["pl", "cgi"],"/usr/bin/python": ["py"],"/usr/local/bin/node": [" js", "nodo"], }, debugOutput: falso,});const aplicación = createServer(async (req, res) => { const requestHandled = espera el controlador (req, res); if (!requestHandled) {// aquí, maneje cualquier enrutamiento fuera de urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( "fuera de urlPath"); }});aplicación.listen(3000);
Ejemplo de uso usando Express.
URL base para el enrutamiento. Valor predeterminado: '/cgi-bin'
Ruta del archivo donde se encuentran los scripts CGI. Se recomienda encarecidamente establecer un valor para filePath
(ejemplo: './cgi-bin'). Valor predeterminado: process.cwd()
Objeto que contiene valores de extensión de archivo para rutas de intérprete determinadas. Si no se encuentra una ruta de intérprete para una extensión de archivo, el script CGI se llamará como un ejecutable independiente. Por defecto:
// en sistemas POSIX{ "/usr/bin/perl": ["pl", "cgi"], "/usr/bin/python": ["py"], "/usr/local/bin/node": ["js", "node"]}// en sistemas Windows{ "perl": ["pl", "cgi"], "pitón": ["py"], "nodo": ["js", "nodo"]}
Extensión de archivo para buscar un script CGI de índice en cualquier directorio determinado. Predeterminado: 'js'
Establezca verdadero para habilitar la salida de depuración. Predeterminado: false
Establezca verdadero para imprimir registros de solicitudes HTTP en STDOUT. Predeterminado: false
Tamaño de las cargas útiles de solicitud y respuesta HTTP permitidas en bytes. Predeterminado: 2 * 1024 * 1024
(2 MB)
Tamaño de los fragmentos de datos de carga útil de la solicitud HTTP en bytes. Predeterminado: 16 * 1024
(16 KB)
Tamaño de los fragmentos de datos de carga útil de respuesta HTTP en bytes. Predeterminado: 16 * 1024
(16 KB)
Objeto que contiene cargas útiles de respuesta HTTP personalizadas por código de estado. Por defecto: {}
// Ejemplo:{ 404: {contenido: ` 404: Archivo no encontrado `,contentType: "text/html" }, 500: {contenido: ` 500: error interno del servidor `, contentType: "text/html" }}
Objeto que contiene variables de entorno personalizadas para pasar a los scripts CGI. Por defecto: {}
// Ejemplo:{ SERVER_ADMIN: "[email protected]", ANOTHER_VAR: "otro valor"}
El comando cgi-server
se puede utilizar para ejecutar un servidor HTTP para servir scripts CGI.
npx servidor cgi --puerto 3001 --urlPath /cgi-bin --filePath ./cgi-bin
-h, --help Display help --urlPathSet base url path for routing --filePath Set file path where the CGI scripts are located --indexExtension Set file extension to lookup for index files -d, --debugOutput Output errors for HTTP status 500 -l, --logRequests Log HTTP requests to STDOUT -p, --port Set the port to listen on
Además de las variables estándar relacionadas con HTTP, se admiten las siguientes variables de entorno CGI:
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
cgi-core
se publica bajo la licencia MIT.
100% Gratis: cgi-core
se puede utilizar libremente tanto en proyectos propietarios como de código abierto.
Se requiere atribución: debe conservar el nombre del autor y la información de la licencia en cualquier código distribuido. No es necesario que estos elementos estén visibles para el usuario y pueden permanecer dentro del código base.