برنامج تغليف بسيط لا يعتمد على أي شيء لاستضافة نصوص 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
بحرية في كل من المشاريع الخاصة والمفتوحة المصدر.
الإسناد مطلوب: يجب عليك الاحتفاظ باسم المؤلف ومعلومات الترخيص في أي كود موزع. لا يلزم أن تكون هذه العناصر موجهة للمستخدم ويمكن أن تظل ضمن قاعدة التعليمات البرمجية.