Name: glpi Version: 10.0.22 Release: 1%{?dist} Summary: Gestionnaire Libre de Parc Informatique License: GPLv3+ URL: https://glpi-project.org/ Source0: https://github.com/glpi-project/%{name}/releases/download/%{version}/%{name}-%{version}.tgz BuildArch: noarch # Nécessaire pour compiler les fichiers de traduction (.po en .mo) BuildRequires: gettext # Serveur Web et PHP Requires: httpd Requires: php >= 8.1 Requires: php-cli Requires: php-fpm # Dépendances PHP strictes issues du projet Ligenix Requires: php-ctype, php-curl, php-date, php-fileinfo, php-filter Requires: php-gd, php-intl, php-json, php-mbstring, php-mysqli Requires: php-pcre, php-reflection, php-session, php-simplexml Requires: php-spl, php-xml, php-zlib, php-bz2, php-zip # Extensions PHP recommandées pour les fonctionnalités avancées Recommends: php-apcu Recommends: php-exif Recommends: php-imap Recommends: php-ldap Recommends: php-opcache Recommends: php-sodium # Utilitaires système Requires: cronie Requires: logrotate Requires(post): systemd Requires(postun): systemd %description GLPI est une solution open-source de gestion de parc informatique et de service desk. %prep %setup -q -n %{name} # Sécurité : suppression de scripts inutiles ou dangereux en production find vendor -name bin -type d -exec rm -rf {} + -print find vendor -name \*.bin -delete -print find vendor -name \*.py -delete -print find vendor -name \*.sh -delete -print %build # Compilation des fichiers de langue for po in locales/*.po; do msgfmt $po -o $(dirname $po)/$(basename $po .po).mo done %install rm -rf %{buildroot} # 1. Déploiement de l'application mkdir -p %{buildroot}%{_datadir}/%{name} cp -a * %{buildroot}%{_datadir}/%{name}/ # 2. Sécurisation de la configuration mkdir -p %{buildroot}%{_sysconfdir}/%{name} mv %{buildroot}%{_datadir}/%{name}/config %{buildroot}%{_sysconfdir}/%{name} # 3. Sécurisation des données mkdir -p %{buildroot}%{_sharedstatedir}/%{name} mv %{buildroot}%{_datadir}/%{name}/files %{buildroot}%{_sharedstatedir}/%{name}/files # 4. Extraction et sécurisation des logs mkdir -p %{buildroot}%{_localstatedir}/log/%{name} mv %{buildroot}%{_sharedstatedir}/%{name}/files/_log/* %{buildroot}%{_localstatedir}/log/%{name}/ 2>/dev/null || true rm -rf %{buildroot}%{_sharedstatedir}/%{name}/files/_log # 5. Création du downstream.php (Routage FHS Fédora/AlmaLinux) cat < %{buildroot}%{_datadir}/%{name}/inc/downstream.php %{buildroot}%{_sysconfdir}/httpd/conf.d/glpi.conf # Configuration réseau optimisée pour une écoute sur les environnements IPv6 ServerName glpi.votre-domaine.com DocumentRoot /usr/share/glpi/public Require all granted RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] Require all denied Require all denied ErrorLog /var/log/httpd/glpi_error.log CustomLog /var/log/httpd/glpi_access.log combined EOF # 7. Configuration Cron (Actions automatiques) mkdir -p %{buildroot}%{_sysconfdir}/cron.d cat <<'EOF' > %{buildroot}%{_sysconfdir}/cron.d/%{name} # GLPI core - Exécution des tâches planifiées chaque minute * * * * * apache /usr/bin/php %{_datadir}/%{name}/front/cron.php > /dev/null 2>&1 EOF # 8. Configuration Logrotate mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d cat <<'EOF' > %{buildroot}%{_sysconfdir}/logrotate.d/%{name} %{_localstatedir}/log/%{name}/*.log { weekly rotate 52 compress missingok notifempty create 0640 apache apache } EOF %post # Redémarrage conditionnel du serveur web lors d'une installation/mise à jour /usr/bin/systemctl condrestart httpd > /dev/null 2>&1 || : %postun # Redémarrage conditionnel du serveur web lors d'une suppression /usr/bin/systemctl condrestart httpd > /dev/null 2>&1 || : %files # Code source (lecture seule pour le serveur web) %defattr(-,root,root,-) %{_datadir}/%{name} # Fichiers de configuration Apache, Cron et Logrotate %config(noreplace) %{_sysconfdir}/httpd/conf.d/glpi.conf %config(noreplace) %{_sysconfdir}/cron.d/%{name} %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} # Configuration GLPI (Écriture pour l'installation, protégée par noreplace) %defattr(-,apache,apache,-) %config(noreplace) %{_sysconfdir}/%{name} # Données utilisateurs et plugins %{_sharedstatedir}/%{name} # Dossier des logs %dir %{_localstatedir}/log/%{name} %changelog * Fri Apr 24 2026 Admin - 10.0.22-1 - Création du package autonome unifié (Inspiration Ligenix) - Ajout de la compilation Gettext pour les traductions - Ajout de la rotation des logs et de la tâche Cron FHS - Intégration des dépendances PHP complètes