LDAP Synchronization Connector - First RC for LSC 2.1 and Executable plugin 1.0

We have published a release candidate for LSC 2.1 and Executable plugin 1.0.

You can download them here:

We need your help to test this version, and comment/close issues on the roadmap: http://tools.lsc-project.org/versions/show/55

The documentation is here:

All feedbacks are welcome. You can test your current LSC configuration with this new version by simply changing the XSD reference in lsc.xml: http://lsc-project.org/wiki/documentation/2.1/upgrade

Thanks!

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 14 March 2014 à 15:42

LDAP Synchronization Connector - LDAP Synchronization Connector 2.0.4 released!

LSC 2.0.4 was released. The main changes are:

  • Interger limitation in unixTimestampToADTime
  • Fix monitoring script
  • Fix documentation and unit test
  • Manage NULL values in JDBC source in asynchronous mode

The full changelog can be seen here: http://tools.lsc-project.org/versions/show/82

Download: http://lsc-project.org/wiki/download

Thanks to all people that made this release possible:
  • Manuel BOSSANT
  • Raphaël OUAZANA
  • Clément OUDOT

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 06 March 2014 à 15:51

LDAP Tool Box - OpenLDAP 2.4.39 packages available

New OpenLDAP 2.4.39 packages are available, for Red Hat based systems and Debian based systems.

We provide a new package containing MDB utilities (mdb_stat and mdb_copy): openldap-ltb-mdb-utils

Packages include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.9)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd
  • MDB utilities

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

We have YUM and APT repositories, so you can install packages without downloading them manually, see http://ltb-project.org/wiki/documentation/openldap-rpm#yum_repository and http://ltb-project.org/wiki/documentation/openldap-deb#apt_repository

You still can download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 04 February 2014 à 08:53

LDAP Tool Box - Nagios plugins 0.5 released

Here comes a new release of Nagios plugins!

They are all described here: http://ltb-project.org/wiki/documentation#monitoring

This version adds two new plugins:

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 27 November 2013 à 15:46

LDAP Tool Box - OpenLDAP 2.4.38 packages available (RPM and Debian)

New OpenLDAP 2.4.38 packages are available, including OpenLDAP init script version 1.9.

We now provide packages for Red Hat based systems and Debian based systems!

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.9)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

We now have YUM and APT repositories, so you can install packages without downloading them manually, see http://ltb-project.org/wiki/documentation/openldap-rpm#yum_repository and http://ltb-project.org/wiki/documentation/openldap-deb#apt_repository

You still can download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 27 November 2013 à 15:28

LDAP Synchronization Connector - LSC OBM plugin 1.1 released!

This is a minor release for LSC OBM plugin, due to a small evolution of OBM REST API.

OBM (http://www.obm.org) is an open source groupware edited by LINAGORA.

Discover more on the wiki page: http://lsc-project.org/wiki/documentation/2.0/plugins/obm

Download the plugin here: http://lsc-project.org/wiki/download

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 14 November 2013 à 11:33

LDAP Synchronization Connector - LSC OBM plugin 1.0 released!

We are proud to release the first version of LSC OBM plugin.

OBM (http://www.obm.org) is an open source groupware edited by LINAGORA.

In OBM 2.6 (not yet released, but soon available), there is a REST API that allows to manage users and groups. The LSC OBM plugin offers the possibility to synchronize any supported data source (LDAP directory, database, CSV, etc.) to OBM.

Discover more on the wiki page: http://lsc-project.org/wiki/documentation/2.0/plugins/obm

Download the plugin here: http://lsc-project.org/wiki/download

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 20 September 2013 à 12:42

LDAP Synchronization Connector - LDAP Synchronization Connector 2.0.3 released!

LSC 2.0.3 was released. The main changes are:

  • Manage multiple database connections
  • Get operational attributes in JNDI services
  • PasswordHK sample script
  • Task parameter for syncHook/cleanHook

The full changelog can be seen here: http://tools.lsc-project.org/versions/show/78

Download: http://lsc-project.org/wiki/download

Thanks to all people that made this release possible:
  • Sébastien BAHLOUL
  • David COUTADEUR
  • Jon KIDDER
  • Raphaël OUAZANA
  • Clément OUDOT

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 13 September 2013 à 16:48

LDAP Tool Box - OpenLDAP 2.4.36 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.36 RPMs are available, including OpenLDAP init script version 1.9.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.9)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

We now have a Yum repository, so you can install RPM without downloading them manually, see http://ltb-project.org/wiki/documentation/openldap-rpm#yum_repository

You still can download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 21 August 2013 à 08:40

OpenLDAP et l'overlay "constraint" : augmentez la qualité des données de votre annuaire

Enlarge your quality

Un annuaire LDAP n'est pas une base de données : les données d'un annuaire sont organisées de manière hiérarchique et respectent un schéma définissant les classes d'objet et attributs autorisés, en plus des syntaxes et règles de comparaison associées aux attributs.

Ces éléments permettent déjà d'assurer une certaine maîtrise de la qualité des données, par exemple :

  • Forcer la présence d'attributs dans une entrée en rendant ces attributs obligatoires pour la classe d'objet de l'entrée
  • Contrôler que la valeur saisie est un DN en définissant la syntaxe de l'attribut comme DistinguishedName

Toutefois, ces vérifications peuvent s'avérer insuffisantes et autoriser des valeurs incohérentes dans l'annuaire LDAP.

Un manager exemplaire

Prenons l'exemple de l'attribut manager : il permet de définir le supérieur hiérarchique d'une personne. Sa définition technique est la suivante :

olcAttributeTypes: ( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC127
 4: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115
 .121.1.12 )

Comme les créateurs de LDAP font bien les choses, la syntaxe de cet attribut est un DN (1.3.6.1.4.1.1466.115.121.1.12), ce qui semble assez logique puisque l'on renseignera comme valeur le DN d'une autre entrée dans l'annuaire. Ainsi, impossible de définir la valeur suivante :

manager: Bill Gates

Par contre, cette valeur sera correcte :

manager: CN=Bill Gates,CN=users,DC=Microsoft,DC=com

Correcte syntaxiquement peut-être, mais fonctionnellement ?

En tant qu'utilisateurs émérites d'un annuaire LDAP, nous sommes en droit d'exiger plus de contrôle, par exemple :

  • Que l'entrée existe dans l'annuaire
  • Qu'elle fasse soit située dans la branche des utilisateurs
  • Qu'elle possède la classe d'objet inetOrgPerson
  • Qu'elle soit dans le même département ou structure
  • ...

Travaillons sous la contrainte

OpenLDAP possède un système de greffons nommé overlay. Chaque overlay permet l'activation d'une fonctionnalité, comme par exemple la gestion des groupes dynamiques (voir l'article dédié).

Pour notre problématique du jour, nous allons nous intéresser à l'overlay constraint. Cet overlay doit être compilé pour pouvoir être chargé, c'est le cas si vous utilisez les RPMs de LDAP Tool Box.

L'overlay constraint permet d'ajouter des contraintes sur les valeurs des attributs. Comme tout overlay, il n'agit que sur les opérations LDAP, et ne corrigera donc pas les données déjà enregistrées, cet overlay retournera par contre un message d'erreur si une opération LDAP modifie une valeur non compatible avec les règles déclarées (code d'erreur 19 - CONSTRAINT_VIOLATION).

Il existe cinq types de contraintes :

  • regex : comparaison de la valeur avec une expression régulière
  • size : taille maximale de la valeur (nombre de caractères)
  • count : nombre maximum de valeurs
  • uri : les valeurs doivent correspondre à une recherche LDAP interne
  • set : utilisation des capacités des sets des ACLs OpenLDAP

Le champ d'application de ces contraintes peut-être restreint à l'aide d'une recherche LDAP interne (clause restrict).

Les doigts dedans

Maintenant que les présentations sont faites, voyons comment implémenter nos contraintes.

La création de l'overlay doit se faire dans le backend cn=config. Vous pouvez utiliser la ligne de commande, un navigateur LDAP, ou (et je vous le conseille bien entendu), LinID OpenLDAP Manager.

En LDIF, cela donne par exemple :

dn: olcOverlay={3}constraint,olcDatabse={1}bdb,cn=config
objectClass: olcConfig
objectClass: olcConstraintConfig
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: {3}constraint

Reste à définir ensuite les contraintes en tant que telles, dans l'attribut olcConstraintAttribute.

Commençons par le plus simple : la valeur de l'attribut manager doit correspondre à une entrée existante de l'annuaire :

olcConstraintAttribute: manager uri ldap:///dc=example,dc=com?entrydn?sub?(objectClass=*)

Si on souhaite que cette entrée soit explicitement un utilisateur (présence dans la branche ou=users, et avec la classe inetOrgPerson) :

olcConstraintAttribute: manager uri ldap:///ou=users,dc=example,dc=com?entrydn?sub?(objectClass=inetOrgPerson)

Peut-être qu'en fait cette contrainte ne doit être appliquée que pour les entrées de la branche ou=users, dans ce cas :

olcConstraintAttribute: manager uri ldap:///ou=users,dc=example,dc=com?entrydn?sub?(objectClass=inetOrgPerson) restrict "ldap:///ou=users,dc=example,dc=com??sub?(objectClass=*)"

Je pense que vous avez saisi le concept.

Set épatant

Avant de terminer, voyons une règle un peu plus complexe : il faut que le manager de l'utilisateur appartienne au même service que lui. En considérant que le service d'un utilisateur est défini dans son attribut departmentNumber, on utilisera alors la règle suivante :

olcConstraintAttribute: manager set "this/departmentNumber & this/manager/departmentNumber" restrict "ldap:///ou=users,dc=example,dc=com??sub?(objectClass=*)"

On mesure ici la puissance des sets d'OpenLDAP, créés initialement pour définir des ACLs complexes, et très utiles ici pour la définition de contraintes.

À très bientôt pour de nouveaux articles sur les configurations avancées d'OpenLDAP !

Posted on Clément Oudot by KPTN on 30 May 2013 à 12:15

Utiliser un thème alternatif jQuery UI avec Tapestry jQuery

Hello java world

Une fois n'est pas coutume, je quitte le monde Perl pour parler de nos développements sur LinID et en particulier sur notre framework java LinID Directory Manager.

linid_logo.png

Ce framework est basé sur Tapestry 5 et permet de créer des interfaces web de gestion d'annuaire LDAP sans réinventer la roue. En effet, il possède un framework d'autorisation permettant de modéliser les droits d'accès aux entrées et aux attributs à travers l'interface, un schéma enrichi permettant de décrire comment un attribut sera visualisé et édité, et un certain nombre de composants comme des listes de sélection basées sur des recherches LDAP, des afficheurs de DN, de dates, etc.

tapestry.png

Afin d'améliorer le rendu graphique de l'application, nous avons intégré jQuery et jQuery UI grâce au module tapestry5-jquery fourni par nos amis de Ganf of Tapestry 5 (GoT5).

Cet article explique comment utiliser ce module, et que faire quand le thème graphique fourni par défaut ne vous convient pas.

Au début c'est facile

Oui, tout est expliqué sur le site du module tapestry5-jquery. La première étape consiste à modifier son fichier pom.xml pour charger la dépendance :

<dependency>
<groupId>org.got5</groupId>
<artifactId>tapestry5-jquery</artifactId>
<version>3.3.5</version>
</dependency>

Et en gros, voilà, on a ensuite accès dans son code Tapestry aux widgets jQuery UI. Par exemple dans l'application de démonstration de LinID Directory Manager, on utilise le widget dialog pour la confirmation de la suppression d'une entrée (fichier ActionBar.tml) :

	<t:if t:test="canDelete">
		<li>
			<span   title="${message:general.delete-label}">
			
			<t:jquery.dialoglink t:id="deleteDialog" t:dialog="delete-${dnHash}">
			<img src="${asset:context:layout/images/delete.gif}" alt="${message:general.delete-label}" />
			<span class="menumessage">${message:general.delete-label}</span>
			</t:jquery.dialoglink>
			
			</span>
			
			<t:jquery.dialog 
				t:clientId="delete-${dnHash}"
				t:params="deleteDialogParams"
				title="${message:general.delete-label}">
			
			<p>${message:confirm.deleteuser}</p>
			<a t:type="actionlink" t:id="delete" t:context="entryDn" t:mixins="jquery/button" t:params="literal:{icons:{primary:'ui-icon-circle-check'}}">
			${message:general.confirm-label}
			</a>

			</t:jquery.dialog>
			
		</li>
	</t:if>

Thème pas ?

Le thème jQuery UI fourni par défaut est lightness, avec une dominante orange. Nous utilisons ce thème dans LinID OpenLDAP Manager (application web de configuration d'OpenLDAP), mais pour l'application de démonstration, le thème jQuery UI smoothness est plus adapté (voir le theme roller de jQuery UI).

Pour utiliser ce thème, il faut d'abord le télécharger sur le site de jQuery UI, en demandant un bundle pour la version legacy (1.9). En effet, tapestry5-jquery n'inclus que le thème lightness, et se base sur jQuery 1.8.24.

Une fois l'archive jQuery téléchargée, prendre le répertoire smoothness situé dans CSS et le copier dans la webapp LinID, par exemple dans le répertoire layout.

Ensuite, comme indiqué plus, il faut récupérer le fichier CSS pour la version 1.8.24. On peut utiliser pour cela Google CDN. Le lien pour télécharger le CSS: http://ajax.googleapis.com/ajax/lib....

On remplace les CSS de l'archive jQuery UI par celui téléchargé, et il reste à indiquer dans la webapp d'utiliser le nouveau thème. Pour cela dans le fichier AppModule.java, on ajoute dans contributeApplicationDefaults :

configuration.add(JQuerySymbolConstants.JQUERY_UI_DEFAULT_THEME, "${linid.jqueryui.path}");

Et on renseigne la variable linid.jqueryui.path dans le fichier configuration.properties :

# Jquery UI theme
#linid.jqueryui.path=classpath:org/got5/tapestry5/jquery/themes/ui-lightness/jquery-ui.css
linid.jqueryui.path=context:layout/smoothness/jquery-ui.css

Et voilà le résultat :

Affichage_des_informations_20130516-162951.png

Posted on Clément Oudot by KPTN on 16 May 2013 à 15:38

De retour de l’OpenStack Summit à Portland

Quelques jours pour se remettre du décalage horaire et voilà un petit compte-rendu de notre escapade américaine pour l’OpenStack Summit.

C’est la semaine du 15 avril qu’avait lieu l’événement majeur bi-annuel pour la communauté OpenStack. Basé sur l’idée des Ubuntu Developer Summits (UDS, désormais disparus au profit d’UDS virtuels), l’OpenStack Summit clôt un cycle de release (d’une durée fixe de 6 mois) mais surtout en ouvre un nouveau. Le lieu change à chaque fois, même si les États-Unis ont été très privilégiés jusqu’à maintenant. Ce Summit de préparation à la version Havana avait lieu à Portland dans l’Oregon. À noter que le prochain Summit aura enfin lieu en dehors du continent américain, ça sera Hong Kong.

La population de l’OpenStack Summit est très variée et comprend entre autres : développeurs d’OpenStack, développeurs d’applications pour le cloud dont OpenStack, déployeurs d’OpenStack, utilisateurs de l’IaaS OpenStack, mais aussi des profils moins techniques.

L’événement est en effet décomposé en deux axes :

  • Conference : des conférences classiques sous formes de keynotes, présentations techniques ou encore retour d’expériences, pour tout le monde;
  • Design Summit : des sessions de discussions et brainstorming, pour les développeurs d’OpenStack qui doivent définir les axes de travail pour les six prochains mois.

Pour les deux parties, un espace est dédié à l’improvisation : lightning talks et unconferences sont planifiés directement sur place et permettent à tout le monde de parler de son sujet favori, que ce soit sous forme de présentation formelle ou de discussion avec d’autres développeurs.

L’OpenStack Summit est bien sûr l’occasion pour nombre d’entreprises de faire quelques annonces. On peut noter : RDO, la distribution OpenStack par Red Hat ou encore le partenariat entre Canonical et VMWare. Mark Shuttlework a fait sa traditionnelle keynote, tout comme des représentants de Red Hat, Rackspace et HP, les principaux sponsors du summit.

Plusieurs organisations ont parlé de leur utilisation d’OpenStack, voire l’ont dévoilée lors de cet événement : la NSA, le CERN, Comcast ou encore Bloomberg.

Sur un ton plus ludique, l’équipe Dope’n'Stack a dévoilé son deuxième single :  E.N.T.E.R.P.R.I.S.E.

Du côté du design summit, des discussions fort productives concernant les live migrations ont eu lieu, l’idée étant de faire un peu de nettoyage et de simplifier l’utilisation de cette fonctionnalité. La notion de “cells” (cellules, permettant de mutualiser différents déploiements de Nova pour passer à l’échelle) devrait être l’objet d’améliorations pendant le cycle de développement à venir. On peut également citer la session concernant l’arrêt des instances : cette nouvelle possibilité permettra à l’utilisateur d’éteindre une instance et de libérer les ressources, tout en maintenant son stockage et sa configuration réseau. C’est lors des discussions que le nom de cette nouvelle action a émergé : “shelve”.

Nombre d’autres sujets plus ou moins transversaux ont été abordés : objectif de pouvoir faire des mises à jour d’OpenStack sans downtime, DNS as a Service, portage vers Python 3, intégration avec Ceph, ou encore les soucis juridiques liés aux marques déposées et aux noms de code des projets.

Une nouvelle fois, le cycle de 6 mois qui s’ouvre pour OpenStack promet de beaux résultats et de belles avancées pour le cloud libre.

En attendant, le succès du Summit lui même ne se dément pas, près de 3000 personnes avaient fait le déplacement à Portland.

Par Adrien

Posted on Blog de l\'équipe du 08000linux by nshur on 03 May 2013 à 13:10

Sortie de LemonLDAP::NG 1.2.4

Une nouvelle version de LemonLDAP::NG est sortie le 23 avril 2013 : la version 1.2.4.

Cette version sera l'une des dernières de la branche 1.2, l'équipe travaillant désormais sur la version 1.3. Elle ne comporte que quelques correctifs :

  • Suppression de certains logs de debug dans le backend de configuration LDAP
  • Meilleure gestion des logs de l'interface du backend de configuration
  • Correction d'un bug empêchant l'utilisation du backend Multi avec un # dans le nom des modules
  • Correction des problèmes d'encodage dans les POD des modules Perl

Les notes de publications sont visibles ici, et cette nouvelle version est téléchargeable ici.

Pensez à mettre à jour votre installation !

Posted on Clément Oudot by KPTN on 26 April 2013 à 15:24

Debian QA à Distro Recipes 2013

La deuxième journée de Distro Recipes 2013 fut l’occasion de parler d’assurance qualité (QA) au sein du projet Debian. Vaste sujet s’il en est étant donnée la taille de cette distribution, tant en terme de paquets disponibles que de développeurs.

C’est Lucas Nussbaum, développeur Debian actif notamment dans les activités d’assurance qualité, qui a fait une revue des outils utilisés et cité quelques chiffres intéressants. À noter que quelques jours après cette conférence, Lucas a été élu Debian Project Leader, félicitations !

Environ un millier de personnes ont officiellement le statut de “Debian Developer” (DD), qui octroie le droit d’envoyer directement les paquets dans l’archive. Ce chiffre n’inclut pas le statut intermédiaire de “Debian Maintainer” qui a été attribué à deux fois plus de contributeurs. Debian a la particularité d’avoir un lien étroit entre mainteneur et paquet. Chacun des quelques 18000 paquets est géré par une personne ou une équipe de personnes spécialiste du sujet.

En parallèle de tous ces mainteneurs ayant à charge leurs paquets, une équipe d’assurance qualité a pour mission d’une part de s’occuper des paquets plus ou moins à l’abandon, d’effectuer des tâches à l’échelle du projet comme les reconstructions régulières de tous les paquets, et d’autre part de maintenir les différents outils mis à disposition des développeurs.

Parmi ces outils on trouve Debcheck (analyse statique de résolution des dépendances), Piuparts (test d’installation, mise à jour et suppression), Lintian (analyse statique des paquets permettant de détecter des anomalies connues). Ceux-ci sont utilisables directement par les développeurs mais l’équipe de QA maintient également les infrastructures faisant fonctionner ces outils en continu sur toute l’archive Debian.

DEHS (Debian External Health Status) permet, pour chaque paquet qui indique où trouver les sources amont du logiciel, de vérifier si de nouvelles versions du logiciel sont disponibles par rapport à la version actuellement empaquetée dans Debian. Distro Recipes regroupant des représentants de plusieurs distributions, la question de la possibilité de mutualiser cet outil s’est posée. En effet, celui-ci étant relativement agnostique de la distribution, la mutualisation devrait être réalisable.

Pour les contributeurs Debian, les sources d’informations sont donc multiples, et des outils ont été créés pour fournir une vue centrale :
* Pour un mainteneur : DDPO (Debian Developer Packages Overview)
* Pour un paquet : PTS (Package Tracking System)
Il existe également packages.debian.org, qui peut se révéler très utile aussi pour les utilisateurs.

Outre leur affichage, s’est posée la question du croisement de ces données afin de les rendre exploitables plus facilement. C’est de ce besoin qu’est né UDD (Ultimate Debian Database). Il s’agit d’une base de données relationnelle regroupant nombre d’informations issues de multiples sources. L’intérêt de centraliser ces données dans une base relationnelle est qu’il devient très facile d’effectuer tout type de requêtes à propos de Debian.

Enfin, Lucas a montré quelques chiffres et tendances intéressants (extraits d’UDD) à propos des méthodes de développement utilisées au sein de Debian. La co-maintenance de paquets et l’utilisation des VCS sont en progression continue. Petit à petit, Debian fait évoluer ses habitudes vers un système plus collaboratif, et on ne peut que s’en réjouir!

par Adrien

Posted on Blog de l\'équipe du 08000linux by nshur on 22 April 2013 à 08:44

Directory Manager - LinID Directory Manager 2.0 released

We released LinID DM framework 2.0 last month. The new version has unified versions for all artifacts:

  • authorization
  • core
  • linid-dm-parent
  • wui

We now use Tapestry 5.3.2 and some other updated dependencies.

You can use LinID DM 2.0.1 which provides a small bug fix on photo management.

We are doing a lot a work on release 2.1 to publish a nice sample application. You can see it by using the trunk or wait a few weeks ;)

Posted on Infos LinID by Clément OUDOT (coudot@linagora.com) on 10 April 2013 à 16:11

Mageia et systemd

La conférence est donnée par Colin Guthrie, un ancien contributeur Mandriva. Il est maintenant contributeur Mageia et responsable de systemd. Il est un des fondateurs de Mageia et est aussi contributeur à PulseAudio. Il travaille actuellement chez Tribal Logic.

Qu’est-ce que Mageia et comment contribuer
Mageia est un fork de Mandriva, et est né en 2010, suites aux problèmes financiers de Mandriva. De par ce fait, elle est une distribution de type RPM. Derrière Mageia se trouve Mageia.org, une association loi 1901. Il y a un conseil (council) en haut de l’échelle, le reste est le résultat d’une méritocratie. Ce qui veut dire que les personnes voulant devenir contributeurs doivent prouver leur valeur en diffusant des patches, paquets ou correction de paquets avant de rentrer dans le cycle de “mentoring” de Mageia. Le cyle de mentoring est assez simple. Tout d’abord, le futur packageur se fait parrainer par un packageur confirmé. Il a alors uniquement les droits de commit dans le repository. Son mentor lui indique des modifications de paquets à faire, il peut ainsi les commiter, puis le mentor vérifie le tout et le pousse si les modifications sont concluantes. Ceci dure le temps que l’apprenti met à faire de moins en moins d’erreur. Au bout de quelques semaines, l’apprenti obtient le droit de pousser lui-même ses modifications et nouveaux paquets et devient alors un packager confirmé.
Il y a d’autres types de contributeurs dans la communauté Mageia: Documentation, testeurs, développeurs, administrateurs systèmes… La liste est longue et le choix est varié !

Passage à systemd
Récement, Mageia est passé à systemd pour gérer les scripts d’init et le démarrage des services au boot du système. C’est un composant critique et majeur du système, et de ce fait ce n’est pas une migration légère. Elle s’est donc déroulée en plusieurs étapes.

Qu’est-ce que systemd
Mais d’abord, qu’est-ce que systemd ? Hé bien, c’est avant tout un remplaçant pour l’ancestral démon init qui nous vient d’Unix System V. Le projet a été démarré en 2010 par Lennart Poettering. Ce dernier est notamment le créateur de PulseAudio, de la bibliothèque Avahi, bien évidement de systemd et travaille chez Red Hat. Il développe toujours activement systemd, qui est écrit en langage C.
Comme dit ci-dessus, systemd a pour vocation de remplacer sysvinit au sein des différentes distributions et systèmes GNU/Linux. Ce nouveau démon travaille avec dbus pour pouvoir faire dialoguer les services entre eux. Il offre de ce fait un meilleur framework pour la dépendance entres services au démarrage, et permet de réduire la surcharge du shell, et d’avoir dans certains cas une meilleure parallélisation des services interdépendants grâce à son utilisation des bus et des sockets. Le projet est sous license LGPL version 2.1, et son nom vient de “system daemon” (ou système D, au choix).

Migration dans Mageia
Une grosse évolution comme celle-ci requiert de nombreuses précautions, une préparation, et bien sûr un plan et une assurance sur la durée que tout fonctionnera (au moins dans la version stable). Bien évidement, le changement est d’abord opéré en Cauldron, la version de développement de Mageia, afin d’éviter d’impacter les utilisateurs finaux. Nous déconseillons d”utiliser la distribution de développement sur un poste de production.
La migration s’est déroulée avant la sortie de Mageia 2 (qui elle date du 22/05/2012). En premier lieu, Colin a fait la proposition sur la liste de diffusion de développement du projet (mageia-dev@mageia.org), afin que tous les développeurs puissent débattre et donner leurs avis. Ce qu’ils ont fait, explorant toutes les pistes possibles: comment la distribution va-t-elle impactée? A quel point? Est-ce qu’on pourra le maintenir? Pourra-t-on assurer sur les tickets/bugs?
Une fois que les développeurs tombent d’accord, alors il décide du plan d’action. Comment et dans quel ordre tout va se passer.
Il a d’abord fallu nettoyer les scripts d’init de Mageia, car ils avaient été adapter à diverses occasions et pour pallier à diverses situations. Les services ont ensuite été migrés un à un à systemd, et le tout a été envoyé dans Cauldron pour être testé par les utilisateurs avancés et les développeurs. Puis, des problèmes ont été détectés, donc des tickets ont été posé, traités par Colin et/ou d’autres packageurs.
Le dernier travail fut de faire en sorte que la mise à jour de Mageia 1 à Mageia 2, et donc de sysvinit à systemd, afin que l’utilisateur final puisse migrer sa version stable sur la prochaine version stable en étant assurer de ne rien casser.

Et aujourd’hui
Aujourd’hui, systemd est disponible en version 44 par défaut dans mageia, mais sysvinit reste supporté optionnellement. Colin est toujours le mainteneur de systemd et il fait un travail fantastique pour cette superbe distribution.

Par Sandro

Posted on Blog de l\'équipe du 08000linux by nshur on 09 April 2013 à 10:42

LDAP Tool Box - OpenLDAP 2.4.35 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.35 RPMs are available, including OpenLDAP init script version 1.9.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.9)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

Download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 03 April 2013 à 12:55

LemonLDAP::NG version entreprise sera en Java

La communauté du logiciel libre LemonLDAP::NG a longtemps hésité avant de prendre cette décision, mais cette dernière semble être la meilleure option pour faciliter l'implantation de LemonLDAP::NG dans le monde des entreprises : LemonLDAP::NG Pro Special Edition sera en Java ou ne sera pas.

Un échange de bons procédés avec Oracle

La version entreprise de LemonLDAP::NG sera développée en partenariat avec Oracle, qui fournira des extensions dédiées dans sa JVM (Je Vous Méprise). Les avantages sont clairs pour le produit :

  • Formulaire d'enregistrement avant de télécharger le logiciel, permettant d'établir une cartographie réaliste des utilisateurs
  • Paquets RPM binaires avec validation de la licence avant l'installation
  • Console d'administration en Java natif (nécessite un serveur X)
  • Utilisation d'une base de données Oracle pour le stockage de la configuration et des sessions (implémentation de triggers propriétaires à la clé)

Ceci n'est qu'un juste de retour des choses envers la société Oracle qui par sa conduite exemplaire a permis la migration vers le logiciel libre de nombreuses sociétés.

Des contraintes d'exploitation connues des entreprises

Pour déployer la version entreprise, il faudra disposer d'un serveur d'application JEE avec support EJB 3.0. Cela permet aux entreprises ayant investi dans des piles logicielles Java complètes de les rentabiliser au maximum.

On note d'ailleurs que LemonLDAP::NG sera diffusé sous forme d'EAR en plus des RPMs Oracle afin de complexifier le processus d'installation, trop simple avec la version communautaire (apt-get install lemonldap-ng ou yum install lemonldap-ng). Ainsi, les professions de chefs de projet et architectes J2EE seront valorisées.

Afin de faire tourner cette nouvelle version, des actions manuelles sur la base de données et sur les paramètres bas-niveau du système d'exploitation seront nécessaires quotidiennement. Elles nécessiteront le passage par une interface graphique, empêchant ainsi toute automatisation, et donc le maintien d'un certain nombre d'emplois informatiques.

Relance du marché du matériel informatique

La version entreprise de LemonLDAP::NG sera basée sur les fonctionnalités de la version communautaire, avec les améliorations suivantes :

  • Formulaire d'authentification sous forme d'applet java
  • Utilisation de frames dans l'interface utilisateur
  • Support de IE 5.5 et Mozaic

Ces améliorations sont aussi accompagnées de contraintes matérielles supplémentaires. Ainsi pour le support de 100 utilisateurs, il faudra prévoir :

  • 16 Go de RAM
  • 4 cœurs
  • 60 Go d'espace disque

On déconseillera la virtualisation afin de permettre aux entreprises d'investir dans du matériel performant directement fabriqué en Asie par des informaticiens en devenir.

Support de Microsoft Windows et autres

Enfin ! se diront les lecteurs assidus de la presse informatique spécialisée dans les technologies peu novatrices. La version entreprise de LemonLDAP::NG étant en Java, elle sera directement disponible pour les plate-formes professionnelles et sécurisées comme Windows Server, AIX et Solaris.

Fonctionnalité spéciale pour nos amis des plates-formes Windows, une version ASP du Handler LemonLDAP::NG nativement disponible sous IIS. Le cookie ne sera néanmoins compatible que pour Internet Explorer. L'authentification Active Directory sera également améliorée, avec la fourniture d'une sur-couche d'une sur-couche d'une sur-couche de la fenêtre d'authentification des postes de travail Windows, compatible Vista.

Disponibilité en 2014

La première version entreprise sera disponible en 2014, avec une version majeure tous les deux ans. Une version mineure sortira tous les 6 mois, incluant les correctifs de sécurité nécessaires à l'exposition du service sur Internet. Les processus de mises à jour seront industrialisés afin d'occuper prestataires et sous-traitants sur la gestion des régressions fonctionnelles. Les API évolueront également en profondeur afin de laisser la part belle aux développeurs.

Malgré ces innovations de taille, la version communautaire continuera d'être maintenue, en Perl sous GNU/Linux, pour les amateurs et les bricoleurs. Nous espérons toutefois que vous adhérerez rapidement à la version entreprise afin de rentrer dans les rangs de l’homogénéité informatique.

Posted on Clément Oudot by KPTN on 01 April 2013 à 12:47

LDAP Synchronization Connector en mode 2.0

Des nouvelles pas très fraîches...

En effet, la version 2.0 de LSC est sortie en juillet 2012, il y a plus de 8 mois. Je profite de la sortie la semaine dernière de la version 2.0.2 (deuxième version mineure de la branche 2.0) pour présenter ce projet très bien connu des administrateurs LDAP qui savent installer des logiciels java, donc globalement inconnu...

LSC et toi tu le sais pas ?

Commençons par le début, c'est quoi LSC ? LSC signifie LDAP Synchronization Connector, ce qui devient plus significatif sur son utilité : c'est un moteur de synchronisation LDAP.

LSC permet de synchroniser des fichiers plats (CSV), des bases de données et des annuaires, dans les deux sens. Il s'agit d'une vraie synchronisation avec une phase de comparaison des données sources et des données cibles afin de calculer les modifications à appliquer sur la destination.

LSC permet par exemple de synchroniser une base de données RH avec son annuaire d'entreprise, de synchroniser OpenLDAP et Active Directory (et avec quelques subtilités, en incluant les mots de passe), de générer des mots de passe Samba, d'importer des fichiers CSV dans un annuaire ou encore de pousser des données LDAP dans une bases de données.

LSC ne propose pas d'interface graphique, tout se fait comme au siècle dernier, à la main, mais rassurez-vous il s'agit bien d'une technologie très évoluée !

LSC strikes back

La nouvelle version n'est pas une version 2.0 de complaisance, les évolutions depuis la version 1.2 sont assez significatives. Les plus importantes sont les suivantes :

  • Modification du format de configuration (fini le fichier de properties java, place au XML)
  • Support de la synchronisation au fil de l'eau avec un annuaire compatible SyncRepl en source
  • Script de démarrage et d'arrêt
  • Nouveaux scripts de supervision avec gestion des données de performances (oh les beaux graphiques)
  • Bases de données en destination
  • Support de groovy

La configuration en XML peut sembler un choix discutable, mais elle a le mérite de clarifier le paramétrage du connecteur et de permettre une meilleure séparation des informations de connexion et de la définition des tâches de synchronisation.

De plus, un validateur permet facilement de s'assurer que la configuration est consistante avant de lancer le connecteur.

La documentation en ligne détaille toutes les balises qui peuvent être utilisées.

Test me if you can

Vous n'êtes pas convaincu ? D'avance vaincu ? Allons, le plus simple est de tester. LSC propose un tutoriel très simple permettant de synchroniser un fichier CSV dans un annuaire LDAP OpenDJ.

Et comme vous m'êtes sympathiques, voici ce tutoriel en français.

Première étape, télécharger LSC. Là c'est très simple, il suffit d'aller sur la page de téléchargement. On suppose que vous avez java en version 6 minimale installée sur votre poste ou votre serveur de test.

Installer LSC :

$ unzip lsc-core-2.0*-dist.zip
$ cd lsc-2.0*

Maintenant on se rend dans le dossier du tutoriel :

$ cd sample/hsqldb

Le fichier sample.csv contient les données que nous allons synchroniser dans l'annuaire. Si, si, vous pouvez vérifier.

Ces données doivent être importées dans la base de données interne (HSQLDB) :

$ bin/lsc-sample --import sample.csv

À présent, lancer l'annuaire de démonstration dans une autre console (la commande ne rend pas la main) :

$ bin/lsc-sample --start-ldap-server

Puis lancer la synchronisation depuis la première console :

$ bin/lsc-sample --run

Et voilà, les données sont synchronisées. Si vous ne me croyez pas, ouvrez un navigateur LDAP sur l'annuaire de test, supprimez des données et relancez la synchronisation.

Et pour d'autres tests, vous pouvez également modifier le fichier CSV d'entrée. Dans ce cas il faut penser à le réinsérer dans la base avec :

$ bin/lsc-sample --import sample.csv

Voilà, LSC fini

Vous savez désormais qu'il existe une solution de remplacement pour tous vos scripts maison en Perl, Ruby, ou pire PHP qui synchronisent vos données entre votre annuaire et le reste du monde. Je ne peux que vous inviter à rejoindre la communauté et nous aider à améliorer le produit ou la documentation !

Posted on Clément Oudot by KPTN on 25 March 2013 à 16:39

LDAP Synchronization Connector - LDAP Synchronization Connector 2.0.2 released!

LSC 2.0.2 was released yesterday. The main changes are:

  • Better connection management with async mode
  • Fix monitoring scripts
  • Enhancements on init script
  • The date is now printed as comment in LDIF output
  • Documentation updates

The full changelog can be seen here: http://tools.lsc-project.org/versions/show/73

Download: http://lsc-project.org/wiki/download

Thanks to all people that made this release possible:
  • Chris RIDD
  • Bartłomiej B.
  • Jon KIDDER
  • Maxime PELLETIER
  • Frédéric POISSON
  • Stéphane BOND
  • Raphaël OUAZANA
  • David COUTADEUR
  • Clément OUDOT

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 23 March 2013 à 13:45

LDAP Tool Box - OpenLDAP 2.4.34 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.34 RPMs are available, including OpenLDAP init script version 1.9.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.9)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

Download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 12 March 2013 à 16:58

Heat, part of OpenStack future

This year, FOSDEM had again its dedicated Cloud devroom on Sunday. A number of talks were related to OpenStack.

Tomas Sedovic, working at Red Hat, introduced the Heat project. I had the chance to hear about Heat a few times before, notably at the last EMEA OpenStack Day that happened in London a couple of months ago.

As you may know, the OpenStack project aims at providing a full free software stack designed to run IaaS (Infrastructure as a Service). Actually, it’s made of a bunch of components each in charge of a different part of the infrastructure: Compute, Block Storage, Object Storage and Network. Besides, additional components help to put the whole thing in shape: Image service, Identity service and Dashboard. All of these make the core of OpenStack but the ecosystem at large includes a lot of more or less advanced projects. Heat is one of them.

As with the rest of OpenStack, Heat has its counterpart in AWS (Amazon Web Services). So if you know what AWS CloudFormation is, you already have a good idea of what Heat aims to be. I’m going to assume you don’t, and explain what Heat is trying to bring to the OpenStack ecosystem.

Heat is about orchestrating resources in the cloud. Resources in an IaaS cloud are mainly compute (instances), storage (object storage, or volumes for block storage), and network (virtual networks, routers). Resources can also be more advanced stuff, like load balancers.

Heat provides a template format that enables deployers to describe their infrastructure in terms of resources and links between these resources. For instance, a web application infrastructure would consist of a database instance, two web server instances with a load-balancer in front of them, and an appropriate network configuration. With a Heat template describing such an infrastructure, one would be able to bootstrap that infrastructure in the cloud by using only one instruction, instead of requesting each resource individually. Bringing up or down the full infrastucture is therefore as easy as bringing up or down a single compute instance.

This deployment feature is only one part of what is provided in Heat. Heat also brings infrastructure level monitoring capabilities to OpenStack. Once the infrastructure is deployed, it will make sure each component stays up and running, and monitor specific metrics. When some bad threshold is hit for a metric, what is it going to do? text you? send an email? Why not. What about fixing it by itself?
Let’s take the following metric: “number of HTTP hits in the web server instance”, in the context of the previously described infrastructure. If your web application is being slashdotted, what are you going to do when receiving the text message in the middle of the night? Use the power of cloud and spawn a third (or more) web server instance? Yep! But what do you think of staying in your bed and let Heat handle it? This is called auto-scaling. Auto-scaling enables you to define how many instances should be up depending on a metric. Here comes real automatic elasticity.

Heat supports AWS APIs and efforts are being made to ensure it works together with the Ceilometer project.

Linagora will be at the next OpenStack Summit in Portland which is going to be an important milestone for Heat development as it approaches the status of core OpenStack project. See you there!

By Adrien

Posted on Blog de l\'équipe du 08000linux by nshur on 07 March 2013 à 10:31

Wayland for Application Developers

Wayland est un protocole de gestion d’affichage mais aussi une implémentation de celui-ci. Dans cette présentation Rob Bradford a exposé les principales différences entre le modèle « X Window System » actuel et Wayland et l’état d’avancement du projet en général.

La communication direct entre les applications et le compositeur est l’un des concepts de Wayland, c’est aussi  une des principal différences avec le système X.

Le système « X Window » s’architecture comme suit :

X Client X Client

↕           ↕

X  SERVER          ↔     COMPOSITOR

KMS evdev

Kernel

Wayland s’architecture comme suit :

X Client X Client

↕                   ↕

COMPOSITOR

KMS evdev

Kernel

Le Compositor Wayland est responsable de la distribution des évènements aux clients. Il utilise le plus possible les descripteurs de fichiers pour communiquer avec les applications.

Le client est responsable des demandes de déplacement et de re-dimensionnement mais c’est à wayland de demander aux applications de re-générer leurs buffers.

Le Compositor utilise les buffers de toutes les applications pour calculer le rendu final affiché à l’écran.

Ce fonctionnement implique que les applications n’ont pas le contrôle de leurs positions ou de leur empilement. Il est tout de même prévue de laisser un moyen aux clients de générer popup dont la fenêtre s’affichera au premier plan.

En prévision de la phase de transition de X à Wayland les développeurs implémentent un système appelé XWayland permettant de gérer les applications ne supportant pas Wayland.

Il s’architecture comme suit :

X Client X Client

↕           ↕

WAYLAND COMPOSITORX  SERVER

KMS evdev

Kernel

Par Maxime

Posted on Blog de l\'équipe du 08000linux by nshur on 07 March 2013 à 10:29

Héritage versus rôles

Ce talk a été donné par Curtis “Ovid” Poe, qui est un expert Perl bien connu de la communauté. Il est spécialisé dans Perl depuis 1999. Il siège au conseil d’administration de la fondation Perl et a écrit le jeu de tests inclut dans l’interpréteur Perl actuel. Il est également l’auteur du livre “Beginning perl”, dont une nouvelle édition vient de sortir, et a également coécrit “Perl Hacks” avec Damian Conway. Son talk parlait de programmation orientée objet en Perl, mais nous pourrions appliquer ce qu’il a expliqué aux autres langages orientés objet disposant de rôles et d’héritage.

L’héritage est un principe propre au paradigme de programmation dit “Orienté Objet”, il désigne le processus par lequel une classe va obtenir d’une autre classe tous ses attributs et ses méthodes. On dit donc qu’elle hérite de cette classe. Deux sortes d’héritages existent :  simple et multiple.  L’héritage simple désigne le procédé par lequel une classe va hériter d’une unique autre classe. A contrario, l’héritage multiple désigne l’héritage de plusieurs classes par une classe fille. Cette dernière aura donc toutes les propriétés (méthodes et attributs) de ces classes.

Qu’est-ce qu’un rôle ?

Un rôle englobe une partie du comportement ou un état qui peut être partagée entre les classes. C’est quelque chose que les classes vont faire. Il est important de comprendre que les rôles ne sont pas des classes. Vous ne pouvez pas hériter d’un rôle, et un rôle peut pas être instancié. On dit parfois que les rôles sont consommés, soit par des classes ou d’autres rôles. Au lieu de cela, un rôle est composé dans une classe. En termes pratiques, cela signifie que toutes les méthodes, les modificateurs de méthode et les attributs définis dans un rôle sont ajoutés directement (on dit parfois “aplati en”) la classe qui consomme le rôle. Ces attributs et méthodes apparaissent alors comme si elles étaient définies dans la classe elle-même. Une sous-classe de la classe héritera de consommer toutes ces méthodes et attributs.

Alors, qui gagne ?

Hé bien, Curtis a souligné le fait que lorsque l’on code une grosse application, on multiplie le nombre de classes. S’en suit alors une foule d’héritage qui ne fait que rendre le code plus compliqué pour la prochaine personne qui le lira, car il devra remonter tout l’arbre des héritages pour comprendre l’ensemble des codes. Alors que si la même grosse application avait été créée sur la base de quelques rôles que les classes auraient appliqué par la suite, le développeur suivant n’aura qu’à lire l’implémentation de ces rôles avant de lire les classes, et ainsi comprendre le code plus rapidement, donc un gain de temps est accompli.

En conclusion, nous pourrions dire que les rôles sont plus modernes que l’héritage, multiple ou non. Mais cela ne dépend pas que de code, mais aussi des techniques de développement. Si une grosse structure d’héritage est conçue élégamment et intelligemment, alors elle sera aussi simple à lire que si des rôles avaient été appliqué. Ce n’est donc qu’une histoire de pratique de programmation que l’on applique bien ou non. Mais si on veut se facilité la vie quand on débute, alors les rôles permettent de créer une base de code et également de perdre moins de temps à concevoir une structure d’héritage complexe.

Par Sandro

Posted on Blog de l\'équipe du 08000linux by nshur on 07 March 2013 à 10:28

Package management and creation in Gentoo Linux

Intervenant :  Donnie Berkholz

Lors de cette conférence Donnie Berkholz a présenté rapidement les principales caractéristiques du système de paquet utilisé par Gentoo.

Gentoo est une distribution dit source, c’est à dire que chaque paquet installé est préalablement compilé sur la machine (les paquets ne sont pas distribués sous format binaire). Elle descend des distributions Stampede Linux et FreeBSD.  Elle est connue pour ça rapidité (Gentoo étant aussi une espèce de manchot censé être la plus rapide) mais ce n’est en fait qu’un effet de bord, le vrai fer de lance de Gentoo étant la flexibilité (la plupart des options de compilations et d’installation sont configurables).

Le système de gestion paquet utilisé par défaut (portage) ne dispose pas d’interface graphique, les développeurs se sont focalisés sur la CLI.

Les paquets sont distribués sous forme de fichier texte appelé ebuild.  La syntax ressemble beaucoup à du bash ce qui les rend facile à écrire et à lire.

Plusieurs fonctions standard doivent ou peuvent être (re)définit dans un ebuild :

* pkg_pretend : est lancé avant l’installation des dépendances de compilations

* pkg_nofetch : fonction spécial appelé uniquement lorsque la variable RESTRICT contient fetch

* pkg_setup : configuration de l’environnement de configuration/compilation et vérifications

* src_unpack : extraction des sources du paquets

* src_prepare : patch des sources

* src_compile : processus de configuration

* src_test : test avant installation (unit test)

* src_install : installation du paquet dans le répertoire temporaire ${D}

* pkg_preinst : avant l’installation du paquet sur le système (e.g. création d’utilisateurs, mise a jour de fichier de configuration…)

* pkg_postinst : après l’installation du paquet sur le système (e.g. affichage de messages d’informations)

* pkg_prerm : avant la désinstallation du paquet (e.g. suppression de fichier temporaires)

* pkg_postrm : après la désinstallation du paquet (e.g. mise à jour de la base de données mime)

* pkg_config : configuration susceptible d’être effectuée après l’installation du paquet (e.g. création des base mysql standard)

* pkg_info : cette fonction est appelée lorsque le système demande des informations sur le paquet, elle n’est pas utilisée lors de la (dés)installation.

La rédaction d’ebuild est encore simplifiée avec l’utilisation d’eclasses. Les eclasses sont des bibliothèque de fonction pouvant être chargé dans les ebuild. Par exemple l’eclass user permet de créer facilement des utilisateurs ou des groups via les fonctions enewuser et enewgroup.

Il est possible d’installer plusieurs versions d’un même logiciel via la variable SLOT.

La variable EAPI définit la version de l’API utilisé. Il y a généralement une nouvelle version tous les cinq ans. En septembre 2012 est sorti la version 5. Chaque nouvelle API ajout de nouvelles fonctionnalités (ou en supprime certaines jugés dangereuses). Par exemple dans la version 5 la fonction src_test lance par défaut les testes en parallèles.

Par Maxime

Posted on Blog de l\'équipe du 08000linux by nshur on 07 March 2013 à 10:13

Eudev

Intervenants :  Francisco Blas Izquirdo Riera, Matthew Thode et  Luca Barbato

Lors de cette conférence les développeurs de eudev ont expliqué les raisons qui les ont poussés à forker udev ; comment ils se sont organisés ; où on est le projet à l’heure actuel et quelles sont les priorités à venir.

La conférence a commencé par l’offre d’une boite de chocolat aux développeurs de systemd (et donc de udev) par Francisco Blas Izquirdo Riera. Francisco voulait souligner le fait que ce fork n’était pas du à une mésentente avec les développeurs de systemd : « It’s not a hate based fork».

Dans la première partie de la présentation les auteurs ont voulu écarter plusieurs idées reçues qui commençaient à circuler autour de eudev :

* Gentoo ne forcera pas ces utilisateurs à utiliser eudev plutôt que udev (le fork eudev a été initié et est maintenu principalement par des développeurs Gentoo)

* le code d’eudev est relut avant d’être comité dans la branche principale; chaque modification suit un processus de

vérification et de relecture

* le code d’eudev est testé

* eudev n’est pas un projet spécifique à Gentoo, toute autre distribution souhaitant s’investir dans le projet est la bienvenue

* tous les développeurs sont les bienvenus

Les principales idées directrices du projet sont :

* de maintenir le code simple et propre,

* d’utiliser les standards tant que possible,

* de détacher au maximum le logiciel du système (pour pouvoir l’utiliser sur un vieux noyau Linux par exemple)

Le but du projet est surtout de détacher complètement eudev du noyau Linux ou des bibliothèque GNU (contrairement à ce que fait actuellement systemd) et de maintenir le support des anciennes fonctionnalités de udev.

Les auteurs ont tenus à souligner qu’ils sont tous assez inexpérimentés dans les domaines dans lesquels eudev évolue. Ils n’ont pas eu la prétention d’annoncer savoir exactement comment ils allaient implémenter certaines fonctionnalités prévues (comme le support de partition /usr séparé par exemple).

La conférence s’est vite transformée en argumentation entre les auteurs d’eudev et les développeurs de systemd (qui ont plusieurs fois été priés de (re)prendre un chocolat…). Elle n’a pas vraiment pu suivre le schéma prévu mais pour ma part je pense qu’aucune des deux parties n’avait tort.

udev/systemd utilise au maximum des fonctionnalités du noyau Linux pour optimiser sont processus ou ajouter de nouvelles fonctionnalités, mais cela se fait au détriment du support de noyau trop vieux ou d’ancienne fonctionnalité. Les modifications à faire dans le code udev pour maintenir sa rétrocompatibilité étant trop grandes, le fork est une solution tout à fait normal.

Posted on Blog de l\'équipe du 08000linux by nshur on 06 March 2013 à 16:42

MediaWiki/Wikipedia :

MediaWiki est un logiciel libre orienté serveur, disponible sous Licence publique générale GNU (GNU General Public License – GPL). Il est conçu pour fonctionner dans une ferme composée d’un bon nombre de serveurs appartenant à un site web qui peut avoir plusieurs millions de clics par jour. MediaWiki est un logiciel extrêmement puissant, adaptable à souhait et permettant une implémentation de wiki aux fonctionnalités riches. Il utilise PHP pour interpréter et afficher les données contenues dans une base de données de type MySQL/PostgreSQL.

Wikipedia doit gérer de grosses infrastructures pour son service en ligne d’encyclopédie. Le nombre de visite par jours est de plusieurs millions.

Cette encyclopédie repose sur l’outil MediaWiki développé en PHP. MediaWiki est un outil fiable et stable, même avec des milliers de personnes connectés. Pour arriver à de telles performances, il a fallut adapter les techniques de QA (Quality Assurance) au fil du temps pour assurer l’excellente qualité du produit.

MediaWiki a su s’adapter avec le temps et utilise aujourd’hui des techniques de DevOps pour gérer les mises à jour du produit et c’est ce que nous allons expliquer ici.

Tout d’abord, pour la gestion de version. MediaWiki a utilisé depuis des années Subversion. C’est un très bon outil, toujours très utilisé, mais il ne dispose pas des avantages d’un VCS décentralisé. Et MediaWiki en avait vraiment besoin au vu du très grand nombre de contributions pour les extensions par exemple (sans parler des avantages natifs d’un VCS décentralisé). L’outil principale de versionning est donc passé à Git (créé par Linus Torvald). Une intégration plus importante a été faite entre Git et MediaWiki dans la version 1.20.

Ensuite, il a fallu changer les modes de validation des changements et passer à un outil plus adapté, tout en étant capable de se connecter à un VCS. C’est pourquoi Gerrit a été choisit. Cela permet par exemple lors d’une proposition de changement (bug, amélioration…) d’être validée par plusieurs personnes habilités avant d’être enfin intégrée dans le code.

L’interface graphique est testée à chaque ajout dans le code principale. Pour tester l’interface graphique, MediaWiki utilisait Selenium, qui est aujourd’hui l’un des plus connu pour ce type de tests. C’est très efficace, mais pas forcément très performant du fait qu’il faut ouvrir un navigateur, lancer les tests unitaires et le fermer le navigateur. Pour gagner du temps, le choix d’utiliser PhantomJS a été fait. C’est un navigateur web invisible utilisant le moteur Gecko (de Mozilla). Du fait qu’il ne s’affiche pas, le gain de temps pour les tests est énorme.

Puis, dans les outils en plein essor, il y a Cucumber. C’est un outil permettant d’exécuter des scripts pour des automatisations dans un langage très proche du langage humain. Il est donc très simple d’écrire une succession d’étapes à faire, en Anglais, Français ou autre langue supportée par Cucumber. Ce qui permet à n’importe qui d’écrire ce type de tests et en fait un langage clair pour n’importe qui.

Et enfin, Jenkins qui permet d’exécuter une suite de tests unitaires. Cet outil est très utilisé dans beaucoup de situation et permet de donner le résultat d’une suite de tests unitaires.

Donc toute cette suite permet à Jenkins de lancer des suites de tests via Cucumber, qui vont faire appel à PhantomJS, lorsqu’un nouvel ajout dans Git sera effectué (après validation dans Gerrit biensur). L’un des gros avantages de cette solution par rapport à une autre est que Jenkins donnera non pas une staktrace classique en cas de problème, mais la suite de tests Cucumber extrêmement lisible. Ce qui facilitera considérablement la reproduction d’un bug.

Pour conclure, la solution de MediaWIki / Wikipedia est très mature, mais nécessite encore de beaucoup de tests unitaires pour que celle ci soit à la hauteur de leurs attentes. Mais pour les utilisateurs, c’est aujourd’hui déjà très bien.

Par Pierre Mavro

Posted on Blog de l\'équipe du 08000linux by nshur on 06 March 2013 à 16:01

Why you no host ?

Yunohost (prononcé Why you no host) est une distribution automatisant l’installation d’un serveur personnel dans l’optique de s’auto-héberger.

Dans cette présentation Alexis Gavoty a exposé la philosophie et l’idée autour du projet Yunohost et notamment les principales raisons qui l’ont amenées à développer cette distribution.

Il a d’abord commencé par décrire les différentes solutions existantes qu’il a pu utilisées :

- Le cloud permettant de ne stocker aucunes données localement et de synchroniser l’ensemble des appareils sans aucunes manipulations. Cependant, les principales défauts résidaient dans la limitation de l’espace de stockage ainsi que sur la sécurité des données personnelles.

- L’utilisation de solutions d’auto hébergement (self-hosting) disponibles mais dont l’installation de différents modules et applications s’avère plutôt compliqué pour un utilisateur lambda.

D’où l’idée d’une distribution regroupant les avantages des outils existants et plus encore :

- une solution stable et facile d’installation

- des protocoles sécurisés

- une administration avancée pour la gestion de mail

- une interface “user-friendly”

- un moyen simple et efficace pour installer des applications et services

Yunohost est donc une distribution clé en main intégrant l’ensemble de ces services. La v1 est déjà disponible et la V2 est prévue dans quelques semaines.

La présentation (tweeter comme la conférence la plus cool du Fosdem et à juste titre par un participant) s’est terminée par une démo de la version 1 et ces différentes possibilités.

Par Sourisack PHANIVONG

Posted on Blog de l\'équipe du 08000linux by nshur on 06 March 2013 à 15:55

LemonLDAP::NG 1.2.3 : Soleil !

Le 8 février dernier est sortie la version 1.2.3 de LemonLDAP::NG. Prévue à l'origine pour n'être qu'une version corrective de la branche 1.2, de nombreux bugs et améliorations ont été inclus dans cette version, ce qui explique sa sortie tardive (6 mois après la version 1.2.2). Panorama de ces changements.

logo_lemonldap-ng.png

Les signatures SAML au cœur du cyclone

En décembre, une alerte de sécurité a été diffusée concernant le traitement des signatures SAML dans LemonLDAP::NG (CVE-2012-6426), problème corrigé dès le 18 décembre sur le SVN du projet.

Concrètement, la vérification des signatures était désactivée par défaut lors de la réception des messages et la fonction chargée de vérifier ensuite la signature n'était pas effective (mauvais appel de fonction de la librairie Lasso).

Si vous travaillez donc avec le protocole SAML dans une version inférieur à 1.2.3, la mise à jour est chaleureusement conseillée pour revenir à une situation au beau fixe.

Cette version apporte de plus certaines améliorations sur SAML, comme le support des NameID transient, un meilleur log des échanges SAML et la compatibilité de l'IDP SAML avec une authentification CAS.

Soleil Orage Averse Pluie

Le support de SOAP a été amélioré :

Le ciel est tombé sur l'en-tête X-Forwarded-For

Jusqu'ici, la gestion de l'en-tête X-Forwarded-For n'était pas évident. Cette en-tête est gérée par les proxys et permet de connaître l'adresse IP d'origine d'une requête HTTP, donc l'IP du client.

Avant la version 1.2.1, l'activation de la gestion de cette en-tête inscrivait l'IP dans une variable spécifique de la session ($xForwardedForIpAddr), laissant l'IP standard dans la variable $ipAddr. Hors, même s'il est possible d'utiliser la variable $xForwardedForIpAddr dans des règles, dans d'autres endroits du code, $ipAddr est forcément utilisé (par exemple dans les logs, ou dans les modèles HTML des mails envoyés).

Cette gestion a été revue, désormais si l'option X-Forwarded-For est activée dans LemonLDAP::NG, alors la variable de session $ipAddr prendra cette valeur, ce qui s'appliquera donc à toutes les fonctions utilisant cette variable.

De plus, depuis la version 1.2.3, pour éviter que la valeur de cette en-tête soit modifiée manuellement par les utilisateurs, une règle de sécurité est apparue pour n'accepter cette en-tête que depuis certaines IP (en l'occurrence les adresses IP des proxys s'ils existent).

Accalmie sur les rejeux de formulaire

Les rejeux de formulaire sont une fonctionnalité assez marginale, permettant de transformer des requêtes GET en POST, utilisant comme données POST des informations de la session de l'utilisateur. En utilisant la fonction de sauvegarde du mot de passe en session, cela permet donc de faire du SSO sur des applications mal écrites propriétaires.

Plusieurs bugs ont été corrigés pour rendre cette fonction plus opérationnelle :

Toutefois, cette fonctionnalité reste assez peu avancée, et il est préférable d'utiliser les modes standards de SSO (en-tête HTTP, CAS, SAML, ...).

Séance d'UV pour le portail

Le portail est la partie visible de LemonLDAP::NG, là où les utilisateurs s'authentifient, changent leur mot de passe et voient les applications auxquelles ils sont accès.

Comme le physique c'est important, la version 1.2.3 apporte deux nouveautés dans ce domaine :

D'hiver

D'autres améliorations diverses ont été faites :

Après la pluie

À présent que vous êtes convaincus qu'il faut absolument installer cette nouvelle version, courrez la télécharger, ou mettez à jour via vos distributions préférées !

L'équipe du projet LemonLDAP::NG travaille déjà sur la version 1.3. N'hésitez pas à venir nous prêter main forte !

Posted on Clément Oudot by KPTN on 19 February 2013 à 16:19

Astuce OpenLDAP : Des groupes dynamiques ? Jamais sans tri des valeurs !

Dynamique de groupe

Les groupes dynamiques en LDAP sont une fonctionnalité très intéressante, permettant de lister les membres d'un groupe par rapport à un filtre LDAP, ce qui évite de maintenir la liste des membres de manière statique.

Par exemple :

dn: cn=test,ou=groups,dc=example,dc=com
objectClass: groupOfURLs
objectClass: top
cn: test
memberURL: ldap:///ou=users,dc=example,dc=com??one?(description=*test*)

Ce groupe contiendra toutes les entrées de la branche ou=users,dc=example,dc=com possédant test dans l'attribut description.

Au vert lait

Dans OpenLDAP, les groupes dynamiques ne sont pas activés par défaut, il faut pour les utiliser charger l'overlay dynlist. Et pour utiliser la classe d'objet groupOfURLs, il faut également charger un schéma.

Cela peut-être fait simplement dans cn=config avec le LDIF suivant :

dn: cn=dyngroup,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: dyngroup
olcObjectIdentifier: {0}NetscapeRoot 2.16.840.1.113730
olcObjectIdentifier: {1}NetscapeLDAP NetscapeRoot:3
olcObjectIdentifier: {2}NetscapeLDAPattributeType NetscapeLDAP:1
olcObjectIdentifier: {3}NetscapeLDAPobjectClass NetscapeLDAP:2
olcObjectIdentifier: {4}OpenLDAPExp11 1.3.6.1.4.1.4203.666.11
olcObjectIdentifier: {5}DynGroupBase OpenLDAPExp11:8
olcObjectIdentifier: {6}DynGroupAttr DynGroupBase:1
olcObjectIdentifier: {7}DynGroupOC DynGroupBase:2
olcAttributeTypes: {0}( NetscapeLDAPattributeType:198 NAME 'memberURL' DESC 'I
 dentifies an URL associated with each member of a group. Any type of labeled 
 URL can be used.' SUP labeledURI )
olcAttributeTypes: {1}( DynGroupAttr:1 NAME 'dgIdentity' DESC 'Identity to use
  when processing the memberURL' SUP distinguishedName SINGLE-VALUE )
olcAttributeTypes: {2}( DynGroupAttr:2 NAME 'dgAuthz' DESC 'Optional authoriza
 tion rules that determine who is allowed to assume the dgIdentity' EQUALITY a
 uthzMatch SYNTAX 1.3.6.1.4.1.4203.666.2.7 X-ORDERED 'VALUES' )
olcObjectClasses: {0}( NetscapeLDAPobjectClass:33 NAME 'groupOfURLs' SUP top S
 TRUCTURAL MUST cn MAY ( memberURL $ businessCategory $ description $ o $ ou $
  owner $ seeAlso ) )
olcObjectClasses: {1}( DynGroupOC:1 NAME 'dgIdentityAux' SUP top AUXILIARY MAY
  ( dgIdentity $ dgAuthz ) )

dn: olcOverlay=dynlist,olcDatabase={1}bdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcDynamicList
olcOverlay: dynlist
olcDlAttrSet: {0}groupOfURLs memberURL uniqueMember

Comme vous êtes des lecteurs avisés, vous aurez noté qu'on peut utiliser d'autres classes d'objet que groupOfURLs, puisque cela dépend de la configuration de l'overlay dynlist (attribut olcDlAttrSet). Pour plus de détails, voir la page de manuel de l'overlay dynlist (man slapo-dynlist).

Tri sélectif

Cet overlay fonctionne bien sur des petits volumes mais les performances s'écroulent dès le le groupe dynamique doit contenir plusieurs milliers d'utilisateurs.

Le secret réside dans l'option sortvals (olcSortVals dans cn=config) qui active le tri des valeurs sur certains attributs. D'après le manuel :

       olcSortVals <attr> [...]
              Specify  a  list  of  multi-valued attributes whose values will always be maintained in sorted order. Using
              this option will allow Modify, Compare, and filter evaluations on these attributes  to  be  performed  more
              efficiently.  The  resulting  sort  order  depends on the attributes' syntax and matching rules and may not
              correspond to lexical order or any other recognizable order.  This setting is only allowed in the  frontend
              entry.

Dans notre cas, nous allons trier les valeurs de l'attribut uniqueMember :

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcSortVals
olcSortVals: uniqueMember

Dès l'application de ce paramètre, l'affichage de groupes dynamiques de plusieurs milliers d'utilisateurs ne prendra que quelques secondes !

Posted on Clément Oudot by KPTN on 07 January 2013 à 13:09

LDAP Tool Box - Self Service Password 0.8 released!

Self Service Password version 0.8

Presentation

Self Service Password is a PHP application that allows users to change their password in an LDAP directory (including Active Directory). If password is lost, it can be reset trough questions, by a mail challenge or by a SMS challenge.

More information and screenshots:
http://ltb-project.org/wiki/documentation/self-service-password

Download page:
http://ltb-project.org/wiki/download#self_service_password

Changelog

Summary

  • New languages: Russian and Italian
  • SMS challenge
  • Use hash() instead of mhash() if possible
  • Update Samba data only for Samba accounts
  • Protection against LDAP injection

Details

  • Bug #399: Mistakes in the English translation
  • Bug #479: Self-Service-Password in Sapnish
  • Bug #503: Typo in german language file "phpmhash"
  • Bug #515: reCaptcha does not use HTTPS
  • Feature #354: Send random generated password by SMS
  • Feature #359: Use hash() function instead of mhash() when possible
  • Feature #379: I'd like to add SSP to FreeBSD ports
  • Feature #452: Change samba password only if there is an objectClass=sambaSamAccount in the users profile
  • Feature #463: Set default action from configuration file
  • Feature #491: Group local password policy configs in an array to pass around
  • Feature #492: Add config to choose where show password policy
  • Feature #493: Brazilian portuguese translation/improvements
  • Feature #499: Add extra messages
  • Feature #504: Use CSS3 variable name
  • Feature #516: Russian translation
  • Feature #522: Italian translation
  • Feature #537: Detect all missing translation
  • Feature #538: Check login input string to prevent LDAP injection

Thanks

Thanks to contributors:

  • Luis Armando Roca Fumero
  • Gene Wood
  • Philipp Gassmann
  • Olli Janatuinen
  • Krzysztof Stryjek
  • Otrebor Otrebor
  • Luiz Fernando Severnini
  • Roy Kaldung
  • Gianluca Mascolo
  • Joe Campbell

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 20 October 2012 à 21:35

LDAP Tool Box - OpenLDAP 2.4.33 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.33 RPMs are available, including OpenLDAP init script version 1.8.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.8)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

Download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 12 October 2012 à 10:40

LDAP Tool Box - Nagios scripts 0.4 released

Nagios scripts 0.4 have released. The changes are:

  • #325: Better CSN parsing for syncrepl status
  • #372: Configure lesser or greater when testing search result

Download: http://ltb-project.org/wiki/download#monitoring

Thansk to:
  • André Schild
  • Romain Vrignaud

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 12 October 2012 à 09:24

LDAP Synchronization Connector - LDAP Synchronization Connector 2.0.1 released!

LSC 2.0.1 was released today. The main changes are:

  • Fix bug in clean phase with DB destination service
  • LDAPS support with async LDAP source service
  • Fix bug with binary values
  • Improve sequence handling

The full changelog can be seen here: http://tools.lsc-project.org/versions/show/69

Download: http://lsc-project.org/wiki/download

Thanks to all people that made this release possible:
  • Raphaël OUAZANA
  • Robin GARNER
  • Stéphane BOND
  • David COUTADEUR
  • Alex A
  • Sébastien BAHLOUL
  • Clément OUDOT

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 11 October 2012 à 14:03

LDAP Tool Box - OpenLDAP init script 1.8 released

This version add the '-q' option in slapadd, in order to improve the data restore command. It also display CPU and MEM usage in the status.

This script will be shipped with OpenLDAP 2.4.33 RPMs, available soon.

You can download the script here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 10 October 2012 à 15:32

Sortie de LemonLDAP::NG 1.2.2

Une nouvelle version mineure de LemonLDAP::NG est sortie la semaine dernière, c'est l'occasion pour présenter les évolutions qui on eu lieu depuis la sortie de la version majeure 1.2 en juin dernier.

Une première version mineure (1.2.1) a été publiée en juillet, avec les changements principaux suivants :

  • Correction d'un bug critique empêchant les groupes LDAP d'être enregistrés en session.
  • Correction de l'inclusion des modèles HTML pour l'envoi des mails.
  • Modification de la gestion de l'IP "X-Forwarded-For" : auparavant, la valeur de l'en-tête était stockée dans une clé de session séparée, désormais, si l'option "Utiliser X-Forwarded-For" est activée, la valeur du champ IP de la session est remplacée par la valeur de l'en-tête. Cela permet une meilleure prise en compte de cette option lors de la navigation dans l'explorateur de sessions, et pour l'affichage de l'historique de connexion.
  • Ajout compatibilité CSS3 dans les modèles graphiques.

La seconde version mineure (1.2.2) sortie il y a quelques jours apporte les changements suivants :

  • Meilleure gestion du cross domain avec les cookies sécurisés
  • Plusieurs correctifs sur le backend Multi, permettant son utilisation par SOAP, et le chainage de plusieurs annuaires LDAP utilisant des paramètres de connexion différents
  • Nouveau web service pour supprimer des notifications

La liste complète des changements est accessible sur la forge du projet :

Il est donc vivement recommandé de mettre à jour votre version de LemonLDAP::NG si ce n'est pas déjà fait.

Posted on Clément Oudot by KPTN on 25 September 2012 à 11:36

LDAP Tool Box - OpenLDAP 2.4.32 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.32 RPMs are available, including OpenLDAP init script version 1.7.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • META backend
  • SLAPI support
  • CRYPT password
  • LTB-project OpenLDAP init script (v1.7)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

Download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 24 August 2012 à 08:58

LDAP Synchronization Connector - LDAP Synchronization Connector 2.0 release

The LSC team is proud to announce the 2.0 release of LDAP Synchronization Connector. We have worked for a long time on this major release, and after two release candidates, the 2.0 stable version is here.

The main visible evolution is the use of XML configuration file that replace the old properties file. It will cost you some time to adjust your existing configuration, but you will then benefit of the XML syntax, with references to connection objects and a cleaner syntax for javascript code, enclosed in CDATA.

Some other new features:
  • Support of real time synchronization from LDAP servers, trough persistent searches (SyncRepl for OpenLDAP)
  • Support of databases as destinations
  • Hash methods for NT/LM passwords
  • HSQLDB utility to ease CSV files synchronization
  • Sequence handing
  • Date methods for Active Directory
  • Compatibility with Java 7
  • Nagios scripts
  • Plugin API
  • Groovy support for scripting (javascript is still the default scripting language)

You can see the full roadmap here; http://tools.lsc-project.org/versions/show/60. If you upgrade from 1.2 version, you will also benefit from all the 2.0rc2 resolved issues: http://tools.lsc-project.org/versions/show/66.

You can download it here: http://lsc-project.org/wiki/download.

The quickstart tutorial will show you how use this tool: http://lsc-project.org/wiki/documentation/2.0/sample. You can then read all the documentation to learn how adapt the configuration to your specific needs: http://lsc-project.org/wiki/documentation/2.0/start

We hope you will enjoy this new version!

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 21 July 2012 à 11:01

OPush is on a diet

With OBM 2.4.1-beta2 today’s release, the memory footprint of OPush during email synchronization, has been amazingly reduced. Opush is the OBM “MS Exchange ActiveSync” implementation. For some times now, we know that OPush is very bad at synchronizing emails. Until 2.4.1-alpha10 version of OPush, when a smartphone asked for new emails, the server loaded all new emails into memory, and …Read more »

Posted on Blog OBM20 July 2012 à 21:00

OBM version 2.4.1-Beta is available

The first beta version of OBM has been released and is available in our next repository (For Debian and RHEL/CentOS). The major improvements are the following: many improvements for recurrent events using Thunderbird connector, web User Interface or smartphones week number has been added to week and month view (see previous post) several issues with emails wrongly synchronized on many …Read more »

Posted on Blog OBM20 July 2012 à 21:00

Sprint in progress…

Hi OBM community, The current sprint will last from 10/07/2012 to 23/07/2012 and the matched sprint review will take place the 24/07/2012. There is two teams so there is two sprint, one located in Paris, the other one in Lyon. The release of a beta version, the compatibility with CentOS6 and the possibility for users to synchronize their IMAP folder …Read more »

Posted on Blog OBM19 July 2012 à 21:00

OBM summer barcamp 2

Our OBM Barcamp was a great moment, all folks actively involved in OBM gathered in Lyon for a big brainstorming and one goal: improve our communication with the external world and especially by replacing our old ugly web site. We are still working on it in order to have many new functionnalities adding to the new design: an active link …Read more »

Posted on Blog OBM10 July 2012 à 21:00

OBM Summer Barcamp

From Tuesday 03 July 2012 to Thursday 05 July 2012, all the OBM Core Team is in Lyon for the summer barcamp with one goal: improve the documentation and especially obm.org. More details, photos and results of our work will be posted later. Stay tuned….     Tweet

Posted on Blog OBM02 July 2012 à 21:00

The Core Team is preparing version 2.4.1 Beta1

Our first 2.4.1 Beta version is about to be published. It is now in its final phase, which means that it is being tested by our QA Team. The major improvements that you will gain are the following: many fixed issues in Thunderbird: notifications, delegation of calendars, acceptation buttons Timezone is now correctly processed, specifically with allday events on different …Read more »

Posted on Blog OBM02 July 2012 à 21:00

OpenLDAP Manager - LinID OpenLDAP Manager 0.7 released

We are proud to announce a new release of LinID OpenLDAP Manager.

LinID OM is a graphical web console dedicated to OpenLDAP configuration (using cn=config backend). This allows administrator to edit OpenLDAP configuration with a simple web browser, without any other access to the server (no OpenLDAP restart needed on configuration update).

LinID OM is released under AGPLv3.

Main changes are:
  • Possibility to use LDAPS
  • Option to force HTTPS links in Tapestry
  • Better display and edition of long fields like ACLs or Syncrepl directives

The full roadmap can be seen here: http://www.linid.org/versions/show/28

Follow documentation to know how install and run it: http://www.linid.org/projects/linid-om/wiki

Thanks to all people who work on this release:
  • Raphaël Ouazana
  • Sébastien Levesque
  • Chris Hiestand
  • Clément Oudot

Posted on Infos LinID by Clément OUDOT (coudot@linagora.com) on 28 June 2012 à 08:37

Linagora days

As you may know, apart from Solutions Linux in Paris, Linagora days takes place in the agency in Puteaux. You may find all informations on the website of Linagora here (sorry, it’s in French). If you want to take part to a speed recruitment, or just say hello to people of the OBM Core team, don’t hesitate. Tweet

Posted on Blog OBM20 June 2012 à 21:00

Sortie de LemonLDAP::NG 1.2

Cette semaine est sortie une nouvelle version majeure de LemonLDAP::NG : la version 1.2.0. Annoncée et attendue depuis plusieurs mois (voir la présentation donnée au FOSDEM), elle est enfin disponible et propose de nombreuses améliorations.

logo_lemonldap-ng.png

LemonLDAP::NG est un logiciel de WebSSO, contrôle d'accès et fédération des identités. Ses principales fonctionnalités sont :

  • Portail d'application, affichant dynamiquement les applications autorisées
  • Réinitialisation du mot de passe par un challenge par mail
  • Interface d'administration Web
  • Explorateur de sessions
  • Notifications
  • Support de nombreux moyens d'authentifications (LDAP, SQL, certificat SSL, Kerberos, etc.)
  • Support des protocoles CAS, OpenID et SAML
  • Propagation de l'identité par en-têtes HTTP, variables d'environnement ou rejeu de formulaires
  • Identification des URLs à protéger par expressions régulières

On met le paquet

Tout d'abord avant d'entrer dans le détail des nouveautés, on peut noter que LemonLDAP::NG est désormais empaqueté pour les distributions suivantes :

  • Debian Squeeze
  • RHEL/CentOS 5
  • RHEL/CentOS 6
  • Mageia Caudron

Rien de plus simple donc pour installer ou mettre à jour LemonLDAP::NG que d'utiliser les outils standards des distributions comme apt-get, yum ou urpmi.

Une fonction historique

L'une des évolutions majeures de la 1.2 est l'historique des connexions. Cet historique permet de stocker les dates des dernières authentifications réussies et échouées. La raison de l'échec est également conservée.

Ces informations sont d'abord visibles par les administrateurs dans l'explorateur de sessions, car elles sont chargées lors de l'ouverture de la session SSO depuis la session persistante de l'utilisateur.

Il est ensuite possible de configurer LemonLDAP::NG pour présenter ces informations à l'utilisateur :

  • Par un onglet dédié dans le portail des applications
  • Par une case à cocher affichant ces informations avant redirection vers l'application protégée

Authentication_portal_1340022292201.png

Le nombre d'authentifications conservées dans l'historique est lui aussi paramétrable, pour les authentifications réussies comme pour les authentifications échouées.

Docteur qui ?

La question qui revient le plus souvent de la part des personnes installant pour la première fois LemonLDAP::NG est : "Où sont les utilisateurs ?"

doctor_who_logo.jpg

LemonLDAP::NG n'est pas un annuaire LDAP ou un référentiel autre permettant de créer, modifier ou supprimer des comptes utilisateurs. Il s'appuie au contraire sur des référentiels existants dans l'entreprise (LDAP, base de données) ou externes via des protocoles de fédération d'identités (OpenID, SAML, ...)

Seulement il assez facile de comprendre la frustration ressentie lorsque l'on installe LemonLDAP::NG et qu'il faille créer soi-même un référentiel d'identités et le configurer avant de pouvoir tester le WebSSO.

Relaxez-vous, la nouvelle version de LemonLDAP::NG arrive avec un module "Démonstration" configuré par défaut, qui fournit des comptes utilisateurs factices permettant d'ouvrir une session et d'accéder aux applications de test. On peut ainsi installer et démarrer LemonLDAP::NG en quelques minutes.

NUP_102225_0127.jpg

Les comptes de test sont issus de la série Doctor Who :

  • Rose Tyler: rtyler/rtyler
  • Mickey Smith : msmith/msmith
  • Doctor Who: dwho/dwho

À noter que l'utilisateur "dwho" est le seul à avoir accès à l'interface d'administration et l'explorateur de sessions dans la configuration initiale.

Ne quittez pas, un agent va vous répondre

Des applications en maintenance, ça arrive même aux meilleurs. Si certaines organisations arrivent par des architectures en haute-disponibilité à éviter toute coupure de service lors de la mise à jour d'une application, ce n'est pas le cas pour tout le monde, et surtout parfois impossible pour certaines applications (schéma de base de données à modifier par exemple).

Dans ce cas, au lieu que les utilisateurs accédant à l'application se retrouvent avec des messages d'erreurs exotiques (et même s'ils ont été prévus 10 fois par mail qu'une opération de maintenance allait avoir lieu !), il est préférable de les rediriger vers une page dédiée expliquant que l'application est en maintenance.

Cette opération peut se faire en modifiant les configurations Apache, sur un ou plusieurs serveurs en fonction du déploiement de l'application, mais c'est souvent fastidieux et source d'erreurs.

La nouvelle version de LemonLDAP::NG propose désormais un mode maintenance qui permet de désactiver temporairement l'accès à une application. Il suffit d'activer cette option depuis l'interface d'administration, et automatiquement les utilisateurs sont redirigés vers une page d'erreur spécifique lorsqu'ils tentent de joindre l'application. La configuration de LemonLDAP::NG étant propagée à tous les nœuds des applications, ce mode s'applique directement sur ces nœuds, sans intervention nécessaire sur la configuration Apache.

De la flotte au menu

Petite nouveauté également, la possibilité d'ajouter un menu flottant sur les applications protégées. Ce menu est un module chargé dans la configuration Apache qui ajoute des éléments au DOM de la page à la volée. Il est donc non-intrusif sur les applications.

LemonLDAP__NG_sample_protected_application_1340022329086.png

Ce module est pour l'instant très simple et ne propose que 2 liens : retour à la page du portail ou déconnexion. Il est par contre facile de se créer son propre module en copiant le module d'origine.

Ave Radius

L'authentification Radius vient s'ajouter aux nombreux autres moyens d'authentification proposés par LemonLDAP::NG.

Un des intérêts de Radius est d'être compatible avec Google Authenticator, qui propose une méthode de double authentification : mot de passe et OTP (One Time Password). L'OTP est envoyé sur le téléphone mobile et permet donc de s'assurer que l'utilisateur est celui qui possède le mot de passe et le téléphone mobile associé au compte.

La communauté de l'année

Cette nouvelle version est le fruit d'un travail communautaire important, avec de nombreux bugs et patchs rapportés par les utilisateurs avancés de la solution :

  • Dominique Fournier
  • Emmanuel Lesouef
  • Erwan Le Gall
  • Gaultier Hubert
  • Quentin Jaboeuf
  • Mathieu Parent
  • Romain Vrignaud
  • Sébastien Bahloul
  • ulkesh

L'équipe principale du projet s'est également beaucoup investie, en particulier François-Xavier Deltombe qui a rejoint le projet l'année dernière. Merci donc à lui et aux autres membres de l'équipe : Xavier Guimard et Thomas Chemineau.

Enfin, petit clin d'œil à Sandro Cazzaniga qui a rejoint Linagora pour la période estivale et qui a empaqueté LemonLDAP::NG pour Mageia.

Speed dating

Pour venir découvrir en direct cette nouvelle version, rendez-vous aux prochains salons du libre :

Pour les malchanceux qui ne pourront venir, le lot de consolation :

Posted on Clément Oudot by KPTN on 20 June 2012 à 10:02

The OBM Core Team

Hi all, for those who don’t know the OBM Core Team, here are a few introductions of the people who are making your favorite open source groupware. Marlène Aupart I’m the embedded tester in the Lyon scrum team. I verify the quality of obm and particularly around the PDA synchronisation. I like to search bugs and find steps to reproduce …Read more »

Posted on Blog OBM13 June 2012 à 21:00

Mémoriser la dernière authentification dans OpenLDAP

Big Brother is watching you

Bien, pour débuter cet article, la première question qui se pose est : pourquoi mémoriser la date de dernière authentification ?

Une des raisons pourrait être de tracer l'activité des utilisateurs, pour être certain qu'ils se connectent au système et qu'ils travaillent... Mais le vrai intérêt est plutôt inverse : cette date permet d'identifier les comptes qui sont obsolètes dans l'annuaire, par exemple qui n'ont pas été utilisés pour s'authentifier depuis plusieurs mois.

Pas si simple

On pourrait croire que cette information est simple à récupérer, surtout dans OpenLDAP, l'annuaire LDAP de référence.

Jusqu'à récemment, les seules solutions étaient d'analyser les logs systèmes (avec un niveau de log OpenLDAP à 256), ou de mettre en place l'overlay accesslog, qui stocke dans une base LDAP les opérations effectuées sur l'annuaire. Cette base devait alors être analysée pour retrouver la date de dernière authentification (opération BIND).

Les contributions, c'est bon

OpenLDAP est avant tout un logiciel libre avec une communauté active. Il existe dans le code source d'OpenLDAP un répertoire dédié aux contributions : ces modules ne sont pas maintenus par l'équipe principale du projet, mais assez matures pour être distribués avec le logiciel. Toutefois, cela signifie que si vous ne compilez pas explicitement ces modules, il ne seront pas disponibles pour votre installation OpenLDAP.

Parmi ces modules contribués, il y a l'overlay lastbind. Cet overlay a été écrit par Jonathan Clarke, ancien salarié de Linagora et l'un des fondateurs de la société Normation. Cet overlay permet de stocker dans l'attribut authTimestamp la date dernière authentification.

Assez parlé

Il est temps de passer aux travaux pratiques. Certains modules contribués sont désormais disponibles dans les RPMs fournis par le projet LDAP Tool Box. Le paquet en question s'appelle openldap-ltb-contrib-overlays et peut être téléchargé ici.

Une fois installé, on peu alors modifier la configuration d'OpenLDAP pour charger cet overlay :

# vi /usr/local/openldap/etc/openldap/slapd.conf

Tout d'abord, modifier le répertoire de chargement des modules, et charger le module :

modulepath      /usr/local/openldap/lib:/usr/local/openldap/libexec/openldap
moduleload      lastbind.so

On notera qu'on peut indiquer plusieurs répertoires pour le chargement des modules. Dans notre cas, le premier sert à charger le module password policy checker, et le second pour l'overlay lastbind.

Ensuite, il reste à instancier l'overlay au niveau de la base LDAP souhaitée :

overlay lastbind

Et c'est tout ! Pour les plus assidus, on pourra ajouter un paramètre de configuration, permettant de ne pas mettre à jour la date à chaque authentification, mais de limiter la précision à un certain nombre de secondes :

lastbind-precision 60

Bien entendu, l'overlay peut aussi être configuré par la branche cn=config.

Initialisation

Une fois l'overlay chargé et OpenLDAP redémarré, pour toute nouvelle authentification, une date sera stockée dans l'attribut authTimestamp, par exemple :

authtimestamp: 20120612073806Z

Seulement, il s'agit d'un attribut opérationnel, et il n'est donc pas possible de le modifier, ou de l'ajouter aux entrées qui n'en possèdent pas encore.

Enfin, rien n'est jamais impossible... OpenLDAP a implémenté le contrôle relax, qui permet d'effectuer des opérations d'administration sur les données, en particulier modifier des attributs opérationnels.

Par exemple, on peut créer le fichier LDIF suivant :

dn: uid=coudot,ou=users,dc=example,dc=com
changetype: modify
replace: authtimestamp
authtimestamp: 20120511144318Z

Et importer ce fichier dans l'annuaire :

$ ldapmodify -D cn=manager,dc=example,dc=com -W -e relax -f authtimestamp.ldif

Finalement, c'est simple, non ?

Posted on Clément Oudot by KPTN on 12 June 2012 à 10:05

Roundcube 0.8 and OBM

The new way of mail communication Today, webmail is an efficient part of communications, more useful with advanced functions implemented by software or plugin. It’s a real choice compared to traditional mail software. Roundcube is the leader in this domain. Updated frequently with a lot of new functionalities, it’s the natural choice for OBM webmail. In order to propose the best …Read more »

Posted on Blog OBM11 June 2012 à 21:00

Mozilla news

Hello all, the OBM core team is actively working on the thunderbird side of OBM. We are working on several aspects: First of all, in order to help us in this endeavour, the core team is pleased to announce that we now count among us Philipp Kewisch, the lead developer of the Lightning extension. Philipp is working with us to include …Read more »

Posted on Blog OBM04 June 2012 à 21:00

LDAP Tool Box - OpenLDAP 2.4.31 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.31 RPMs are available, including OpenLDAP init script version 1.6.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • new: META backend
  • SLAPI support
  • new: CRYPT password
  • LTB-project OpenLDAP init script (v1.6)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

Download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 27 April 2012 à 08:16

Utiliser Zend\Loader\Autoloader

Traduction de l'article "Using Zend\Loader\Autoloader" de Rob Allen, daté du 13 février 2012.

(NdT : un choix a été fait de ne pas traduire certains termes techniques, comme autoloader ou class map ; ceci dans l'objectif de faciliter la lisibilité de l'article)

L'autoloading est le processus PHP par lequel le système tente de charger une classe lorsqu'il la rencontre pour la première fois (via new ou class_exists) si elle n'a pas été déjà chargée via require ou include. L'autoload fonctionne en cherchant une méthode nommée __autoload ou en examinant chaque méthode enregistrée via spl_autoload_register.

Zend Framework 2 fournit un composant Zend\Loader\Autoloader pour l'autoloading de Zend Framework et de vos propres classes.

Qu'est-ce qui est fourni ?

L'autoloader de ZF2 fournit ce qui suit :

  • Autoloading via include_path compatible PSR-0
  • Autoloading via préfixes ou namespaces compatible PSR-0
  • Autoloading via class map, incluant un outil de génération de class map
  • Fabrique (NdT : Factory, un design pattern courant) d'autoloader pour pouvoir gérer plusieurs stratégies d'autoloading à la fois

Ces fonctionnalités sont fournies à travers deux classes : StandardAutoloader et ClassMapAutoloader.

Zend\Loader\StandardAutoloader

StandardAutoLoader implémente le chargement des classes en examinant leur nom et en cherchant un fichier sur le disque. Il peut mettre en oeuvre trois stratégies :

  • Chercher dans l'include_path
  • Charger depuis une liste de paires namespace / répertoire
  • Charger depuis une liste de paires préfixe vendeur (NdT vendor prefix) / répertoire

Ces stratégies peuvent être combinées pour une flexibilité maximale.

Exemple d'utilisation :

require_once ZF2_PATH . '/Loader/StandardAutoloader.php';

$autoLoader = new ZendLoaderStandardAutoloader(array(
'prefixes' => array(
'MyVendor' => __DIR__ . '/MyVendor',
),
'namespaces' => array(
'MyNamespace' => __DIR__ . '/MyNamespace',
),
'fallback_autoloader' => true,
));

// register our StandardAutoloader with the SPL autoloader
$autoLoader->register();

La recherche dans l'include_path est la solution la plus lente, similaire au fonctionnement de l'autoloader de ZF1, et est connue comme solution de repli à utiliser en dernier ressort. :)

Après avoir configuré notre StandardAutoLoader et l'avoir enregistré, voici comment l'utiliser :

$test1 = new MyNamespaceTest();
$test2 = new MyVendor_Test();

Quelle différence entre préfixe et namespace ?

Le système à préfixe est utilisé pour les classes sans namespace, ces classes dont les répertoires sont séparés par le caractère souligné, comme par exemple Zend_Config_Ini. Un namespace est un namespace PHP 5.3 dont les répertoires sont séparés par le séparateur de namespace ou par des caractères souligné. Par exemple la classe MyNamespace\Sub_Test serait stockée dans /chemin/vers/MyNamespace/Sub/Test.php.

Interface de programmation

Vous pouvez aussi utiliser l'interface de programmation plutôt que de configurer le constructeur :

require_once ZF2_PATH . '/Loader/StandardAutoloader.php';

$loader = new ZendLoaderStandardAutoloader();

$loader->registerPrefix('MyVendor', __DIR__ . '/MyVendor')
->registerNamespace('MyNamespace', __DIR__ . '/MyNamespace')
->setFallbackAutoloader(true);

$loader->register();

Si vous avez de multiples préfixes ou namespaces, vous pouvez utiliser registerPrefixes et registerNamespaces qui prennent des tableaux.

Zend\Loader\ClassMapAutoloader

L'autoloader via class map est un autoloader de haute performance. Il utilise des class maps, qui sont de simples tableaux associatifs associant chaque nom de classe à un fichier sur le disque contenant cette classe. Cet autoloader est extrêmement rapide car son travail consiste en une simple recherche de clé dans le tableau. En fait, le code complet de la méthode autoload est le suivant :

public function autoload($class)
{
if (isset($this->map[$class])) {
include $this->map[$class];
}
}

Vous ne pouvez pas faire plus rapide qua ça ! Et ça fonctionne aussi avec le cache d'opcode PHP et les caches de realpath (NdT : cache de realpath est la traduction utilisée dans la documentation PHP).

Pour utiliser l'autoloader via class map, vous avez besoin d'un fichier de class map, autoload_classmap.php comme celui-ci :

<?php 
return array(
'MyNamespaceTest' => __DIR__ . '/MyNamespace/Test.php',
'MyVendor_Test' => __DIR__ . '/MyVendor/Test.php',
);

Vous pouvez utiliser l'autoloader via class map comme ceci :

require_once ZF2_PATH . '/Loader/ClassMapAutoloader.php';

$autoLoader = new ZendLoaderClassMapAutoloader(
array(__DIR__ . '/autoload_classmap.php'));

// register with the SPL autoloader
$autoLoader->register();  

Dans ce cas, vous ne pouvez charger que les classes qui sont listées dans le(s) fichier(s) fourni(s). Notez que, par convention, le fichier de class map est nommé autoload_classmap.php, mais pourrait être tout fichier renvoyant un tableau.

Notez que le constructeur permet de transmettre de multiples fichiers de map :

$loader = new ZendLoaderClassMapAutoloader(array(
__DIR__ . '/../library/autoload_classmap.php',
__DIR__ . '/../application/autoload_classmap.php',
));

Il existe également une méthode nommée registerAutoload() qui fait la même chose.

$loader = new ZendLoaderClassMapAutoloader();
$loader->registerAutoloadMap(array(
__DIR__ . '/../library/autoload_classmap.php',
__DIR__ . '/../application/autoload_classmap.php',
));

Notez que les nouvelles maps sont fusionnées à celles déjà enregistrées. La dernière définition d'une classe gagne. Par conséquent, vous pouvez surcharger la localisation d'une classe si nécessaire.

Créer des class maps

Comme vous pouvez l'imaginer, créer des class maps à la main peut vite devenir ennuyeux. Pour soulager le développeur, Zend Framework 2 fournit un script PHP, classmap_generator.php dans le répertoire bin, qui fera le travail pour vous. Cet outil scannera la sous-arborescence complète à partir du répertoire courant (ou de celui spécifié en option) et créera un fichier de class map pour chaque classe qu'il trouvera. Il est utilisé comme ceci :

prompt> php path/to/zf2/bin/classmap_generator.php -w
Creating class file map for library in '/var/www/project/library'...
Wrote classmap file to '/var/www/project/library/autoload_classmap.php'

Je m'attends à ce que ZF2 soit distribué avec un autoload_classmap.php lorsqu'il sera distribué (NdT released).

Combiner les stratégies d'autoloading

ZF2 fournit également un AutoloaderFactory qui permet de combiner ClassMapAutoloaders et StandardAutoloaders. C'est particulièrement utile en phase de développement où vous souhaiterez utiliser ClassMapAutoloader pour ZF2 et StandardAutoloader pour vos propres fichiers. On l'utilise comme ceci :

require_once ZF2_PATH . '/Loader/AutoloaderFactory.php';
ZendLoaderAutoloaderFactory::factory(array(
'ZendLoaderClassMapAutoloader' => array(
__DIR__ . '/../library/Zend/autoload_classmap.php',
),
'ZendLoaderStandardAutoloader' => array(
'prefixes' => array(
'MyVendor' => __DIR__ . '/MyVendor',
),
'namespaces' => array(
'MyNamespace' => __DIR__ . '/MyNamespace',
),
'fallback_autoloader' => true,
),
));

Lorsque la méthode factory s’exécute, elle charge et initialise successivement chaque autoloader puis appelle la méthode register() via le système spl_autoload. Comme spl_autoload s'utilise comme une queue, il faut placer les autoloaders via class maps en premier car qu'ils rendent la main très vite en cas d'échec.

Notez que si vous utilisez la fabrique plusieurs fois d'affilée, pour ajouter des fichiers à l'autoloader via classmap par exemple, alors elle réutilisera l'instance de ClassMapAutoloader créée au départ.

Notes sur l'auteur :
Rob Allen est un expert PHP et Zend Framework basé dans le Worcester, au Royaume-Uni. Il est directeur technique pour Big Room Internet et auteur du livre Zend Framework in Action.

Posted on accentlibre.org by Patrick Paysant on 17 April 2012 à 08:34

French software test day

I’m sharing with you a few feedbacks about the conference I had the chance to attend at the begining of March 2012 in Paris. This “journée” is organized every year by the CFTL (Comité Français des Test Logiciels) and gathered all the actors of software testing in France. After this small introduction in english I will present you more specific …Read more »

Posted on Blog OBM10 April 2012 à 21:00

Configuration Apache : du bon usage de RedirectMatch et de mod_proxy

La configuration d'un serveur HTTP d'Apache est une source d'occupation sans limite tellement les possibilités d'utilisation sont nombreuses. Ma casquette de développeur et intégrateur LemonLDAP::NG m'amène souvent à les explorer.

Dernière découverte en date, l'utilisation conjointe de RedirectMatch et mod_proxy.

RedirectMatch

La clause RedirectMatch permet de faire des redirections basées sur une expression régulière. Le cas d'utilisation le plus classique quand on fait un proxy vers une application hébergée dans un serveur JEE est de rediriger la racine / vers le répertoire de l'application /appli/ :

RedirectMatch ^/$ /appli/

mod_proxy

Le module mod_proxy permet de passer les requêtes à un autre serveur, au hasard un serveur JEE :

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

Cohabitation

Si vous mettez les deux configurations présentées ci-dessus ensemble, la redirection vers /appli/ ne fonctionnera plus. Alors qu'elle fonctionne sans mod_proxy.

Et c'est parti pour quelques heures de doute sur la condition humaine, jusqu'à ce qu'une recherche sur internet vous amène sur cet article.

La clé du mystère est que quand ProxyPass est configuré sur "/", cette clause prévaut sur les autres, et donc la requête est transmise avant que la redirection ne soit effectuée.

La solution est donc de limiter le champ d'action du proxy :

RedirectMatch ^/$ /appli/
ProxyPass /appli/ http://localhost:8080/appli/
ProxyPassReverse /appli/ http://localhost:8080/appli/

En espérant que cela vous fera gagner du temps ;)

Posted on Clément Oudot by KPTN on 16 March 2012 à 17:15

Conférence Richard Stallman

Je suis allé hier soir à la conférence de Monsieur Richard Stallman à Marseille.

Elle se déroulait au Grand amphi du campus Saint Charles. Une foule de geeks affamés squattait l'entrée de la salle pour finalement rentrer dans le calme et remplir tout cet espace. L'amphi était au complet, la conférence pouvait désormais démarrer.

Et quelle conférence ! Monsieur Stallman nous à tenu en éveil trois heures durant. Trois heures à parler de liberté, de logiciels libres et de société solidaire. Il a commencé de manière classique en nous contant les bienfait des quatre libertés fondamentales du logiciel libre, à savoir …. oh et puis non, vous les connaissez n'est-ce pas ? Il est venu très vite le tour des DRM, les pauvres, ils ont eut la vie dure avec Richard ! Les DRM c'est pas bien, il y en a partout et , oh oui, le Kindle d'Amazon c'est le mal ! Il va brûler en enfer dixit Richard. (Jeu de mots sur la traduction de Kindle en Frenchi toussa)

D'après Stallman de très nombreux logiciels propriétaires ^W privateurs, comportent des portes dérobées qui permettent à leur créateur d'avoir « le contrôle sur ton logiciel ». Et c'est Windows qui se prend un petit coup sec derrière la tête, puis le Kindle d'Amazon revient sur le tapis.

Après les critiques, Stallman nous a parlé des bienfaits et des buts du logiciel libre, de son mouvement. On pourrait le résumer avec cette phrase amusante prononcée par lui même « le but du logiciel libre est de libérer le cyber-espace ». Un petit peu d'histoire s'en est suivi avec la création de GNU en 1984 (tiens tiens Orwell que fais-tu là?). M. Stallman à ensuite craché ^W constructivement critiqué le créateur du noyau Linux, M. Torvalds, et à ainsi bien tenu à préciser que les outils GNU sont apparus bien avant le noyau mais aussi que Torvalds a fait le bon choix de prendre 'sa' licence GPL etc. Enfin, c'était rigolo mais on sent qu'il ne sont pas super potes. C'était là la bonne occasion de jumper sur la licence GPL, puis un petit saut pour préciser que presque toutes les distributions GNU/Linux ne sont pas totalement libres, de ce fait tu n'es pas libre et tu ne maîtrises pas ton informatique (avec l'accent). De plus, les licences BSD sont trop permissives et c'est dommage dit-il de permettre à d'autres personnes de pouvoir emprisonner ton travail pour le convertir en logiciel privateur.

M. Stallman conseille donc d'aller sur son site pour consulter la liste des distributions GNU/Linux totalement libres. Leurs kernels Linux ont également été patchés pour supprimer les bouts de code non libre. Comme c'est un peu la mode en ce moment, Richard nous a parlé du SAS. Vous savez, le Cloud, le SAS, des trucs à la mode loin de ton parc informatique, gérés par des entreprises. Bien entendu il y voit ici encore un moyen pour restreindre ta liberté vu que tu n'as plus la main sur ton informatique, donc tu n'es plus libre.

Alors voilà ici un sujet qui a particulièrement retenu mon attention : les livres libres. Et plus particulièrement liés à l'éducation. M. Stallman propose de créer et contribuer à l'écriture de livres libres pour l'éducation en général et pas uniquement les universités. En effet, et c'est le directeur de l'université qui à soutenu ce discours à la fin de la conférence, les livres coûtent très cher à l'éducation et ce projet est vraiment très bénéfique pour la société. À mon goût l'éducation des personnes est la chose la plus importante dans une vie et elle ne devrait pas être limitée à cause d'une chose que l'on appelle monnaie. Ensuite Richard a dit quelque mots sur l'Acta, Hadopi and co, bien entendu il est contre, et il appelle à manifester. Pour rappel c'est samedi 25 février au vieux port. Pour conclure sur les écoles Richard précise qu'elles doivent refuser les logiciels propriétaires en leur sein même si ces derniers sont gratuits. Car c'est donner une mauvaise habitude aux étudiants de travailler avec des logiciels privateurs. De plus ces même étudiants demanderont plus tard lorsqu'ils seront sur le marché du travail les logiciels propriétaires auxquels ils sont habitués, et la boucle est bouclée. Comme à son habitude Richard nous à montré son autre visage avec son habit noir et son auréole fait d'un ancien plateau de disque dur en chantant la secte ^W religion d'Emacs. À prendre au second degré bien sûr.

Bref, ce fut une conférence très intéressante à laquelle j'ai été ravi de participer.

Posted on accentlibre.org by gduale on 16 March 2012 à 17:12

LDAP Tool Box - OpenLDAP 2.4.30 RPMs available for CentOS 5 and CentOS 6

New OpenLDAP 2.4.30 RPMs are available, including OpenLDAP init script version 1.5.

They include:
  • SSL
  • SASL
  • All overlays
  • HDB/BDB backend
  • MDB backend
  • LDAP backend
  • SLAPI support
  • LTB-project OpenLDAP init script (v1.5)
  • LTB-project check password policy module (v1.1)
  • Logrotate script
  • Preconfigured DB_CONFIG
  • Contributed overlays
    • lastbind
    • smbk5pwd

The OpenLDAP changelog can be found here: http://www.openldap.org/software/release/changes.html

Download them here: http://ltb-project.org/wiki/download#openldap

Posted on Infos LSC / Ldap Toolbox by Clément OUDOT (clem.oudot@gmail.com) on 09 March 2012 à 21:31

Billet d'ouverture

Notre Bonjour au monde extérieur ! Hello World

Ce 8 février de l'année 2012, l'équipe Linagora de toutes les régions célèbre l'ouverture de son petit bout de web : Nous avons notre blog tout neuf rien qu'à nous !!!

Nous espérons y partager bientôt avec vous notre gout pour le libre (avec l'accent qui chante évidemment ^^), notre passion pour les choses de l'informatique et de l'internet... et peut être un peu parler des projets faits avec nos clients et donner aussi un petit éclairage local... la région vue depuis le monde libre ou le monde libre vu depuis la région :)

On va surtout essayer de se faire plaisir, de partager des infos intéressantes, et de participer un peu plus à la vie "libre" en régions depuis chez nous et aussi dans les manifestation sur le logiciel libre ou nous irons.

A bientôt pour notre première vraie publication ^^

Posted on accentlibre.org by Ju on 09 March 2012 à 17:07

Freedom out of the box !- english

This year at FOSDEM, all devrooms and tracks had their schedule filled until Sunday 5pm. Besides the closing one, the only talk after 5pm was Bdale Garbee’s update on the FreedomBox project.

The presentation, “Freedom, Out of the Box!”, happened in the biggest room provided by ULB for FOSDEM.

The FreedomBox project, associated with the FreedomBox Foundation, was introduced just one year ago, at FOSDEM 2011. At that time, the speaker was Eben Moglen, lawyer at the Free Software Foundation, and he was given the first time slot on Saturday morning to deliver his keynote.

Now let’s move on to the topic. The point of the FreedomBox is to create an easy to use and cheap device to protect and provide privacy on the Internet.

The device actually is a plug computer running the appropriate free software. The FreedomBox project aims at building this software stack only and will therefore not focus on the hardware part. The initial hardware target has been chosen though:DreamPlug.

The idea is that the Freedom Boxes will be hosted at people’s homes, just like the Internet boxes provided by ISPs in France. Applications of the FreedomBox should provide ways to communicate securely through the Internet. As Eben Moglen explained last year, the so-called “Facebook revolutions” that happened recently showed how dangerous it is to use centralized services such as Facebook in some cases, and how weak they are when it comes to state censorship. Besides, the FreedomBox should provide easy ways to host content.

In order to achieve the communication part, Bdale Garbee announced the first application they want to provide is encrypted instant messaging (IM). It will be based on XMPP and GPG. On the content hosting front, Bdale Garbee said they are not going to (re)write a decentralized social network themselves, but they are going to provide the platform welcoming one.

Finally, it was pointed out that help would be appreciated in a number of areas.

Read more about what the FreedomBox Foundation wants to achieve and how you can help them at

http://freedomboxfoundation.org/.

By Adrien CUNIN

Posted on Blog de l\'équipe du 08000linux by nshur on 21 February 2012 à 14:09

Freedom, Out of the Box!

Intervenant : Bdale Garbee

Slides : http://lanyrd.com/profile/bdalegarbee/slides/

Le projet FreedomBox vise à fournir à moindre coût un système complet (matériel et logiciel) permettant de protéger sa vie privé et son anonymat sur le internet.

La protection de la vie privé est de plus en plus importante aujourd’hui avec la généralisation des réseaux sociaux et l’implication des gouvernements dans les technologies.

Récemment le gouvernement américain a passé un accord avec Facebook pour faire analyser toutes les photos de la base de données du réseau social par un algorithme de reconnaissance facial et ce de manière à repérer les délinquants.

Tous les élément utilisé par le projet doivent être open source pour être sûr de la sécurité du système.

Le système doit être simple d’utilisation pour permettre sont utilisation par des personnes n’aillant pas de qualification particulière en informatique.

Au niveau matériel le projet hésite entre le DreamPlug de Globalscale dont une grande parties des spécifications ont été libérées mais dont le driver uAP est toujours close source et le Sheeva de Marvell ou le Tonidoplug.

Au niveau logiciel le projet a décidé de travailler en partenariat avec Debian, le système de la FreedomBox ne devra, à terme, qu’être une debian spécifiquement configurée.

De cette façon on peut installer le système de la FreedomBox sans forcément posséder du matériel validé par le projet.

N’importe quel machine pouvant faire tourner une Debian est compatible, l’installation devant au final se résumer à l’installation d’un seul paquet virtuel.

Un autre avantage apporté par ce partenariat est la pérennité du travail de l’association.

Même si le projet échoue, le travail accompli ne sera pas perdu et pourra toujours être utilisé par la communauté Debian.

Par Maxime

Posted on Blog de l\'équipe du 08000linux by nshur on 21 February 2012 à 13:10

©2008 Linagora. All rigths reserved.
Blog entries aggregated on this page are owned by, and represent the opinion of the author.
Valid XHTML 1.1
Design by Matthew "Agent Spork" McGee
Courtesy Open Web DesignThanks to Dubai Hotels