[Dev] Surcouche logiciel pour NAS (OMV)

Bambusa29

Chevalier Jedi
10 Avril 2022
307
139
83
Je me suis lancé dans le développement d'une surcouche logiciel sous la forme d'un serveur web développer 100% en PHP Objet/CSS sans Framework ou Javascript.
Coté sécu, ca tourne sous Nginx en locale sur un port dédié et une config PHP dédié pour être indépendant de l'interface d'OMV.

L'objectif est de pouvoir facilement en un clic lancer des scripts et gérer la sécurité de mon NAS sous OMV mais conviendrait à n'importe quel NAS.

Je bosse dessus un peu tous les jours. En parallèle je migre mes scripts et j'en profite pour les modifier ou les réécrire complétement. Ils sont amenés à être lancés tous du même endroit, que cela soit de mon interface web ou d'OMV (via un curl) avec ses taches cron.

Quelques captures :

L'onglet "répertoire" qui permet de verrouiller/déverrouiller en un clic n'importe quel répertoire du NAS avec la propriété "inaltérable".
Là, j'ai par exemple déverrouillé le répertoire "RSyncIn" pour pouvoir y déposer momentanément des fichiers :

secuNAS05.png

Les scripts lancés via l'onglet script et via les taches cron 'OMV' sont lancés sous forme asynchrone.
Exemple ici du script "Backup Docker" qui se lance en tache de fond (5min à 10min pour l'exécution). Il se lance normalement vie le cron d'OMV, mais là je l'ai lancé manuellement via l'interface web pour valider le procédé.

secuNAS01.png

L'onglet 'cron' qui donne une vue sur le cron 'omv' et les taches cron standard :
Les taches cron 'OMV' ne sont pas modifiable par mesure de sécurité, elles peuvent juste être lancer.

secuNAS02.png

Je suis en train d'implémenter les logs avec un filtrage possible des données :
Je ne les ai pas cleaner, il y a des infos de bugs de développement dedans :D
J'ai tous mes scripts à revoir pour rajouter des logs si nécessaire.

secuNAS03.png

Tout mes formulaires et fichiers de config hadock sont opérationnels :
J'ai adopté la syntaxe des fichiers "INI" pour gérer toutes mes configs et fichiers de statuts; PHP le prends en charge simplement.

secuNAS06.png


Voila, sinon je développe avec Visual Code que j'ai adopté pour le PHP et que je trouve top !!

secuNAS04.png

Il me reste pas mal de chose à implémenter !!

J'ai commencé le reporting : Gotify est pris en charge dans un sens mais j'aimerais pouvoir aussi afficher les données Gotify envoyés par les différents scripts ou containeurs. Reste à faire la gestion des alarmes par email.
J'ai des idées qui me viennent au fur et à mesure, donc le projet évolue dans le temps...
 
  • J'aime
  • J'adore
Réactions: Nincha et EVO
Un petit suivi du projet :

J'ai à peu prés fait tout ce que je voulais faire au départ et j'ai modifié une partie du code pour le rendre le plus générique possible.

Il me reste peut-être la 2FA à mettre en place pour la connexion (j'ai vu des librairies qui gère ça en PHP), mais cela reste une connexion locale au niveau du LAN.
Pour l'instant c'est une simple co login/mot de passe avec gestion d'une session utilisateur.

- L'onglet 'cron' du tableau de bord :

J'ai viré toutes les taches OMV pour passer par des taches CRON standard. J'ai rajouté quelques surveillances spécifique comme par exemple le fichier de log de l'application, car parfois j'ai des warning (petit bug à corriger) qui remonte dans les logs PHP du serveur et je ne pense pas forcément à les consulter.

secuNAS06.png


- Les fichiers de config ini :

Ici, celui de rsync dans mon LAN et un autre pour un backup à destination de Duplicati qui ira dans le Cloud X2 (Google + mon hébergeur Pro) plus tard dans la nuit.
En gros je rajoute juste une entrée au fichier ini pour ajouter un backup ou une synchronisation.

secuNAS07.pngsecuNAS08.png

- Les scripts appelés par le cron qui font 3 lignes de code :

secuNAS09.png

secuNAS10.png

Voyez vous des mécanismes qui seraient intéressants à rajouter ?