Infrastructure logicielle d'AlternC
AlternC est essentiellement developpe en PHP4 (70%), Shell-script (5%), Perl (5%) et il y a aussi beaucoup de travail de Configuration et Administration d'effectue (20%), cette derniere partie consiste notemment a la creation des paquets debian d'AlternC, partie importante de part le choix de rendre AlternC facilement installable...
AlternC utilise une suite logicielle libre pour les services web utilises (mail,web,ml...). Ces logiciels sont pilotes par un bureau virtuel, qui se doit d'etre facilement adaptable aux besoins, securise, et fiable. Pour cela, on utilise un developpement en 4 couches :
- Couche Systeme d'exploitation (contient les fichiers de configuration, les paquets Debian des serveurs mysql, ldap, apache etc.). Par definition, on ne developpera presque rien de cette couche, car elle repose essentiellement sur des paquets Debian standard, qui pourront donc profiter des mises-a-jour Debian de securite entre autres. Les seuls developpements effectues sur cette couche concernent les fichiers de configuration de ces logiciels
- Couche Pilotage de l'OS. Cette couche consiste en un certain nombre de programmes ecrits en C ou en shell-script situes dans /usr/lib/alternc, pour lesquels php ne suffit pas car il ne dispose pas de droits suffisants. Il s'agit par exemple du pilotage des listes de diffusion, de la creation de dossiers ayant des droits particuliers (mail, web etc.) de la gestion des quotas systeme etc. Ces programmes en C sont eventuellement suid root. les parametres de php interdisent aux utilisateurs le lancement de ces programmes, seul le bureau virtuel le peut.
- Couche Classes PHP. Cette couche regroupe les modules de pilotage des services fournis, sous forme de classes php. Les fichiers, situes dans /var/alternc/bureau/class sont nommes m_"nom de la classe".php et sont inclus par le fichier config.php. Chaque classe s'occupe d'un service particulier en entier, et fait appel, si besoin, aux programmes en C de pilotage de l'OS et a d'autres classes. Voir la documentation sur les modules et [Classes PHP] de la documentation.
- Couche presentation en HTML/PHP. Cette couche contient plein de fichiers en HTML avec le minimum possible de php. elle doit pouvoir etre modifiee facilement pour coller au fonctionnement de chaque hebergeur, ainsi qu'a la charte graphique de celui-ci.
http://www.alternc.org/doc/files/couches.jpg
On utilise aussi un systeme d'internationalisation nomme GETTEXT, qui stocke les phrases en langues originale + traduction dans un seul fichier .po. Ce fichier est compile en fichier .mo grace au package Gettext (apt-get install gettext) et la commande : msgfmt alternc.po -o alternc.mo
Chaque module d'AlternC fournit un fichier .po par langue, permettant ainsi d'integrer facilement de nouveaux modules. Ces fichiers .po sont rassemblees en un seul fichier "alternc" par langue, qui est ensuite compile en un ".mo". Ainsi, un seul fichier .mo est ouvert par apache par langue, et cela simplifie grandement l'utilisation du systeme de langue dans les sources php d'AlternC.
