برنامج تغليف بسيط لا يعتمد على أي شيء لاستضافة نصوص CGI بدعم HTTP/1.1. تم إصداره بموجب ترخيص MIT.
قم بتثبيت أحدث إصدار ثابت من cgi-core :
تثبيت npm CGI-core
ثم قم بتشغيل خادم CGI:
npx cgi-server --filePath ./cgi-bin
فيما يلي مثال لكيفية إعداد خادم CGI باستخدام cgi-core :
import { createServer } from "node:http";import { createHandler } from "cgi-core";// أنشئ خادم http يتعامل مع طلبات CGI ضمن مسار عنوان url /cgi-binconst Handler = createHandler({
URLPath: "/cgi-bin"،
مسار الملف: "./cgi-bin"،
الامتدادات: {"/usr/bin/Perl": ["pl"، "cgi"]،"/usr/bin/python": ["py"]،"/usr/local/bin/node": [" شبيبة"، "عقدة"]،
},
debugOutput: false,});const app = createServer(async (req, res) => {
const requestHandled = انتظار المعالج(req, res);
if (!requestHandled) {// هنا، تعامل مع أي توجيه خارج urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( "خارج urlPath");
}});app.listen(3000);مثال للاستخدام باستخدام Express.
عنوان URL الأساسي للتوجيه. الافتراضي: '/cgi-bin'
مسار الملف حيث توجد البرامج النصية CGI. يُنصح بشدة بتعيين قيمة filePath (مثال: './cgi-bin'). الافتراضي: process.cwd()
كائن يحتوي على قيم امتداد الملف لمسارات المترجم المعينة. إذا لم يتم العثور على مسار مترجم لامتداد الملف، فسيتم استدعاء البرنامج النصي CGI باعتباره ملفًا قابلاً للتنفيذ مستقلاً. تقصير:
// على أنظمة POSIX {
"/usr/bin/Perl": ["pl", "cgi"],
"/usr/bin/python": ["py"],
"/usr/local/bin/node": ["js"، "node"]}// في أنظمة Windows{
"بيرل": ["pl"، "cgi"]،
"بيثون": ["py"]،
"عقدة": ["js"، "عقدة"]}امتداد الملف للبحث عن برنامج نصي لـ CGI في أي دليل محدد. الافتراضي: "شبيبة"
اضبط على "صحيح" لتمكين إخراج التصحيح. الافتراضي: false
اضبط على "صحيح" لطباعة سجلات طلبات HTTP إلى STDOUT. الافتراضي: false
حجم طلب HTTP وحمولات الاستجابة المسموح بها بالبايت. الافتراضي: 2 * 1024 * 1024 (2 ميجابايت)
حجم قطع بيانات حمولة طلب HTTP بالبايت. الافتراضي: 16 * 1024 (16 كيلو بايت)
حجم قطع بيانات حمولة استجابة HTTP بالبايت. الافتراضي: 16 * 1024 (16 كيلو بايت)
كائن يحتوي على حمولات استجابة HTTP مخصصة لكل رمز حالة. تقصير: {}
// مثال:{
404: {content: `<html> <body>404: لم يتم العثور على الملف</body> </html>`،contentType: "text/html"
},
500: {content: `<html> <body>500: خطأ داخلي في الخادم</body> </html>`،contentType: "text/html"
}} كائن يحتوي على متغيرات بيئة مخصصة لتمريرها إلى برامج CGI النصية. تقصير: {}
// مثال:{
SERVER_ADMIN: "[email protected]"،
ANOTHER_VAR: "قيمة أخرى"} يمكن استخدام الأمر cgi-server لتشغيل خادم HTTP لخدمة نصوص 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
بالإضافة إلى المتغيرات القياسية المتعلقة بـ HTTP، يتم دعم متغيرات بيئة CGI التالية:
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
تم إصدار cgi-core بموجب ترخيص MIT.
مجاني 100%: يمكن استخدام cgi-core بحرية في كل من المشاريع الخاصة والمفتوحة المصدر.
الإسناد مطلوب: يجب عليك الاحتفاظ باسم المؤلف ومعلومات الترخيص في أي كود موزع. لا يلزم أن تكون هذه العناصر موجهة للمستخدم ويمكن أن تظل ضمن قاعدة التعليمات البرمجية.