Ein minimalistischer Wrapper ohne Abhängigkeiten zum Hosten von CGI-Skripten mit HTTP/1.1-Unterstützung. Veröffentlicht unter der MIT-Lizenz.
Installieren Sie die neueste stabile Version von cgi-core
:
npm CGI-Core installieren
Starten Sie dann einen CGI-Server:
npx cgi-server --filePath ./cgi-bin
Hier ist ein Beispiel für die Einrichtung eines CGI-Servers mit cgi-core
:
import { createServer } from "node:http";import { createHandler } from "cgi-core";// Erstellen Sie einen http-Server, der CGI-Anfragen unter dem URL-Pfad verarbeitet /cgi-binconst handler = createHandler({ URLPath: „/cgi-bin“, Dateipfad: „./cgi-bin“, Erweiterungen: {"/usr/bin/perl": ["pl", "cgi"],"/usr/bin/python": ["py"],"/usr/local/bin/node": [" js“, „node“], }, debugOutput: false,});const app = createServer(async (req, res) => { const requestHandled = wait handler(req, res); if (!requestHandled) {// hier, behandeln Sie jegliches Routing außerhalb von urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( „außerhalb von urlPath“); }});app.listen(3000);
Anwendungsbeispiel mit Express.
Basis-URL für das Routing. Standard: '/cgi-bin'
Dateipfad, in dem sich die CGI-Skripte befinden. Es wird dringend empfohlen, einen Wert für filePath
festzulegen (Beispiel: „./cgi-bin“). Standard: process.cwd()
Objekt, das Dateierweiterungswerte für bestimmte Interpreterpfade enthält. Wenn für eine Dateierweiterung kein Interpreterpfad gefunden wird, wird das CGI-Skript als eigenständige ausführbare Datei aufgerufen. Standard:
// auf POSIX-Systemen{ "/usr/bin/perl": ["pl", "cgi"], „/usr/bin/python“: [„py“], "/usr/local/bin/node": ["js", "node"]}// auf Windows-Systemen{ "perl": ["pl", "cgi"], „python“: [„py“], „node“: [„js“, „node“]}
Dateierweiterung zum Suchen nach einem Index-CGI-Skript in einem bestimmten Verzeichnis. Standard: 'js'
Legen Sie „true“ fest, um die Debug-Ausgabe zu aktivieren. Standard: false
Legen Sie „true“ fest, um HTTP-Anforderungsprotokolle auf STDOUT zu drucken. Standard: false
Größe der zulässigen HTTP-Anforderungs- und Antwortnutzlasten in Bytes. Standard: 2 * 1024 * 1024
(2 MB)
Größe der Nutzdatenblöcke der HTTP-Anfrage in Bytes. Standard: 16 * 1024
(16 KB)
Größe der HTTP-Antwort-Nutzdatendatenblöcke in Bytes. Standard: 16 * 1024
(16 KB)
Objekt, das benutzerdefinierte HTTP-Antwortnutzlasten pro Statuscode enthält. Standard: {}
// Beispiel:{ 404: {content: ` 404: Datei nicht gefunden `,contentType: „text/html“ }, 500: {content: ` 500: Interner Serverfehler `,contentType: „text/html“ }}
Objekt, das benutzerdefinierte Umgebungsvariablen zur Übergabe an die CGI-Skripte enthält. Standard: {}
// Beispiel:{ SERVER_ADMIN: „[email protected]“, ANOTHER_VAR: „ein anderer Wert“}
Mit dem Befehl cgi-server
kann ein HTTP-Server zur Bereitstellung von CGI-Skripten ausgeführt werden.
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
Zusätzlich zu den Standard-HTTP-bezogenen Variablen werden die folgenden CGI-Umgebungsvariablen unterstützt:
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
cgi-core
wird unter der MIT-Lizenz veröffentlicht.
100 % kostenlos: cgi-core
kann sowohl in proprietären als auch in Open-Source-Projekten frei verwendet werden.
Namensnennung ist erforderlich: Sie müssen den Namen des Autors und die Lizenzinformationen in jedem verteilten Code angeben. Diese Elemente müssen nicht für den Benutzer sichtbar sein und können in der Codebasis verbleiben.