J'ai créé un système d'exploitation 🥴

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
❤x1
Messages : 16
Inscription : jeu. 10/janv./2019 17:26
Contact :

J'ai créé un système d'exploitation 🥴

Message par ❤x1 »

Coucou les gens!

Vous avez déjà entendu parler des OS pour navigateurs écrit en javascript qui sortent de temps en temps? Quand on laisse un geek devant un PC sans surveillance pendant un peu trop longtemps? Bah justement...

Image

Voilà KumOS, un OS cloud 100% écrit avec PB et SB.
Il a toutes les fonctionnalités dont vous pourriez rêver: son propre system de fichier, une gestion des utilisateurs, un environnement graphique, une gestion des applications... En gros, le summum de la technologie de 2004 disponible AUJOURD'HUI!
À la base, je voulais le sortir comme poisson d'avril, mais il se trouve que c'était beaucoup plus compliqué que prévu, et j'ai mis un mois de plus à atteindre les objectifs que je m'étais fixé.
Alors, nous y voilà: amusez-vous bien avec mon poisson de mai :mrgreen: !

1. Je veux juste tester ton truc
Cool: Téléchargez Server.zip, compilez le project PureBasic avec le debugger activé, et il va démarrer un serveur local. Visitez http://localhost:8080/ dans votre navigateur, logez-vous avec admin/admin.
Il y a une application démo que vous pouvez installer dans KumOS: https://lastlife.net/ForumUpload/HelloWorld.zip

2. Comment ça marche?
L'idée générale est assez simple: on a un serveur FCGI écrit en PureBasic et un front-end en SpiderBasic

Le serveur est une application FastCGI multithreadée exécutée derrière un serveur HTTP. Il gère l'authentification des utilisateurs avec des mots de passe chiffrés SHA-256 et des cookies de session, un système de fichiers virtuel basé sur des métadonnées dans une base SQLite et des fichiers bruts sur disque, ainsi qu'une boutique d'applications tierce qui télécharge, valide et extrait les paquets d'applications à partir d'archives ZIP. Tout est routé via un routeur unique basé sur PATH_INFO à base de Select/Case.
L'API est une interface JSON REST simple, accessible via /api/. L'authentification se trouve à l'adresse /api/auth/, le système de fichiers à /api/fs/ et la boutique d'applications à /api/apps/. Le système de fichiers propose les opérations classiques, list, stat, read, write, mkdir, delete, move, toutes limitées à l'utilisateur connecté. La boutique d'applications ajoute les opérations d'installation, de désinstallation, de liste et une route de distribution de paquets d'applications par utilisateur. Les fichiers statiques, y compris l'interface SpiderBasic compilée, sont servis directement par le serveur HTTP. Seuls les appels API transitent par le processus FastCGI de PureBasic.
L'interface communique avec le serveur exclusivement via des requêtes HTTP standard, grâce à la fonction HTTPRequest() de SpiderBasic. Les applications tierces constituent un cas particulier : elles s'exécutent dans des iframes isolées (sans allow-same-origin, ce qui garantit leur isolation même si elles sont hébergées sur le même serveur) et ne peuvent pas effectuer d'appels API directement. Elles communiquent avec le bureau via postMessage, et ce dernier, après avoir vérifié les permissions déclarées de l'application, effectue l'appel API en leur nom et renvoie le résultat. Ainsi, une application malveillante ne peut accéder à vos fichiers ni à votre session, sauf si vous lui en avez explicitement accordé l'autorisation lors de son installation.

3. Je veux créer une application pour KumOS!
Ok. C'est bizarre, mais je suis mal placé pour juger un autre nerd!
vous aurez besoin d'un manifest.json à la racine de votre zip, il doit déclarer l'identité et les permissions de votre app:

Code : Tout sélectionner

{
  "id":          "com.yourname.yourapp",
  "name":        "My App",
  "version":     "1.0.0",
  "icon":        "🚀",
  "entry":       "index.html",
  "permissions": ["storage", "notify"]
}
Les permissions disponibles sont storage (pour accéder à l'espace privé de l'application sur le système de fichier), notify (pour les messages type toasts), fs.read et fs.write (pour accéder au système de fichier complet).

En JS/HTML:
Dans votre index.html, ajoutez le SDK et KUMOS.ready() au tout début:

Code : Tout sélectionner

<script src="/kumos.js"></script>
<script>
  KUMOS.ready().then(function() {
    KUMOS.window.setTitle('My App');
    KUMOS.notify.toast('Hello from My App!', 'success');
  });
</script>
En SpiderBasic:
Commencez par inclure ce fichier à votre projet: KUMOS.sbi.
Le SDK SB encapsule le même protocole dans un module SpiderBasic: KUMOS::Storage_Read(Path, @Callback()), KUMOS::Notify_Toast(Message, KUMOS::#Success), etc. Appelez d'abord KUMOS::Init(), puis KUMOS::Ready(@OnReady()), et effectuez toute votre initialisation depuis le callback OnReady. Un projet modèle complet et commenté est disponible ici..

4. Some notes:
  • Au cas où c'était pas claire, Kumos est un projet pour rigoler (même si j'ai mis un boulot de fou dedans). je ne vais régler aucun bug, ajouter aucune fonctionnalités, et de toute façon, il est déjà à deux doigts d'exploser en l'état..
  • J'ai fait de gros efforts pour réduire le JS autant que possible et, à l'exception des API, c'est presque du SpiderBasic pure. Même si KUMOS n'a aucun intérêt en dehors de la blague, je crois que c'est une vraie démo des capacités de SpiderBasic.
  • Dites merci à ma série sur Duolingo pour le nom : kumo (雲) signifie Nuage (cloud, ça marche mieux en anglais) en japonais, et kumo (蜘蛛) signifie araignée. Le jeu de mot était trop fort, j'ai pas pu résister.
Mon blog : https://lastlife.net/
Mes trucs PB en open source : Inputify, UITK, SelfHost.
Mes trucs SB en open source : MaterialSB
Avatar de l’utilisateur
case
Messages : 1566
Inscription : lun. 10/sept./2007 11:13

Re: J'ai créé un système d'exploitation 🥴

Message par case »

sympa comme projet. bravo ^^
ImageImage
Avatar de l’utilisateur
Kwai chang caine
Messages : 7083
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: J'ai créé un système d'exploitation 🥴

Message par Kwai chang caine »

Même si KUMOS n'a aucun intérêt en dehors de la blague,
Dans la vie j'adore les bonnes "BLAGUES", mais des comme ça...j'en ai jamais faites et pourtant l'humour c'est mon moteur :wink:
Si t'en a d'autres des comme ça..je suis prêt à me marrer une autre fois :lol:

Splendide ton idée, pas encore tout compris, comme dab, mais ça a l'air super cool et la super classe comme à ton habitude 8)
Je ne suis pas arrivé à ajouter ton appli "HelloWord", même avec un lien externe il n'installe pas l'appli

En tout cas merci du partage, t'es vraiment bourré d'idées qui me paraissent super cool quand je les auraient toutes comprises :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel
Mesa
Messages : 1151
Inscription : mer. 14/sept./2011 16:59

Re: J'ai créé un système d'exploitation 🥴

Message par Mesa »

Bravo !

M.
Avatar de l’utilisateur
Ar-S
Messages : 9585
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: J'ai créé un système d'exploitation 🥴

Message par Ar-S »

Bien joué, je ne pense pas le tester pour le moment mais je salue ce projet de zinzin :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MetalOS
Messages : 1592
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: J'ai créé un système d'exploitation 🥴

Message par MetalOS »

Pas mal le projet
Répondre