[GLLUG] Perl programming project

Marco van Beek mvanbeek at supporting-role.co.uk
Thu Apr 9 10:07:49 UTC 2020


On 08/04/2020 19:14, James Courtier-Dutton wrote:
> On Thu, 20 Feb 2020 at 10:57, Marco van Beek via GLLUG
> <gllug at mailman.lug.org.uk> wrote:
>> Basically we currently have an LDAP address book which is used by our
>> desktop phones and our scanner. We also have started to use CardDAV as
>> support is slowly extended into Thunderbird and Outlook (via a plug-in)
>> but the VOIP phones and MFD do not understand CardDAV, so we need
>> something to allow CardDAV to answer LDAP queries. After much
>> unsuccessful searching (found one bit of bespoke code but the author
>> never got back to me) I have figured out that OpenLDAP can use a Perl
>> backend, and there is a Perl module that does CardDAV. We do not need a
>> full two way conversation between the two, but as a project this does
>> have the potential for a much bigger scope.
> It seems a bit confused to me.
> Do you have an LDAP server or a CardDAV server or both?
> I would have thought having a single server that can handle both query
> types is the way to go, because I expect the data model behind CardDAV
> and LDAP is different.
> One would probably need to design the data model from the start with
> both protocols in mind, to get this working well.
>
Hi,

Essentially it is a LDAP to CardDav / CardDAV to LDAP gateway, but 
rather than design something from the ground up, OpenLDAP has the 
ability to have custom backends, so my idea is simply to have a CardDAV 
backend to an OpenLDAP server. The CardDAV server could be anywhere.

Yes, the data model is different, but our requirements are very simple, 
since all we are doing is serving telephone and mobile numbers up to 
desktop handsets and email addresses and fax numbers to multifunction 
printers.

OpenLDAP supports both Bash and Perl for custom backends. All that is 
needed for full two way interactivity is 9 functions 
(https://linux.die.net/man/5/slapd-perl). I think we only need three of 
them for what we need, as we don't need two way traffic.

Every LDAP / CardDAV project I have seen on the Internet fails because 
it tries to do too much, and be too many things to too many people. All 
I need is a standards compliant way of linking the two services. The 
moment you try to access the address book database you limit your 
choices. For example, Davical, which we use for CardDAV, using 
Postgresql, and OpenLDAP does support an SQL backend, but now both 
services really does need to be on the same server, and you cannot use a 
CardDAV collection on another system, and you cannot use another LDAP 
system on the primary server without worrying about bindings, so this 
really is a proxy system that could live on a VM and only do this small 
task. I could even see this running on a Raspberry Pi serving up an 
iCloud address book collection to a local MFP scanner in an office.

So while I may not have explained myself, I was, in my defence, looking 
for a programmer to pay to do the work, not for a critique of my 
approach. I am very happy to explain my requirements and approach in 
more detail to someone who is interested in doing the work, but I did 
not want to fill the list with pages of details.

Cheers,

Marco





More information about the GLLUG mailing list