[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