(modifié le 24 avril 2019 à 16:12)

Le firmware libre Tomato est un mine de fonctionnalité et il est possible de créer votre propre thème. Mais à chaque reboot il faut le redéfinir dans l'interface comme actif.

netgear-r7000

Aujourd'hui je vous propose de rendre votre thème (quasi) persistant grâce à une simple clé USB. L'opération paraît complexe car je vous détaille tout, mais en réalité c'est très simple.

Principe de fonctionnement

Nous allons stocker le thème sur une clé USB connectée en permanence. J'utilise une vieille clé de 1go avec un débit tout pourri que j'ai recyclée juste pour cet usage.

Au démarrage un script va copier le contenu du thème dans un répertoire du routeur. Ce répertoire est en réalité monté en RAM, voilà pourquoi nous sommes obligés d'utiliser un stockage externe car son contenu est réinitialisé à chaque reboot.

J'aurai pu faire le choix d'utiliser la partition JFFS mais cette puce s'usant plutôt facilement lorsqu'elle est trop sollicité j'ai préféré utiliser ma clé USB qui me sert déjà pour d'autres choses (logs, tcpdump...). Pour activer JFFS : Administration > JFFS > Enable.

J'ai donc écrit un script shell qui va se charger de copier le thème de la clé vers le routeur à chaque boot. On trouve pas mal de thèmes en cherchant "thèmes tomato" dans un moteur de recherche.

Pour savoir comment monter votre clé USB sur le routeur consultez ce billet.

Activer le thème custom

Pour activer le thème personnalisé aller dans Administration/Admin access/Colour scheme : custom (ext/custom.css) :

custom-tomato

Puis bouton Save.

Le script

Le script shell sera stocké en JFFS. Mes tests de stockage directement sur la clé n'étaient pas concluants car la clé n'est pas forcément montée par le système lors de cette étape de boot.

Le thème est stocké à la racine de la clé USB dans/themes/bm, il est composé de ces fichiers :

  • /themes/bm/custom.css
  • /themes/bm/img/*.(gif|png)

Voici le contenu du script à mettre dans /jffs/perso/themeBM.sh :

#!/bin/sh
CLE=/tmp/mnt/CLE1GO/themes/bm
RTR=/tmp/var/wwwext

sleep 30
# copie du theme vers /tmp/var/wwwext/
cp ${CLE}/custom.css ${RTR}/custom.css || echo "erreur script themeBM.sh" >> /tmp/xhark.log
cp -R ${CLE}/img ${RTR}/img || echo "erreur script themeBM.sh" >> /tmp/xhark.log

Note : pour accéder à la partition JFFS depuis l'explorateur Windows allez dans USB and NAS > File Sharing et vérifier qu'une ligne de montage correspondante à JFFS en RW est présente.

Exécuter le contenu du script en console (SSH) pour vérifier qu'il fonctionne. Pensez à vider le cache de votre navigateur (ou CTRL+F5) pour que le nouveau thème s'affiche. Il y a un délai de 30s pour attendre que la clé soit bien montée sur le linux embarqué dans le routeur, vous pouvez commentez la ligne pour le test.

Si tout est OK nous continuons.

Exécuter le script au boot

Dans Administration > Script > onglet Init saisir :

/bin/sh /jffs/perso/themeBM.sh

init-script-tomato

Grâce à cela notre script sera exécuté à chaque démarrage du routeur pour que le thème soit appliqué automatiquement.

Note : vous pouvez aussi mettre le script dans "WAN Up", surtout si votre thème accède à des ressources web et que la connexion est indisponible après le reboot, ça évitera de long timeouts de chargement des éléments en ligne comme les google font.

Alternatives

Il est aussi possible d'utiliser le site TTB ou bien de avec un partage réseau (CIFS).

Conclusion

Voilà comment donner un peu de couleur à l'interface de votre routeur Tomato ! Et si la bidouille ne vous intéresse pas alors installez plutôt l'excellent mod AdvancedTomato.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter