This is an old revision of the document!
Table of Contents
TP RPC
Vous disposez de documentation dans le répertoire doc/ ainsi que du man.
Exercice 1 (calculation)
On vous fourni l'interface “calculation.x”.
- Programmer cet exemple. Pour générer tout le code source (client,
serveur, makefile, stubs), vous pouvez utilisez la commande
suivante : "rpcgen -a calculation.x". Il vous reste à compléter les fichiers "calculation_server.c" et "calculation_client.c"...
- Compiler : make -f makefile.calculation.
- Tester en local sur votre machine, puis sur deux machines
distantes.
- Analyser le résultat de la commande “rpcinfo -p”.
- Analyser les souches de ce petit exemple. Ajouter des traces dans
le code des souches afin de suivre précisément les appels à
distance...
- Ajouter maintenant de nouvelles fonctions à votre service
“calculation”…
Exercice 2 (rwall)
A partir de l'interface “rwall.x” qui permet d'envoyer un message.
- Implanter rapidement ce service.
- Ecrire maintenant un client pour le service “rwall”, n'utilisant
pas les souches générées, grâce à la fonction “callrpc()”.
- Ecrire maintenant un serveur pour le service “rwall”
n'utilisant pas les souches générées, grâce aux fonctions
"registerrpc()" et "svc_run()".
Nota Bene : cf. man rpc
Exercice 3 (authentification)
On vous fourni l'interface “hello.x”, qui retourne le message “hello world!” au client.
- Implantez rapidement ce service.
- Modifiez le client pour qu'il utilise l'authentification Unix.
Aidez-vous de la documentation fournie dans doc/rpc-doc.pdf.
- Modifiez le serveur pour qu'il accepte uniquement les clients
utilisant l'authentification Unix, possédant le même UID que le
serveur. Vérifiez qu'un client avec un UID différent est bien rejeté !
- Que pensez-vous de ce système d'authentification ? Mettez-en
évidence que vous pouvez le contourner en modifiant le code
client.