L'idee d'AlternSh serait d'avoir un shell pour faire de l'entretien ou modifications sur AlternD, le NoyauAlternc. Il pourrait parler au noyau avec un socket et appeler les fonctions du controller directement, pour lister les membres, editer des trucs, lancer des cronjobs, n'importe quoi ...
Voir drush (drupal sh) pour de l'inspiration ou le vtysh de Quagga (routage libre) concept que l'on retrouve dans tous les switch ou routeurs professionnels.
Si on utilise XmlRpc pour le noyau, il est possible que ce shell soit tout simplement un client xmlrpc qui wrappe les commandes disponibles sous forme de shell.
pour cela :
Si on utilise un demon core XmlRpc, le AlternSh est alors un truc super simple a mettre en oeuvre :
- il propose nativement 1 fonction qui est "auth <login> <password>" ou "auth" qui demande interactivement un login/pass de compte AlternC. Cette fonction authentifie l'utilisateur aupres du core daemon et cree une session
- ensuite, une fois authentifie, cet AlternSh propose (a la maniere cisco, donc avec la commande "?") les fonctions sous la forme "<nom de classe> <espace> <nom de fonction> <espace> <parametre(s) de la fonction separes par espace et eventuellement quotes>"
Techniquement, ce n'est rien a faire car pour cela, il utilise les fonctions d'introspection de XmlRpc. La fonction system.listMethods permettant d'obtenir la liste des classes/fonctions, il pourra proposer une autocompletion sur les 2 premieres parametres du shell (classe et fonction)
ensuite, il saura, grace a l'introspection par system.methodSignature, la liste des parametres requis par la fonction. cependant, on ne sait pas leur nom par ce biais, juste leur type, mais la derniere fonction d'introspection system.methodHelp permettra d'afficher dans le shell interactif la doc de la fonction appellee.
voir http://scripts.incutio.com/xmlrpc/introspection.html sur la notion d'introspection dans XmlRpc. Pour resumer, les 3 methodes "system.*" decrites ci-dessus permettent de savoir quelles fonctions sont proposees par un serveur XmlRpc, ainsi que leur prototype et leur documentation (format html possible).
