Ouistiti (ˈwistiti) เป็นชื่อฝรั่งเศสของ Marmoset ซึ่งเป็นลิงเล็ก ๆ ของโลกใหม่
Ouistiti เป็นเว็บเซิร์ฟเวอร์ขนาดเล็กในการจัดการและกำหนดค่าอุปกรณ์ขนาดเล็ก อนุญาตให้สร้าง เว็บอินเตอร์เฟสแบบครบวงจร เพื่อ ความปลอดภัย บน เอกสาร , WebSocket , REST API และอื่น ๆ
Ouistiti ทุ่มเทให้ฝังอยู่บนอุปกรณ์เพื่อควบคุมจากเว็บเซิร์ฟเวอร์
ด้วย Ouistiti , ทุกหน้า, websockets, สคริปต์ได้รับการปกป้องด้วยวิธีเดียวกัน มันไม่มีประโยชน์ในการจัดการการรับรองความถูกต้องด้วยตัวเอง
การเชื่อมต่อ TLS/SSL มีอยู่เป็นโมดูลที่มีไลบรารี MBEDTLS หรือ OPENSSL
การรับรองความถูก ต้องมีอยู่ใน การเชื่อมต่อของไคลเอนต์ทั้งหมด รหัสผ่านของผู้ใช้อาจถูกเข้ารหัสสำหรับที่เก็บข้อมูล สนับสนุนความท้าทายต่อไปนี้:
โมดูลสร้าง สะพาน WebSocket ระหว่าง HTTP Socket Client และ UNIX Socket สามารถจัดการการจับมือกันและการถ่ายโอนข้อมูลไปยังแอปพลิเคชันของคุณ คุณพัฒนาเซิร์ฟเวอร์ Cammands บนซ็อกเก็ต Unix Ouistiti ปกป้องด้วยการเชื่อมต่อ HTTPS และประตูการตรวจสอบสิทธิ์ คุณสามารถค้นหาตัวอย่างของเซิร์ฟเวอร์:
เช่นเดียวกับ WebSocket Ouistiti สามารถปกป้อง เซิร์ฟเวอร์สตรีมของ คุณได้ แอปพลิเคชันของคุณควรส่งข้อมูลบนซ็อกเก็ต Unix เท่านั้น Ouistiti จะทำส่วนที่เหลือ
เช่นเดียวกับเว็บเซิร์ฟเวอร์ใด ๆ Ouistiti สามารถส่งไฟล์ใด ๆ ไปยังไคลเอนต์ของคุณได้ และในเวลาเดียวกันก็สามารถจัดการได้บนเซิร์ฟเวอร์ของคุณ:
สคริปต์ CGI อาจโทรจากลูกค้า
URI บางตัวจะต้องเปลี่ยนเส้นทางใน URI อื่น โมดูลนี้ทำอย่างนั้นด้วยไฟล์กำหนดค่าเท่านั้น
เซิร์ฟเวอร์อาจเริ่มต้นด้วย บัญชีดำ และที่อยู่ IP ที่อนุญาต
เซิร์ฟเวอร์เก็บไว้ในฐานข้อมูลกฎเกี่ยวกับการเข้าถึง URI กฎการรวมกันของ "บทบาท" ของผู้ใช้ประเภทของคำขอและนิพจน์บน URI แต่ละคำขอจะถูกตรวจสอบหลังจากการตรวจสอบและก่อนที่จะเข้าถึง ressource
โมดูลมี RESTAPI ของตัวเองเพื่อตั้งค่าฐานข้อมูลและใช้โมดูลการรับรองความถูกต้องสำหรับการตรวจสอบสิทธิ์
โมดูลนี้สามารถอัพเกรดการเชื่อมต่อและถ่ายโอนข้อมูลระหว่างซ็อกเก็ตที่เปิดและเซิร์ฟเวอร์ซ็อกเก็ต Unix
เซิร์ฟเวอร์ UNIX อาจส่งและรับข้อมูลประเภทใดก็ได้บนซ็อกเก็ต ช่วยให้นำเซิร์ฟเวอร์ที่ไม่ปลอดภัยกลับมาใช้ใหม่และใช้คุณสมบัติ HTTP เช่นการตรวจสอบสิทธิ์และการเชื่อมต่อ TLS
มันถูกปิดไปยังโมดูล WebSocket แต่อาจเป็นประโยชน์สำหรับโปรโตคอลบางอย่างผ่าน HTTP
โมดูลนี้เรียกใช้ล่าม Python เพื่อเรียกสคริปต์ ปัจจุบันโมดูลนี้กำลังจัดเตรียมและต้องการเรียกใช้ไซต์ Django
Ouistiti อาจถูกสร้างขึ้นเพื่อจัดการการเชื่อมต่อไคลเอนต์ด้วยกระบวนการเดียวเพื่อเป็น เว็บเซิร์ฟเวอร์ที่เร็วที่สุด หรืออาจสร้างกระบวนการที่เป็นอิสระสำหรับการเชื่อมต่อไคลเอนต์แต่ละครั้งเพื่อสร้าง กล่องทราย รอบ ๆ
Ouistiti ถูกเขียนขึ้นเพื่อสร้างบนระบบสูงสุด รหัสเป็นไปตามมาตรฐาน C99 เธรดอาจถูกปิดใช้งานและการกำหนดค่าอาจโหลดจากหน่วยความจำ
Ouistiti สร้างขึ้นเหนือไลบรารี libhttpserver ห้องสมุดนี้มี HTTP Parser, การจัดการของซ็อกเก็ตและโมดูลทั่วไปบางอย่าง
โครงการมีอยู่ใน GitHub
libhttpserver อาจถูกเปลี่ยนชื่อ libouistiti เมื่อแหล่งที่มาของห้องสมุดมีอยู่ในโครงการ Ouistiti
โครงการ LIBB64 เป็นสิ่งจำเป็นด้วยแพทช์บางอย่าง แหล่งที่มามีอยู่ในโครงการ Ouistiti-Project หรือ Inside 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มี 2 วิธีในการสร้าง:
โครงการใช้ Makemore เพื่อสร้างไบนารีทั้งหมด
MakeMore มีไฟล์ gnumake และสคริปต์ กำหนดค่า สคริปต์ใช้เพื่อเขียนไฟล์ กำหนดค่า จากไฟล์ default.config ด้วย การกำหนดค่า คุณสามารถเลือกไดเรกทอรีการติดตั้งและชิ้นส่วนที่จะสร้าง
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakemore อาจทำงานเป็น kbuild makefile เป็นไปได้ที่จะเลือกไฟล์การกำหนดค่าโดยตรงด้วย Make
การกำหนดค่าอื่น ๆ นั้นมีอยู่ภายใน configs/ directory: * fastmono_defconfig สำหรับเซิร์ฟเวอร์ที่รวดเร็ว แต่ไม่มีการป้องกันการชน * FullForKed_DefConfig สำหรับเซิร์ฟเวอร์ซึ่งสามารถทำงานต่อไปหลังจากการเชื่อมต่อล่มของการเชื่อมต่อ
$ make fastmono_defconfigหรือ
$ make fullforked_defconfigหรือสำหรับการกำหนดค่าเริ่มต้น:
$ make defconfigสำหรับอุปกรณ์ฝังตัวเช่นเกตเวย์หรือกล่องแนะนำให้ใช้ FullForked_defconfig
การกำหนดค่าเป็นไฟล์ข้อความที่มีฟิลด์และค่า ไฟล์ defconfig บนไดเรกทอรีรูทจะต้องไม่เปลี่ยนแปลง เป็นไปได้ที่จะแก้ไขหรือคัดลอกไฟล์ที่มีอยู่ใน configs/ directory
ฟิลด์
file_config: ใช้ไฟล์ ouistiti.conf สำหรับการกำหนดค่า
VTHREAD: เปิดใช้งานมัลติเธรดลงในเซิร์ฟเวอร์
vthread_type: ใช้ค่าเช่น [Fork | Pthread | Windows] เพื่อระบุวิธีการจัดการเธรด
แบบคงที่: สร้างแอปพลิเคชัน, ห้องสมุด (libhttpserver, libouiutils ... ) และโมดูลเป็นไบนารีแบบสแตนด์อโลน
แบ่งปัน: สร้าง/เชื่อมโยงไลบรารีแบบไดนามิก (libhttpserver, ... ) และแอปพลิเคชันที่มีโมดูลรวม
โมดูล: สร้างโมดูลเป็นไลบรารีแบบไดนามิกแอปพลิเคชันจะโหลดในเวลาทำงาน
max_servers: อนุญาตให้เลือกจำนวนเซิร์ฟเวอร์และโฮสต์เสมือนเพื่อจัดการ
การรวบรวมทำด้วย GMake และยอมรับการกำหนดค่าในบรรทัดคำสั่ง
Ouistiti พร้อมใช้ งานการดีบัก ตัวเลือกเฉพาะเพื่อเพิ่มร่องรอยในรหัสและสัญลักษณ์การดีบัก
$ make DEBUG=y[MakeMore] อนุญาตให้ดูบรรทัดการรวบรวมด้วยตัวเลือก V :
$ make V=1Ouistiti อาจถูกสร้างขึ้นสำหรับเป้าหมายอื่นนอกเหนือจาก Build Host ในการทำเช่นนั้นคุณต้องเพิ่มการกำหนดค่าบางอย่าง:
$ make CROSS_COMPILE=arm-linux-gnueabihfการติดตั้งเริ่มต้นจะคัดลอกไลบรารีลงใน /usr/local/lib/ ไดเรกทอรีและไบนารีเข้าสู่ /usr/local/bin ด้วยการกำหนดค่าเริ่มต้น เส้นทางอาจมีการเปลี่ยนแปลงในระหว่างการกำหนดค่าโครงการ (ดูด้านล่าง)
> make installในการสร้างแผนผังไดเรกทอรีใหม่ก่อนการติดตั้งตัวแปร destdir อาจมีการเปลี่ยนแปลง
> make DESTDIR= ~ /packages/ouistiti installOuistiti จัดจำหน่ายด้วยสูตรอาหารเพื่อสร้างแพ็คเกจการกระจาย
Ouistiti ใช้ libconfig สำหรับการกำหนดค่า ค้นหาข้อมูลเพิ่มเติมในบทการกำหนดค่า
Ouistiti อนุญาตให้เลือกแต่ละคุณสมบัติที่คุณต้องการในระหว่างการกำหนดค่าการสร้าง การกำหนดค่าเริ่มต้นอนุญาตให้ใช้คุณสมบัติทั้งหมดในสถานที่ขั้นต่ำ
ที่นี่มีขนาดบางขนาดสำหรับแขนหลังจากลอก:
การใช้หน่วยความจำขึ้นอยู่กับการกำหนดค่าการสร้างและจำนวนการเชื่อมต่อพร้อมกัน
ด้วยการกำหนดค่าเริ่มต้นสำหรับสถาปัตยกรรม ARM การใช้งานอยู่ที่ประมาณ 4.5mo สำหรับกระบวนการหลักและประมาณ 13.5mo สำหรับการเชื่อมต่อของลูกค้าแต่ละราย แต่การกำหนดค่าขนาดเล็กต้องการเพียง 5.5 เดือน
ด้วยกระบวนการเดียวใน Ouistiti Vmsize อยู่ที่ประมาณ 26mo
หน้าประสิทธิภาพให้ข้อมูลเพิ่มเติมเกี่ยวกับการใช้หน่วยความจำ
Ouistiti ไม่ใช่เว็บเซิร์ฟเวอร์สำหรับเครือข่ายขนาดใหญ่ แต่ได้ผลลัพธ์ที่ดีสำหรับการส่งเอกสาร การแสดงขึ้นอยู่กับการกำหนดค่าการสร้างและคุณต้องการ
Ouistiti อาจเร็วกว่า LightTPD 1.4 แต่ไม่มีคุณสมบัติทั้งหมด คุณสามารถค้นหาผลการทดสอบบางอย่างในหน้าประสิทธิภาพ