Um wrapper minimalista e sem dependência para hospedar scripts CGI com suporte HTTP/1.1. Lançado sob a licença MIT.
Instale a versão estável mais recente do cgi-core
:
npm instalar cgi-core
Então, inicie um servidor CGI:
npx cgi-server --filePath ./cgi-bin
Aqui está um exemplo de como configurar um servidor CGI com cgi-core
:
import { createServer } from "node:http";import { createHandler } from "cgi-core";// cria um servidor http que lida com solicitações CGI sob o caminho da URL /cgi-binconst handler = createHandler({ urlPath: "/cgi-bin", caminho do arquivo: "./cgi-bin", extensões: {"/usr/bin/perl": ["pl", "cgi"],"/usr/bin/python": ["py"],"/usr/local/bin/node": [" js", "nó"], }, debugOutput: false,});const app = createServer(async (req, res) => { const requestHandled = aguarda manipulador (req, res); if (!requestHandled) {// aqui, lide com qualquer roteamento fora de urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( "fora de urlPath"); }});app.listen(3000);
Exemplo de uso usando Express.
URL base para roteamento. Padrão: '/cgi-bin'
Caminho do arquivo onde os scripts CGI estão localizados. É altamente recomendável definir um valor para filePath
(exemplo: './cgi-bin'). Padrão: process.cwd()
Objeto que contém valores de extensão de arquivo para determinados caminhos de intérprete. Se nenhum caminho de interpretador for encontrado para uma extensão de arquivo, o script CGI será chamado como um executável independente. Padrão:
// em sistemas POSIX{ "/usr/bin/perl": ["pl", "cgi"], "/usr/bin/python": ["py"], "/usr/local/bin/node": ["js", "node"]}// em sistemas Windows{ "perl": ["pl", "cgi"], "python": ["py"], "nó": ["js", "nó"]}
Extensão de arquivo para procurar um script CGI de índice em qualquer diretório. Padrão: 'js'
Defina como verdadeiro para ativar a saída de depuração. Padrão: false
Defina como verdadeiro para imprimir logs de solicitação HTTP em STDOUT. Padrão: false
Tamanho das cargas de solicitação e resposta HTTP permitidas em bytes. Padrão: 2 * 1024 * 1024
(2 MB)
Tamanho dos pedaços de dados da carga útil da solicitação HTTP em bytes. Padrão: 16 * 1024
(16 KB)
Tamanho dos pedaços de dados da carga útil da resposta HTTP em bytes. Padrão: 16 * 1024
(16 KB)
Objeto que contém cargas de resposta HTTP personalizadas por código de status. Padrão: {}
// Exemplo:{ 404: {content: ` 404: Arquivo não encontrado `,contentType: "text/html" }, 500: {content: ` 500: Erro interno do servidor `,contentType: "text/html" }}
Objeto que contém variáveis de ambiente personalizadas para passar para os scripts CGI. Padrão: {}
// Exemplo:{ SERVER_ADMIN: "[email protected]", ANOTHER_VAR: "outro valor"}
O comando cgi-server
pode ser usado para executar um servidor HTTP para servir scripts CGI.
npx cgi-server --port 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
Além das variáveis padrão relacionadas ao HTTP, as seguintes variáveis de ambiente CGI são suportadas:
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
cgi-core
é lançado sob a licença MIT.
100% gratuito: cgi-core
pode ser usado livremente em projetos proprietários e de código aberto.
A atribuição é obrigatória: você deve manter o nome do autor e as informações da licença em qualquer código distribuído. Esses itens não precisam ser voltados para o usuário e podem permanecer na base de código.