On Mon, Dec 22, 2025 at 04:58:58PM +0000, Howard Chu wrote:
> It's still unclear what you're trying to do in this overlay, so I can't
> guess at what alternatives might exist.
I did not want to annoy everyone with the details, but here we go.
There is a directory layout specification for french higher education
institutes called supann [1]. It defines various attributes, incuding
"composite attributes" that fold a lot of data. Here is an example
for the attribute that describes student enrollment in a master's
degree.
supannEtuInscription: [etab={UAI}0751717J][anneeinsc=2019]
[regimeinsc={SISE}10][sectdisc={SISE}38][typedip={SISE}XB]
[cursusann={SUPANN}M2][diplome={SISE}2500005]
[population={SUPANN}AGEI][datefin=20201130220000Z]
Composite attributes are made of [key=val] components. The specification
says that for each component, there must be a plain attribute
(named "elementary attribute" in the spec) that holds the value.
So if we have the supannEtuInscription above, we must also have:
supannEtablissement: {UAI}0751717J
supannEtuAnneeInscription: 2019
supannEtuRegimeInscription: {SISE}10
supannEtuSecteurDisciplinaire: {SISE}38
supannEtuTypeDiplome: {SISE}XB
supannEtuCursusAnnee: {SUPANN}M2
supannEtuDiplome: {SISE}2500005
supannCodePopulation: {SUPANN}AGEI
supannEtuDateFin: 20201130220000Z
My current work is slapo-supann. It automatically produces the
elementary attributes from the composite attribute. That part
works by adding dynamic attributes in search responses. I also
added syntax checks so that the data inserted in composite attribute
is sane. That works too.
There are other stuff generated. I use the datefin components
to produce an attribute telling when the user account it
active (A) or inactive (I)
supannRessourceEtatDate: {COMPTE}A:SupannActif::20201130
supannRessourceEtatDate: {COMPTE}I:SupannExpire:20201130:
And, using current date, I generate an attribute telling if
the account is active or not:
supannRessourceEtat: {COMPTE}I:SupannExpire
Tha ability to filter on this generated attribute would be
very nice. A service filter could require:
(&(objectClass=supannPerson)(supannRessourceEtat={COMPTE}A:*))
And the question is: how to do it? As I explained, the
only alternative I see is (1) to insert the data in the directory
instead of adding it as dynamic during searches, or (2) to do a
periodic refresh of that attribute by borrowing code from slapo-dds.
I wonder if there are other options.
Another question is about inclusion of that stuff in
contrib/slapd-modules. Do you think that it makes sense?
[1] https://services.renater.fr/documentation/supann/index
--
Emmanuel Dreyfus
[email protected]