Un wrapper minimaliste et sans dépendance pour héberger des scripts CGI avec prise en charge HTTP/1.1. Publié sous la licence MIT.
Installez la dernière version stable de cgi-core :
npm installer cgi-core
Ensuite, démarrez un serveur CGI :
npx cgi-server --filePath ./cgi-bin
Voici un exemple de configuration d'un serveur CGI avec cgi-core :
import { createServer } from "node:http";import { createHandler } from "cgi-core";// crée un serveur http qui gère les requêtes CGI sous le chemin URL /cgi-binconst handler = createHandler({
urlPath : "/cgi-bin",
chemin du fichier : "./cgi-bin",
extensions : {"/usr/bin/perl": ["pl", "cgi"],"/usr/bin/python": ["py"],"/usr/local/bin/node": [" js", "nœud"],
},
debugOutput : false,});const app = createServer(async (req, res) => {
const requestHandled = wait handler(req, res);
if (!requestHandled) {// ici, gérez tout routage en dehors de urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( "en dehors de urlPath");
}});app.listen(3000);Exemple d'utilisation utilisant Express.
URL de base pour le routage. Par défaut : '/cgi-bin'
Chemin du fichier où se trouvent les scripts CGI. Il est fortement conseillé de définir une valeur pour filePath (exemple : './cgi-bin'). Par défaut : process.cwd()
Objet contenant les valeurs d’extension de fichier pour les chemins d’interpréteur donnés. Si aucun chemin d'interprétation n'est trouvé pour une extension de fichier, le script CGI sera appelé en tant qu'exécutable autonome. Défaut:
// sur les systèmes POSIX{
"/usr/bin/perl": ["pl", "cgi"],
"/usr/bin/python": ["py"],
"/usr/local/bin/node": ["js", "node"]}// sur les systèmes Windows{
"perl": ["pl", "cgi"],
"python": ["py"],
"noeud": ["js", "noeud"]}Extension de fichier permettant de rechercher un script CGI d'index dans un répertoire donné. Par défaut : 'js'
Définissez true pour activer la sortie de débogage. Par défaut : false
Définissez true pour imprimer les journaux de requêtes HTTP sur STDOUT. Par défaut : false
Taille des charges utiles de requête HTTP et de réponse autorisées en octets. Par défaut : 2 * 1024 * 1024 (2 Mo)
Taille des blocs de données de charge utile de la requête HTTP en octets. Par défaut : 16 * 1024 (16 Ko)
Taille des blocs de données de charge utile de la réponse HTTP en octets. Par défaut : 16 * 1024 (16 Ko)
Objet contenant des charges utiles de réponse HTTP personnalisées par code d'état. Défaut: {}
// Exemple:{
404 : {content : `<html> <body>404 : Fichier introuvable</body> </html>`,contentType : "text/html"
},
500 : {content : `<html> <body>500 : Erreur de serveur interne</body> </html>`,contentType : "text/html"
}} Objet contenant des variables d'environnement personnalisées à transmettre aux scripts CGI. Défaut: {}
// Exemple:{
SERVER_ADMIN : "[email protected]",
ANOTHER_VAR : "une autre valeur"} La commande cgi-server peut être utilisée pour exécuter un serveur HTTP afin de servir des scripts CGI.
npx cgi-server --port 3001 --urlPath /cgi-bin --filePath ./cgi-bin
-h, --help Display help --urlPath <urlPath> Set base url path for routing --filePath <filePath> Set file path where the CGI scripts are located --indexExtension <extension> 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 <port> Set the port to listen on
En plus des variables standard liées à HTTP, les variables d'environnement CGI suivantes sont prises en charge :
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
cgi-core est publié sous la licence MIT.
100 % gratuit : cgi-core peut être utilisé librement dans des projets propriétaires et open source.
L'attribution est requise : vous devez conserver le nom de l'auteur et les informations de licence dans tout code distribué. Ces éléments n'ont pas besoin d'être accessibles à l'utilisateur et peuvent rester dans la base de code.