Ouistiti (ˈwistiti) هو الاسم الفرنسي لمارمووسيت قرد صغير للعالم الجديد.
Ouistiti هو خادم ويب صغير لإدارة وتكوين الأجهزة الصغيرة. يسمح بإنشاء واجهة ويب موحدة للأمان على المستندات و WebSocket و REST API والمزيد.
Outistiti مكرس لتضمينه على الجهاز للتحكم من خادم الويب.
مع Ouistiti ، يتم حماية جميع الصفحات و Websockets والبرامج النصية بنفس الطريقة. لا جدوى من إدارة المصادقة بواسطة نفسك.
يتوفر اتصال TLS/SSL كوحدة مع مكتبة MbedTLS أو OpenSSL .
المصادقة متوفرة على اتصال جميع العميل . قد يتم تشفير كلمة مرور المستخدمين للتخزين. التحدي التالي مدعوم:
تقوم وحدة بإنشاء جسر WebSocket بين عميل Socket HTTP ومقبس UNIX. إنه قادر على إدارة المصافحة ونقل البيانات إلى التطبيق الخاص بك. يمكنك تطوير خادم Cammands على مقبس Unix ، يحميه Ouistiti من خلال اتصال HTTPS وبوابة المصادقة الخاصة به. يمكنك العثور على مثال على الخوادم:
مثل WebSocket ، فإن Ouistiti قادر على حماية خادم الدفق الخاص بك. يجب أن يرسل تطبيقك البيانات فقط على مقبس UNIX ، ويقوم Ouistiti بباقي.
مثل أي خادم ويب ، فإن Ouistiti قادر على إرسال أي أنواع الملفات إلى عميلك. وفي الوقت نفسه ، يمكنه إدارتها على الخادم الخاص بك:
قد يتم استدعاء البرامج النصية CGI من العميل.
يجب إعادة توجيه بعض URI على URI آخر. هذه الوحدة تفعل ذلك مع ملف التكوين فقط.
قد يبدأ الخادم بإدراج سوداء ودرد أبيض لعنوان IP.
يخزن الخادم في قاعدة بيانات القواعد الخاصة بالوصول إلى URI.A هي مجموعة من "أدوار" المستخدم ، ونوع الطلب والتعبير على URI. يتم فحص كل طلب بعد المصادقة وقبل الوصول إلى Ressource.
تحتوي الوحدة على RestApi الخاصة بها لتعيين قاعدة البيانات ، وتستخدم وحدة المصادقة لفحص الحقوق.
هذه الوحدة قادرة على ترقية اتصال ونقل البيانات بين المقبس المفتوح وخادم Socket Unix.
يجوز لخادم UNIX إرسال واستقبال أي نوع من البيانات على المقبس. يسمح بإعادة استخدام خادم غير آمن ويستخدم ميزات HTTP مثل المصادقة واتصال TLS.
إنه مغلق في وحدة WebSocket ، ولكن قد يكون مفيدًا لبعض البروتوكول عبر HTTP.
تدير هذه الوحدة المترجمة Python لاستدعاء البرامج النصية. حاليًا ، تعمل هذه الوحدة على تشغيل موقع Django.
قد يتم إنشاء Ouistiti لإدارة اتصالات العميل مع عملية واحدة فقط ، لتكون أسرع خادم ويب . أو قد تنشئ عملية مستقلة لكل اتصال عميل ، لإنشاء صندوق رمل حوله.
تتم كتابة ouistiti ليتم بناؤها على الحد الأقصى من النظام. الكود متوافق C99 ، قد يتم تعطيل مؤشرات الترابط وقد يتم تحميل التكوين من الذاكرة.
يتم بناء ouistiti على مكتبة libhttpserver. تحتوي هذه المكتبة على محلل HTTP ، وإدارة المقبس وبعض الوحدات العامة.
المشروع متاح على جيثب
يمكن إعادة تسمية Libhttpserver إلى Libouistiti عندما تتوفر مصادر المكتبة داخل مشروع Ouistiti .
مشروع libb64 إلزامي مع بعض البقع. المصدر متاح في مشروع Ouistiti-project أو داخل مشروع Ouistiti .
قد يتم توفير دعم SSL/TLS بواسطة العديد من المكتبات:
بالنسبة لحوار المصادقة مع العميل ، قد يتم تشفير كلمة المرور باستخدام خوارزمية MD5 (هذا غير آمن ، لكنه إلزامي على الأقل بالنسبة للمصادقة الأساسية والهضم). إذا لم تكن SSL/TLS متوفرة ، فإن مكتبة MD5 واحدة إلزامية لوحدات المصادقة:
قد لا يستخدم Ouistiti مكتبة PTHREAD ، وهذا يعتمد على التكوين. ولكن قد تستخدم بعض الأدوات مكتبة PTHREAD مثل خوادم WebSocket.
يستخدم Ouistiti مكتبة Libconfig ، لضبط الخوادم ، والوحدات المختلفة.
الوثائق: mod_auth
ركض الإصدار الأول على Linux و Windows. حاليا يتم اختبار إصدار Linux فقط.
الخطوة الأولى قم بتنزيل شجرة المصدر.
$ git clone https://github.com/ouistiti-project/ouistitiومشروع Libhttpserver
$ git clone https://github.com/ouistiti-project/libhttpserverهناك طريقتان للبناء:
يستخدم المشروع Makemore لبناء جميع الثنائيات.
يحتوي MakeMore على ملف Gnumake و Configure Script. يتم استخدام البرنامج النصي لكتابة ملف التكوين من ملف default.config . مع التكوين ، يمكنك تحديد أدلة التثبيت والأجزاء التي يجب إنشاؤها.
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiقد يعمل Makemore كما Kbuild makefile. من الممكن تحديد ملف التكوين مباشرة باستخدام Make.
التكوينات الأخرى متوفرة داخل التكوينات/ الدليل: * fastmono_defconfig لخادم سريع ولكن دون حماية للتعطل. * fullforked_defconfig لخادم قادر على الاستمرار في التشغيل بعد تصادم اتصال.
$ make fastmono_defconfigأو
$ make fullforked_defconfigأو للتكوين الافتراضي:
$ make defconfigبالنسبة لجهاز مضمن مثل بوابة أو مربع ، يتم التوصية بـ fullforked_defconfig .
التكوين هو ملف نصي مع الحقول والقيم. يجب عدم تغيير ملف defconfig على دليل الجذر. من الممكن تعديل أو نسخ ملف موجود في Configs/ Directory.
الحقول
file_config: استخدم ملف ouistiti.conf للتكوين.
VTRead: تمكين multithreading في الخادم.
vThread_type: خذ قيمة مثل [Fork | pthread | Windows] لتحديد كيفية إدارة مؤشرات الترابط.
ثابت: قم ببناء التطبيق والمكتبات (libhttpserver و libouiutils ...) والوحدات النمطية في ثنائي مستقل.
مشترك: إنشاء/ربط المكتبات الديناميكية (libhttpserver ، ...) والتطبيق مع الوحدات النمطية المتكاملة.
الوحدات النمطية: قم بإنشاء الوحدات النمطية كمكتبات ديناميكية ، وسيتم تحميل التطبيق في وقت التشغيل.
MAX_SERVERS: اسمح للاختيار عدد الخوادم والمضيفين الظاهري لإدارتها.
يتم التجميع مع Gmake ويقبل التكوين في سطر الأوامر.
Ouistiti متاح خيار محدد تصحيح أخطاء لإضافة آثار في الكود ورمز التصحيح.
$ make DEBUG=yيسمح [Makemore] بمشاهدة خط التجميع مع خيار V :
$ make V=1قد يتم بناء Ouistiti لهدف آخر من مضيف البناء. للقيام بذلك ، تحتاج إلى إضافة بعض التكوينات:
$ make CROSS_COMPILE=arm-linux-gnueabihfسيقوم التثبيت الافتراضي بنسخ المكتبة إلى /usr/local/lib/ directory ، و binary إلى /usr/local/bin مع التكوين الافتراضي. يمكن تغيير المسارات أثناء تكوين المشروع (انظر أدناه)
> make installلإنشاء شجرة الدلائل الجديدة قبل التثبيت ، قد يتم تغيير متغير DestDir .
> make DESTDIR= ~ /packages/ouistiti installيتم توزيع Ouistiti مع الوصفات لإنشاء حزمة التوزيع.
يستخدم Ouistiti libconfig للتكوين. ابحث عن مزيد من المعلومات في فصل التكوين.
يسمح Ouistiti بتحديد كل ميزة تحتاجها أثناء تكوين الإنشاء. يسمح التكوين الافتراضي باستخدام جميع الميزات في الحد الأدنى للمكان.
هنا بعض الأحجام للذراع بعد التجريد:
يعتمد استخدام الذاكرة على تكوين البناء وعدد الاتصالات المتميزة.
مع التكوين الافتراضي لهندسة ARM ، يكون الاستخدام حوالي 4.5 مليون للعملية الرئيسية وحوالي 13.5 مليونًا لاتصال كل عميل. لكن التكوين الصغير يحتاج فقط 5.5 مو .
مع وجود عملية واحدة فقط في Ouistiti ، تبلغ مساحتها حوالي 26 مترًا .
تقدم صفحة الأداء المزيد من المعلومات حول استخدام الذاكرة.
Ouistiti ليس خادم ويب للشبكة الكبيرة ، ولكنه يحصل على نتائج جيدة لتسليم المستند. تعتمد العروض على تكوين الإنشاء وتحتاج.
قد يكون ouistiti أسرع من Lighttpd 1.4 ، ولكن بدون كل الميزات. يمكنك العثور على بعض نتائج الاختبار في صفحة الأداء.