Made the barely working web interface

This commit is contained in:
2024-11-08 13:46:01 +01:00
parent 65d96ca8f2
commit ed99cc4296

123
tp4.md
View File

@@ -508,6 +508,129 @@ Il faut aussi les passer en autorisations d'execution
Quand on a pu faire ca la même la version dynamique de test fonctionne !!
## Déploiement dun mini serveur web embarqué
### [Q8] : Créez et donnez le contenu du patch permettant de patcher larborescence dorigine afin dobtenir une nouvelle arborescence qui rempli le cachier des charges demandé (ajout nouveau script, modifications pages, config, etc.).
J'ai créé un repertoire www dans /var et j'ai copié le contenu du repertoire www dans ressources que l'on a de disponible dans le git du cours.
On peut voir ca depuis la machine
```
/var/www # ls
cgi-bin gohome.png index.html upload
```
```
/var/www # httpd -h /var/www
```
Et la si on va sur 192.168.144.10 dans mon navigateur on a accès à notre site youpiiiii !
Ensuite je suis allé dans `www/cgi-bin` pour modifier les différents fichiers qui ont des chemins hard codés en www/... en /var/www/
il faut le faire dans le fichier upload.cfg et dans index.html également pour que les liens soient corrects
Maintenant quand on essaie d'upload on a plus une erreur 404 mais une erreur 501 Not implemented. Il faut donc encore trouver le bon endroit ou mettre le fichier binaire upload que on a compilé.
Ensuite pour faire une nouvelle page on peut aller regarder comment est fait une page classique pour les cpu par exemple
```sh
#!/bin/sh
UPLOAD_DIR="/www/upload/files"
URL_PATH="/upload/files"
echo "Content-type: text/html"
echo
echo "<html>"
echo "<body>"
echo "<h1>CPU information</h1>"
echo "The embedded system is based on the following CPU:<pre>"
cat /proc/cpuinfo
echo "</pre>"
echo "<p><a href=\"/\"><img src=\"/gohome.png\" border=\"0\"></a></p>"
echo "</body></html>"
```
On peut voir que la seule partie vraiment script c'est le 'cat /proc/cpuinfo' et que donc si on veut faire une page qui permette de lancer notre script on peut tout copier et changer ici.
```sh
#!/bin/sh
echo "Content-type: text/html"
echo
echo "<html>"
echo "<body>"
echo "<h1>System usage and processes</h1>"
echo "Informations about processes and sys usage :<pre>"
top -n1 -b
echo "</pre>"
echo "<p><a href=\"/\"><img src=\"/gohome.png\" border=\"0\"></a></p>"
echo "</body></html>"
```
Pour plus d'infos à propos de la commande top on peut utiliser
`top -n1 -b`
Qui nous donne ce resultat
```
Mem: 11484K used, 235516K free, 0K shrd, 0K buff, 1352K cached
CPU: 0.0% usr 9.0% sys 0.0% nic 90.9% idle 0.0% io 0.0% irq 0.0% sirq
Load average: 0.01 0.00 0.00 1/35 110
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
109 46 0 R 1496 0.6 0 5.4 top -n1 -b
7 2 0 IW 0 0.0 0 1.8 [kworker/u2:0-nf]
39 2 0 IW 0 0.0 0 1.8 [kworker/u2:4-xp]
46 1 0 S 1492 0.6 0 0.0 -/bin/sh
1 0 0 S 1484 0.6 0 0.0 init
....
```
On doit évidemment ajouter les entrées dans la page index.html pour avoir un lien qui pointe vers notre nouveau fichier
```html
<html>
<head>
<title>Tiny Web Server</title>
</head>
<body>
<h1>Tiny Web Server</h1>
<h3>Available pages</h1>
<ul>
<li><a href="/cgi-bin/uptime.sh">Uptime</a></li>
<li><a href="/cgi-bin/kernel.sh">Kernel info</a></li>
<li><a href="/cgi-bin/cpu.sh">CPU info</a></li>
<li><a href="/cgi-bin/list_files.sh">Uploaded files</a></li>
<li><a href="/cgi-bin/top.sh">Processes</a></li>
</ul>
<h3>Upload a file</h3>
<form action="/var/www/cgi-bin/upload" enctype="multipart/form-data" method=post>
<input type=file name="File">
<input type=submit value="Upload">
</form>
</body>
</html>
```
Et voila on a une nouvelle page qui nous annonce des trucs super !
### [Q9] : Quel nouveau script avez-vous ajouté et quel est son contenu ?
Pour que le service web se lance directement au démarrage, j'ai ajouté un scrip nommé StartHttp.sh dans /etc/init.d
```sh
#!/bin/sh
httpd -h /var/www
```
Très simple mais ca fait le boulot car au redémarrage de la board, le site web est accessible.
Note: Il faut que le script commence avec un 'S' sinon il n'est pas pris en compte par notre inittab