Redbean 2.0 — une plateforme pour des applications web, emballĂ©es dans une archive ZIP exĂ©cutable universelle

La version 2.0 du projet Redbean a Ă©tĂ© prĂ©sentĂ©e, offrant un serveur web permettant de livrer des applications web sous la forme d'un fichier exĂ©cutable universel, qui peut ĂȘtre exĂ©cutĂ© sous Linux, Windows, MacOS, FreeBSD, NetBSD et OpenBSD. Tous les ressources liĂ©es Ă  l'application web et au serveur sont regroupĂ©es dans un seul fichier exĂ©cutable, compatible avec le format d'archives ZIP et permettant l'utilisation de l'utilitaire zip pour ajouter des fichiers supplĂ©mentaires. La possibilitĂ© d'exĂ©cuter un seul fichier sous diffĂ©rents systĂšmes d'exploitation et de le reconnaĂźtre comme une archive ZIP est rĂ©alisĂ©e grĂące aux manipulations des en-tĂȘtes des fichiers exĂ©cutables et Ă  l'Ă©dition avec la bibliothĂšque standard multiplateforme Cosmopolitan. Le code du projet est distribuĂ© sous la licence ISC.

L'idée du projet est de fournir un fichier exécutable « redbean.com » avec un serveur web intégré. Le développeur d'applications web peut utiliser l'utilitaire zip pour ajouter des fichiers HTML et Lua à ce fichier, et obtenir une application web autonome, fonctionnant sur tous les systÚmes d'exploitation populaires et ne nécessitant pas de serveur web séparé pour son exécution.

AprĂšs le lancement du fichier exĂ©cutable obtenu, on utilise le serveur web intĂ©grĂ© pour accĂ©der Ă  l'application web sauvegardĂ©e dans le fichier. Par dĂ©faut, le gestionnaire est attachĂ© Ă  localhost, mais le serveur peut Ă©galement ĂȘtre utilisĂ© comme un serveur web public classique (par exemple, ce serveur gĂšre le site du projet). Le serveur web intĂ©grĂ© prend en charge l'accĂšs via HTTPS et peut fonctionner avec une isolation sandbox, permettant de contrĂŽler quels interfaces systĂšme sont accessibles. Un interface interactive REPL (basĂ©e sur Lua REPL et la bibliothĂšque bestline, Ă©quivalent de GNU Readline) est fourni pour gĂ©rer le fonctionnement du serveur pendant son exĂ©cution, permettant de modifier l'Ă©tat du processus en mode interactif.

Il est affirmĂ© que le serveur web est capable de traiter plus d'un million de requĂȘtes par seconde sur un PC ordinaire, en livrant du contenu compressĂ© au moyen de la mĂ©thode gzip. La haute performance est favorisĂ©e par le fait que zip et gzip utilisent un format commun, permettant ainsi de restituer les donnĂ©es sans dĂ©compression Ă  partir des zones dĂ©jĂ  compressĂ©es dans le fichier zip. De plus, le fichier exĂ©cutable Ă©tant créé avec un lien statique et prĂ©sentant une taille rĂ©duite, l'appel de la fonction fork engendre pratiquement aucun frais lors de son placement en mĂ©moire.

En plus du traitement du contenu web statique et de l'exĂ©cution de JavaScript dans le navigateur, la logique de l'application web peut ĂȘtre Ă©tendue Ă  l'aide de scripts Ă©crits en Lua, du framework web Fullmoon et de la base de donnĂ©es SQLite. Parmi les fonctionnalitĂ©s supplĂ©mentaires, on note le support du schĂ©ma de hachage de mots de passe argon2, la possibilitĂ© de dĂ©terminer la rĂ©gion IP via la base MaxMind et l'accĂšs Ă  l'API Unix de la bibliothĂšque Cosmopolitan. La taille de la pile de base, incluant le serveur web, MbedTLS, Cosmopolitan, Lua et SQLite, n'est que de 1,9 Mo.

Un exĂ©cutable universel est formĂ© en combinant des segments et des en-tĂȘtes spĂ©cifiques aux diffĂ©rents systĂšmes d'exploitation (PE, ELF, MACHO, OPENBSD, ZIP) dans un seul fichier. Pour garantir le lancement d'un mĂȘme exĂ©cutable sous Windows et Unix, une astuce est utilisĂ©e, consistant Ă  coder des fichiers Windows PE sous forme de script shell, en tirant parti du fait que le Thompson Shell n'utilise pas le marqueur de script "#!". Au final, un exĂ©cutable est créé, combinant plusieurs formats diffĂ©rents utilisĂ©s sous Linux, BSD, Windows et macOS. $ curl https://redbean.dev/redbean-demo-2.0.7.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hello.html $ zip redbean.com hello.lua $ ./redbean.com -vv I2022-06-23T08:27:14+000767:redbean] (srvr) listen http://127.0.0.1:8080 >: waiting for command
 $ curl https://127.0.0.1:8080/hello.html hello $ printf ‘GET /hello.lua\n\n’ | nc 127.0.0.1 8080 hello



Source : opennet.ru
Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster