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]

Reply via email to